root 2 anos atrás
commit
636f6c5479
100 arquivos alterados com 57227 adições e 0 exclusões
  1. 10 0
      .gitignore
  2. 91 0
      Texture-Studio-master/LICENSE
  3. 226 0
      Texture-Studio-master/OLDREADME.md
  4. 98 0
      Texture-Studio-master/README
  5. 13 0
      Texture-Studio-master/README.md
  6. BIN
      Texture-Studio-master/announce
  7. BIN
      Texture-Studio-master/filterscripts/TD.amx
  8. 3807 0
      Texture-Studio-master/filterscripts/TD.pwn
  9. BIN
      Texture-Studio-master/filterscripts/adminspec.amx
  10. 121 0
      Texture-Studio-master/filterscripts/adminspec.pwn
  11. BIN
      Texture-Studio-master/filterscripts/base.amx
  12. 151 0
      Texture-Studio-master/filterscripts/base.pwn
  13. BIN
      Texture-Studio-master/filterscripts/baseaf.amx
  14. 235 0
      Texture-Studio-master/filterscripts/baseaf.pwn
  15. BIN
      Texture-Studio-master/filterscripts/fsdebug.amx
  16. 2108 0
      Texture-Studio-master/filterscripts/fsdebug.pwn
  17. BIN
      Texture-Studio-master/filterscripts/gl_actions.amx
  18. 328 0
      Texture-Studio-master/filterscripts/gl_actions.pwn
  19. BIN
      Texture-Studio-master/filterscripts/gl_chatbubble.amx
  20. 63 0
      Texture-Studio-master/filterscripts/gl_chatbubble.pwn
  21. BIN
      Texture-Studio-master/filterscripts/gl_npcs.amx
  22. 144 0
      Texture-Studio-master/filterscripts/gl_npcs.pwn
  23. BIN
      Texture-Studio-master/filterscripts/gl_property.amx
  24. 835 0
      Texture-Studio-master/filterscripts/gl_property.pwn
  25. BIN
      Texture-Studio-master/filterscripts/gl_realtime.amx
  26. 89 0
      Texture-Studio-master/filterscripts/gl_realtime.pwn
  27. BIN
      Texture-Studio-master/filterscripts/menutest.amx
  28. 53 0
      Texture-Studio-master/filterscripts/menutest.pwn
  29. BIN
      Texture-Studio-master/filterscripts/npc_record.amx
  30. 75 0
      Texture-Studio-master/filterscripts/npc_record.pwn
  31. BIN
      Texture-Studio-master/filterscripts/test_cmds.amx
  32. 495 0
      Texture-Studio-master/filterscripts/test_cmds.pwn
  33. BIN
      Texture-Studio-master/filterscripts/tstudio.amx
  34. 642 0
      Texture-Studio-master/filterscripts/tstudio.pwn
  35. 311 0
      Texture-Studio-master/filterscripts/tstudio/3dmenu.pwn
  36. 27 0
      Texture-Studio-master/filterscripts/tstudio/allobjects.pwn
  37. 9116 0
      Texture-Studio-master/filterscripts/tstudio/alltextures.pwn
  38. 8769 0
      Texture-Studio-master/filterscripts/tstudio/alltextures420.pwn
  39. 85 0
      Texture-Studio-master/filterscripts/tstudio/cmdbuffer.pwn
  40. 124 0
      Texture-Studio-master/filterscripts/tstudio/dayzcars.pwn
  41. 18 0
      Texture-Studio-master/filterscripts/tstudio/debugging.pwn
  42. 442 0
      Texture-Studio-master/filterscripts/tstudio/flymode.pwn
  43. 55 0
      Texture-Studio-master/filterscripts/tstudio/fontdata.pwn
  44. 2399 0
      Texture-Studio-master/filterscripts/tstudio/groups.pwn
  45. 373 0
      Texture-Studio-master/filterscripts/tstudio/gtaobjects.pwn
  46. 442 0
      Texture-Studio-master/filterscripts/tstudio/gui/gui.pwn
  47. 24 0
      Texture-Studio-master/filterscripts/tstudio/gui/guihook.pwn
  48. 81 0
      Texture-Studio-master/filterscripts/tstudio/gui/guisys.pwn
  49. 727 0
      Texture-Studio-master/filterscripts/tstudio/gui/playergui.pwn
  50. 275 0
      Texture-Studio-master/filterscripts/tstudio/helpcmd.pwn
  51. 770 0
      Texture-Studio-master/filterscripts/tstudio/listsel.pwn
  52. 307 0
      Texture-Studio-master/filterscripts/tstudio/localinput.pwn
  53. 827 0
      Texture-Studio-master/filterscripts/tstudio/mangle.pwn
  54. 1287 0
      Texture-Studio-master/filterscripts/tstudio/menudata.pwn
  55. 1936 0
      Texture-Studio-master/filterscripts/tstudio/menugui.pwn
  56. 105 0
      Texture-Studio-master/filterscripts/tstudio/modelsizes.pwn
  57. 765 0
      Texture-Studio-master/filterscripts/tstudio/objm.pwn
  58. 1395 0
      Texture-Studio-master/filterscripts/tstudio/obmedit.pwn
  59. 831 0
      Texture-Studio-master/filterscripts/tstudio/osearch.pwn
  60. 671 0
      Texture-Studio-master/filterscripts/tstudio/propeditor.pwn
  61. 146 0
      Texture-Studio-master/filterscripts/tstudio/restrict.pwn
  62. 748 0
      Texture-Studio-master/filterscripts/tstudio/texteditor.pwn
  63. 1714 0
      Texture-Studio-master/filterscripts/tstudio/texviewer.pwn
  64. 5389 0
      Texture-Studio-master/filterscripts/tstudio/tsmain.pwn
  65. 240 0
      Texture-Studio-master/filterscripts/tstudio/undo.pwn
  66. 2390 0
      Texture-Studio-master/filterscripts/tstudio/validmodels.pwn
  67. 52 0
      Texture-Studio-master/filterscripts/tstudio/vehiclecolors.pwn
  68. 2343 0
      Texture-Studio-master/filterscripts/tstudio/vehicles.pwn
  69. 101 0
      Texture-Studio-master/filterscripts/tstudio/webcolors.pwn
  70. BIN
      Texture-Studio-master/gamemodes/bare.amx
  71. 44 0
      Texture-Studio-master/gamemodes/bare.pwn
  72. BIN
      Texture-Studio-master/gamemodes/barron.amx
  73. 264 0
      Texture-Studio-master/gamemodes/barron.pwn
  74. BIN
      Texture-Studio-master/gamemodes/grandlarc.amx
  75. 457 0
      Texture-Studio-master/gamemodes/grandlarc.pwn
  76. BIN
      Texture-Studio-master/gamemodes/lvdm.amx
  77. 932 0
      Texture-Studio-master/gamemodes/lvdm.pwn
  78. BIN
      Texture-Studio-master/gamemodes/rivershell.amx
  79. 335 0
      Texture-Studio-master/gamemodes/rivershell.pwn
  80. BIN
      Texture-Studio-master/gamemodes/timertest.amx
  81. 31 0
      Texture-Studio-master/gamemodes/timertest.pwn
  82. 157 0
      Texture-Studio-master/include/gl_common.inc
  83. 138 0
      Texture-Studio-master/include/gl_spawns.inc
  84. BIN
      Texture-Studio-master/models/door_5x3.5.dff
  85. BIN
      Texture-Studio-master/models/plane_100x100.dff
  86. BIN
      Texture-Studio-master/models/plane_10x10.dff
  87. BIN
      Texture-Studio-master/models/plane_10x20.dff
  88. BIN
      Texture-Studio-master/models/plane_20x20.dff
  89. BIN
      Texture-Studio-master/models/plane_25x25.dff
  90. BIN
      Texture-Studio-master/models/plane_25x50.dff
  91. BIN
      Texture-Studio-master/models/plane_50x100.dff
  92. BIN
      Texture-Studio-master/models/plane_50x50.dff
  93. BIN
      Texture-Studio-master/models/plane_5x10.dff
  94. BIN
      Texture-Studio-master/models/plane_5x5.dff
  95. BIN
      Texture-Studio-master/models/platform_10x10x05.dff
  96. BIN
      Texture-Studio-master/models/platform_20x20x05.dff
  97. BIN
      Texture-Studio-master/models/platform_5x2.5.dff
  98. BIN
      Texture-Studio-master/models/platform_5x5.dff
  99. BIN
      Texture-Studio-master/models/platform_5x5x05.dff
  100. BIN
      Texture-Studio-master/models/ramp_2.5x5x3.5.dff

+ 10 - 0
.gitignore

@@ -0,0 +1,10 @@
+.bash_history
+.bash_logout
+.bashrc
+.gnupg
+.local
+.profile
+.ssh/
+.wget-hsts
+server.log
+logs/

+ 91 - 0
Texture-Studio-master/LICENSE

@@ -0,0 +1,91 @@
+------------------------------------------------------------------------------------
+
+The SA-MP modification for Grand Theft Auto: San Andreas (r) is a software project
+aimed at extending the functionality of the Grand Theft Auto: San Andreas (r)
+software for Microsoft Windows (r).
+
+------------------------------------------------------------------------------------
+
+SA-MP CLIENT AND SERVER SOFTWARE LICENSE AGREEMENT AND ATTRIBUTIONS
+
+
+---- LICENSE TERMS ----
+
+(a) You must have a valid license to use Grand Theft Auto: San Andreas (r) PC
+in order for this license to be valid.
+
+(b) The software contained herein is provided on an "as-is" basis without
+any form of warranty.
+
+(c) This software may not be exploited for personal, financial or 
+commercial gain.
+
+(d) The author(s) of this software accept no liability for use/misuse of the
+software.
+
+(e) The SA-MP software package may not be distributed, sold, rented or
+leased, without written permission of the software author(s).
+
+(f) You may not create or distribute derivative works of the software or files
+contained within the package.
+
+(g) You may not use this software for any illegal purposes.
+
+(h) The author(s) of this software retain the right to modify/revoke this license
+at any time under any conditions seen appropriate by the author(s).
+
+(i) Ideas expressed in this software by way of coding or configuration are
+property of SA-MP.com.
+
+
+------------------------------------------------------------------------------------
+
+(c) 2005-2010 SA-MP.com team.
+
+The SA-MP.com team is not affiliated with Rockstar Games, Rockstar North or 
+Take-Two Interactive Software Inc.
+
+Grand Theft Auto and Grand Theft Auto: San Andreas are registered trademarks of
+Take-Two Interactive Software Inc.
+
+------------------------------------------------------------------------------------
+
+
+---- ATTRIBUTIONS ----
+
+- This software makes use of the RakNet networking library (c) 2003 Kevin Jenkins
+- This software makes use of the Pawn language (c) ITB CompuPhase, 1997-2005
+- This software makes use of the ttmath library (c) 2006-2009, Tomasz Sowa
+
+*** ttmath LIBRARY LICENSE ***
+
+ Copyright (c) 2006-2009, Tomasz Sowa
+  All rights reserved.
+  
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+  
+    Redistributions of source code must retain the above copyright notice,
+     this list of conditions and the following disclaimer.
+     
+    Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+     
+    Neither the name Tomasz Sowa nor the names of contributors to this
+     project may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+ 
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+------------------------------------------------------------------------------------

+ 226 - 0
Texture-Studio-master/OLDREADME.md

@@ -0,0 +1,226 @@
+# `Texture-Studio`
+
+
+# *Commands:*
+
+
+
+## Maps:
+
+/loadmap - Load a map
+
+/newmap - Create a new map
+
+/importmap - Import CreateObject() or CreateDynamicObject() raw code
+
+/export - Export a map to code
+
+
+
+## Objects:
+
+/cobject <objectid> - Create an object
+
+/dobject - Delete your selected object
+
+/robject - Resets an objects text and materials
+
+/osearch - Search for a object
+
+/sel <objectid> - Select a object id index
+
+/csel - Use the mouse to select an object
+
+/lsel - Graphical object selection
+
+/flymode - Enter flymode
+
+/ogoto - Goto your selected object (must be in flymode)
+
+/pivot - Set a pivot position to rotate objects around
+
+/togpivot - Turn on/off pivot rotation
+
+/oprop - Object property editor
+
+
+
+## Movement:
+
+/editobject - Edit object mode
+
+/ox - /oy - /oz - Standard movement commands
+
+/rx - ry - /rz - Standard rotation commands
+
+/dox - /doy - /doz - Delta move map
+
+/drx - /dry - /drz - Rotate map around map center
+
+
+
+## Textures/Text/Indexes/Theme:
+
+/mtextures - Show a list of textures in a list
+
+/ttextures - Show a list of textures in (Theme)
+
+/stexture - Texture editor
+
+/mtset <index> <textureref> - Set a material
+
+/mtsetall <index> <textureref> - Set a material to ALL objects of the same modelid
+
+/mtcolor <index> <Hex Color ARGB> - Sets a material color
+
+/mtcolorall <index> <Hex Color ARGB> - Sets a material color to ALL objects of the same modelid
+
+/copy - Copy object properties to buffer from currently selected object
+
+/paste - Paste object properties from buffer to currently selected object
+
+/clear - Clear object properties from buffer
+
+/text - Open the object text editor
+
+/sindex - Set text on a object will show material IDs
+
+/rindex - Removes material indexes shown on an object
+
+/loadtheme - Load a texture theme
+
+/savetheme - Saves a texture theme
+
+/deletetheme - Delete a texture theme
+
+/tsearch - Find a texture by part of name
+
+
+
+## Groups/Prefabs:
+
+/setgroup - Sets a group id for a group objects
+
+/selectgroup - Select a group of objects to edit
+
+/gsel - Open up click select to add/remove objects from your group
+
+/gadd - Add an object to your group useful for objects that cannot be clicked on
+
+/grem - Remove a specific object from your group
+
+/gclear - Clear your group selection
+
+/gclone - Clone your group selection
+
+/gdelete - Delete all objects in your group
+
+/editgroup - Start editing a group
+
+/gox - /goy - /goz - Stardard group movement commands
+
+/gox - /goy - /goz - Stardard group rotation commands
+
+/gaexport - Exports a group of objects to a attached object FS (Not yet completed)
+
+/gprefab - Export a group of objects to a loadable prefab file
+
+/prefabsetz - Set the load offset of a prefab file
+
+/prefab <LoadName"> - Load a prefab file, /prefab will show all prefabs
+
+
+
+## Bind Editor:
+
+/bindeditor - Open the bind editor you can enter a series of commands to execute
+
+/runbind <index> - Runs a bind
+
+
+
+## GTA Objects:
+
+/gtaobjects - Shows 3D Text of all GTA objects the indexes can be used for deleting objects
+
+/remobject <index> - Remove a GTA object specify the index
+
+/swapbuilding <index> - Remove a GTA and swap with an editable object
+
+
+
+## Vehicles:
+
+/avmodcar - Mod a car it will teleport the vehicle to the correct mod garage if modable
+
+/avsetspawn - Set the spawn position of a vehicle
+
+/avnewcar - Create a new car
+
+/avdeletecar - Delete an unwanted car
+
+/avcarcolor - Set vehicle car color
+
+/avpaint - Set a vehicles paintjob
+
+/avattach - Attach currently selected object to currently selected vehicle
+
+/avdetach - Detach currently selected object from vehicle
+
+/avsel - Select a vehicle to edit
+
+/avexport - Export a car to filterscript
+
+/avexportall - Export all cars to filterscript
+
+/avox - /avoy - /avoz - Standard vehicle object movement commands
+
+/avrx - /avry - /avrz - Standard vehicle object rotation commands
+
+/avmirror - Mirror an object attached to a vehicle
+
+(Special note: using /editobject on an attached object will edit the object on the vehicle)
+
+
+
+## Other:
+
+/echo - Will echo back any text sent this is useful for autohotkey so that you can create
+
+displayed output for your keybinds
+
+
+
+
+
+# *Key Combos:*
+
+
+
+## /csel:
+
+Holding 'H' while clicking an object will copy properites to buffer
+
+Holding 'Walk Key' while clicking an object will paste properties from buffer
+
+
+
+## /editgroup:
+
+Hold 'Walk Key' to set the group rotation pivot you can only do this once per edit
+
+
+
+## GUI:
+
+When in fly mode to open the GUI press 'Jump Key' otherwise it can be opened by pressing 'N' Key
+
+
+
+## Texture Viewer:
+
+In Fly mode instead of pressing Y/H to scroll through textures hold enter/exit vehicle and press ANALOG Left ---- ANALOG Right
+
+Pressing sprint will add textures to your theme in fly mode press sprint+aim to add textures to theme in walk mode
+
+Walk key will apply the selected texture to your object

+ 98 - 0
Texture-Studio-master/README

@@ -0,0 +1,98 @@
+SA-MP 0.3 Server Setup
+----------------------
+
+Once the configuration is complete, run> ./samp03svr & to start the server process.
+
+CONFIGURATION:
+
+Example server.cfg:
+	echo Executing Server Config...
+	lanmode 0
+	maxplayers 32
+	port 7777
+	hostname Unnamed Server
+	announce 0
+	gamemode0 lvdm 1
+	gamemode1 rivershell 1
+	weburl www.sa-mp.com
+	rcon_password changeme
+
+To configure the server, you must edit the values in server.cfg. They 
+are explained below:
+
+hostname
+--------
+	Parameters:
+		string
+	
+	Description:
+		Specifies the hostname shown in the server browser
+		
+port
+----
+	Parameters:
+		int
+	
+	Description:
+		Specifies the port to listen on.
+		This port is used for game connections, rcon 
+connections, and for querying.
+	
+maxplayers
+----------
+	Parameters:
+		int
+	
+	Description:
+		Specifies the maximum amount of players.
+		
+lanmode
+-------
+	Parameters:
+		int (0 or 1)
+		
+	Description:
+		Turns lanmode on (1) or off (0). Lanmode (as the name 
+suggests) is for use on LAN games, where bandwidth is not a problem. 
+Lanmode sends data at a higher rate, for a smoother game.
+		
+
+announce
+-------
+	Parameters:
+		int (0 or 1)
+		
+	Description:
+		Announces your server to the 'Internet' server list in 
+the SA:MP browser. On (1) or Off (0).
+
+weburl
+------
+	Parameters:
+		string
+	
+	Description:
+		Specifies the URL shown in the server browser, which is 
+associated to the server.
+		
+rcon_password
+-------------
+	Parameters:
+		string
+		
+	Description:
+		Specifies the password needed to connect to rcon, or 
+login to rcon ingame.
+		
+gamemode0 - gamemode15
+----------------------
+	Parameters:
+		string
+		int
+		
+	Description:
+		Specifies the rotation settings. The first parameter 
+sets the game mode name. The second is the number of times it will 
+repeat.
+		You can use gamemode0 to specify the first gamemode, 
+gamemode1 to specify the second, etc.

+ 13 - 0
Texture-Studio-master/README.md

@@ -0,0 +1,13 @@
+# `Texture-Studio`
+
+[New thread](https://www.burgershot.gg/showthread.php?tid=174), since the previous thread was deleted by your king. 
+
+# What is a "Texture Studio"
+
+Texture Studio is an advanced, server-based map editor. You can use Texture Studio for practically any kind of SA-MP map. It has many features that allow you to create, texture, and modify SA-MP maps with ease.
+
+--------
+
+# Commands
+
+Visit the [commands page](../../wiki/All-Commands) for a list of commands provided in Texture Studio, as well as syntax and use information for each.

BIN
Texture-Studio-master/announce


BIN
Texture-Studio-master/filterscripts/TD.amx


+ 3807 - 0
Texture-Studio-master/filterscripts/TD.pwn

@@ -0,0 +1,3807 @@
+// Start Of File
+/*
+Zamaroht's TextDraw Editor Version 1.0RC2.
+Designed for SA-MP 0.3.
+
+Author: Zamaroht (Nicolás Laurito)
+
+Start of Development: 25 December 2009, 22:16 (GMT-3)
+End of Development: 01 January 2010, 23:31 (GMT-3)
+
+Disclaimer:
+You can re-distribute this file as you wish, but ALWAYS keeping the name of the
+author and a link back to http://forum.sa-mp.com/index.php?topic=143025.0
+attached to the mean of distrubution.
+For example, the link with the author's name in a public forum topic, or a
+separate README file in a .zip file, etc.
+If you modify this file, the same terms apply. You have to include the original
+author (Zamaroht) and the link back to the mentioned webpage.
+
+PlayerTextDraw function add by adri1. (V1) *25/10/12*
+SetSelectable function add by adri1 (V2) *26/10/12*
+2D TextDraws function add by adri1 (V3) *11/01/13* [SA-MP 0.3x only]
+*/
+
+#include <a_samp>
+#include <Dini>
+
+// =============================================================================
+// Internal Declarations.
+// =============================================================================
+
+#define MAX_TEXTDRAWS       90			// Max textdraws shown on client screen is 92. Using 90 to be on the safe side.
+#define MSG_COLOR           0xFAF0CEFF	// Color to be shown in the messages.
+#define PREVIEW_CHARS       35			// Amount of characters that show on the textdraw's preview.
+
+
+// Used with P_Aux
+#define DELETING 0
+#define LOADING 1
+
+// Used with P_KeyEdition
+#define EDIT_NONE       0
+#define EDIT_POSITION   1
+#define EDIT_SIZE       2
+#define EDIT_BOX        3
+
+// Used with P_ColorEdition
+#define COLOR_TEXT      0
+#define COLOR_OUTLINE   1
+#define COLOR_BOX       2
+
+enum enum_tData // Textdraw data.
+{
+	bool:T_Created,			// Wheter the textdraw ID is created or not.
+	Text:T_Handler,         // Where the TD id is saved itself.
+	T_Text[1536],           // The textdraw's string.
+	Float:T_X,
+	Float:T_Y,
+	T_Alignment,
+	T_BackColor,
+	T_BoxColor,
+	T_Color,
+	T_Font,
+	Float:T_XSize,
+	Float:T_YSize,
+	T_Outline,
+	T_Proportional,
+	T_Shadow,
+	Float:T_TextSizeX,
+	Float:T_TextSizeY,
+	T_UseBox,
+	T_Selectable,
+	T_PreviewModel,
+	Float:PMRotX,
+	Float:PMRotY,
+	Float:PMRotZ,
+	Float:PMZoom
+};
+
+
+enum enum_pData // Player data.
+{
+	bool:P_Editing,         // Wheter the player is editing or not at the moment (allow /menu).
+	P_DialogPage,           // Page of the textdraw selection dialog they are at.
+	P_CurrentTextdraw,      // Textdraw ID being currently edited.
+	P_CurrentMenu,          // Just used at the start, to know if the player is LOADING or DELETING.
+	P_KeyEdition,           // Used to know which editions is being performed with keyboard. Check defines.
+	P_Aux,      		    // Auxiliar variable, used as a temporal variable in various cases.
+	P_ColorEdition,         // Used to know WHAT the player is changing the color of. Check defines.
+	P_Color[4],             // Holds RGBA when using color combinator.
+	P_ExpCommand[128],      // Holds temporaly the command which will be used for a command fscript export.
+	P_Aux2                  // Just used in special export cases.
+};
+
+new tData[MAX_TEXTDRAWS][enum_tData],
+	pData[MAX_PLAYERS][enum_pData];
+	
+new CurrentProject[128];  // String containing the location of the current opened project file.
+
+// =============================================================================
+// Callbacks.
+// =============================================================================
+
+public OnFilterScriptInit()
+{
+	print("\n--------------------------------------");
+	print(" Text Draw Editor 1.0RC2 by Zamaroht for SA-MP 0.3 Loaded.");
+	print("--------------------------------------\n");
+	for(new i; i < MAX_PLAYERS; i ++) if(IsPlayerConnected(i)) ResetPlayerVars(i);
+	for(new i; i < MAX_TEXTDRAWS; i ++)
+	{
+	    tData[i][T_Handler] = TextDrawCreate(0.0, 0.0, " ");
+	    tData[i][T_PreviewModel] = -1;
+		tData[i][PMZoom] = 1.0;
+		tData[i][PMRotX] = -16.0;
+		tData[i][PMRotY] = 0.0;
+		tData[i][PMRotZ] = -55.0;
+	}
+	return 1;
+}
+
+public OnFilterScriptExit()
+{
+    for(new i; i < MAX_TEXTDRAWS; i ++)
+	{
+	    TextDrawHideForAll(tData[i][T_Handler]);
+	    TextDrawDestroy(tData[i][T_Handler]);
+	}
+	return 1;
+}
+
+public OnPlayerConnect(playerid)
+{
+	for(new i; i < MAX_TEXTDRAWS; i ++)
+	{
+	    if(tData[i][T_Created])
+	        TextDrawShowForPlayer(playerid, tData[i][T_Handler]);
+	}
+}
+
+public OnPlayerSpawn(playerid)
+{
+	SendClientMessage(playerid, MSG_COLOR, "Use /text to show the Edition Menu");
+	
+	return 1;
+}
+
+public OnPlayerDisconnect(playerid, reason)
+{
+    ResetPlayerVars(playerid);
+	return 1;
+}
+
+public OnPlayerCommandText(playerid, cmdtext[])
+{
+	if(!strcmp("/text", cmdtext))
+	{
+	    
+		if(pData[playerid][P_Editing]) return SendClientMessage(playerid, MSG_COLOR, "[ERROR] Finish the current edition before using /text!");
+		else if(!strlen(CurrentProject) || !strcmp(CurrentProject, " "))
+		{
+		    if(IsPlayerMinID(playerid))
+		    {
+			    ShowTextDrawDialog(playerid, 0);
+			    pData[playerid][P_Editing] = true;
+		    }
+		    else
+		        SendClientMessage(playerid, MSG_COLOR, "Just the smaller player ID can manage projects. Ask him to open one.");
+		    return 1;
+		}
+		else
+		{
+		    ShowTextDrawDialog(playerid, 4, 0);
+		    pData[playerid][P_Editing] = true;
+		    return 1;
+		}
+	}
+	return 0;
+}
+
+public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
+{
+    if(response == 1) 	PlayerPlaySound(playerid, 1083, 0.0, 0.0, 0.0); // Confirmation sound
+    else 				PlayerPlaySound(playerid, 1084, 0.0, 0.0, 0.0); // Cancelation sound
+    
+    switch(dialogid)
+    {
+        case 1574: // First dialog.
+        {
+            if(response) // If he pressed accept.
+            {
+                strmid(CurrentProject, "", 0, 1, 128);
+                
+                if(listitem == 0) // He pressed new project.
+                    ShowTextDrawDialog(playerid, 1);
+                else if(listitem == 1) // He pressed load project.
+                    ShowTextDrawDialog(playerid, 2, 1);
+                else if(listitem == 2) // He pressed delete project.
+                    ShowTextDrawDialog(playerid, 2, 2);
+            }
+            else pData[playerid][P_Editing] = false;
+        }
+        
+        case 1575: // New Project
+        {
+            if(response)
+            {
+                if(strlen(inputtext) > 120) ShowTextDrawDialog(playerid, 1, 1); // Too long.
+                
+                else if(
+					strfind(inputtext, "/") != -1 || strfind(inputtext, "\\") != -1 ||
+					strfind(inputtext, ":") != -1 || strfind(inputtext, "*") != -1 ||
+					strfind(inputtext, "?") != -1 || strfind(inputtext, "\"") != -1 ||
+					strfind(inputtext, "<") != -1 || strfind(inputtext, ">") != -1 ||
+					strfind(inputtext, "|") != -1 || !strlen(inputtext) ||
+					inputtext[0] == ' ' )
+						ShowTextDrawDialog(playerid, 1, 3); // Ilegal characters.
+						
+                else // It's ok, create the new file.
+                {
+                    new filename[128];
+                    format(filename, sizeof(filename), "%s.tde", inputtext);
+                    if(fexist(filename)) ShowTextDrawDialog(playerid, 1, 2); // Already exists.
+                    else
+                    {
+	                    CreateNewProject(filename);
+	                    strmid(CurrentProject, filename, 0, strlen(inputtext), 128);
+	                    
+	                    new tmpstr[128];
+	                    format(tmpstr, sizeof(tmpstr), "You are now working on the '%s' project.", filename);
+	                    SendClientMessage(playerid, MSG_COLOR, tmpstr);
+	                    
+	                    ShowTextDrawDialog(playerid, 4); // Show the main edition menu.
+			 		}
+                }
+            }
+            else
+                ShowTextDrawDialog(playerid, 0);
+        }
+        
+        case 1576: // Load/Delete project
+        {
+            if(response)
+            {
+                if(listitem == 0) // Custom filename
+                {
+                    if(pData[playerid][P_CurrentMenu] == LOADING)		ShowTextDrawDialog(playerid, 3);
+                    else if(pData[playerid][P_CurrentMenu] == DELETING)	ShowTextDrawDialog(playerid, 0);
+				}
+				else
+				{
+				    if(pData[playerid][P_CurrentMenu] == DELETING)
+				    {
+				        pData[playerid][P_Aux] = listitem - 1;
+				        ShowTextDrawDialog(playerid, 6);
+					}
+					else if(pData[playerid][P_CurrentMenu] == LOADING)
+					{
+					    new filename[135];
+					    format(filename, sizeof(filename), "%s", GetFileNameFromLst("tdlist.lst", listitem - 1));
+					    LoadProject(playerid, filename);
+					}
+                }
+            }
+            else
+                ShowTextDrawDialog(playerid, 0);
+        }
+        
+        case 1577: // Load custom project
+        {
+			if(response)
+			{
+				new ending[5];
+				strmid(ending, inputtext, strlen(inputtext) - 4, strlen(inputtext));
+				if(strcmp(ending, ".tde") != 0)
+				{
+				    new filename[128];
+				    format(filename, sizeof(filename), "%s.tde", inputtext);
+				    LoadProject(playerid, filename);
+				}
+				else LoadProject(playerid, inputtext);
+			}
+			else
+			{
+			    if(pData[playerid][P_CurrentMenu] == DELETING)		ShowTextDrawDialog(playerid, 2, 2);
+			    else if(pData[playerid][P_CurrentMenu] == LOADING)	ShowTextDrawDialog(playerid, 2);
+			}
+        }
+        
+        case 1578: // Textdraw selection
+        {
+            if(response)
+            {
+                if(listitem == 0) // They selected new textdraw
+                {
+                    pData[playerid][P_CurrentTextdraw] = -1;
+                    for(new i; i < MAX_TEXTDRAWS; i++)
+                    {
+                        if(!tData[i][T_Created]) // If it isn't created yet, use it.
+                        {
+                            ClearTextdraw(i);
+                            CreateDefaultTextdraw(i);
+                            pData[playerid][P_CurrentTextdraw] = i;
+                            ShowTextDrawDialog(playerid, 4, pData[playerid][P_DialogPage]);
+                            break;
+                        }
+					}
+					if(pData[playerid][P_CurrentTextdraw] == -1)
+					{
+					    SendClientMessage(playerid, MSG_COLOR, "You can't create any more textdraws!");
+					    ShowTextDrawDialog(playerid, 4, pData[playerid][P_DialogPage]);
+					}
+					else
+					{
+						new string[128];
+	                    format(string, sizeof(string), "Textdraw #%d successfuly created.", pData[playerid][P_CurrentTextdraw]);
+	                    SendClientMessage(playerid, MSG_COLOR, string);
+					}
+                }
+                else if(listitem == 1) // They selected export
+                {
+                    ShowTextDrawDialog(playerid, 25);
+                }
+                else if(listitem == 2) // They selected close project
+                {
+                    if(IsPlayerMinID(playerid))
+                    {
+	                    for(new i; i < MAX_TEXTDRAWS; i ++)
+	                    {
+	                        ClearTextdraw(i);
+	                    }
+
+	                    new string[128];
+	                    format(string, sizeof(string), "Project '%s' closed.", CurrentProject);
+	                    SendClientMessage(playerid, MSG_COLOR, string);
+
+	                    strmid(CurrentProject, " ", 128, 128);
+	                    ShowTextDrawDialog(playerid, 0);
+					}
+					else
+					{
+					    SendClientMessage(playerid, MSG_COLOR, "Just the smaller player ID can manage projects. Ask him to open one.");
+					    ShowTextDrawDialog(playerid, 4);
+					}
+                }
+                else if(listitem <= 10) // They selected a TD
+                {
+                    new id = 3;
+                    for(new i = pData[playerid][P_DialogPage]; i < MAX_TEXTDRAWS; i ++)
+                    {
+                        if(tData[i][T_Created])
+                        {
+							if(id == listitem)
+							{
+							    // We found it
+							    pData[playerid][P_CurrentTextdraw] = i;
+							    ShowTextDrawDialog(playerid, 5);
+								break;
+							}
+							id ++;
+						}
+                    }
+                    new string[128];
+                    format(string, sizeof(string), "You are now editing textdraw #%d", pData[playerid][P_CurrentTextdraw]);
+                    SendClientMessage(playerid, MSG_COLOR, string);
+                }
+                else
+                {
+                    new BiggestID, itemcount;
+                    for(new i = pData[playerid][P_DialogPage]; i < MAX_TEXTDRAWS; i ++)
+                    {
+                        if(tData[i][T_Created])
+                        {
+							itemcount ++;
+							BiggestID = i;
+							if(itemcount == 9) break;
+						}
+                    }
+                    ShowTextDrawDialog(playerid, 4, BiggestID);
+				}
+            }
+            else
+            {
+                pData[playerid][P_Editing] = false;
+                pData[playerid][P_DialogPage] = 0;
+            }
+        }
+        
+        case 1579: // Main edition menu
+        {
+            if(response)
+            {
+                switch(listitem)
+                {
+                    case 0: // Change text
+	                {
+                        ShowTextDrawDialog(playerid, 8);
+	                }
+	                case 1: // Change position
+	                {
+	                    ShowTextDrawDialog(playerid, 9);
+	                }
+	                case 2: // Change alignment
+	                {
+	                    ShowTextDrawDialog(playerid, 11);
+	                }
+	                case 3: // Change font color
+	                {
+	                    pData[playerid][P_ColorEdition] = COLOR_TEXT;
+	                    ShowTextDrawDialog(playerid, 13);
+	                }
+	                case 4: // Change font
+	                {
+	                    ShowTextDrawDialog(playerid, 17);
+	                }
+	                case 5: // Change proportionality
+	                {
+	                    ShowTextDrawDialog(playerid, 12);
+	                }
+	                case 6: // Change letter size
+	                {
+	                    ShowTextDrawDialog(playerid, 18);
+	                }
+	                case 7: // Edit outline
+	                {
+	                    ShowTextDrawDialog(playerid, 20);
+	                }
+	                case 8: // Edit box
+	                {
+	                    if(tData[pData[playerid][P_CurrentTextdraw]][T_UseBox] == 0)		ShowTextDrawDialog(playerid, 23);
+	                    else if(tData[pData[playerid][P_CurrentTextdraw]][T_UseBox] == 1)	ShowTextDrawDialog(playerid, 24);
+	                }
+	                case 9: // TextDrawSetSelectable
+	                {
+	                    ShowTextDrawDialog(playerid, 32);
+	                }
+	                case 10: // PreviewModel
+	                {
+                       	ShowTextDrawDialog(playerid, 33);
+	                }
+	                case 11: // Duplicate textdraw
+	                {
+	                    new from, to;
+	                    for(new i; i < MAX_TEXTDRAWS; i++)
+	                    {
+	                        if(!tData[i][T_Created]) // If it isn't created yet, use it.
+	                        {
+	                            ClearTextdraw(i);
+	                            CreateDefaultTextdraw(i);
+	                            from = pData[playerid][P_CurrentTextdraw];
+	                            to = i;
+	                            DuplicateTextdraw(pData[playerid][P_CurrentTextdraw], i);
+	                            pData[playerid][P_CurrentTextdraw] = -1;
+	                            ShowTextDrawDialog(playerid, 4);
+	                            break;
+	                        }
+						}
+						if(pData[playerid][P_CurrentTextdraw] != -1)
+						{
+						    SendClientMessage(playerid, MSG_COLOR, "You can't create any more textdraws!");
+						    ShowTextDrawDialog(playerid, 5);
+						}
+						else
+						{
+							new string[128];
+		                    format(string, sizeof(string), "Textdraw #%d successfuly copied to Textdraw #%d.", from, to);
+		                    SendClientMessage(playerid, MSG_COLOR, string);
+						}
+	                }
+	                case 12: // Delete textdraw
+	                {
+                        ShowTextDrawDialog(playerid, 7);
+	                }
+				}
+            }
+            else
+			{
+			    ShowTextDrawDialog(playerid, 4, 0);
+			}
+        }
+        
+        case 1580: // Delete project confirmation dialog
+        {
+            if(response)
+            {
+                new filename[128];
+                format(filename, sizeof(filename), "%s", GetFileNameFromLst("tdlist.lst", pData[playerid][P_Aux]));
+	            fremove(filename);
+				DeleteLineFromFile("tdlist.lst", pData[playerid][P_Aux]);
+				
+				format(filename, sizeof(filename), "The project saved as '%s' was successfuly deleted.", filename);
+				SendClientMessage(playerid, MSG_COLOR, filename);
+				
+				ShowTextDrawDialog(playerid, 0);
+			}
+			else
+			{
+			    ShowTextDrawDialog(playerid, 0);
+			}
+        }
+        
+        case 1581: // Delete TD confirmation
+        {
+            if(response)
+            {
+                DeleteTDFromFile(pData[playerid][P_CurrentTextdraw]);
+				ClearTextdraw(pData[playerid][P_CurrentTextdraw]);
+                
+                new string[128];
+                format(string, sizeof(string), "You have deleted textdraw #%d", pData[playerid][P_CurrentTextdraw]);
+                SendClientMessage(playerid, MSG_COLOR, string);
+                
+                pData[playerid][P_CurrentTextdraw] = 0;
+                ShowTextDrawDialog(playerid, 4);
+            }
+            else
+            {
+                ShowTextDrawDialog(playerid, 5);
+            }
+        }
+        
+        case 1582: // Change textdraw's text
+        {
+            if(response)
+            {
+                if(!strlen(inputtext)) ShowTextDrawDialog(playerid, 8);
+                else
+                {
+	                format(tData[pData[playerid][P_CurrentTextdraw]][T_Text], 1024, "%s", inputtext);
+	                UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+	                SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Text");
+	                ShowTextDrawDialog(playerid, 5);
+				}
+            }
+            else
+            {
+                ShowTextDrawDialog(playerid, 5);
+            }
+        }
+        
+        case 1583: // Change textdraw's position: exact or move
+        {
+            if(response)
+            {
+                switch(listitem)
+                {
+                    case 0: // Exact position
+                    {
+                        pData[playerid][P_Aux] = 0;
+                        ShowTextDrawDialog(playerid, 10, 0, 0);
+                    }
+                    case 1: // Move it
+                    {
+                        new string[512];
+                        string = "~w~";
+                        if(!IsPlayerInAnyVehicle(playerid))	format(string, sizeof(string), "%s~k~~GO_FORWARD~, ~k~~GO_BACK~, ~k~~GO_LEFT~, ~k~~GO_RIGHT~~n~", string);
+						else								format(string, sizeof(string), "%s~k~~VEHICLE_STEERUP~, ~k~~VEHICLE_STEERDOWN~, ~k~~VEHICLE_STEERLEFT~, ~k~~VEHICLE_STEERRIGHT~~n~", string);
+						format(string, sizeof(string), "%sand ~k~~PED_SPRINT~ to move. ", string);
+						if(!IsPlayerInAnyVehicle(playerid))	format(string, sizeof(string), "%s~k~~VEHICLE_ENTER_EXIT~", string);
+						else								format(string, sizeof(string), "%s~k~~VEHICLE_FIREWEAPON_ALT~", string);
+						format(string, sizeof(string), "%s to finish.~n~", string);
+						
+						ShowInfoDraw(playerid, string, 3000);
+						
+						SendClientMessage(playerid, MSG_COLOR, "Use [up], [down], [left] and [right] keys to move the textdraw. [sprint] to boost and [enter car] to finish.");
+						
+						TogglePlayerControllable(playerid, 0);
+						pData[playerid][P_KeyEdition] = EDIT_POSITION;
+						SetTimerEx("KeyEdit", 200, 0, "i", playerid);
+                    }
+                }
+            }
+            else
+            {
+                ShowTextDrawDialog(playerid, 5);
+            }
+        }
+        
+        case 1584: // Set position manually
+        {
+            if(response)
+            {
+                if(!IsNumeric2(inputtext)) ShowTextDrawDialog(playerid, 10, pData[playerid][P_Aux], 1);
+                else
+                {
+                    if(pData[playerid][P_Aux] == 0) // If he edited X
+                    {
+                        tData[pData[playerid][P_CurrentTextdraw]][T_X] = floatstr(inputtext);
+                        UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+                        SaveTDData(pData[playerid][P_CurrentTextdraw], "T_X");
+                        ShowTextDrawDialog(playerid, 10, 1, 0);
+                    }
+                    else if(pData[playerid][P_Aux] == 1) // If he edited Y
+                    {
+                        tData[pData[playerid][P_CurrentTextdraw]][T_Y] = floatstr(inputtext);
+                        UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+                        SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Y");
+                        ShowTextDrawDialog(playerid, 5);
+                        
+						SendClientMessage(playerid, MSG_COLOR, "Textdraw successfuly moved.");
+                    }
+                }
+            }
+            else
+            {
+                if(pData[playerid][P_Aux] == 1) // If he is editing Y, move him to X.
+                {
+                    pData[playerid][P_Aux] = 0;
+                    ShowTextDrawDialog(playerid, 10, 0, 0);
+                }
+                else // If he was editing X, move him back to select menu
+                {
+                    ShowTextDrawDialog(playerid, 9);
+                }
+            }
+        }
+        
+        case 1585: // Change textdraw's alignment
+        {
+            if(response)
+            {
+                tData[pData[playerid][P_CurrentTextdraw]][T_Alignment] = listitem+1;
+                UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+                SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Alignment");
+                
+                new string[128];
+                format(string, sizeof(string), "Textdraw #%d's alignment changed to %d.", pData[playerid][P_CurrentTextdraw], listitem+1);
+                SendClientMessage(playerid, MSG_COLOR, string);
+                
+                ShowTextDrawDialog(playerid, 5);
+            }
+            else
+            {
+                ShowTextDrawDialog(playerid, 5);
+            }
+        }
+        
+        case 1586: // Change textdraw's proportionality
+        {
+            if(response)
+            {
+                tData[pData[playerid][P_CurrentTextdraw]][T_Proportional] = listitem;
+                UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+                SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Proportional");
+
+                new string[128];
+                format(string, sizeof(string), "Textdraw #%d's proportionality changed to %d.", pData[playerid][P_CurrentTextdraw], listitem);
+                SendClientMessage(playerid, MSG_COLOR, string);
+
+                ShowTextDrawDialog(playerid, 5);
+            }
+            else
+            {
+                ShowTextDrawDialog(playerid, 5);
+            }
+        }
+        
+        case 1587: // Change color
+        {
+            if(response)
+            {
+                switch(listitem)
+                {
+                    case 0: // Write hex
+                    {
+                        ShowTextDrawDialog(playerid, 14);
+                    }
+                    case 1: // Color combinator
+                    {
+                        ShowTextDrawDialog(playerid, 15, 0, 0);
+                    }
+                    case 2: // Premade color
+                    {
+                        ShowTextDrawDialog(playerid, 16);
+                    }
+                }
+            }
+            else
+            {
+                if(pData[playerid][P_ColorEdition] == COLOR_TEXT)			ShowTextDrawDialog(playerid, 5);
+                else if(pData[playerid][P_ColorEdition] == COLOR_OUTLINE)   ShowTextDrawDialog(playerid, 20);
+                else if(pData[playerid][P_ColorEdition] == COLOR_BOX)		ShowTextDrawDialog(playerid, 24);
+            }
+        }
+        
+        case 1588: // Textdraw's color: custom hex
+        {
+        	if(response)
+            {
+                new red[3], green[3], blue[3], alpha[3];
+                
+                if(inputtext[0] == '0' && inputtext[1] == 'x') // He's using 0xFFFFFF format
+                {
+                    if(strlen(inputtext) != 8 && strlen(inputtext) != 10) return ShowTextDrawDialog(playerid, 14, 1);
+                    else
+                    {
+	                    format(red, sizeof(red), "%c%c", inputtext[2], inputtext[3]);
+	                    format(green, sizeof(green), "%c%c", inputtext[4], inputtext[5]);
+	                    format(blue, sizeof(blue), "%c%c", inputtext[6], inputtext[7]);
+	                    if(inputtext[8] != '\0')
+	                        format(alpha, sizeof(alpha), "%c%c", inputtext[8], inputtext[9]);
+						else
+						    alpha = "FF";
+					}
+                }
+                else if(inputtext[0] == '#') // He's using #FFFFFF format
+                {
+                    if(strlen(inputtext) != 7 && strlen(inputtext) != 9) return ShowTextDrawDialog(playerid, 14, 1);
+                    else
+                    {
+	                    format(red, sizeof(red), "%c%c", inputtext[1], inputtext[2]);
+	                    format(green, sizeof(green), "%c%c", inputtext[3], inputtext[4]);
+	                    format(blue, sizeof(blue), "%c%c", inputtext[5], inputtext[6]);
+	                    if(inputtext[7] != '\0')
+	                        format(alpha, sizeof(alpha), "%c%c", inputtext[7], inputtext[8]);
+						else
+						    alpha = "FF";
+					}
+                }
+                else // He's using FFFFFF format
+                {
+                    if(strlen(inputtext) != 6 && strlen(inputtext) != 8) return ShowTextDrawDialog(playerid, 14, 1);
+                    else
+                    {
+	                    format(red, sizeof(red), "%c%c", inputtext[0], inputtext[1]);
+	                    format(green, sizeof(green), "%c%c", inputtext[2], inputtext[3]);
+	                    format(blue, sizeof(blue), "%c%c", inputtext[4], inputtext[5]);
+	                    if(inputtext[6] != '\0')
+	                        format(alpha, sizeof(alpha), "%c%c", inputtext[6], inputtext[7]);
+						else
+						    alpha = "FF";
+					}
+                }
+                // We got the color
+                if(pData[playerid][P_ColorEdition] == COLOR_TEXT)
+                	tData[pData[playerid][P_CurrentTextdraw]][T_Color] = RGB(HexToInt(red), HexToInt(green), HexToInt(blue), HexToInt(alpha));
+				else if(pData[playerid][P_ColorEdition] == COLOR_OUTLINE)
+				    tData[pData[playerid][P_CurrentTextdraw]][T_BackColor] = RGB(HexToInt(red), HexToInt(green), HexToInt(blue), HexToInt(alpha));
+                else if(pData[playerid][P_ColorEdition] == COLOR_BOX)
+				    tData[pData[playerid][P_CurrentTextdraw]][T_BoxColor] = RGB(HexToInt(red), HexToInt(green), HexToInt(blue), HexToInt(alpha));
+                UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+                SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Color");
+                SaveTDData(pData[playerid][P_CurrentTextdraw], "T_BackColor");
+                SaveTDData(pData[playerid][P_CurrentTextdraw], "T_BoxColor");
+                
+                new string[128];
+                format(string, sizeof(string), "Textdraw #%d's color has been changed.", pData[playerid][P_CurrentTextdraw]);
+                SendClientMessage(playerid, MSG_COLOR, string);
+
+                if(pData[playerid][P_ColorEdition] == COLOR_TEXT) 			ShowTextDrawDialog(playerid, 5);
+                else if(pData[playerid][P_ColorEdition] == COLOR_OUTLINE)   ShowTextDrawDialog(playerid, 20);
+                else if(pData[playerid][P_ColorEdition] == COLOR_BOX)		ShowTextDrawDialog(playerid, 24);
+            }
+            else
+            {
+                ShowTextDrawDialog(playerid, 13);
+            }
+		}
+		
+		case 1589: // Textdraw's color: Color combinator
+        {
+            if(response)
+            {
+                if(!IsNumeric2(inputtext)) ShowTextDrawDialog(playerid, 15, pData[playerid][P_Aux], 2);
+                else if(strval(inputtext) < 0 || strval(inputtext) > 255) ShowTextDrawDialog(playerid, 15, pData[playerid][P_Aux], 1);
+                else
+                {
+                    pData[playerid][P_Color][pData[playerid][P_Aux]] = strval(inputtext);
+             	    
+                    if(pData[playerid][P_Aux] == 3) // He finished editing alpha, he has the rest.
+                    {
+                        // We got the color
+                        if(pData[playerid][P_ColorEdition] == COLOR_TEXT)
+		                	tData[pData[playerid][P_CurrentTextdraw]][T_Color] = RGB(pData[playerid][P_Color][0], pData[playerid][P_Color][1], \
+																				 pData[playerid][P_Color][2], pData[playerid][P_Color][3] );
+						else if(pData[playerid][P_ColorEdition] == COLOR_OUTLINE)
+						    tData[pData[playerid][P_CurrentTextdraw]][T_BackColor] = RGB(pData[playerid][P_Color][0], pData[playerid][P_Color][1], \
+																				 pData[playerid][P_Color][2], pData[playerid][P_Color][3] );
+		                else if(pData[playerid][P_ColorEdition] == COLOR_BOX)
+						    tData[pData[playerid][P_CurrentTextdraw]][T_BoxColor] = RGB(pData[playerid][P_Color][0], pData[playerid][P_Color][1], \
+																				 pData[playerid][P_Color][2], pData[playerid][P_Color][3] );
+		                UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+		                SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Color");
+		                SaveTDData(pData[playerid][P_CurrentTextdraw], "T_BackColor");
+		                SaveTDData(pData[playerid][P_CurrentTextdraw], "T_BoxColor");
+
+		                new string[128];
+		                format(string, sizeof(string), "Textdraw #%d's color has been changed.", pData[playerid][P_CurrentTextdraw]);
+		                SendClientMessage(playerid, MSG_COLOR, string);
+
+		                if(pData[playerid][P_ColorEdition] == COLOR_TEXT) 			ShowTextDrawDialog(playerid, 5);
+               			else if(pData[playerid][P_ColorEdition] == COLOR_OUTLINE)   ShowTextDrawDialog(playerid, 20);
+               			else if(pData[playerid][P_ColorEdition] == COLOR_BOX)		ShowTextDrawDialog(playerid, 24);
+                    }
+                    else
+                    {
+                        pData[playerid][P_Aux] += 1;
+	                    ShowTextDrawDialog(playerid, 15, pData[playerid][P_Aux], 0);
+					}
+                }
+            }
+            else
+            {
+                if(pData[playerid][P_Aux] >= 1) // If he is editing alpha, blue, etc.
+                {
+                    pData[playerid][P_Aux] -= 1;
+                    ShowTextDrawDialog(playerid, 15, pData[playerid][P_Aux], 0);
+                }
+                else // If he was editing red, move him back to select color menu.
+                {
+                    ShowTextDrawDialog(playerid, 13);
+                }
+            }
+        }
+        
+        case 1590: // Textdraw's color: premade colors
+        {
+            if(response)
+            {
+                new col;
+                switch(listitem)
+                {
+                    case 0: col = 0xff0000ff;
+                    case 1: col = 0x00ff00ff;
+                    case 2: col = 0x0000ffff;
+                    case 3: col = 0xffff00ff;
+                    case 4: col = 0xff00ffff;
+                    case 5: col = 0x00ffffff;
+                    case 6: col = 0xffffffff;
+                    case 7: col = 0x000000ff;
+                }
+                if(pData[playerid][P_ColorEdition] == COLOR_TEXT)
+                	tData[pData[playerid][P_CurrentTextdraw]][T_Color] = col;
+				else if(pData[playerid][P_ColorEdition] == COLOR_OUTLINE)
+				    tData[pData[playerid][P_CurrentTextdraw]][T_BackColor] = col;
+                else if(pData[playerid][P_ColorEdition] == COLOR_BOX)
+				    tData[pData[playerid][P_CurrentTextdraw]][T_BoxColor] = col;
+                UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+                SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Color");
+                SaveTDData(pData[playerid][P_CurrentTextdraw], "T_BackColor");
+                SaveTDData(pData[playerid][P_CurrentTextdraw], "T_BoxColor");
+
+                new string[128];
+                format(string, sizeof(string), "Textdraw #%d's color has been changed.", pData[playerid][P_CurrentTextdraw]);
+                SendClientMessage(playerid, MSG_COLOR, string);
+                
+                if(pData[playerid][P_ColorEdition] == COLOR_TEXT) 			ShowTextDrawDialog(playerid, 5);
+                else if(pData[playerid][P_ColorEdition] == COLOR_OUTLINE)   ShowTextDrawDialog(playerid, 20);
+                else if(pData[playerid][P_ColorEdition] == COLOR_BOX)		ShowTextDrawDialog(playerid, 24);
+            }
+            else
+            {
+                ShowTextDrawDialog(playerid, 13);
+            }
+        }
+        
+        case 1591: // Change textdraw's font
+        {
+            if(response)
+            {
+                tData[pData[playerid][P_CurrentTextdraw]][T_Font] = listitem;
+                UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+                SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Font");
+
+                new string[128];
+                format(string, sizeof(string), "Textdraw #%d's font changed to %d.", pData[playerid][P_CurrentTextdraw], listitem);
+                SendClientMessage(playerid, MSG_COLOR, string);
+                if(listitem < 5)
+				{
+					if(GetPVarInt(playerid, "Use2DTD") == 1)
+					{
+						DeletePVar(playerid, "Use2DTD");
+					}
+				}
+                if(listitem == 4)
+                {
+                    SendClientMessage(playerid,-1, "To use font 4, you have to active the box.");
+                    SendClientMessage(playerid,-1, "Change the box size to change TD size.");
+                    SendClientMessage(playerid,-1, "Function added by irinel1996.");
+				}
+                if(listitem == 5)
+                {
+                    SetPVarInt(playerid, "Use2DTD", 1);
+                    SendClientMessage(playerid,-1, "Add by adri1.");
+                    SendClientMessage(playerid,-1, "Important: Use Box!");
+				}
+                ShowTextDrawDialog(playerid, 5);
+            }
+            else
+            {
+                ShowTextDrawDialog(playerid, 5);
+            }
+        }
+        
+        case 1592: // Change textdraw's letter size: exact or move
+        {
+            if(response)
+            {
+                switch(listitem)
+                {
+                    case 0: // Exact size
+                    {
+                        pData[playerid][P_Aux] = 0;
+                        ShowTextDrawDialog(playerid, 19, 0, 0);
+                    }
+                    case 1: // Resize it
+                    {
+                        new string[512];
+                        string = "~w~";
+                        if(!IsPlayerInAnyVehicle(playerid))	format(string, sizeof(string), "%s~k~~GO_FORWARD~, ~k~~GO_BACK~, ~k~~GO_LEFT~, ~k~~GO_RIGHT~~n~", string);
+						else								format(string, sizeof(string), "%s~k~~VEHICLE_STEERUP~, ~k~~VEHICLE_STEERDOWN~, ~k~~VEHICLE_STEERLEFT~, ~k~~VEHICLE_STEERRIGHT~~n~", string);
+						format(string, sizeof(string), "%sand ~k~~PED_SPRINT~ to resize. ", string);
+						if(!IsPlayerInAnyVehicle(playerid))	format(string, sizeof(string), "%s~k~~VEHICLE_ENTER_EXIT~", string);
+						else								format(string, sizeof(string), "%s~k~~VEHICLE_FIREWEAPON_ALT~", string);
+						format(string, sizeof(string), "%s to finish.~n~", string);
+
+						ShowInfoDraw(playerid, string, 3000);
+						SendClientMessage(playerid, MSG_COLOR, "Use [up], [down], [left] and [right] keys to resize the textdraw. [sprint] to boost and [enter car] to finish.");
+
+						TogglePlayerControllable(playerid, 0);
+						pData[playerid][P_KeyEdition] = EDIT_SIZE;
+						SetTimerEx("KeyEdit", 200, 0, "i", playerid);
+                    }
+                }
+            }
+            else
+            {
+                ShowTextDrawDialog(playerid, 5);
+            }
+        }
+        
+        case 1593: // Change letter size manually
+        {
+            if(response)
+            {
+                if(!IsNumeric2(inputtext)) ShowTextDrawDialog(playerid, 19, pData[playerid][P_Aux], 1);
+                else
+                {
+                    if(pData[playerid][P_Aux] == 0) // If he edited X
+                    {
+                        tData[pData[playerid][P_CurrentTextdraw]][T_XSize] = floatstr(inputtext);
+                        UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+                        SaveTDData(pData[playerid][P_CurrentTextdraw], "T_XSize");
+                        ShowTextDrawDialog(playerid, 19, 1, 0);
+                    }
+                    else if(pData[playerid][P_Aux] == 1) // If he edited Y
+                    {
+                        tData[pData[playerid][P_CurrentTextdraw]][T_YSize] = floatstr(inputtext);
+                        UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+                        SaveTDData(pData[playerid][P_CurrentTextdraw], "T_YSize");
+                        ShowTextDrawDialog(playerid, 5);
+
+						SendClientMessage(playerid, MSG_COLOR, "Textdraw successfuly resized.");
+                    }
+                }
+            }
+            else
+            {
+                if(pData[playerid][P_Aux] == 1) // If he is editing Y, move him to X.
+                {
+                    pData[playerid][P_Aux] = 0;
+                    ShowTextDrawDialog(playerid, 19, 0, 0);
+                }
+                else // If he was editing X, move him back to select menu
+                {
+                    ShowTextDrawDialog(playerid, 18);
+                }
+            }
+        }
+        
+        case 1594: // main outline menu
+        {
+            if(response)
+            {
+				switch(listitem)
+				{
+				    case 0: // Toggle outline
+				    {
+				        if(tData[pData[playerid][P_CurrentTextdraw]][T_Outline])	tData[pData[playerid][P_CurrentTextdraw]][T_Outline] = 0;
+				        else                                                        tData[pData[playerid][P_CurrentTextdraw]][T_Outline] = 1;
+				        UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+				        SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Outline");
+				        ShowTextDrawDialog(playerid, 20);
+				        
+				        SendClientMessage(playerid, MSG_COLOR, "Textdraw's outline toggled.");
+				    }
+					case 1: // Change shadow
+					{
+                        ShowTextDrawDialog(playerid, 21);
+					}
+					case 2: // Change color
+					{
+		                pData[playerid][P_ColorEdition] = COLOR_OUTLINE;
+                        ShowTextDrawDialog(playerid, 13);
+					}
+					case 3: // Finish
+	                {
+	                    SendClientMessage(playerid, MSG_COLOR, "Finished outline customization.");
+	                    ShowTextDrawDialog(playerid, 5);
+	                }
+				}
+            }
+            else
+            {
+                ShowTextDrawDialog(playerid, 5);
+            }
+        }
+        
+        case 1595: // Outline shadow
+        {
+            if(response)
+            {
+                if(listitem == 6) // selected custom
+                {
+                    ShowTextDrawDialog(playerid, 22);
+                }
+                else
+                {
+                    tData[pData[playerid][P_CurrentTextdraw]][T_Shadow] = listitem;
+                    UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+                    SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Shadow");
+                    ShowTextDrawDialog(playerid, 20);
+
+					new string[128];
+	                format(string, sizeof(string), "Textdraw #%d's outline shadow changed to %d.", pData[playerid][P_CurrentTextdraw], listitem);
+	                SendClientMessage(playerid, MSG_COLOR, string);
+                }
+            }
+            else
+            {
+                ShowTextDrawDialog(playerid, 20);
+            }
+        }
+        
+        case 1596: // outline shaow customized
+        {
+            if(response)
+            {
+                if(!IsNumeric2(inputtext)) ShowTextDrawDialog(playerid, 22, 1);
+                else
+                {
+                    tData[pData[playerid][P_CurrentTextdraw]][T_Shadow] = strval(inputtext);
+                    UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+                    SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Shadow");
+                    ShowTextDrawDialog(playerid, 20);
+
+					new string[128];
+	                format(string, sizeof(string), "Textdraw #%d's outline shadow changed to %d.", pData[playerid][P_CurrentTextdraw], strval(inputtext));
+	                SendClientMessage(playerid, MSG_COLOR, string);
+                }
+            }
+            else
+            {
+                ShowTextDrawDialog(playerid, 21);
+            }
+        }
+        
+        case 1597: // Box on - off
+        {
+            if(response)
+            {
+                switch(listitem)
+                {
+                    case 0: // Turned box on
+                    {
+                        tData[pData[playerid][P_CurrentTextdraw]][T_UseBox] = 1;
+						UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+						SaveTDData(pData[playerid][P_CurrentTextdraw], "T_UseBox");
+
+						SendClientMessage(playerid, MSG_COLOR, "Textdraw box enabled. Proceeding with edition...");
+
+						ShowTextDrawDialog(playerid, 24);
+                    }
+                    case 1: // He disabled it, nothing more to edit.
+                    {
+						tData[pData[playerid][P_CurrentTextdraw]][T_UseBox] = 0;
+						UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+						SaveTDData(pData[playerid][P_CurrentTextdraw], "T_UseBox");
+						
+						SendClientMessage(playerid, MSG_COLOR, "Textdraw box disabled.");
+						
+						ShowTextDrawDialog(playerid, 5);
+                    }
+                }
+            }
+            else
+            {
+                ShowTextDrawDialog(playerid, 5);
+            }
+        }
+        
+        case 1598: // Box main menu
+        {
+            if(response)
+            {
+                switch(listitem)
+                {
+                    case 0: // Turned box off
+                    {
+                        tData[pData[playerid][P_CurrentTextdraw]][T_UseBox] = 0;
+						UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+						SaveTDData(pData[playerid][P_CurrentTextdraw], "T_UseBox");
+
+						SendClientMessage(playerid, MSG_COLOR, "Textdraw box disabled.");
+
+						ShowTextDrawDialog(playerid, 23);
+                    }
+                    case 1: // box size
+                    {
+						new string[512];
+                        string = "~w~";
+                        if(!IsPlayerInAnyVehicle(playerid))	format(string, sizeof(string), "%s~k~~GO_FORWARD~, ~k~~GO_BACK~, ~k~~GO_LEFT~, ~k~~GO_RIGHT~~n~", string);
+						else								format(string, sizeof(string), "%s~k~~VEHICLE_STEERUP~, ~k~~VEHICLE_STEERDOWN~, ~k~~VEHICLE_STEERLEFT~, ~k~~VEHICLE_STEERRIGHT~~n~", string);
+						format(string, sizeof(string), "%sand ~k~~PED_SPRINT~ to resize. ", string);
+						if(!IsPlayerInAnyVehicle(playerid))	format(string, sizeof(string), "%s~k~~VEHICLE_ENTER_EXIT~", string);
+						else								format(string, sizeof(string), "%s~k~~VEHICLE_FIREWEAPON_ALT~", string);
+						format(string, sizeof(string), "%s to finish.~n~", string);
+
+                        ShowInfoDraw(playerid, string, 3000);
+						SendClientMessage(playerid, MSG_COLOR, "Use [up], [down], [left] and [right] keys to resize the box. [sprint] to boost and [enter car] to finish.");
+
+						TogglePlayerControllable(playerid, 0);
+						pData[playerid][P_KeyEdition] = EDIT_BOX;
+						SetTimerEx("KeyEdit", 200, 0, "i", playerid);
+                    }
+                    case 2: // box color
+                    {
+                        pData[playerid][P_ColorEdition] = COLOR_BOX;
+                        ShowTextDrawDialog(playerid, 13);
+                    }
+                }
+            }
+            else
+            {
+                ShowTextDrawDialog(playerid, 5);
+            }
+        }
+        case 1606: // Change textdraw's selectable
+        {
+            if(response)
+            {
+                tData[pData[playerid][P_CurrentTextdraw]][T_Selectable] = 1;
+                UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+                SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Selectable");
+
+                new string[128];
+                format(string, sizeof(string), "Textdraw #%d's can selectable ON.", pData[playerid][P_CurrentTextdraw]);
+                SendClientMessage(playerid, MSG_COLOR, string);
+                ShowTextDrawDialog(playerid, 5);
+            }
+            else
+            {
+                tData[pData[playerid][P_CurrentTextdraw]][T_Selectable] = 0;
+                UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+                SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Selectable");
+
+                new string[128];
+                format(string, sizeof(string), "Textdraw #%d's can selectable OFF.", pData[playerid][P_CurrentTextdraw]);
+                SendClientMessage(playerid, MSG_COLOR, string);
+                ShowTextDrawDialog(playerid, 5);
+            }
+        }
+
+        case 1607: // Preview model
+        {
+      //  Model Index\nRot X\nRot Y\nRot Z\nZoom
+            if(response)
+            {
+                if(listitem == 0)
+                {
+                    ShowTextDrawDialog(playerid, 34);
+				}
+                if(listitem == 1)
+                {
+                    ShowTextDrawDialog(playerid, 35);
+				}
+				if(listitem == 2)
+                {
+                    ShowTextDrawDialog(playerid, 36);
+				}
+				if(listitem == 3)
+                {
+                    ShowTextDrawDialog(playerid, 37);
+				}
+				if(listitem == 4)
+                {
+                    ShowTextDrawDialog(playerid, 38);
+				}
+            }
+            else
+            {
+                ShowTextDrawDialog(playerid, 5);
+            }
+        }
+        case 1608: // Model Index
+        {
+			if(response)
+			{
+				if(!IsNumeric2(inputtext)) return ShowTextDrawDialog(playerid, 33);
+                tData[pData[playerid][P_CurrentTextdraw]][T_PreviewModel] = strval(inputtext);
+                UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+                SaveTDData(pData[playerid][P_CurrentTextdraw], "T_PreviewModel");
+
+                new string[128];
+                format(string, sizeof(string), "Textdraw #%d's changed Preview Model to \"%d\".", pData[playerid][P_CurrentTextdraw], strval(inputtext));
+                SendClientMessage(playerid, MSG_COLOR, string);
+                ShowTextDrawDialog(playerid, 33);
+			}
+			else
+			{
+			    ShowTextDrawDialog(playerid, 33);
+			}
+		}
+        case 1609: // Rot X
+        {
+			if(response)
+			{
+				if(!IsNumeric2(inputtext)) return ShowTextDrawDialog(playerid, 33);
+                tData[pData[playerid][P_CurrentTextdraw]][PMRotX] = floatstr(inputtext);
+                UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+                SaveTDData(pData[playerid][P_CurrentTextdraw], "PMRotX");
+
+                new string[128];
+                format(string, sizeof(string), "Textdraw #%d's changed Preview Model RX to \"%f\".", pData[playerid][P_CurrentTextdraw], floatstr(inputtext));
+                SendClientMessage(playerid, MSG_COLOR, string);
+                ShowTextDrawDialog(playerid, 33);
+			}
+			else
+			{
+			    ShowTextDrawDialog(playerid, 33);
+			}
+		}
+        case 1610: // Rot Y
+        {
+			if(response)
+			{
+				if(!IsNumeric2(inputtext)) return ShowTextDrawDialog(playerid, 33);
+                tData[pData[playerid][P_CurrentTextdraw]][PMRotY] = floatstr(inputtext);
+                UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+                SaveTDData(pData[playerid][P_CurrentTextdraw], "PMRotY");
+
+                new string[128];
+                format(string, sizeof(string), "Textdraw #%d's changed Preview Model RY to \"%f\".", pData[playerid][P_CurrentTextdraw], floatstr(inputtext));
+                SendClientMessage(playerid, MSG_COLOR, string);
+                ShowTextDrawDialog(playerid, 33);
+			}
+			else
+			{
+			    ShowTextDrawDialog(playerid, 33);
+			}
+		}
+        case 1611: // Rot Z
+        {
+			if(response)
+			{
+				if(!IsNumeric2(inputtext)) return ShowTextDrawDialog(playerid, 33);
+                tData[pData[playerid][P_CurrentTextdraw]][PMRotZ] = floatstr(inputtext);
+                UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+                SaveTDData(pData[playerid][P_CurrentTextdraw], "PMRotZ");
+
+                new string[128];
+                format(string, sizeof(string), "Textdraw #%d's changed Preview Model RZ to \"%f\".", pData[playerid][P_CurrentTextdraw], floatstr(inputtext));
+                SendClientMessage(playerid, MSG_COLOR, string);
+                ShowTextDrawDialog(playerid, 33);
+			}
+			else
+			{
+			    ShowTextDrawDialog(playerid, 33);
+			}
+		}
+        case 1612: // Zoom
+        {
+			if(response)
+			{
+				if(!IsNumeric2(inputtext)) return ShowTextDrawDialog(playerid, 33);
+                tData[pData[playerid][P_CurrentTextdraw]][PMZoom] = floatstr(inputtext);
+                UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+                SaveTDData(pData[playerid][P_CurrentTextdraw], "PMZoom");
+
+                new string[128];
+                format(string, sizeof(string), "Textdraw #%d's changed Preview Model Zoom to \"%f\".", pData[playerid][P_CurrentTextdraw], floatstr(inputtext));
+                SendClientMessage(playerid, MSG_COLOR, string);
+                ShowTextDrawDialog(playerid, 33);
+			}
+			else
+			{
+			    ShowTextDrawDialog(playerid, 33);
+			}
+		}
+        case 1599: // Export menu
+        {
+            if(response)
+            {
+                switch(listitem)
+                {
+                    case 0: // classic mode
+                    {
+                        ExportProject(playerid, 0);
+                    }
+                    case 1: // self-working fs
+                    {
+						ShowTextDrawDialog(playerid, 26);
+                    }
+                    case 2: // PlayerTextDraw [ADD BY ADRI1]
+                    {
+                        ExportProject(playerid, 7);
+                    }
+                    case 3: // 420 GUI
+                    {
+                        ExportProject(playerid, 8);
+                    }
+                }
+            }
+            else
+            {
+                ShowTextDrawDialog(playerid, 4);
+            }
+        }
+        
+        case 1600: // Export to self working filterscript
+        {
+            if(response)
+            {
+                switch(listitem)
+                {
+                    case 0: // Show all the time.
+                    {
+                        ExportProject(playerid, 1);
+                    }
+                    case 1: // Show on class selection.
+                    {
+                        ExportProject(playerid, 2);
+                    }
+                    case 2: // Show while in vehicle
+                    {
+                        ExportProject(playerid, 3);
+                    }
+                    case 3: // Show with command
+                    {
+                        ShowTextDrawDialog(playerid, 27);
+                    }
+                    case 4: // Show automatly repeteadly after some time
+                    {
+                        ShowTextDrawDialog(playerid, 29);
+                    }
+                    case 5: // Show after player killed someone
+                    {
+                        ShowTextDrawDialog(playerid, 31);
+                    }
+                }
+            }
+            else
+            {
+                ShowTextDrawDialog(playerid, 25);
+            }
+        }
+
+		case 1601: // Write command for export
+		{
+		    if(response)
+		    {
+		        if(!strlen(inputtext)) ShowTextDrawDialog(playerid, 27);
+		        else
+		        {
+		            if(inputtext[0] != '/')
+		                format(pData[playerid][P_ExpCommand], 128, "/%s", inputtext);
+		            else
+		                format(pData[playerid][P_ExpCommand], 128, "%s", inputtext);
+		                
+					ShowTextDrawDialog(playerid, 28);
+		        }
+		    }
+		    else
+		    {
+		        ShowTextDrawDialog(playerid, 26);
+		    }
+		}
+		
+		case 1602: // Time after command for export
+		{
+		    if(response)
+		    {
+				if(!IsNumeric2(inputtext)) ShowTextDrawDialog(playerid, 28);
+				else if(strval(inputtext) < 0) ShowTextDrawDialog(playerid, 28);
+				else
+				{
+				    pData[playerid][P_Aux] = strval(inputtext);
+				    ExportProject(playerid, 4);
+				}
+		    }
+		    else
+		    {
+		        ShowTextDrawDialog(playerid, 27);
+		    }
+		}
+		
+		case 1603: // Write time in secs to appear for export
+		{
+		    if(response)
+		    {
+		        if(!IsNumeric2(inputtext)) ShowTextDrawDialog(playerid, 29);
+				else if(strval(inputtext) < 0) ShowTextDrawDialog(playerid, 29);
+				else
+				{
+				    pData[playerid][P_Aux] = strval(inputtext);
+				    ShowTextDrawDialog(playerid, 30);
+				}
+		    }
+		    else
+		    {
+		        ShowTextDrawDialog(playerid, 26);
+		    }
+		}
+
+		case 1604: // Time after appeared to dissapear for export
+		{
+		    if(response)
+		    {
+				if(!IsNumeric2(inputtext)) ShowTextDrawDialog(playerid, 30);
+				else if(strval(inputtext) < 0) ShowTextDrawDialog(playerid, 30);
+				else
+				{
+				    pData[playerid][P_Aux2] = strval(inputtext);
+				    ExportProject(playerid, 5);
+				}
+		    }
+		    else
+		    {
+		        ShowTextDrawDialog(playerid, 29);
+		    }
+		}
+		
+		case 1605: // Time after appeared to dissapear when kill for export
+		{
+		    if(response)
+		    {
+				if(!IsNumeric2(inputtext)) ShowTextDrawDialog(playerid, 31);
+				else if(strval(inputtext) < 0) ShowTextDrawDialog(playerid, 31);
+				else
+				{
+				    pData[playerid][P_Aux] = strval(inputtext);
+				    ExportProject(playerid, 6);
+				}
+		    }
+		    else
+		    {
+		        ShowTextDrawDialog(playerid, 26);
+		    }
+		}
+    }
+    
+	return 1;
+}
+
+// =============================================================================
+// Functions.
+// =============================================================================
+
+forward ShowTextDrawDialogEx( playerid, dialogid );
+public ShowTextDrawDialogEx( playerid, dialogid ) ShowTextDrawDialog( playerid, dialogid );
+
+stock ShowTextDrawDialog( playerid, dialogid, aux=0, aux2=0 )
+{
+    /*	Shows a specific dialog for a specific player
+	    @playerid:      ID of the player to show the dialog to.
+	    @dialogid:      ID of the dialog to show.
+	    @aux:           Auxiliary variable. Works to make variations of certain dialogs.
+	    @aux2:          Auxiliary variable. Works to make variations of certain dialogs.
+
+	    -Returns:
+	    true on success, false on fail.
+	*/
+
+	switch(dialogid)
+	{
+	    case 0: // Select project.
+	    {
+            new info[256];
+		    format(info, sizeof(info), "%sNew Project\n", info);
+		    format(info, sizeof(info), "%sLoad Project\n", info);
+		    format(info, sizeof(info), "%sDelete Project", info);
+		    ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Startup"), info, "Accept", "Cancel");
+		    return true;
+	    }
+	    
+	    case 1:
+	    {
+	        new info[256];
+	        if(!aux) 			info = "Write the name of the new project file.\n";
+	        else if(aux == 1)   info = "ERROR: The name is too long, please try again.\n";
+	        else if(aux == 2)   info = "ERROR: That filename already exists, try again.\n";
+	        else if(aux == 3)   info = "ERROR: That file name contains ilegal characters. You aren't allowed to\ncreate subdirectories. Please try again.";
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "New project"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 2:
+	    {
+	        // Store in a var if he's deleting or loading.
+	        if(aux == 2) 	pData[playerid][P_CurrentMenu] = DELETING;
+	        else            pData[playerid][P_CurrentMenu] = LOADING;
+	        
+			new info[1024];
+			if(fexist("tdlist.lst"))
+	        {
+				if(aux != 2)	info = "Custom filename...";
+				else    		info = "<< Go back";
+		        new File:tdlist = fopen("tdlist.lst", io_read),
+					line[128];
+                while(fread(tdlist, line))
+                {
+		            format(info, sizeof(info), "%s\n%s", info, line);
+		        }
+		        
+		        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Load project"), info, "Accept", "Go back");
+		        fclose(tdlist);
+	        }
+	        else
+	        {
+	            if(aux) format(info, sizeof(info), "%sCan't find tdlist.lst.\n", info);
+			    format(info, sizeof(info), "%sWrite manually the name of the project file you want\n", info);
+			    if(aux != 2) 	format(info, sizeof(info), "%sto open:\n", info);
+			    else            format(info, sizeof(info), "%sto delete:\n", info);
+			    
+			    if(aux != 2)	ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Load project"), info, "Accept", "Go back");
+			    else            ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Delete project"), info, "Accept", "Go back");
+		    }
+	        return true;
+	    }
+	    
+	    case 3:
+	    {
+			ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Load project"), \
+		 		"Write manually the name of the project file\n you want to load:\n", "Accept", "Go back");
+			return true;
+	    }
+	    
+	    case 4: // Main edition menu (shows all the textdraws and lets you create a new one).
+	    {
+	        new info[1024],
+				shown;
+	        format(info, sizeof(info), "%sCreate new Textdraw...", info);
+	        shown ++;
+	        format(info, sizeof(info), "%s\nExport project...", info);
+	        shown ++;
+	        format(info, sizeof(info), "%s\nClose project...", info);
+	        shown ++;
+	        // Aux here is used to indicate from which TD show the list from.
+	        pData[playerid][P_DialogPage] = aux;
+	        for(new i=aux; i < MAX_TEXTDRAWS; i++)
+	        {
+	            if(tData[i][T_Created])
+	            {
+	                shown ++;
+					if(shown == 12)
+					{
+						format(info, sizeof(info), "%s\nMore >>", info);
+						break;
+					}
+					
+	                new PieceOfText[PREVIEW_CHARS];
+	                if(strlen(tData[i][T_Text]) > sizeof(PieceOfText))
+	                {
+	                    strmid(PieceOfText, tData[i][T_Text], 0, PREVIEW_CHARS, PREVIEW_CHARS);
+	                    format(info, sizeof(info), "%s\nTDraw %d: '%s [...]'", info, i, PieceOfText);
+	                }
+					else
+					{
+					    format(info, sizeof(info), "%s\nTDraw %d: '%s'", info, i, tData[i][T_Text]);
+					}
+	            }
+	        }
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraw selection"), info, "Accept", "Cancel");
+	        return true;
+	    }
+	    
+	    case 5:
+	    {
+	        new info[1024];
+	        format(info, sizeof(info), "%sChange text string\n", info);
+	        format(info, sizeof(info), "%sChange position\n", info);
+	        format(info, sizeof(info), "%sChange alignment\n", info);
+	        format(info, sizeof(info), "%sChange text color\n", info);
+	        format(info, sizeof(info), "%sChange font\n", info);
+	        format(info, sizeof(info), "%sChange proportionality\n", info);
+	        format(info, sizeof(info), "%sChange font size\n", info);
+	        format(info, sizeof(info), "%sEdit outline\n", info);
+	        format(info, sizeof(info), "%sEdit box\n", info);
+	        format(info, sizeof(info), "%sTextDraw can selectable...\n", info);
+	        format(info, sizeof(info), "%sPreview Model options...\n", info);
+	        format(info, sizeof(info), "%sDuplicate Textdraw...\n", info);
+	        format(info, sizeof(info), "%sDelete Textdraw...", info);
+	        
+	        new title[40];
+	        format(title, sizeof(title), "Textdraw %d", pData[playerid][P_CurrentTextdraw]);
+	        
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, title), info, "Accept", "Cancel");
+	        return true;
+	    }
+	    
+	    case 6:
+	    {
+	        new info[256];
+	        format(info, sizeof(info), "%sAre you sure you want to delete the\n", info);
+	        format(info, sizeof(info), "%s%s project?\n\n", info, GetFileNameFromLst("tdlist.lst", pData[playerid][P_Aux]));
+	        format(info, sizeof(info), "%sWARNING: There is no way to undo this operation.", info);
+	        
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_MSGBOX, CreateDialogTitle(playerid, "Confirm deletion"), info, "Yes", "No");
+	        return true;
+	    }
+	    
+	    case 7:
+	    {
+	        new info[256];
+	        format(info, sizeof(info), "%sAre you sure you want to delete the\n", info);
+	        format(info, sizeof(info), "%sTextdraw number %d?\n\n", info, pData[playerid][P_CurrentTextdraw]);
+	        format(info, sizeof(info), "%sWARNING: There is no way to undo this operation.", info);
+	        
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_MSGBOX, CreateDialogTitle(playerid, "Confirm deletion"), info, "Yes", "No");
+	        return true;
+	    }
+	    
+	    case 8:
+	    {
+	        new info[1024];
+	        info = "Write the new textdraw's text. The current text is:\n\n";
+	        format(info, sizeof(info), "%s%s\n\n", info, tData[pData[playerid][P_CurrentTextdraw]][T_Text]);
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's string"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 9:
+	    {
+	        new info[256];
+	        info = "Write exact position\n";
+	        format(info, sizeof(info), "%sMove the Textdraw", info);
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraw's position"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 10:
+	    {
+	        // aux is 0 for X, 1 for Y.
+	        // aux2 is the type of error message. 0 for no error.
+	        new info[256];
+	        if(aux2 == 1) info = "ERROR: You have to write a number.\n\n";
+	        
+	        format(info, sizeof(info), "%sWrite in numbers the new exact ", info);
+	        if(aux == 0) 		format(info, sizeof(info), "%sX", info);
+	        else if(aux == 1)   format(info, sizeof(info), "%sY", info);
+         	format(info, sizeof(info), "%s position of the Textdraw\n", info);
+         	
+        	pData[playerid][P_Aux] = aux; // To know if he's editing X or Y.
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's position"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 11:
+	    {
+	        new info[256];
+	        info = "Left (type 1)\nCentered (type 2)\nRight (type 3)";
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraw's alignment"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 12:
+	    {
+	        new info[256];
+	        info = "Proportionality On\nProportionality Off";
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraw's proportionality"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 13:
+	    {
+	        new info[256];
+	        info = "Write an hexadecimal number\nUse color combinator\nSelect a premade color";
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraw's color"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 14:
+	    {
+	        new info[256];
+	        if(aux) info = "ERROR: You have written an invalid hex number.\n\n";
+	        format(info, sizeof(info), "%sWrite the hexadecimal number you want:\n", info);
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's color"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 15:
+	    {
+	        // aux is 0 for red, 1 for green, 2 for blue, and 3 for alpha.
+	        // aux2 is the type of error message. 0 for no error.
+	        new info[256];
+	        if(aux2 == 1) 		info = "ERROR: The number range has to be between 0 and 255.\n\n";
+	        else if(aux2 == 2) 	info = "ERROR: You have to write a number.\n\n";
+
+	        format(info, sizeof(info), "%sWrite the amount of ", info);
+	        if(aux == 0) 		format(info, sizeof(info), "%sRED", info);
+	        else if(aux == 1)   format(info, sizeof(info), "%sGREEN", info);
+	        else if(aux == 2)   format(info, sizeof(info), "%sBLUE", info);
+	        else if(aux == 3)   format(info, sizeof(info), "%sOPACITY", info);
+         	format(info, sizeof(info), "%s you want.\n", info);
+         	format(info, sizeof(info), "%sThe number has to be in a range between 0 and 255.", info);
+
+        	pData[playerid][P_Aux] = aux; // To know what color he's editing.
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's color"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 16:
+	    {
+	        new info[256];
+	        info = "Red\nGreen\nBlue\nYellow\nPink\nLight Blue\nWhite\nBlack";
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraw's color"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 17:
+	    {
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraw's font"), "Font type 0\nFont type 1\nFont type 2\nFont type 3\nFont type 4\nFont 5 (( TEXT_DRAW_FONT_MODEL_PREVIEW ))", "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 18:
+	    {
+	        new info[256];
+	        info = "Write exact size\n";
+	        format(info, sizeof(info), "%sResize the Textdraw", info);
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraw's font size"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 19:
+	    {
+	        // aux is 0 for X, 1 for Y.
+	        // aux2 is the type of error message. 0 for no error.
+	        new info[256];
+	        if(aux2 == 1) info = "ERROR: You have to write a number.\n\n";
+
+	        format(info, sizeof(info), "%sWrite in numbers the new exact ", info);
+	        if(aux == 0) 		format(info, sizeof(info), "%sX", info);
+	        else if(aux == 1)   format(info, sizeof(info), "%sY", info);
+         	format(info, sizeof(info), "%s lenght of the font letters.\n", info);
+
+        	pData[playerid][P_Aux] = aux; // To know if he's editing X or Y.
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's size"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 20:
+	    {
+	        new info[256];
+	        if(tData[pData[playerid][P_CurrentTextdraw]][T_Outline] == 1)	info = "Outline Off";
+	        else                                                            info = "Outline On";
+	        format(info, sizeof(info), "%s\nShadow size\nOutline/Shadow color\nFinish outline edition...", info);
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraw's outline"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 21:
+	    {
+	        new info[256];
+	        info = "Outline shadow 0\nOutline shadow 1\nOutline shadow 2\nOutline shadow 3\nOutline shadow 4\nOutline shadow 5\nCustom...";
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraw's outline shadow"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 22:
+	    {
+	        new info[256];
+	        if(aux) info = "ERROR: You have written an invalid number.\n\n";
+	        format(info, sizeof(info), "%sWrite a number indicating the size of the shadow:\n", info);
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's outline shadow"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 23:
+	    {
+	        new info[256];
+	        info = "Box On\nBox Off";
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraw's box"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 24:
+	    {
+	        new info[256];
+	        info = "Box Off\nBox size\nBox color";
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraw's box"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 25:
+	    {
+	        new info[256];
+	        info = "Classic export mode\nSelf-working filterscript\nPlayerTextDraw\n420GUI";
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraw's export"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 26:
+	    {
+	        new info[512];
+	        info = "FScript: Show textdraw all the time\nFScript: Show textdraw on class selection\nFScript: Show textdraw while in vehicle\n\
+					FScript: Show textdraw with command\nFScript: Show every X amount of time\nFScript: Show after killing someone";
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraw's export"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 27:
+	    {
+	        new info[128];
+	        info = "Write the command you want to show the textdraw.\n";
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's export"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 28:
+	    {
+	        new info[128];
+	        info = "How long (IN SECONDS) will it remain in the screen?\n";
+	        format(info, sizeof(info), "%sWrite 0 if you want to hide it by typing the command again.\n", info);
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's export"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 29:
+	    {
+	        new info[128];
+	        info = "Every how long do you want that the textdraws appear?\nWrite a time in SECONDS:\n";
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's export"), info, "Accept", "Go back");
+	        return true;
+	    }
+
+	    case 30:
+	    {
+	        new info[128];
+	        info = "Once it appeared, how long will it remain on the screen?\nWrite a time in SECONDS:\n";
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's export"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    
+	    case 31:
+	    {
+	        new info[128];
+	        info = "Once it appeared, how long will it remain on the screen?\nWrite a time in SECONDS:\n";
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's export"), info, "Accept", "Go back");
+	        return true;
+	    }
+	    case 32:
+	    {
+	        new info[1024];
+	        format(info, sizeof(info), "Selectable TextDraw. The current selectable is: %d\n",tData[pData[playerid][P_CurrentTextdraw]][T_Selectable]);
+	        
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_MSGBOX, CreateDialogTitle(playerid, "Textdraw's selectable"), info, "Select ON", "Select OFF");
+	        return true;
+	    }
+	    case 33:
+	    {
+	        if(GetPVarInt(playerid, "Use2DTD") == 1)
+			{
+				ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_LIST, CreateDialogTitle(playerid, "Textdraw's Preview Model Options"), "Model Index\nRot X\nRot Y\nRot Z\nZoom", "Accept", "Cancel");
+			}
+	        else if(!GetPVarInt(playerid, "Use2DTD"))
+			{
+				SendClientMessage(playerid, -1, "Select Font #5 for create a preview TextDraw");
+				ShowTextDrawDialog(playerid, 5);
+			}
+	        return true;
+	    }
+	    case 34:
+	    {
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's Preview Model Index"), "Insert Model Index: (( ObjectID ))", "Accept", "Cancel");
+	        return true;
+	    }
+	    case 35:
+	    {
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's Preview Model Index"), "Insert Model Index RX:", "Go", "Back");
+	        return true;
+	    }
+	    case 36:
+	    {
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's Preview Model Index"), "Insert Model Index RY:", "Go", "Back");
+	        return true;
+	    }
+	    case 37:
+	    {
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's Preview Model Index"), "Insert Model Index RZ:", "Go", "Back");
+	        return true;
+	    }
+	    case 38:
+	    {
+	        ShowPlayerDialog(playerid, dialogid+1574, DIALOG_STYLE_INPUT, CreateDialogTitle(playerid, "Textdraw's Preview Model Index"), "Insert Model Index Zoom:", "Go", "Back");
+	        return true;
+	    }
+	}
+	return false;
+}
+
+stock CreateDialogTitle( playerid, text[] )
+{
+    /*	Creates a default title for the dialogs.
+        @playerid:      ID of the player getting his dialog title generated.
+	    @text[]:	    Text to be attached to the title.
+	*/
+	#pragma unused playerid
+	
+	new string[128];
+	if(!strlen(CurrentProject) || !strcmp(CurrentProject, " "))
+		format(string, sizeof(string), "Zamaroht's Textdraw Editor: %s", text);
+	else
+	    format(string, sizeof(string), "%s - Zamaroht's Textdraw Editor: %s", CurrentProject, text);
+	return string;
+}
+
+stock ResetPlayerVars( playerid )
+{
+	/*	Resets a specific player's pData info.
+	    @playerid:      ID of the player to reset the data of.
+	*/
+	
+	pData[playerid][P_Editing] = false;
+	strmid(CurrentProject, "", 0, 1, 128);
+}
+
+forward KeyEdit( playerid );
+public KeyEdit( playerid )
+{
+	/*  Handles the edition by keyboard.
+		@playerid:          	Player editing.
+	*/
+	if(pData[playerid][P_KeyEdition] == EDIT_NONE) return 0;
+	
+	new string[256]; // Buffer for all gametexts and other messages.
+	new keys, updown, leftright;
+	GetPlayerKeys(playerid, keys, updown, leftright);
+
+	if(updown < 0) // He's pressing up
+	{
+	    switch(pData[playerid][P_KeyEdition])
+	    {
+	        case EDIT_POSITION:
+	        {
+				if(keys == KEY_SPRINT)	tData[pData[playerid][P_CurrentTextdraw]][T_Y] -= 10.0;
+				else                    tData[pData[playerid][P_CurrentTextdraw]][T_Y] -= 1.0;
+
+				format(string, sizeof(string), "~y~~h~Position: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
+			        tData[pData[playerid][P_CurrentTextdraw]][T_X], tData[pData[playerid][P_CurrentTextdraw]][T_Y]);
+	        }
+	        
+	        case EDIT_SIZE:
+	        {
+	            if(keys == KEY_SPRINT)	tData[pData[playerid][P_CurrentTextdraw]][T_YSize] -= 1.0;
+				else                    tData[pData[playerid][P_CurrentTextdraw]][T_YSize] -= 0.1;
+
+				format(string, sizeof(string), "~y~~h~Size: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
+			        tData[pData[playerid][P_CurrentTextdraw]][T_XSize], tData[pData[playerid][P_CurrentTextdraw]][T_YSize]);
+	        }
+	        
+	        case EDIT_BOX:
+	        {
+	            if(keys == KEY_SPRINT)	tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeY] -= 10.0;
+				else                    tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeY] -= 1.0;
+
+				format(string, sizeof(string), "~y~~h~Size: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
+			        tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeX], tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeY]);
+	        }
+	    }
+	}
+	else if(updown > 0) // He's pressing down
+	{
+	    switch(pData[playerid][P_KeyEdition])
+	    {
+	        case EDIT_POSITION:
+	        {
+                if(keys == KEY_SPRINT)	tData[pData[playerid][P_CurrentTextdraw]][T_Y] += 10.0;
+				else                    tData[pData[playerid][P_CurrentTextdraw]][T_Y] += 1.0;
+
+				format(string, sizeof(string), "~y~~h~Position: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
+			        tData[pData[playerid][P_CurrentTextdraw]][T_X], tData[pData[playerid][P_CurrentTextdraw]][T_Y]);
+	        }
+	        
+	        case EDIT_SIZE:
+	        {
+	            if(keys == KEY_SPRINT)	tData[pData[playerid][P_CurrentTextdraw]][T_YSize] += 1.0;
+				else                    tData[pData[playerid][P_CurrentTextdraw]][T_YSize] += 0.1;
+
+				format(string, sizeof(string), "~y~~h~Size: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
+			        tData[pData[playerid][P_CurrentTextdraw]][T_XSize], tData[pData[playerid][P_CurrentTextdraw]][T_YSize]);
+	        }
+	        
+	        case EDIT_BOX:
+	        {
+	            if(keys == KEY_SPRINT)	tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeY] += 10.0;
+				else                    tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeY] += 1.0;
+
+				format(string, sizeof(string), "~y~~h~Size: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
+			        tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeX], tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeY]);
+	        }
+	    }
+	}
+
+	if(leftright < 0) // He's pressing left
+	{
+        switch(pData[playerid][P_KeyEdition])
+	    {
+	        case EDIT_POSITION:
+	        {
+                if(keys == KEY_SPRINT)	tData[pData[playerid][P_CurrentTextdraw]][T_X] -= 10.0;
+				else                    tData[pData[playerid][P_CurrentTextdraw]][T_X] -= 1.0;
+
+				format(string, sizeof(string), "~y~~h~Position: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
+			        tData[pData[playerid][P_CurrentTextdraw]][T_X], tData[pData[playerid][P_CurrentTextdraw]][T_Y]);
+	        }
+	        
+	        case EDIT_SIZE:
+	        {
+	            if(keys == KEY_SPRINT)	tData[pData[playerid][P_CurrentTextdraw]][T_XSize] -= 0.1;
+				else                    tData[pData[playerid][P_CurrentTextdraw]][T_XSize] -= 0.01;
+
+				format(string, sizeof(string), "~y~~h~Size: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
+			        tData[pData[playerid][P_CurrentTextdraw]][T_XSize], tData[pData[playerid][P_CurrentTextdraw]][T_YSize]);
+	        }
+	        
+	        case EDIT_BOX:
+	        {
+	            if(keys == KEY_SPRINT)	tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeX] -= 10.0;
+				else                    tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeX] -= 1.0;
+
+				format(string, sizeof(string), "~y~~h~Size: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
+			        tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeX], tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeY]);
+	        }
+	    }
+	}
+	else if(leftright > 0) // He's pressing right
+	{
+        switch(pData[playerid][P_KeyEdition])
+	    {
+	        case EDIT_POSITION:
+	        {
+                if(keys == KEY_SPRINT)	tData[pData[playerid][P_CurrentTextdraw]][T_X] += 10.0;
+				else                    tData[pData[playerid][P_CurrentTextdraw]][T_X] += 1.0;
+
+				format(string, sizeof(string), "y~~h~Position: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
+			        tData[pData[playerid][P_CurrentTextdraw]][T_X], tData[pData[playerid][P_CurrentTextdraw]][T_Y]);
+	        }
+	        
+	        case EDIT_SIZE:
+	        {
+	            if(keys == KEY_SPRINT)	tData[pData[playerid][P_CurrentTextdraw]][T_XSize] += 0.1;
+				else                    tData[pData[playerid][P_CurrentTextdraw]][T_XSize] += 0.01;
+
+				format(string, sizeof(string), "~y~~h~Size: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
+			        tData[pData[playerid][P_CurrentTextdraw]][T_XSize], tData[pData[playerid][P_CurrentTextdraw]][T_YSize]);
+	        }
+	        
+	        case EDIT_BOX:
+	        {
+	            if(keys == KEY_SPRINT)	tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeX] += 10.0;
+				else                    tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeX] += 1.0;
+
+				format(string, sizeof(string), "~y~~h~Size: ~b~X: ~w~%.4f ~r~- ~b~Y: ~w~%.4f", \
+			        tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeX], tData[pData[playerid][P_CurrentTextdraw]][T_TextSizeY]);
+	        }
+	    }
+	}
+
+	ShowInfoDraw(playerid, string, 3000);
+	
+	
+	
+	
+	
+	UpdateTextdraw(pData[playerid][P_CurrentTextdraw]);
+	if(pData[playerid][P_KeyEdition] == EDIT_POSITION)
+	{
+		SaveTDData(pData[playerid][P_CurrentTextdraw], "T_X");
+		SaveTDData(pData[playerid][P_CurrentTextdraw], "T_Y");
+	}
+	else if(pData[playerid][P_KeyEdition] == EDIT_SIZE)
+	{
+		SaveTDData(pData[playerid][P_CurrentTextdraw], "T_XSize");
+		SaveTDData(pData[playerid][P_CurrentTextdraw], "T_YSize");
+	}
+	else if(pData[playerid][P_KeyEdition] == EDIT_BOX)
+	{
+		SaveTDData(pData[playerid][P_CurrentTextdraw], "T_TextSizeX");
+		SaveTDData(pData[playerid][P_CurrentTextdraw], "T_TextSizeY");
+	}
+    SetTimerEx("KeyEdit", 200, 0, "i", playerid);
+    return 1;
+}
+
+public OnPlayerKeyStateChange( playerid, newkeys, oldkeys )
+{
+    if(pData[playerid][P_KeyEdition] != EDIT_NONE && newkeys == KEY_SECONDARY_ATTACK)
+	{
+	    ShowInfoDraw(playerid, " ", 3000);
+	    TogglePlayerControllable(playerid, 1);
+
+        new string[128];
+	    switch(pData[playerid][P_KeyEdition])
+	    {
+	        case EDIT_POSITION:
+	        {
+				format(string, sizeof(string), "Textdraw #%d successfuly moved.", pData[playerid][P_CurrentTextdraw]);
+	        }
+	        case EDIT_SIZE:
+	        {
+				format(string, sizeof(string), "Textdraw #%d successfuly resized.", pData[playerid][P_CurrentTextdraw]);
+	        }
+	        case EDIT_BOX:
+	        {
+				format(string, sizeof(string), "Textdraw #%d's box successfuly resized.", pData[playerid][P_CurrentTextdraw]);
+	        }
+	    }
+
+        if(pData[playerid][P_KeyEdition] == EDIT_BOX)   SetTimerEx("ShowTextDrawDialogEx", 500, 0, "ii", playerid, 24);
+		else 											SetTimerEx("ShowTextDrawDialogEx", 500, 0, "ii", playerid, 5);
+	    SendClientMessage(playerid, MSG_COLOR, string);
+	    pData[playerid][P_KeyEdition] = EDIT_NONE;
+	}
+	return 1;
+}
+
+stock CreateNewProject( name[] )
+{
+    /*	Creates a new .tde project file.
+	    @name[]:		Name to be used in the filename.
+	*/
+
+	new string[128], File:File;
+
+	// Add it to the list.
+	format(string, sizeof(string), "%s\r\n", name);
+	File = fopen("tdlist.lst", io_append);
+	fwrite(File, string);
+	fclose(File);
+
+	// Create the default file.
+	File = fopen(name, io_write);
+	fwrite(File, "TDFile=yes");
+	fclose(File);
+}
+
+stock ClearTextdraw( tdid )
+{
+	/*	Resets a textdraw's variables and destroys it.
+	    @tdid:          Textdraw ID
+	*/
+	TextDrawHideForAll(tData[tdid][T_Handler]);
+	tData[tdid][T_Created] = false;
+	strmid(tData[tdid][T_Text], "", 0, 1, 2);
+    tData[tdid][T_X] = 0.0;
+    tData[tdid][T_Y] = 0.0;
+    tData[tdid][T_Alignment] = 0;
+    tData[tdid][T_BackColor] = 0;
+    tData[tdid][T_UseBox] = 0;
+    tData[tdid][T_BoxColor] = 0;
+    tData[tdid][T_TextSizeX] = 0.0;
+    tData[tdid][T_TextSizeY] = 0.0;
+    tData[tdid][T_Color] = 0;
+    tData[tdid][T_Font] = 0;
+    tData[tdid][T_XSize] = 0.0;
+    tData[tdid][T_YSize] = 0.0;
+    tData[tdid][T_Outline] = 0;
+    tData[tdid][T_Proportional] = 0;
+    tData[tdid][T_Shadow] = 0;
+    tData[tdid][T_Selectable] = 0;
+    tData[tdid][T_PreviewModel] = -1;
+	tData[tdid][PMZoom] = 0;
+	tData[tdid][PMRotX] = 0;
+	tData[tdid][PMRotY] = 0.0;
+	tData[tdid][PMRotZ] = 0;
+}
+
+stock CreateDefaultTextdraw( tdid, save = 1 )
+{
+	/*  Creates a new textdraw with default settings.
+		@tdid:          Textdraw ID
+	*/
+	tData[tdid][T_Created] = true;
+	format(tData[tdid][T_Text], 1024, "New Textdraw", 1);
+    tData[tdid][T_X] = 250.0;
+    tData[tdid][T_Y] = 10.0;
+    tData[tdid][T_Alignment] = 0;
+    tData[tdid][T_BackColor] = RGB(0, 0, 0, 255);
+    tData[tdid][T_UseBox] = 0;
+    tData[tdid][T_BoxColor] = RGB(0, 0, 0, 255);
+    tData[tdid][T_TextSizeX] = 0.0;
+    tData[tdid][T_TextSizeY] = 0.0;
+    tData[tdid][T_Color] = RGB(255, 255, 255, 255);
+    tData[tdid][T_Font] = 1;
+    tData[tdid][T_XSize] = 0.5;
+    tData[tdid][T_YSize] = 1.0;
+    tData[tdid][T_Outline] = 0;
+    tData[tdid][T_Proportional] = 1;
+    tData[tdid][T_Shadow] = 1;
+    tData[tdid][T_Selectable] = 0;
+    tData[tdid][T_PreviewModel] = -1;
+	tData[tdid][PMZoom] = 1.0;
+	tData[tdid][PMRotX] = -16.0;
+	tData[tdid][PMRotY] = 0.0;
+	tData[tdid][PMRotZ] = -55.0;
+	
+    UpdateTextdraw(tdid);
+    if(save) SaveTDData(tdid, "T_Created");
+}
+
+stock DuplicateTextdraw( source, to )
+{
+	/*  Duplicates a textdraw from another one. Updates the new one.
+	    @source:            Where to copy the textdraw from.
+	    @to:                Where to copy the textdraw to.
+	*/
+	tData[to][T_Created] = tData[source][T_Created];
+	format(tData[to][T_Text], 1024, "%s", tData[source][T_Text]);
+    tData[to][T_X] = tData[source][T_X];
+    tData[to][T_Y] = tData[source][T_Y];
+    tData[to][T_Alignment] = tData[source][T_Alignment];
+    tData[to][T_BackColor] = tData[source][T_BackColor];
+    tData[to][T_UseBox] = tData[source][T_UseBox];
+    tData[to][T_BoxColor] = tData[source][T_BoxColor];
+    tData[to][T_TextSizeX] = tData[source][T_TextSizeX];
+    tData[to][T_TextSizeY] = tData[source][T_TextSizeY];
+    tData[to][T_Color] = tData[source][T_Color];
+    tData[to][T_Font] = tData[source][T_Font];
+    tData[to][T_XSize] = tData[source][T_XSize];
+    tData[to][T_YSize] = tData[source][T_YSize];
+    tData[to][T_Outline] = tData[source][T_Outline];
+    tData[to][T_Proportional] = tData[source][T_Proportional];
+    tData[to][T_Shadow] = tData[source][T_Shadow];
+    tData[to][T_Selectable] = tData[source][T_Selectable];
+    tData[to][T_PreviewModel] = tData[source][T_PreviewModel];
+    tData[to][PMRotX] = tData[source][PMRotX];
+    tData[to][PMRotY] = tData[source][PMRotY];
+    tData[to][PMRotZ] = tData[source][PMRotZ];
+    tData[to][PMZoom] = tData[source][PMZoom];
+	
+	UpdateTextdraw(to);
+	SaveTDData(to, "T_Created");
+	SaveTDData(to, "T_Text");
+	SaveTDData(to, "T_X");
+	SaveTDData(to, "T_Y");
+	SaveTDData(to, "T_Alignment");
+	SaveTDData(to, "T_BackColor");
+	SaveTDData(to, "T_UseBox");
+	SaveTDData(to, "T_BoxColor");
+    SaveTDData(to, "T_TextSizeX");
+    SaveTDData(to, "T_TextSizeY");
+    SaveTDData(to, "T_Color");
+    SaveTDData(to, "T_Font");
+    SaveTDData(to, "T_XSize");
+    SaveTDData(to, "T_YSize");
+    SaveTDData(to, "T_Outline");
+    SaveTDData(to, "T_Proportional");
+    SaveTDData(to, "T_Shadow");
+    SaveTDData(to, "T_Selectable");
+    SaveTDData(to, "T_PreviewModel");
+    SaveTDData(to, "PMRotX");
+    SaveTDData(to, "PMRotY");
+    SaveTDData(to, "PMRotZ");
+    SaveTDData(to, "PMZoom");
+}
+
+stock UpdateTextdraw( tdid )
+{
+	if(!tData[tdid][T_Created]) return false;
+	TextDrawHideForAll(tData[tdid][T_Handler]);
+	TextDrawDestroy(tData[tdid][T_Handler]);
+	
+	// Recreate it
+	tData[tdid][T_Handler] = TextDrawCreate(tData[tdid][T_X], tData[tdid][T_Y], tData[tdid][T_Text]);
+	TextDrawAlignment(tData[tdid][T_Handler], tData[tdid][T_Alignment]);
+	TextDrawBackgroundColor(tData[tdid][T_Handler], tData[tdid][T_BackColor]);
+	TextDrawColor(tData[tdid][T_Handler], tData[tdid][T_Color]);
+	TextDrawFont(tData[tdid][T_Handler], tData[tdid][T_Font]);
+	TextDrawLetterSize(tData[tdid][T_Handler], tData[tdid][T_XSize], tData[tdid][T_YSize]);
+	TextDrawSetOutline(tData[tdid][T_Handler], tData[tdid][T_Outline]);
+	TextDrawSetProportional(tData[tdid][T_Handler], tData[tdid][T_Proportional]);
+	TextDrawSetShadow(tData[tdid][T_Handler], tData[tdid][T_Shadow]);
+	TextDrawSetSelectable(tData[tdid][T_Handler], tData[tdid][T_Selectable]);
+	if(tData[tdid][T_PreviewModel] > -1)
+	{
+	    TextDrawSetPreviewModel(tData[tdid][T_Handler], tData[tdid][T_PreviewModel]);
+	    TextDrawSetPreviewRot(tData[tdid][T_Handler], tData[tdid][PMRotX], tData[tdid][PMRotY], tData[tdid][PMRotZ], tData[tdid][PMZoom]);
+	}
+	if(tData[tdid][T_UseBox])
+	{
+		TextDrawUseBox(tData[tdid][T_Handler], tData[tdid][T_UseBox]);
+		TextDrawBoxColor(tData[tdid][T_Handler], tData[tdid][T_BoxColor]);
+		TextDrawTextSize(tData[tdid][T_Handler], tData[tdid][T_TextSizeX], tData[tdid][T_TextSizeY]);
+	}
+	TextDrawShowForAll(tData[tdid][T_Handler]);
+	return true;
+}
+
+stock DeleteTDFromFile( tdid )
+{
+    /*  Deletes a specific textdraw from its .tde file
+	    @tdid:              Textdraw ID.
+	*/
+	new string[128], filename[135];
+	format(filename, sizeof(filename), "%s.tde", CurrentProject);
+	
+	format(string, sizeof(string), "%dT_Created", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dT_Text", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dT_X", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dT_Y", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dT_Alignment", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dT_BackColor", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dT_UseBox", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dT_BoxColor", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dT_TextSizeX", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dT_TextSizeY", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dT_Color", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dT_Font", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dT_XSize", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dT_YSize", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dT_Outline", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dT_Proportional", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dT_Shadow", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dT_Selectable", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dT_PreviewModel", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dPMRotX", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dPMRotY", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dPMRotZ", tdid);
+	dini_Unset(filename, string);
+	format(string, sizeof(string), "%dPMZoom", tdid);
+	dini_Unset(filename, string);
+}
+
+stock SaveTDData( tdid, data[] )
+{
+	/*  Saves a specific data from a specific textdraw to project file.
+	    @tdid:              Textdraw ID.
+	    @data[]:            Data to be saved.
+	*/
+	new string[128], filename[135];
+	format(string, sizeof(string), "%d%s", tdid, data);
+	format(filename, sizeof(filename), "%s.tde", CurrentProject);
+	
+	if(!strcmp("T_Created", data))
+        dini_IntSet(filename, string, 1);
+	else if(!strcmp("T_Text", data))
+		dini_Set(filename, string, tData[tdid][T_Text]);
+	else if(!strcmp("T_X", data))
+		dini_FloatSet(filename, string, tData[tdid][T_X]);
+	else if(!strcmp("T_Y", data))
+		dini_FloatSet(filename, string, tData[tdid][T_Y]);
+	else if(!strcmp("T_Alignment", data))
+		dini_IntSet(filename, string, tData[tdid][T_Alignment]);
+	else if(!strcmp("T_BackColor", data))
+		dini_IntSet(filename, string, tData[tdid][T_BackColor]);
+	else if(!strcmp("T_UseBox", data))
+		dini_IntSet(filename, string, tData[tdid][T_UseBox]);
+	else if(!strcmp("T_BoxColor", data))
+		dini_IntSet(filename, string, tData[tdid][T_BoxColor]);
+    else if(!strcmp("T_TextSizeX", data))
+		dini_FloatSet(filename, string, tData[tdid][T_TextSizeX]);
+    else if(!strcmp("T_TextSizeY", data))
+		dini_FloatSet(filename, string, tData[tdid][T_TextSizeY]);
+    else if(!strcmp("T_Color", data))
+		dini_IntSet(filename, string, tData[tdid][T_Color]);
+    else if(!strcmp("T_Font", data))
+		dini_IntSet(filename, string, tData[tdid][T_Font]);
+    else if(!strcmp("T_XSize", data))
+		dini_FloatSet(filename, string, tData[tdid][T_XSize]);
+    else if(!strcmp("T_YSize", data))
+		dini_FloatSet(filename, string, tData[tdid][T_YSize]);
+    else if(!strcmp("T_Outline", data))
+		dini_IntSet(filename, string, tData[tdid][T_Outline]);
+    else if(!strcmp("T_Proportional", data))
+		dini_IntSet(filename, string, tData[tdid][T_Proportional]);
+    else if(!strcmp("T_Shadow", data))
+		dini_IntSet(filename, string, tData[tdid][T_Shadow]);
+    else if(!strcmp("T_Selectable", data))
+		dini_IntSet(filename, string, tData[tdid][T_Selectable]);
+    else if(!strcmp("T_PreviewModel", data))
+		dini_IntSet(filename, string, tData[tdid][T_PreviewModel]);
+    else if(!strcmp("PMRotX", data))
+		dini_FloatSet(filename, string, tData[tdid][PMRotX]);
+    else if(!strcmp("PMRotY", data))
+		dini_FloatSet(filename, string, tData[tdid][PMRotY]);
+    else if(!strcmp("PMRotZ", data))
+		dini_FloatSet(filename, string, tData[tdid][PMRotZ]);
+    else if(!strcmp("PMZoom", data))
+		dini_FloatSet(filename, string, tData[tdid][PMZoom]);
+	else
+	    SendClientMessageToAll(MSG_COLOR, "Incorrect data parsed, textdraw autosave failed");
+}
+
+stock LoadProject( playerid, filename[] )
+{
+	/*  Loads a project for edition.
+	    @filename[]:            Filename where the project is currently saved.
+	*/
+	new string[128];
+	if(!dini_Isset(filename, "TDFile"))
+	{
+	    SendClientMessage(playerid, MSG_COLOR, "Invalid textdraw file.");
+	    ShowTextDrawDialog(playerid, 0);
+	}
+	else
+	{
+		for(new i; i < MAX_TEXTDRAWS; i ++)
+		{
+		    format(string, sizeof(string), "%dT_Created", i);
+		    if(dini_Isset(filename, string))
+		    {
+		        CreateDefaultTextdraw(i, 0); // Create but don't save.
+
+		        format(string, sizeof(string), "%dT_Text", i);
+		        if(dini_Isset(filename, string))
+					format(tData[i][T_Text], 1536, "%s", dini_Get(filename, string));
+
+	            format(string, sizeof(string), "%dT_X", i);
+				if(dini_Isset(filename, string))
+					tData[i][T_X] = dini_Float(filename, string);
+
+	            format(string, sizeof(string), "%dT_Y", i);
+				if(dini_Isset(filename, string))
+					tData[i][T_Y] = dini_Float(filename, string);
+
+	            format(string, sizeof(string), "%dT_Alignment", i);
+				if(dini_Isset(filename, string))
+					tData[i][T_Alignment] = dini_Int(filename, string);
+
+	            format(string, sizeof(string), "%dT_BackColor", i);
+				if(dini_Isset(filename, string))
+					tData[i][T_BackColor] = dini_Int(filename, string);
+
+	            format(string, sizeof(string), "%dT_UseBox", i);
+				if(dini_Isset(filename, string))
+					tData[i][T_UseBox] = dini_Int(filename, string);
+
+	            format(string, sizeof(string), "%dT_BoxColor", i);
+				if(dini_Isset(filename, string))
+					tData[i][T_BoxColor] = dini_Int(filename, string);
+
+	            format(string, sizeof(string), "%dT_TextSizeX", i);
+			    if(dini_Isset(filename, string))
+					tData[i][T_TextSizeX] = dini_Float(filename, string);
+
+	            format(string, sizeof(string), "%dT_TextSizeY", i);
+			    if(dini_Isset(filename, string))
+					tData[i][T_TextSizeY] = dini_Float(filename, string);
+
+	            format(string, sizeof(string), "%dT_Color", i);
+			    if(dini_Isset(filename, string))
+					tData[i][T_Color] = dini_Int(filename, string);
+
+	            format(string, sizeof(string), "%dT_Font", i);
+			    if(dini_Isset(filename, string))
+					tData[i][T_Font] = dini_Int(filename, string);
+
+	            format(string, sizeof(string), "%dT_XSize", i);
+				if(dini_Isset(filename, string))
+					tData[i][T_XSize] = dini_Float(filename, string);
+
+	            format(string, sizeof(string), "%dT_YSize", i);
+				if(dini_Isset(filename, string))
+					tData[i][T_YSize] = dini_Float(filename, string);
+
+	            format(string, sizeof(string), "%dT_Outline", i);
+			    if(dini_Isset(filename, string))
+					tData[i][T_Outline] = dini_Int(filename, string);
+
+	            format(string, sizeof(string), "%dT_Proportional", i);
+			    if(dini_Isset(filename, string))
+					tData[i][T_Proportional] = dini_Int(filename, string);
+
+	            format(string, sizeof(string), "%dT_Shadow", i);
+			    if(dini_Isset(filename, string))
+					tData[i][T_Shadow] = dini_Int(filename, string);
+
+	            format(string, sizeof(string), "%dT_Selectable", i);
+			    if(dini_Isset(filename, string))
+					tData[i][T_Selectable] = dini_Int(filename, string);
+					
+				format(string, sizeof(string), "%dT_PreviewModel", i);
+			    if(dini_Isset(filename, string))
+					tData[i][T_PreviewModel] = dini_Int(filename, string);
+
+                format(string, sizeof(string), "%dPMRotX", i);
+			    if(dini_Isset(filename, string))
+					tData[i][PMRotX] = dini_Float(filename, string);
+
+                format(string, sizeof(string), "%dPMRotY", i);
+			    if(dini_Isset(filename, string))
+					tData[i][PMRotY] = dini_Float(filename, string);
+
+                format(string, sizeof(string), "%dPMRotZ", i);
+			    if(dini_Isset(filename, string))
+					tData[i][PMRotZ] = dini_Float(filename, string);
+
+                format(string, sizeof(string), "%dPMZoom", i);
+			    if(dini_Isset(filename, string))
+					tData[i][PMZoom] = dini_Float(filename, string);
+					
+		        UpdateTextdraw(i);
+		    }
+		}
+		strmid(CurrentProject, filename, 0, strlen(filename) - 4, 128);
+		ShowTextDrawDialog(playerid, 4);
+	}
+}
+
+stock ExportProject( playerid, type )
+{
+	/*  Exports a project.
+	    @playerid:          ID of the player exporting the project.
+	    @type:              Type of export requested:
+	        - Type 0:       Classic export type
+ 	*/
+ 	SendClientMessage(playerid, MSG_COLOR, "The project is now being exported, please wait...");
+ 	
+ 	new filename[135], tmpstring[1152];
+ 	if(type == 0)	format(filename, sizeof(filename), "%s.txt", CurrentProject);
+ 	else if(type == 7)	format(filename, sizeof(filename), "%s.txt", CurrentProject);
+ 	else		  	format(filename, sizeof(filename), "%s.pwn", CurrentProject);
+ 	new File:File = fopen(filename, io_write);
+	switch(type)
+	{
+	    case 0: // Classic export.
+	    {
+	        fwrite(File, "// TextDraw developed using Zamaroht's Textdraw Editor 1.0\r\n\r\n");
+	        fwrite(File, "// On top of script:\r\n");
+	        for(new i; i < MAX_TEXTDRAWS; i++)
+	        {
+	            if(tData[i][T_Created])
+				{
+					format(tmpstring, sizeof(tmpstring), "new Text:Textdraw%d;\r\n", i);
+					fwrite(File, tmpstring);
+				}
+	        }
+	        fwrite(File, "\r\n// In OnGameModeInit prefferably, we procced to create our textdraws:\r\n");
+	        for(new i; i < MAX_TEXTDRAWS; i++)
+	        {
+	            if(tData[i][T_Created])
+				{
+					format(tmpstring, sizeof(tmpstring), "Textdraw%d = TextDrawCreate(%f, %f, \"%s\");\r\n", i, tData[i][T_X], tData[i][T_Y], tData[i][T_Text]);
+					fwrite(File, tmpstring);
+					if(tData[i][T_Alignment] != 0 && tData[i][T_Alignment] != 1)
+					{
+						format(tmpstring, sizeof(tmpstring), "TextDrawAlignment(Textdraw%d, %d);\r\n", i, tData[i][T_Alignment]);
+						fwrite(File, tmpstring);
+					}
+					format(tmpstring, sizeof(tmpstring), "TextDrawBackgroundColor(Textdraw%d, %d);\r\n", i, tData[i][T_BackColor]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "TextDrawFont(Textdraw%d, %d);\r\n", i, tData[i][T_Font]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "TextDrawLetterSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_XSize], tData[i][T_YSize]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "TextDrawColor(Textdraw%d, %d);\r\n", i, tData[i][T_Color]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "TextDrawSetOutline(Textdraw%d, %d);\r\n", i, tData[i][T_Outline]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "TextDrawSetProportional(Textdraw%d, %d);\r\n", i, tData[i][T_Proportional]);
+					fwrite(File, tmpstring);
+					if(tData[i][T_Outline] == 0)
+					{
+					    format(tmpstring, sizeof(tmpstring), "TextDrawSetShadow(Textdraw%d, %d);\r\n", i, tData[i][T_Shadow]);
+						fwrite(File, tmpstring);
+					}
+					if(tData[i][T_UseBox] == 1)
+					{
+					    format(tmpstring, sizeof(tmpstring), "TextDrawUseBox(Textdraw%d, %d);\r\n", i, tData[i][T_UseBox]);
+						fwrite(File, tmpstring);
+						format(tmpstring, sizeof(tmpstring), "TextDrawBoxColor(Textdraw%d, %d);\r\n", i, tData[i][T_BoxColor]);
+						fwrite(File, tmpstring);
+						format(tmpstring, sizeof(tmpstring), "TextDrawTextSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_TextSizeX], tData[i][T_TextSizeY]);
+						fwrite(File, tmpstring);
+					}
+					if(tData[i][T_PreviewModel] > -1)
+					{
+					    format(tmpstring, sizeof(tmpstring), "TextDrawSetPreviewModel(Textdraw%d, %d);\r\n", i, tData[i][T_PreviewModel]);
+					    fwrite(File, tmpstring);
+					    format(tmpstring, sizeof(tmpstring), "TextDrawSetPreviewRot(Textdraw%d, %f, %f, %f, %f);\r\n", i, tData[i][PMRotX], tData[i][PMRotY], tData[i][PMRotZ], tData[i][PMZoom]);
+					    fwrite(File, tmpstring);
+					}
+					format(tmpstring, sizeof(tmpstring), "TextDrawSetSelectable(Textdraw%d, %d);\r\n", i, tData[i][T_Selectable]);
+					fwrite(File, tmpstring);
+					fwrite(File, "\r\n");
+				}
+	        }
+	        fwrite(File, "// You can now use TextDrawShowForPlayer(-ForAll), TextDrawHideForPlayer(-ForAll) and\r\n");
+	        fwrite(File, "// TextDrawDestroy functions to show, hide, and destroy the textdraw.");
+
+			format(tmpstring, sizeof(tmpstring), "Project exported to %s.txt in scriptfiles directory.", CurrentProject);
+	        SendClientMessage(playerid, MSG_COLOR, tmpstring);
+	    }
+	    case 1: // Show all the time
+	    {
+	        fwrite(File, "/*\r\n");
+	        fwrite(File, "Filterscript generated using Zamaroht's TextDraw Editor Version 1.0.\r\n");
+	        fwrite(File, "Designed for SA-MP 0.3a.\r\n\r\n");
+	        new ye,mo,da,ho,mi,se;
+	        getdate(ye,mo,da);
+	        gettime(ho,mi,se);
+			format(tmpstring, sizeof(tmpstring), "Time and Date: %d-%d-%d @ %d:%d:%d\r\n\r\n", ye, mo, da, ho, mi, se);
+			fwrite(File, tmpstring);
+			fwrite(File, "Instructions:\r\n");
+			fwrite(File, "1- Compile this file using the compiler provided with the sa-mp server package.\r\n");
+			fwrite(File, "2- Copy the .amx file to the filterscripts directory.\r\n");
+			fwrite(File, "3- Add the filterscripts in the server.cfg file (more info here:\r\n");
+			fwrite(File, "http://wiki.sa-mp.com/wiki/Server.cfg)\r\n");
+			fwrite(File, "4- Run the server!\r\n\r\n");
+			fwrite(File, "Disclaimer:\r\n");
+			fwrite(File, "You have full rights over this file. You can distribute it, modify it, and\r\n");
+			fwrite(File, "change it as much as you want, without having to give any special credits.\r\n");
+			fwrite(File, "*/\r\n\r\n");
+			fwrite(File, "#include <a_samp>\r\n\r\n");
+            for(new i; i < MAX_TEXTDRAWS; i++)
+	        {
+	            if(tData[i][T_Created])
+				{
+					format(tmpstring, sizeof(tmpstring), "new Text:Textdraw%d;\r\n", i);
+					fwrite(File, tmpstring);
+				}
+	        }
+			fwrite(File, "\r\npublic OnFilterScriptInit()\r\n");
+			fwrite(File, "{\r\n");
+			fwrite(File, "	print(\"Textdraw file generated by\");\r\n");
+			fwrite(File, "	print(\"    Zamaroht's textdraw editor was loaded.\");\r\n\r\n");
+			fwrite(File, "	// Create the textdraws:\r\n");
+			for(new i; i < MAX_TEXTDRAWS; i++)
+	        {
+	            if(tData[i][T_Created])
+				{
+					format(tmpstring, sizeof(tmpstring), "	Textdraw%d = TextDrawCreate(%f, %f, \"%s\");\r\n", i, tData[i][T_X], tData[i][T_Y], tData[i][T_Text]);
+					fwrite(File, tmpstring);
+					if(tData[i][T_Alignment] != 0 && tData[i][T_Alignment] != 1)
+					{
+						format(tmpstring, sizeof(tmpstring), "	TextDrawAlignment(Textdraw%d, %d);\r\n", i, tData[i][T_Alignment]);
+						fwrite(File, tmpstring);
+					}
+					format(tmpstring, sizeof(tmpstring), "	TextDrawBackgroundColor(Textdraw%d, %d);\r\n", i, tData[i][T_BackColor]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawFont(Textdraw%d, %d);\r\n", i, tData[i][T_Font]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawLetterSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_XSize], tData[i][T_YSize]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawColor(Textdraw%d, %d);\r\n", i, tData[i][T_Color]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawSetOutline(Textdraw%d, %d);\r\n", i, tData[i][T_Outline]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawSetProportional(Textdraw%d, %d);\r\n", i, tData[i][T_Proportional]);
+					fwrite(File, tmpstring);
+					if(tData[i][T_Outline] == 0)
+					{
+					    format(tmpstring, sizeof(tmpstring), "	TextDrawSetShadow(Textdraw%d, %d);\r\n", i, tData[i][T_Shadow]);
+						fwrite(File, tmpstring);
+					}
+					if(tData[i][T_UseBox] == 1)
+					{
+					    format(tmpstring, sizeof(tmpstring), "	TextDrawUseBox(Textdraw%d, %d);\r\n", i, tData[i][T_UseBox]);
+						fwrite(File, tmpstring);
+						format(tmpstring, sizeof(tmpstring), "	TextDrawBoxColor(Textdraw%d, %d);\r\n", i, tData[i][T_BoxColor]);
+						fwrite(File, tmpstring);
+						format(tmpstring, sizeof(tmpstring), "	TextDrawTextSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_TextSizeX], tData[i][T_TextSizeY]);
+						fwrite(File, tmpstring);
+					}
+					format(tmpstring, sizeof(tmpstring), "	TextDrawSetSelectable(Textdraw%d, %d);\r\n", i, tData[i][T_Selectable]);
+					fwrite(File, tmpstring);
+					fwrite(File, "\r\n");
+				}
+	        }
+	        fwrite(File, "	for(new i; i < MAX_PLAYERS; i ++)\r\n");
+	        fwrite(File, "	{\r\n");
+	        fwrite(File, "		if(IsPlayerConnected(i))\r\n");
+	        fwrite(File, "		{\r\n");
+	        for(new i; i < MAX_TEXTDRAWS; i ++)
+			{
+			    if(tData[i][T_Created])
+			    {
+			        format(tmpstring, sizeof(tmpstring), "			TextDrawShowForPlayer(i, Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+			    }
+			}
+			fwrite(File, "		}\r\n");
+			fwrite(File, "	}\r\n");
+			fwrite(File, "	return 1;\r\n");
+			fwrite(File, "}\r\n\r\n");
+			fwrite(File, "public OnFilterScriptExit()\r\n");
+			fwrite(File, "{\r\n");
+            for(new i; i < MAX_TEXTDRAWS; i ++)
+            {
+                if(tData[i][T_Created])
+                {
+					format(tmpstring, sizeof(tmpstring), "	TextDrawHideForAll(Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawDestroy(Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+                }
+            }
+			fwrite(File, "	return 1;\r\n");
+			fwrite(File, "}\r\n\r\n");
+			fwrite(File, "public OnPlayerConnect(playerid)\r\n");
+			fwrite(File, "{\r\n");
+			for(new i; i < MAX_TEXTDRAWS; i ++)
+			{
+			    if(tData[i][T_Created])
+			    {
+			        format(tmpstring, sizeof(tmpstring), "	TextDrawShowForPlayer(playerid, Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+			    }
+			}
+			fwrite(File, "	return 1;\r\n");
+			fwrite(File, "}\r\n");
+			
+			format(tmpstring, sizeof(tmpstring), "Project exported to %s.pwn in scriptfiles directory as a filterscript.", CurrentProject);
+	        SendClientMessage(playerid, MSG_COLOR, tmpstring);
+	    }
+	    
+	    case 2: // Show on class selection
+	    {
+            fwrite(File, "/*\r\n");
+	        fwrite(File, "Filterscript generated using Zamaroht's TextDraw Editor Version 1.0.\r\n");
+	        fwrite(File, "Designed for SA-MP 0.3a.\r\n\r\n");
+	        new ye,mo,da,ho,mi,se;
+	        getdate(ye,mo,da);
+	        gettime(ho,mi,se);
+			format(tmpstring, sizeof(tmpstring), "Time and Date: %d-%d-%d @ %d:%d:%d\r\n\r\n", ye, mo, da, ho, mi, se);
+			fwrite(File, tmpstring);
+			fwrite(File, "Instructions:\r\n");
+			fwrite(File, "1- Compile this file using the compiler provided with the sa-mp server package.\r\n");
+			fwrite(File, "2- Copy the .amx file to the filterscripts directory.\r\n");
+			fwrite(File, "3- Add the filterscripts in the server.cfg file (more info here:\r\n");
+			fwrite(File, "http://wiki.sa-mp.com/wiki/Server.cfg)\r\n");
+			fwrite(File, "4- Run the server!\r\n\r\n");
+			fwrite(File, "Disclaimer:\r\n");
+			fwrite(File, "You have full rights over this file. You can distribute it, modify it, and\r\n");
+			fwrite(File, "change it as much as you want, without having to give any special credits.\r\n");
+			fwrite(File, "*/\r\n\r\n");
+			fwrite(File, "#include <a_samp>\r\n\r\n");
+            for(new i; i < MAX_TEXTDRAWS; i++)
+	        {
+	            if(tData[i][T_Created])
+				{
+					format(tmpstring, sizeof(tmpstring), "new Text:Textdraw%d;\r\n", i);
+					fwrite(File, tmpstring);
+				}
+	        }
+			fwrite(File, "\r\npublic OnFilterScriptInit()\r\n");
+			fwrite(File, "{\r\n");
+			fwrite(File, "	print(\"Textdraw file generated by\");\r\n");
+			fwrite(File, "	print(\"    Zamaroht's textdraw editor was loaded.\");\r\n\r\n");
+			fwrite(File, "	// Create the textdraws:\r\n");
+			for(new i; i < MAX_TEXTDRAWS; i++)
+	        {
+	            if(tData[i][T_Created])
+				{
+					format(tmpstring, sizeof(tmpstring), "	Textdraw%d = TextDrawCreate(%f, %f, \"%s\");\r\n", i, tData[i][T_X], tData[i][T_Y], tData[i][T_Text]);
+					fwrite(File, tmpstring);
+					if(tData[i][T_Alignment] != 0 && tData[i][T_Alignment] != 1)
+					{
+						format(tmpstring, sizeof(tmpstring), "	TextDrawAlignment(Textdraw%d, %d);\r\n", i, tData[i][T_Alignment]);
+						fwrite(File, tmpstring);
+					}
+					format(tmpstring, sizeof(tmpstring), "	TextDrawBackgroundColor(Textdraw%d, %d);\r\n", i, tData[i][T_BackColor]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawFont(Textdraw%d, %d);\r\n", i, tData[i][T_Font]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawLetterSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_XSize], tData[i][T_YSize]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawColor(Textdraw%d, %d);\r\n", i, tData[i][T_Color]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawSetOutline(Textdraw%d, %d);\r\n", i, tData[i][T_Outline]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawSetProportional(Textdraw%d, %d);\r\n", i, tData[i][T_Proportional]);
+					fwrite(File, tmpstring);
+					if(tData[i][T_Outline] == 0)
+					{
+					    format(tmpstring, sizeof(tmpstring), "	TextDrawSetShadow(Textdraw%d, %d);\r\n", i, tData[i][T_Shadow]);
+						fwrite(File, tmpstring);
+					}
+					if(tData[i][T_UseBox] == 1)
+					{
+					    format(tmpstring, sizeof(tmpstring), "	TextDrawUseBox(Textdraw%d, %d);\r\n", i, tData[i][T_UseBox]);
+						fwrite(File, tmpstring);
+						format(tmpstring, sizeof(tmpstring), "	TextDrawBoxColor(Textdraw%d, %d);\r\n", i, tData[i][T_BoxColor]);
+						fwrite(File, tmpstring);
+						format(tmpstring, sizeof(tmpstring), "	TextDrawTextSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_TextSizeX], tData[i][T_TextSizeY]);
+						fwrite(File, tmpstring);
+					}
+					format(tmpstring, sizeof(tmpstring), "	TextDrawSetSelectable(Textdraw%d, %d);\r\n", i, tData[i][T_Selectable]);
+					fwrite(File, tmpstring);
+					fwrite(File, "\r\n");
+				}
+	        }
+	        fwrite(File, "	return 1;\r\n");
+	        fwrite(File, "}\r\n\r\n");
+	        fwrite(File, "public OnFilterScriptExit()\r\n");
+			fwrite(File, "{\r\n");
+            for(new i; i < MAX_TEXTDRAWS; i ++)
+            {
+                if(tData[i][T_Created])
+                {
+					format(tmpstring, sizeof(tmpstring), "	TextDrawHideForAll(Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawDestroy(Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+                }
+            }
+			fwrite(File, "	return 1;\r\n");
+			fwrite(File, "}\r\n\r\n");
+			fwrite(File, "public OnPlayerRequestClass(playerid, classid)\r\n");
+			fwrite(File, "{\r\n");
+			for(new i; i < MAX_TEXTDRAWS; i ++)
+			{
+			    if(tData[i][T_Created])
+			    {
+			        format(tmpstring, sizeof(tmpstring), "	TextDrawShowForPlayer(playerid, Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+			    }
+			}
+			fwrite(File, "	return 1;\r\n");
+			fwrite(File, "}\r\n\r\n");
+			fwrite(File, "public OnPlayerSpawn(playerid)\r\n");
+			fwrite(File, "{\r\n");
+			for(new i; i < MAX_TEXTDRAWS; i ++)
+			{
+			    if(tData[i][T_Created])
+			    {
+			        format(tmpstring, sizeof(tmpstring), "	TextDrawHideForPlayer(playerid, Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+			    }
+			}
+			fwrite(File, "	return 1;\r\n");
+			fwrite(File, "}\r\n\r\n");
+			
+			format(tmpstring, sizeof(tmpstring), "Project exported to %s.pwn in scriptfiles directory as a filterscript.", CurrentProject);
+	        SendClientMessage(playerid, MSG_COLOR, tmpstring);
+	    }
+	    
+	    case 3: // Show while in vehicle
+	    {
+	        fwrite(File, "/*\r\n");
+	        fwrite(File, "Filterscript generated using Zamaroht's TextDraw Editor Version 1.0.\r\n");
+	        fwrite(File, "Designed for SA-MP 0.3a.\r\n\r\n");
+	        new ye,mo,da,ho,mi,se;
+	        getdate(ye,mo,da);
+	        gettime(ho,mi,se);
+			format(tmpstring, sizeof(tmpstring), "Time and Date: %d-%d-%d @ %d:%d:%d\r\n\r\n", ye, mo, da, ho, mi, se);
+			fwrite(File, tmpstring);
+			fwrite(File, "Instructions:\r\n");
+			fwrite(File, "1- Compile this file using the compiler provided with the sa-mp server package.\r\n");
+			fwrite(File, "2- Copy the .amx file to the filterscripts directory.\r\n");
+			fwrite(File, "3- Add the filterscripts in the server.cfg file (more info here:\r\n");
+			fwrite(File, "http://wiki.sa-mp.com/wiki/Server.cfg)\r\n");
+			fwrite(File, "4- Run the server!\r\n\r\n");
+			fwrite(File, "Disclaimer:\r\n");
+			fwrite(File, "You have full rights over this file. You can distribute it, modify it, and\r\n");
+			fwrite(File, "change it as much as you want, without having to give any special credits.\r\n");
+			fwrite(File, "*/\r\n\r\n");
+			fwrite(File, "#include <a_samp>\r\n\r\n");
+            for(new i; i < MAX_TEXTDRAWS; i++)
+	        {
+	            if(tData[i][T_Created])
+				{
+					format(tmpstring, sizeof(tmpstring), "new Text:Textdraw%d;\r\n", i);
+					fwrite(File, tmpstring);
+				}
+	        }
+			fwrite(File, "\r\npublic OnFilterScriptInit()\r\n");
+			fwrite(File, "{\r\n");
+			fwrite(File, "	print(\"Textdraw file generated by\");\r\n");
+			fwrite(File, "	print(\"    Zamaroht's textdraw editor was loaded.\");\r\n\r\n");
+			fwrite(File, "	// Create the textdraws:\r\n");
+			for(new i; i < MAX_TEXTDRAWS; i++)
+	        {
+	            if(tData[i][T_Created])
+				{
+					format(tmpstring, sizeof(tmpstring), "	Textdraw%d = TextDrawCreate(%f, %f, \"%s\");\r\n", i, tData[i][T_X], tData[i][T_Y], tData[i][T_Text]);
+					fwrite(File, tmpstring);
+					if(tData[i][T_Alignment] != 0 && tData[i][T_Alignment] != 1)
+					{
+						format(tmpstring, sizeof(tmpstring), "	TextDrawAlignment(Textdraw%d, %d);\r\n", i, tData[i][T_Alignment]);
+						fwrite(File, tmpstring);
+					}
+					format(tmpstring, sizeof(tmpstring), "	TextDrawBackgroundColor(Textdraw%d, %d);\r\n", i, tData[i][T_BackColor]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawFont(Textdraw%d, %d);\r\n", i, tData[i][T_Font]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawLetterSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_XSize], tData[i][T_YSize]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawColor(Textdraw%d, %d);\r\n", i, tData[i][T_Color]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawSetOutline(Textdraw%d, %d);\r\n", i, tData[i][T_Outline]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawSetProportional(Textdraw%d, %d);\r\n", i, tData[i][T_Proportional]);
+					fwrite(File, tmpstring);
+					if(tData[i][T_Outline] == 0)
+					{
+					    format(tmpstring, sizeof(tmpstring), "	TextDrawSetShadow(Textdraw%d, %d);\r\n", i, tData[i][T_Shadow]);
+						fwrite(File, tmpstring);
+					}
+					if(tData[i][T_UseBox] == 1)
+					{
+					    format(tmpstring, sizeof(tmpstring), "	TextDrawUseBox(Textdraw%d, %d);\r\n", i, tData[i][T_UseBox]);
+						fwrite(File, tmpstring);
+						format(tmpstring, sizeof(tmpstring), "	TextDrawBoxColor(Textdraw%d, %d);\r\n", i, tData[i][T_BoxColor]);
+						fwrite(File, tmpstring);
+						format(tmpstring, sizeof(tmpstring), "	TextDrawTextSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_TextSizeX], tData[i][T_TextSizeY]);
+						fwrite(File, tmpstring);
+					}
+					format(tmpstring, sizeof(tmpstring), "	TextDrawSetSelectable(Textdraw%d, %d);\r\n", i, tData[i][T_Selectable]);
+					fwrite(File, tmpstring);
+					fwrite(File, "\r\n");
+				}
+	        }
+	        fwrite(File, "	return 1;\r\n");
+	        fwrite(File, "}\r\n\r\n");
+	        fwrite(File, "public OnFilterScriptExit()\r\n");
+			fwrite(File, "{\r\n");
+            for(new i; i < MAX_TEXTDRAWS; i ++)
+            {
+                if(tData[i][T_Created])
+                {
+					format(tmpstring, sizeof(tmpstring), "	TextDrawHideForAll(Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawDestroy(Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+                }
+            }
+			fwrite(File, "	return 1;\r\n");
+			fwrite(File, "}\r\n\r\n");
+			fwrite(File, "public OnPlayerStateChange(playerid, newstate, oldstate)\r\n");
+			fwrite(File, "{\r\n");
+			fwrite(File, "	if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)\r\n");
+			fwrite(File, "	{\r\n");
+			for(new i; i < MAX_TEXTDRAWS; i ++)
+			{
+			    if(tData[i][T_Created])
+			    {
+			        format(tmpstring, sizeof(tmpstring), "		TextDrawShowForPlayer(playerid, Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+			    }
+			}
+			fwrite(File, "	}\r\n");
+			fwrite(File, "	else if(oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER)\r\n");
+			fwrite(File, "	{\r\n");
+			for(new i; i < MAX_TEXTDRAWS; i ++)
+			{
+			    if(tData[i][T_Created])
+			    {
+			        format(tmpstring, sizeof(tmpstring), "		TextDrawHideForPlayer(playerid, Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+			    }
+			}
+			fwrite(File, "	}\r\n");
+			fwrite(File, "	return 1;\r\n");
+			fwrite(File, "}\r\n");
+			
+			format(tmpstring, sizeof(tmpstring), "Project exported to %s.pwn in scriptfiles directory as a filterscript.", CurrentProject);
+	        SendClientMessage(playerid, MSG_COLOR, tmpstring);
+	    }
+	    
+	    case 4: // Use command
+	    {
+	        fwrite(File, "/*\r\n");
+	        fwrite(File, "Filterscript generated using Zamaroht's TextDraw Editor Version 1.0.\r\n");
+	        fwrite(File, "Designed for SA-MP 0.3a.\r\n\r\n");
+	        new ye,mo,da,ho,mi,se;
+	        getdate(ye,mo,da);
+	        gettime(ho,mi,se);
+			format(tmpstring, sizeof(tmpstring), "Time and Date: %d-%d-%d @ %d:%d:%d\r\n\r\n", ye, mo, da, ho, mi, se);
+			fwrite(File, tmpstring);
+			fwrite(File, "Instructions:\r\n");
+			fwrite(File, "1- Compile this file using the compiler provided with the sa-mp server package.\r\n");
+			fwrite(File, "2- Copy the .amx file to the filterscripts directory.\r\n");
+			fwrite(File, "3- Add the filterscripts in the server.cfg file (more info here:\r\n");
+			fwrite(File, "http://wiki.sa-mp.com/wiki/Server.cfg)\r\n");
+			fwrite(File, "4- Run the server!\r\n\r\n");
+			fwrite(File, "Disclaimer:\r\n");
+			fwrite(File, "You have full rights over this file. You can distribute it, modify it, and\r\n");
+			fwrite(File, "change it as much as you want, without having to give any special credits.\r\n");
+			fwrite(File, "*/\r\n\r\n");
+			fwrite(File, "#include <a_samp>\r\n\r\n");
+			fwrite(File, "new Showing[MAX_PLAYERS];\r\n\r\n");
+            for(new i; i < MAX_TEXTDRAWS; i++)
+	        {
+	            if(tData[i][T_Created])
+				{
+					format(tmpstring, sizeof(tmpstring), "new Text:Textdraw%d;\r\n", i);
+					fwrite(File, tmpstring);
+				}
+	        }
+	        fwrite(File, "\r\npublic OnFilterScriptInit()\r\n");
+			fwrite(File, "{\r\n");
+			fwrite(File, "	print(\"Textdraw file generated by\");\r\n");
+			fwrite(File, "	print(\"    Zamaroht's textdraw editor was loaded.\");\r\n\r\n");
+			fwrite(File, "	// Create the textdraws:\r\n");
+			for(new i; i < MAX_TEXTDRAWS; i++)
+	        {
+	            if(tData[i][T_Created])
+				{
+					format(tmpstring, sizeof(tmpstring), "	Textdraw%d = TextDrawCreate(%f, %f, \"%s\");\r\n", i, tData[i][T_X], tData[i][T_Y], tData[i][T_Text]);
+					fwrite(File, tmpstring);
+					if(tData[i][T_Alignment] != 0 && tData[i][T_Alignment] != 1)
+					{
+						format(tmpstring, sizeof(tmpstring), "	TextDrawAlignment(Textdraw%d, %d);\r\n", i, tData[i][T_Alignment]);
+						fwrite(File, tmpstring);
+					}
+					format(tmpstring, sizeof(tmpstring), "	TextDrawBackgroundColor(Textdraw%d, %d);\r\n", i, tData[i][T_BackColor]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawFont(Textdraw%d, %d);\r\n", i, tData[i][T_Font]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawLetterSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_XSize], tData[i][T_YSize]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawColor(Textdraw%d, %d);\r\n", i, tData[i][T_Color]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawSetOutline(Textdraw%d, %d);\r\n", i, tData[i][T_Outline]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawSetProportional(Textdraw%d, %d);\r\n", i, tData[i][T_Proportional]);
+					fwrite(File, tmpstring);
+					if(tData[i][T_Outline] == 0)
+					{
+					    format(tmpstring, sizeof(tmpstring), "	TextDrawSetShadow(Textdraw%d, %d);\r\n", i, tData[i][T_Shadow]);
+						fwrite(File, tmpstring);
+					}
+					if(tData[i][T_UseBox] == 1)
+					{
+					    format(tmpstring, sizeof(tmpstring), "	TextDrawUseBox(Textdraw%d, %d);\r\n", i, tData[i][T_UseBox]);
+						fwrite(File, tmpstring);
+						format(tmpstring, sizeof(tmpstring), "	TextDrawBoxColor(Textdraw%d, %d);\r\n", i, tData[i][T_BoxColor]);
+						fwrite(File, tmpstring);
+						format(tmpstring, sizeof(tmpstring), "	TextDrawTextSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_TextSizeX], tData[i][T_TextSizeY]);
+						fwrite(File, tmpstring);
+					}
+					format(tmpstring, sizeof(tmpstring), "	TextDrawSetSelectable(Textdraw%d, %d);\r\n", i, tData[i][T_Selectable]);
+					fwrite(File, tmpstring);
+					fwrite(File, "\r\n");
+				}
+	        }
+	        fwrite(File, "	return 1;\r\n");
+	        fwrite(File, "}\r\n\r\n");
+	        fwrite(File, "public OnFilterScriptExit()\r\n");
+			fwrite(File, "{\r\n");
+            for(new i; i < MAX_TEXTDRAWS; i ++)
+            {
+                if(tData[i][T_Created])
+                {
+					format(tmpstring, sizeof(tmpstring), "	TextDrawHideForAll(Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawDestroy(Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+                }
+            }
+			fwrite(File, "	return 1;\r\n");
+			fwrite(File, "}\r\n\r\n");
+			fwrite(File, "public OnPlayerConnect(playerid)\r\n");
+			fwrite(File, "{\r\n");
+			fwrite(File, "	Showing[playerid] = 0;\r\n");
+			fwrite(File, "}\r\n\r\n");
+			fwrite(File, "public OnPlayerCommandText(playerid, cmdtext[])\r\n");
+			fwrite(File, "{\r\n");
+			if(pData[playerid][P_Aux] != 0)
+			{
+			    format(tmpstring, sizeof(tmpstring), "	if(!strcmp(cmdtext, \"%s\") && Showing[playerid] == 0)\r\n", pData[playerid][P_ExpCommand]);
+			    fwrite(File, tmpstring);
+			}
+			else
+			{
+			    format(tmpstring, sizeof(tmpstring), "	if(!strcmp(cmdtext, \"%s\"))\r\n", pData[playerid][P_ExpCommand]);
+			    fwrite(File, tmpstring);
+			}
+			fwrite(File, "	{\r\n");
+			fwrite(File, "		if(Showing[playerid] == 1)\r\n");
+			fwrite(File, "		{\r\n");
+			fwrite(File, "			Showing[playerid] = 0;\r\n");
+			for(new i; i < MAX_TEXTDRAWS; i ++)
+			{
+			    if(tData[i][T_Created])
+			    {
+			        format(tmpstring, sizeof(tmpstring), "			TextDrawHideForPlayer(playerid, Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+			    }
+			}
+			fwrite(File, "		}\r\n");
+			fwrite(File, "		else\r\n");
+			fwrite(File, "		{\r\n");
+			fwrite(File, "			Showing[playerid] = 1;\r\n");
+			for(new i; i < MAX_TEXTDRAWS; i ++)
+			{
+			    if(tData[i][T_Created])
+			    {
+			        format(tmpstring, sizeof(tmpstring), "			TextDrawShowForPlayer(playerid, Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+			    }
+			}
+			if(pData[playerid][P_Aux] != 0)
+			{
+			    format(tmpstring, sizeof(tmpstring), "			SetTimerEx(\"HideTextdraws\", %d, 0, \"i\", playerid);\r\n", pData[playerid][P_Aux]*1000);
+				fwrite(File, tmpstring);
+			}
+			fwrite(File, "		}\r\n");
+			fwrite(File, "	}\r\n");
+			fwrite(File, "	return 1;\r\n");
+			fwrite(File, "}\r\n");
+            if(pData[playerid][P_Aux] != 0)
+			{
+			    fwrite(File, "\r\n");
+			    fwrite(File, "forward HideTextdraws(playerid);\r\n");
+			    fwrite(File, "public HideTextdraws(playerid)\r\n");
+			    fwrite(File, "{\r\n");
+			    fwrite(File, "	Showing[playerid] = 0;\r\n");
+			    for(new i; i < MAX_TEXTDRAWS; i ++)
+				{
+				    if(tData[i][T_Created])
+				    {
+				        format(tmpstring, sizeof(tmpstring), "	TextDrawHideForPlayer(playerid, Textdraw%d);\r\n", i);
+						fwrite(File, tmpstring);
+				    }
+				}
+				fwrite(File, "}\r\n");
+			}
+			
+			format(tmpstring, sizeof(tmpstring), "Project exported to %s.pwn in scriptfiles directory as a filterscript.", CurrentProject);
+	        SendClientMessage(playerid, MSG_COLOR, tmpstring);
+	    }
+	    
+	    case 5: // Every X time
+	    {
+	        fwrite(File, "/*\r\n");
+	        fwrite(File, "Filterscript generated using Zamaroht's TextDraw Editor Version 1.0.\r\n");
+	        fwrite(File, "Designed for SA-MP 0.3a.\r\n\r\n");
+	        new ye,mo,da,ho,mi,se;
+	        getdate(ye,mo,da);
+	        gettime(ho,mi,se);
+			format(tmpstring, sizeof(tmpstring), "Time and Date: %d-%d-%d @ %d:%d:%d\r\n\r\n", ye, mo, da, ho, mi, se);
+			fwrite(File, tmpstring);
+			fwrite(File, "Instructions:\r\n");
+			fwrite(File, "1- Compile this file using the compiler provided with the sa-mp server package.\r\n");
+			fwrite(File, "2- Copy the .amx file to the filterscripts directory.\r\n");
+			fwrite(File, "3- Add the filterscripts in the server.cfg file (more info here:\r\n");
+			fwrite(File, "http://wiki.sa-mp.com/wiki/Server.cfg)\r\n");
+			fwrite(File, "4- Run the server!\r\n\r\n");
+			fwrite(File, "Disclaimer:\r\n");
+			fwrite(File, "You have full rights over this file. You can distribute it, modify it, and\r\n");
+			fwrite(File, "change it as much as you want, without having to give any special credits.\r\n");
+			fwrite(File, "*/\r\n\r\n");
+			fwrite(File, "#include <a_samp>\r\n\r\n");
+			fwrite(File, "new Timer;\r\n\r\n");
+			for(new i; i < MAX_TEXTDRAWS; i++)
+	        {
+	            if(tData[i][T_Created])
+				{
+					format(tmpstring, sizeof(tmpstring), "new Text:Textdraw%d;\r\n", i);
+					fwrite(File, tmpstring);
+				}
+	        }
+	        fwrite(File, "\r\npublic OnFilterScriptInit()\r\n");
+			fwrite(File, "{\r\n");
+			fwrite(File, "	print(\"Textdraw file generated by\");\r\n");
+			fwrite(File, "	print(\"    Zamaroht's textdraw editor was loaded.\");\r\n\r\n");
+			fwrite(File, "	// Create the textdraws:\r\n");
+			for(new i; i < MAX_TEXTDRAWS; i++)
+	        {
+	            if(tData[i][T_Created])
+				{
+					format(tmpstring, sizeof(tmpstring), "	Textdraw%d = TextDrawCreate(%f, %f, \"%s\");\r\n", i, tData[i][T_X], tData[i][T_Y], tData[i][T_Text]);
+					fwrite(File, tmpstring);
+					if(tData[i][T_Alignment] != 0 && tData[i][T_Alignment] != 1)
+					{
+						format(tmpstring, sizeof(tmpstring), "	TextDrawAlignment(Textdraw%d, %d);\r\n", i, tData[i][T_Alignment]);
+						fwrite(File, tmpstring);
+					}
+					format(tmpstring, sizeof(tmpstring), "	TextDrawBackgroundColor(Textdraw%d, %d);\r\n", i, tData[i][T_BackColor]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawFont(Textdraw%d, %d);\r\n", i, tData[i][T_Font]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawLetterSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_XSize], tData[i][T_YSize]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawColor(Textdraw%d, %d);\r\n", i, tData[i][T_Color]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawSetOutline(Textdraw%d, %d);\r\n", i, tData[i][T_Outline]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawSetProportional(Textdraw%d, %d);\r\n", i, tData[i][T_Proportional]);
+					fwrite(File, tmpstring);
+					if(tData[i][T_Outline] == 0)
+					{
+					    format(tmpstring, sizeof(tmpstring), "	TextDrawSetShadow(Textdraw%d, %d);\r\n", i, tData[i][T_Shadow]);
+						fwrite(File, tmpstring);
+					}
+					if(tData[i][T_UseBox] == 1)
+					{
+					    format(tmpstring, sizeof(tmpstring), "	TextDrawUseBox(Textdraw%d, %d);\r\n", i, tData[i][T_UseBox]);
+						fwrite(File, tmpstring);
+						format(tmpstring, sizeof(tmpstring), "	TextDrawBoxColor(Textdraw%d, %d);\r\n", i, tData[i][T_BoxColor]);
+						fwrite(File, tmpstring);
+						format(tmpstring, sizeof(tmpstring), "	TextDrawTextSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_TextSizeX], tData[i][T_TextSizeY]);
+						fwrite(File, tmpstring);
+					}
+					format(tmpstring, sizeof(tmpstring), "	TextDrawSetSelectable(Textdraw%d, %d);\r\n", i, tData[i][T_Selectable]);
+					fwrite(File, tmpstring);
+					fwrite(File, "\r\n");
+				}
+	        }
+	        format(tmpstring, sizeof(tmpstring), "	Timer = SetTimer(\"ShowMessage\", %d, 1);\r\n", pData[playerid][P_Aux]*1000);
+	        fwrite(File, tmpstring);
+	        fwrite(File, "	return 1;\r\n");
+	        fwrite(File, "}\r\n\r\n");
+	        fwrite(File, "public OnFilterScriptExit()\r\n");
+			fwrite(File, "{\r\n");
+            for(new i; i < MAX_TEXTDRAWS; i ++)
+            {
+                if(tData[i][T_Created])
+                {
+					format(tmpstring, sizeof(tmpstring), "	TextDrawHideForAll(Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawDestroy(Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+                }
+            }
+            fwrite(File, "	KillTimer(Timer);\r\n");
+			fwrite(File, "	return 1;\r\n");
+			fwrite(File, "}\r\n\r\n");
+	        fwrite(File, "forward ShowMessage( );\r\n");
+	        fwrite(File, "public ShowMessage( )\r\n");
+	        fwrite(File, "{\r\n");
+	        for(new i; i < MAX_TEXTDRAWS; i ++)
+			{
+			    if(tData[i][T_Created])
+			    {
+			        format(tmpstring, sizeof(tmpstring), "	TextDrawShowForAll(Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+			    }
+			}
+			format(tmpstring, sizeof(tmpstring), "	SetTimer(\"HideMessage\", %d, 1);\r\n", pData[playerid][P_Aux2]*1000);
+			fwrite(File, tmpstring);
+			fwrite(File, "}\r\n\r\n");
+			fwrite(File, "forward HideMessage( );\r\n");
+	        fwrite(File, "public HideMessage( )\r\n");
+	        fwrite(File, "{\r\n");
+	        for(new i; i < MAX_TEXTDRAWS; i ++)
+			{
+			    if(tData[i][T_Created])
+			    {
+			        format(tmpstring, sizeof(tmpstring), "	TextDrawHideForAll(Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+			    }
+			}
+	        fwrite(File, "}");
+	        
+	        format(tmpstring, sizeof(tmpstring), "Project exported to %s.pwn in scriptfiles directory as a filterscript.", CurrentProject);
+	        SendClientMessage(playerid, MSG_COLOR, tmpstring);
+	    }
+	    
+	    case 6: // After kill
+	    {
+	        fwrite(File, "/*\r\n");
+	        fwrite(File, "Filterscript generated using Zamaroht's TextDraw Editor Version 1.0.\r\n");
+	        fwrite(File, "Designed for SA-MP 0.3a.\r\n\r\n");
+	        new ye,mo,da,ho,mi,se;
+	        getdate(ye,mo,da);
+	        gettime(ho,mi,se);
+			format(tmpstring, sizeof(tmpstring), "Time and Date: %d-%d-%d @ %d:%d:%d\r\n\r\n", ye, mo, da, ho, mi, se);
+			fwrite(File, tmpstring);
+			fwrite(File, "Instructions:\r\n");
+			fwrite(File, "1- Compile this file using the compiler provided with the sa-mp server package.\r\n");
+			fwrite(File, "2- Copy the .amx file to the filterscripts directory.\r\n");
+			fwrite(File, "3- Add the filterscripts in the server.cfg file (more info here:\r\n");
+			fwrite(File, "http://wiki.sa-mp.com/wiki/Server.cfg)\r\n");
+			fwrite(File, "4- Run the server!\r\n\r\n");
+			fwrite(File, "Disclaimer:\r\n");
+			fwrite(File, "You have full rights over this file. You can distribute it, modify it, and\r\n");
+			fwrite(File, "change it as much as you want, without having to give any special credits.\r\n");
+			fwrite(File, "*/\r\n\r\n");
+			fwrite(File, "#include <a_samp>\r\n\r\n");
+            for(new i; i < MAX_TEXTDRAWS; i++)
+	        {
+	            if(tData[i][T_Created])
+				{
+					format(tmpstring, sizeof(tmpstring), "new Text:Textdraw%d;\r\n", i);
+					fwrite(File, tmpstring);
+				}
+	        }
+			fwrite(File, "\r\npublic OnFilterScriptInit()\r\n");
+			fwrite(File, "{\r\n");
+			fwrite(File, "	print(\"Textdraw file generated by\");\r\n");
+			fwrite(File, "	print(\"    Zamaroht's textdraw editor was loaded.\");\r\n\r\n");
+			fwrite(File, "	// Create the textdraws:\r\n");
+			for(new i; i < MAX_TEXTDRAWS; i++)
+	        {
+	            if(tData[i][T_Created])
+				{
+					format(tmpstring, sizeof(tmpstring), "	Textdraw%d = TextDrawCreate(%f, %f, \"%s\");\r\n", i, tData[i][T_X], tData[i][T_Y], tData[i][T_Text]);
+					fwrite(File, tmpstring);
+					if(tData[i][T_Alignment] != 0 && tData[i][T_Alignment] != 1)
+					{
+						format(tmpstring, sizeof(tmpstring), "	TextDrawAlignment(Textdraw%d, %d);\r\n", i, tData[i][T_Alignment]);
+						fwrite(File, tmpstring);
+					}
+					format(tmpstring, sizeof(tmpstring), "	TextDrawBackgroundColor(Textdraw%d, %d);\r\n", i, tData[i][T_BackColor]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawFont(Textdraw%d, %d);\r\n", i, tData[i][T_Font]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawLetterSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_XSize], tData[i][T_YSize]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawColor(Textdraw%d, %d);\r\n", i, tData[i][T_Color]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawSetOutline(Textdraw%d, %d);\r\n", i, tData[i][T_Outline]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawSetProportional(Textdraw%d, %d);\r\n", i, tData[i][T_Proportional]);
+					fwrite(File, tmpstring);
+					if(tData[i][T_Outline] == 0)
+					{
+					    format(tmpstring, sizeof(tmpstring), "	TextDrawSetShadow(Textdraw%d, %d);\r\n", i, tData[i][T_Shadow]);
+						fwrite(File, tmpstring);
+					}
+					if(tData[i][T_UseBox] == 1)
+					{
+					    format(tmpstring, sizeof(tmpstring), "	TextDrawUseBox(Textdraw%d, %d);\r\n", i, tData[i][T_UseBox]);
+						fwrite(File, tmpstring);
+						format(tmpstring, sizeof(tmpstring), "	TextDrawBoxColor(Textdraw%d, %d);\r\n", i, tData[i][T_BoxColor]);
+						fwrite(File, tmpstring);
+						format(tmpstring, sizeof(tmpstring), "	TextDrawTextSize(Textdraw%d, %f, %f);\r\n", i, tData[i][T_TextSizeX], tData[i][T_TextSizeY]);
+						fwrite(File, tmpstring);
+					}
+					format(tmpstring, sizeof(tmpstring), "	TextDrawSetSelectable(Textdraw%d, %d);\r\n", i, tData[i][T_Selectable]);
+					fwrite(File, tmpstring);
+					fwrite(File, "\r\n");
+				}
+	        }
+	        fwrite(File, "	return 1;\r\n");
+	        fwrite(File, "}\r\n\r\n");
+	        fwrite(File, "public OnFilterScriptExit()\r\n");
+			fwrite(File, "{\r\n");
+            for(new i; i < MAX_TEXTDRAWS; i ++)
+            {
+                if(tData[i][T_Created])
+                {
+					format(tmpstring, sizeof(tmpstring), "	TextDrawHideForAll(Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "	TextDrawDestroy(Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+                }
+            }
+			fwrite(File, "	return 1;\r\n");
+			fwrite(File, "}\r\n\r\n");
+			fwrite(File, "public OnPlayerDeath(playerid, killerid, reason)\r\n");
+			fwrite(File, "{\r\n");
+			for(new i; i < MAX_TEXTDRAWS; i ++)
+			{
+			    if(tData[i][T_Created])
+			    {
+			        format(tmpstring, sizeof(tmpstring), "	TextDrawShowForPlayer(killerid, Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+			    }
+			}
+			format(tmpstring, sizeof(tmpstring), "	SetTimerEx(\"HideMessage\", %d, 0, \"i\", killerid);\r\n", pData[playerid][P_Aux]*1000);
+			fwrite(File, tmpstring);
+			fwrite(File, "}\r\n\r\n");
+			fwrite(File, "forward HideMessage(playerid);\r\n");
+			fwrite(File, "public HideMessage(playerid)\r\n");
+			fwrite(File, "{\r\n");
+			for(new i; i < MAX_TEXTDRAWS; i ++)
+			{
+			    if(tData[i][T_Created])
+			    {
+			        format(tmpstring, sizeof(tmpstring), "	TextDrawHideForPlayer(playerid, Textdraw%d);\r\n", i);
+					fwrite(File, tmpstring);
+			    }
+			}
+			fwrite(File, "}");
+			
+		    format(tmpstring, sizeof(tmpstring), "Project exported to %s.pwn in scriptfiles directory as a filterscript.", CurrentProject);
+	        SendClientMessage(playerid, MSG_COLOR, tmpstring);
+	    }
+	    case 7: // PlayerTextDraw by adri1.
+	    {
+	        fwrite(File, "// TextDraw developed using Zamaroht's Textdraw Editor 1.0\r\n\r\n");
+	        fwrite(File, "// The fuction `PlayerTextDraw´ add by adri1\r\n");
+	        fwrite(File, "// On top of script:\r\n");
+	        for(new i; i < MAX_TEXTDRAWS; i++)
+	        {
+	            if(tData[i][T_Created])
+				{
+					format(tmpstring, sizeof(tmpstring), "new PlayerText:Textdraw%d;\r\n", i);
+					fwrite(File, tmpstring);
+				}
+	        }
+	        fwrite(File, "\r\n// In OnPlayerConnect prefferably, we procced to create our textdraws:\r\n");
+	        for(new i; i < MAX_TEXTDRAWS; i++)
+	        {
+	            if(tData[i][T_Created])
+				{
+					format(tmpstring, sizeof(tmpstring), "Textdraw%d = CreatePlayerTextDraw(playerid,%f, %f, \"%s\");\r\n", i, tData[i][T_X], tData[i][T_Y], tData[i][T_Text]);
+					fwrite(File, tmpstring);
+					if(tData[i][T_Alignment] != 0 && tData[i][T_Alignment] != 1)
+					{
+						format(tmpstring, sizeof(tmpstring), "PlayerTextDrawAlignment(playerid,Textdraw%d, %d);\r\n", i, tData[i][T_Alignment]);
+						fwrite(File, tmpstring);
+					}
+					format(tmpstring, sizeof(tmpstring), "PlayerTextDrawBackgroundColor(playerid,Textdraw%d, %d);\r\n", i, tData[i][T_BackColor]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "PlayerTextDrawFont(playerid,Textdraw%d, %d);\r\n", i, tData[i][T_Font]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "PlayerTextDrawLetterSize(playerid,Textdraw%d, %f, %f);\r\n", i, tData[i][T_XSize], tData[i][T_YSize]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "PlayerTextDrawColor(playerid,Textdraw%d, %d);\r\n", i, tData[i][T_Color]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "PlayerTextDrawSetOutline(playerid,Textdraw%d, %d);\r\n", i, tData[i][T_Outline]);
+					fwrite(File, tmpstring);
+					format(tmpstring, sizeof(tmpstring), "PlayerTextDrawSetProportional(playerid,Textdraw%d, %d);\r\n", i, tData[i][T_Proportional]);
+					fwrite(File, tmpstring);
+					if(tData[i][T_Outline] == 0)
+					{
+					    format(tmpstring, sizeof(tmpstring), "PlayerTextDrawSetShadow(playerid,Textdraw%d, %d);\r\n", i, tData[i][T_Shadow]);
+						fwrite(File, tmpstring);
+					}
+					if(tData[i][T_UseBox] == 1)
+					{
+					    format(tmpstring, sizeof(tmpstring), "PlayerTextDrawUseBox(playerid,Textdraw%d, %d);\r\n", i, tData[i][T_UseBox]);
+						fwrite(File, tmpstring);
+						format(tmpstring, sizeof(tmpstring), "PlayerTextDrawBoxColor(playerid,Textdraw%d, %d);\r\n", i, tData[i][T_BoxColor]);
+						fwrite(File, tmpstring);
+						format(tmpstring, sizeof(tmpstring), "PlayerTextDrawTextSize(playerid,Textdraw%d, %f, %f);\r\n", i, tData[i][T_TextSizeX], tData[i][T_TextSizeY]);
+						fwrite(File, tmpstring);
+					}
+					if(tData[i][T_PreviewModel] > -1)
+					{
+					    format(tmpstring, sizeof(tmpstring), "PlayerTextDrawSetPreviewModel(playerid, Textdraw%d, %d);\r\n", i, tData[i][T_PreviewModel]);
+					    fwrite(File, tmpstring);
+					    format(tmpstring, sizeof(tmpstring), "PlayerTextDrawSetPreviewRot(playerid, Textdraw%d, %f, %f, %f, %f);\r\n", i, tData[i][PMRotX], tData[i][PMRotY], tData[i][PMRotZ], tData[i][PMZoom]);
+					    fwrite(File, tmpstring);
+					}
+					format(tmpstring, sizeof(tmpstring), "PlayerTextDrawSetSelectable(playerid,Textdraw%d, %d);\r\n", i, tData[i][T_Selectable]);
+					fwrite(File, tmpstring);
+					fwrite(File, "\r\n");
+				}
+	        }
+	        fwrite(File, "// You can now use PlayerTextDrawShow, PlayerTextDrawHide and\r\n");
+	        fwrite(File, "// PlayerTextDrawDestroy functions to show, hide, and destroy the textdraw.");
+
+			format(tmpstring, sizeof(tmpstring), "Project exported to %s.txt in scriptfiles directory.", CurrentProject);
+	        SendClientMessage(playerid, MSG_COLOR, tmpstring);
+	        SendClientMessage(playerid, MSG_COLOR, "Fuction `PlayerTextDraw´ add by adri1");
+	    }
+	    
+
+	    // Export to 420GUI
+	    case 8:
+	    {
+	        // Write header
+			fwrite(File, "stock const MyGUIMenu[][GUIDEF] = {\r\n");
+
+			new totalcount, currcount;
+			// Count active textdraws
+            for(new i; i < MAX_TEXTDRAWS; i++) { if(tData[i][T_Created]) totalcount++; }
+
+			printf("Total TD: %i", totalcount);
+
+			// Write textures
+	        for(new i; i < MAX_TEXTDRAWS; i++)
+	        {
+	            if(tData[i][T_Created])
+				{
+					// Write header
+		            fwrite(File, "\t{\r\n");
+
+			    	format(tmpstring, sizeof(tmpstring), "\t\t%c%s%c,\t\t\t\t// Text\r\n", 34, tData[i][T_Text], 34);
+		            fwrite(File, tmpstring);
+
+			    	format(tmpstring, sizeof(tmpstring), "\t\t%0.1f,\t\t\t\t// OffsetX\r\n", tData[i][T_X]);
+                    fwrite(File, tmpstring);
+
+			    	format(tmpstring, sizeof(tmpstring), "\t\t%0.1f,\t\t\t\t// OffsetY\r\n", tData[i][T_Y]);
+                    fwrite(File, tmpstring);
+
+			    	format(tmpstring, sizeof(tmpstring), "\t\t%0.1f,\t\t\t\t// LetterSizeX\r\n", tData[i][T_XSize]);
+                    fwrite(File, tmpstring);
+
+   			    	format(tmpstring, sizeof(tmpstring), "\t\t%0.1f,\t\t\t\t// LetterSizeY\r\n", tData[i][T_YSize]);
+                    fwrite(File, tmpstring);
+
+			    	format(tmpstring, sizeof(tmpstring), "\t\t%0.1f,\t\t\t\t// TextSizeX\r\n", tData[i][T_TextSizeX]);
+                    fwrite(File, tmpstring);
+
+   			    	format(tmpstring, sizeof(tmpstring), "\t\t%0.1f,\t\t\t\t// TextSizeY\r\n", tData[i][T_TextSizeY]);
+                    fwrite(File, tmpstring);
+
+			    	format(tmpstring, sizeof(tmpstring), "\t\t%0.1f,\t\t\t\t// ModelRotX\r\n", tData[i][PMRotX]);
+                    fwrite(File, tmpstring);
+
+   			    	format(tmpstring, sizeof(tmpstring), "\t\t%0.1f,\t\t\t\t// ModelRotY\r\n", tData[i][PMRotY]);
+                    fwrite(File, tmpstring);
+
+   			    	format(tmpstring, sizeof(tmpstring), "\t\t%0.1f,\t\t\t\t// ModelRotZ\r\n", tData[i][PMRotZ]);
+                    fwrite(File, tmpstring);
+
+   			    	format(tmpstring, sizeof(tmpstring), "\t\t%0.1f,\t\t\t\t// ModelRotZoom\r\n", tData[i][PMZoom]);
+                    fwrite(File, tmpstring);
+
+   			    	format(tmpstring, sizeof(tmpstring), "\t\t%d,\t\t\t\t// Previewmodel\r\n", tData[i][T_PreviewModel]);
+                    fwrite(File, tmpstring);
+
+   			    	format(tmpstring, sizeof(tmpstring), "\t\t%d,\t\t\t\t// Background Color\r\n", tData[i][T_BackColor]);
+                    fwrite(File, tmpstring);
+
+   			    	format(tmpstring, sizeof(tmpstring), "\t\t%d,\t\t\t\t// Font\r\n", tData[i][T_Font]);
+                    fwrite(File, tmpstring);
+                    
+   			    	format(tmpstring, sizeof(tmpstring), "\t\t%d,\t\t\t\t// Color\r\n", tData[i][T_Color]);
+                    fwrite(File, tmpstring);
+
+   			    	format(tmpstring, sizeof(tmpstring), "\t\t%d,\t\t\t\t// Outline\r\n", tData[i][T_Outline]);
+                    fwrite(File, tmpstring);
+
+   			    	format(tmpstring, sizeof(tmpstring), "\t\t%d,\t\t\t\t// Proportional\r\n", tData[i][T_Proportional]);
+                    fwrite(File, tmpstring);
+
+   			    	format(tmpstring, sizeof(tmpstring), "\t\t%d,\t\t\t\t// Alignment\r\n", tData[i][T_Alignment]);
+                    fwrite(File, tmpstring);
+
+   			    	format(tmpstring, sizeof(tmpstring), "\t\t%d,\t\t\t\t// Shadow\r\n", tData[i][T_Shadow]);
+                    fwrite(File, tmpstring);
+
+   			    	format(tmpstring, sizeof(tmpstring), "\t\t%d,\t\t\t\t// Usebox\r\n", tData[i][T_UseBox]);
+                    fwrite(File, tmpstring);
+
+   			    	format(tmpstring, sizeof(tmpstring), "\t\t%d,\t\t\t\t// Boxcolor\r\n", tData[i][T_BoxColor]);
+                    fwrite(File, tmpstring);
+
+   			    	format(tmpstring, sizeof(tmpstring), "\t\t%d\t\t\t\t// Selectable\r\n", tData[i][T_Selectable]);
+                    fwrite(File, tmpstring);
+
+		            currcount++;
+
+					if(totalcount == currcount)
+					{
+						fwrite(File, "\t}\r\n");
+						break;
+					}
+					else fwrite(File, "\t},\r\n");
+				}
+			}
+			// Write footer
+			fwrite(File, "};\r\n");
+	    }
+	}
+	fclose(File);
+	
+	ShowTextDrawDialog(playerid, 4);
+}
+
+// ================================================================================================================================
+// -------------------------------------------------------- AUXILIAR FUNCTIONS ----------------------------------------------------
+// ================================================================================================================================
+
+
+stock GetFileNameFromLst( file[], line )
+{
+	/*  Returns the line in the specified line of the specified file.
+	    @file[]:            File to return the line from.
+	    @line:              Line number to return.
+	*/
+	new string[150];
+
+	new CurrLine,
+		File:Handler = fopen(file, io_read);
+
+	if(line >= 0 && CurrLine != line)
+	{
+        while(CurrLine != line)
+        {
+			fread(Handler, string);
+            CurrLine ++;
+        }
+	}
+
+	// Read the next line, which is the asked one.
+	fread(Handler, string);
+	fclose(Handler);
+
+	// Cut the last two characters (\n)
+	strmid(string, string, 0, strlen(string) - 2, 150);
+
+	return string;
+}
+
+stock DeleteLineFromFile( file[], line )
+{
+	/*  Deletes a specific line from a specific file.
+	    @file[]:        File to delete the line from.
+	    @line:          Line number to delete.
+	*/
+
+	if(line < 0) return false;
+
+	new tmpfile[140];
+	format(tmpfile, sizeof(tmpfile), "%s.tmp", file);
+	fcopytextfile(file, tmpfile);
+	// Copied to a temp file, now parse it back.
+
+	new CurrLine,
+		File:FileFrom 	= fopen(tmpfile, io_read),
+		File:FileTo		= fopen(file, io_write);
+
+	new tmpstring[200];
+	if(CurrLine != line)
+	{
+		while(CurrLine != line)
+		{
+		    fread(FileFrom, tmpstring);
+			fwrite(FileTo, tmpstring);
+			CurrLine ++;
+		}
+	}
+
+	// Skip a line
+	fread(FileFrom, tmpstring);
+
+	// Write the rest
+	while(fread(FileFrom, tmpstring))
+	{
+	    fwrite(FileTo, tmpstring);
+	}
+
+	fclose(FileTo);
+	fclose(FileFrom);
+	// Remove tmp file.
+	fremove(tmpfile);
+	return true;
+}
+
+/** BY DRACOBLUE
+ *  Strips Newline from the end of a string.
+ *  Idea: Y_Less, Bugfixing (when length=1) by DracoBlue
+ *  @param   string
+ */
+stock StripNewLine(string[])
+{
+	new len = strlen(string);
+	if (string[0]==0) return ;
+	if ((string[len - 1] == '\n') || (string[len - 1] == '\r')) {
+		string[len - 1] = 0;
+		if (string[0]==0) return ;
+		if ((string[len - 2] == '\n') || (string[len - 2] == '\r')) string[len - 2] = 0;
+	}
+}
+
+/** BY DRACOBLUE
+ *  Copies a textfile (Source file won't be deleted!)
+ *  @param   oldname
+ *           newname
+ */
+stock fcopytextfile(oldname[],newname[]) {
+	new File:ohnd,File:nhnd;
+	if (!fexist(oldname)) return false;
+	ohnd=fopen(oldname,io_read);
+	nhnd=fopen(newname,io_write);
+	new tmpres[256];
+	while (fread(ohnd,tmpres)) {
+		StripNewLine(tmpres);
+		format(tmpres,sizeof(tmpres),"%s\r\n",tmpres);
+		fwrite(nhnd,tmpres);
+	}
+	fclose(ohnd);
+	fclose(nhnd);
+	return true;
+}
+
+stock RGB( red, green, blue, alpha )
+{
+	/*  Combines a color and returns it, so it can be used in functions.
+	    @red:           Amount of red color.
+	    @green:         Amount of green color.
+	    @blue:          Amount of blue color.
+	    @alpha:         Amount of alpha transparency.
+
+		-Returns:
+		A integer with the combined color.
+	*/
+	return (red * 16777216) + (green * 65536) + (blue * 256) + alpha;
+}
+
+IsNumeric2(const string[])
+{
+    // Is Numeric Check 2
+	// ------------------
+	// By DracoBlue... handles negative numbers
+
+	new length=strlen(string);
+	if (length==0) return false;
+	for (new i = 0; i < length; i++)
+	{
+	  if((string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+' && string[i]!='.') // Not a number,'+' or '-' or '.'
+	         || (string[i]=='-' && i!=0)                                             // A '-' but not first char.
+	         || (string[i]=='+' && i!=0)                                             // A '+' but not first char.
+	     ) return false;
+	}
+	if (length==1 && (string[0]=='-' || string[0]=='+' || string[0]=='.')) return false;
+	return true;
+}
+
+/** BY DRACOBLUE
+ *  Return the value of an hex-string
+ *  @param string
+ */
+stock HexToInt(string[]) {
+  if (string[0]==0) return 0;
+  new i;
+  new cur=1;
+  new res=0;
+  for (i=strlen(string);i>0;i--) {
+    if (string[i-1]<58) res=res+cur*(string[i-1]-48); else res=res+cur*(string[i-1]-65+10);
+    cur=cur*16;
+  }
+  return res;
+}
+
+stock IsPlayerMinID(playerid)
+{
+	/*  Checks if the player is the minumum ID in the server.
+	    @playerid:              ID to check.
+	    
+	    -Returns:
+	    true if he is, false if he isn't.
+	*/
+	for(new i; i < playerid; i ++)
+	{
+	    if(IsPlayerConnected(i))
+	    {
+		    if(IsPlayerNPC(i)) continue;
+		    else return false;
+		}
+	}
+	return true;
+}
+// ================================================================================================================================
+// ----------------------------------------------------- END OF AUXULIAR FUNCTIONS ------------------------------------------------
+// ================================================================================================================================
+
+// EOF
+
+
+
+static DelayShowInfoDrawTimer;
+static Text:InfoDraw = Text:-1;
+
+static CreateInfoDraws()
+{
+	InfoDraw = TextDrawCreate(320.000000, 217.000000, "320.000,_320.000~n~");
+	TextDrawLetterSize(InfoDraw, 0.659499, 2.686399);
+	TextDrawAlignment(InfoDraw, 2);
+	TextDrawColor(InfoDraw, -1);
+	TextDrawSetShadow(InfoDraw, 0);
+	TextDrawSetOutline(InfoDraw, 2);
+	TextDrawBackgroundColor(InfoDraw, 255);
+	TextDrawFont(InfoDraw, 2);
+	TextDrawSetProportional(InfoDraw, 1);
+	TextDrawSetShadow(InfoDraw, 0);
+	return 1;
+}
+
+static DestroyInfoDraws()
+{
+	TextDrawDestroy(InfoDraw);
+	InfoDraw = Text:-1;
+	return 1;
+}
+
+static ShowInfoDraw(playerid, text[], time)
+{
+	if(_:InfoDraw == -1) CreateInfoDraws();
+	KillTimer(DelayShowInfoDrawTimer);
+	TextDrawDestroy(InfoDraw);
+	CreateInfoDraws();
+	TextDrawSetString(InfoDraw, text);
+    TextDrawShowForPlayer(playerid, InfoDraw);
+	DelayShowInfoDrawTimer = SetTimer("HideInfoDraw", time, false);
+	return 1;
+}
+
+forward HideInfoDraw();
+public HideInfoDraw()
+{
+	DestroyInfoDraws();
+	return 1;
+}
+

BIN
Texture-Studio-master/filterscripts/adminspec.amx


+ 121 - 0
Texture-Studio-master/filterscripts/adminspec.pwn

@@ -0,0 +1,121 @@
+//
+//  ADMIN SPECTATE FILTER SCRIPT
+//  kye 2007
+//
+
+#pragma tabsize 0
+#include <a_samp>
+#include <core>
+#include <float>
+
+#include "../include/gl_common.inc"
+
+#define COLOR_GREY 0xAFAFAFAA
+#define COLOR_GREEN 0x33AA33AA
+#define COLOR_RED 0xAA3333AA
+#define COLOR_YELLOW 0xFFFF00AA
+#define COLOR_WHITE 0xFFFFFFFF
+
+//------------------------------------------------------------------------------------------------------
+
+#define ADMIN_SPEC_TYPE_NONE 0
+#define ADMIN_SPEC_TYPE_PLAYER 1
+#define ADMIN_SPEC_TYPE_VEHICLE 2
+
+new gSpectateID[MAX_PLAYERS];
+new gSpectateType[MAX_PLAYERS];
+
+//------------------------------------------------------------------------------------------------------
+
+public OnFilterScriptInit()
+{
+}
+
+//------------------------------------------------------------------------------------------------------
+
+public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
+{
+	// IF ANYONE IS SPECTATING THIS PLAYER, WE'LL ALSO HAVE
+	// TO CHANGE THEIR INTERIOR ID TO MATCH
+	new x = 0;
+	while(x!=MAX_PLAYERS) {
+	    if( IsPlayerConnected(x) &&	GetPlayerState(x) == PLAYER_STATE_SPECTATING &&
+			gSpectateID[x] == playerid && gSpectateType[x] == ADMIN_SPEC_TYPE_PLAYER )
+   		{
+   		    SetPlayerInterior(x,newinteriorid);
+		}
+		x++;
+	}
+}
+
+//------------------------------------------------------------------------------------------------------
+
+public OnPlayerCommandText(playerid, cmdtext[])
+{
+	new cmd[256];
+	new specplayerid, specvehicleid, idx;
+
+	// WE ONLY DEAL WITH COMMANDS FROM ADMINS IN THIS FILTERSCRIPT
+	if(!IsPlayerAdmin(playerid)) return 0;
+
+	cmd = strtok(cmdtext, idx);
+
+	// SPECTATE A PLAYER
+ 	if(strcmp(cmd, "/specplayer", true) == 0) {
+	    new tmp[256];
+		tmp = strtok(cmdtext, idx);
+
+		if(!strlen(tmp)) {
+			SendClientMessage(playerid, COLOR_WHITE, "USAGE: /specplayer [playerid]");
+			return 1;
+		}
+		specplayerid = strval(tmp);
+		
+		if(!IsPlayerConnected(specplayerid)) {
+		    SendClientMessage(playerid, COLOR_RED, "specplayer: that player isn't active.");
+			return 1;
+		}
+		
+		TogglePlayerSpectating(playerid, 1);
+		PlayerSpectatePlayer(playerid, specplayerid);
+		SetPlayerInterior(playerid,GetPlayerInterior(specplayerid));
+		gSpectateID[playerid] = specplayerid;
+		gSpectateType[playerid] = ADMIN_SPEC_TYPE_PLAYER;
+		
+ 		return 1;
+	}
+
+	// SPECTATE A VEHICLE
+ 	if(strcmp(cmd, "/specvehicle", true) == 0) {
+	    new tmp[256];
+		tmp = strtok(cmdtext, idx);
+
+		if(!strlen(tmp)) {
+			SendClientMessage(playerid, COLOR_WHITE, "USAGE: /specvehicle [vehicleid]");
+			return 1;
+		}
+		specvehicleid = strval(tmp);
+		
+		if(specvehicleid < MAX_VEHICLES) {
+			TogglePlayerSpectating(playerid, 1);
+			PlayerSpectateVehicle(playerid, specvehicleid);
+			gSpectateID[playerid] = specvehicleid;
+			gSpectateType[playerid] = ADMIN_SPEC_TYPE_VEHICLE;
+		}
+ 		return 1;
+	}
+
+	// STOP SPECTATING
+ 	if(strcmp(cmd, "/specoff", true) == 0) {
+		TogglePlayerSpectating(playerid, 0);
+		gSpectateID[playerid] = INVALID_PLAYER_ID;
+		gSpectateType[playerid] = ADMIN_SPEC_TYPE_NONE;
+		return 1;
+	}
+
+	return 0;
+}
+
+//------------------------------------------------------------------------------------------------------
+
+

BIN
Texture-Studio-master/filterscripts/base.amx


+ 151 - 0
Texture-Studio-master/filterscripts/base.pwn

@@ -0,0 +1,151 @@
+//
+// Base FS
+// Contains /pm /kick /ban commands.
+//
+
+#include <a_samp>
+#include "../include/gl_common.inc"
+
+#define ADMINFS_MESSAGE_COLOR 0xFF444499
+#define PM_INCOMING_COLOR     0xFFFF22AA
+#define PM_OUTGOING_COLOR     0xFFCC2299
+
+//------------------------------------------------
+
+public OnFilterScriptInit()
+{
+	print("\n--Base FS loaded.\n");
+	return 1;
+}
+
+//------------------------------------------------
+
+public OnPlayerCommandText(playerid, cmdtext[])
+{
+	new cmd[256];
+	new	tmp[256];
+	new Message[256];
+	new gMessage[256];
+	new pName[MAX_PLAYER_NAME+1];
+	new iName[MAX_PLAYER_NAME+1];
+	new	idx;
+	
+	cmd = strtok(cmdtext, idx);
+
+	// PM Command
+	if(strcmp("/pm", cmd, true) == 0)
+	{
+		tmp = strtok(cmdtext,idx);
+		
+		if(!strlen(tmp) || strlen(tmp) > 5) {
+			SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Usage: /pm (id) (message)");
+			return 1;
+		}
+		
+		new id = strval(tmp);
+        gMessage = strrest(cmdtext,idx);
+        
+		if(!strlen(gMessage)) {
+			SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Usage: /pm (id) (message)");
+			return 1;
+		}
+		
+		if(!IsPlayerConnected(id)) {
+			SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/pm : Bad player ID");
+			return 1;
+		}
+		
+		if(playerid != id) {
+			GetPlayerName(id,iName,sizeof(iName));
+			GetPlayerName(playerid,pName,sizeof(pName));
+			format(Message,sizeof(Message),">> %s(%d): %s",iName,id,gMessage);
+			SendClientMessage(playerid,PM_OUTGOING_COLOR,Message);
+			format(Message,sizeof(Message),"** %s(%d): %s",pName,playerid,gMessage);
+			SendClientMessage(id,PM_INCOMING_COLOR,Message);
+			PlayerPlaySound(id,1085,0.0,0.0,0.0);
+			
+			printf("PM: %s",Message);
+			
+		}
+		else {
+			SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"You cannot PM yourself");
+		}
+		return 1;
+	}
+
+	//Kick Command
+	if(strcmp("/kick", cmd, true) == 0)
+	{
+	    if(IsPlayerAdmin(playerid)) {
+			tmp = strtok(cmdtext,idx);
+			if(!strlen(tmp) || strlen(tmp) > 5) {
+				return SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Usage: /kick (id) [reason]");
+			}
+			
+			new id = strval(tmp);
+
+			if(!IsPlayerConnected(id)) {
+				SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/kick : Bad player ID");
+				return 1;
+			}
+			
+			gMessage = strrest(cmdtext,idx);
+			
+			GetPlayerName(id,iName,sizeof(iName));
+			SendClientMessage(id,ADMINFS_MESSAGE_COLOR,"-- You have been kicked from the server.");
+
+			if(strlen(gMessage) > 0) {
+				format(Message,sizeof(Message),"Reason: %s",gMessage);
+				SendClientMessage(id,ADMINFS_MESSAGE_COLOR,Message);
+			}
+			
+			format(Message,sizeof(Message),">> %s(%d) has been kicked.",iName,id);
+			SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,Message);
+			
+			Kick(id);
+			return 1;
+		} else {
+            SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/kick : You are not an admin");
+			return 1;
+		}
+	}
+
+	//Ban Command
+	if(strcmp("/ban", cmd, true) == 0)
+	{
+	    if(IsPlayerAdmin(playerid)) {
+			tmp = strtok(cmdtext,idx);
+			if(!strlen(tmp) || strlen(tmp) > 5) {
+				return SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Usage: /ban (id) [reason]");
+			}
+
+			new id = strval(tmp);
+
+			if(!IsPlayerConnected(id)) {
+				SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/ban : Bad player ID");
+				return 1;
+			}
+
+			gMessage = strrest(cmdtext,idx);
+
+			GetPlayerName(id,iName,sizeof(iName));
+			SendClientMessage(id,ADMINFS_MESSAGE_COLOR,"-- You have been banned from the server.");
+
+			if(strlen(gMessage) > 0) {
+				format(Message,sizeof(Message),"Reason: %s",gMessage);
+				SendClientMessage(id,ADMINFS_MESSAGE_COLOR,Message);
+			}
+
+			format(Message,sizeof(Message),">> %s(%d) has been banned.",iName,id);
+			SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,Message);
+
+			Ban(id);
+			return 1;
+		} else {
+            SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/ban : You are not an admin");
+			return 1;
+		}
+	}
+	
+	return 0;
+}

BIN
Texture-Studio-master/filterscripts/baseaf.amx


+ 235 - 0
Texture-Studio-master/filterscripts/baseaf.pwn

@@ -0,0 +1,235 @@
+//
+// Base FS for Sanandreas Multiplayer 0.3
+// Contains /pm /kick /ban commands - it also features
+// a basic anti flood system, and admin chatting for rcon admins
+// using # <message>
+
+#include <a_samp>
+#include "../include/gl_common.inc"
+
+#define ADMINFS_MESSAGE_COLOR 0xFF444499
+#define PM_INCOMING_COLOR     0xFFFF22AA
+#define PM_OUTGOING_COLOR     0xFFCC2299
+
+static iPlayerChatTime[MAX_PLAYERS];
+static szPlayerChatMsg[MAX_PLAYERS][128];
+
+//------------------------------------------------
+
+stock IsPlayerFlooding(playerid)
+{
+	if(GetTickCount() - iPlayerChatTime[playerid] < 2000)
+	    return 1;
+
+	return 0;
+}
+
+//------------------------------------------------
+
+public OnFilterScriptInit()
+{
+	print("\n--Base FS loaded.\n");
+	return 1;
+}
+
+//------------------------------------------------
+
+public OnPlayerText(playerid, text[])
+{
+	// Is the player flooding?
+	if(IsPlayerFlooding(playerid) && !IsPlayerAdmin(playerid))
+	{
+	    SendClientMessage(playerid, 0xFF0000FF, "* You can only send a message once every two seconds.");
+	    return 0;
+	}
+
+	// Now we handle the admin chat, will be #<message>.
+	if( (text[0] == '#' || text[0] == '@') && strlen(text) > 1)
+	{
+		new str[128];
+		new szPlayerName[MAX_PLAYER_NAME];
+		GetPlayerName(playerid, szPlayerName, MAX_PLAYER_NAME);
+
+		if(IsPlayerAdmin(playerid))
+		{
+		    format(str, 128, "Admin %s: %s", szPlayerName, text[1]);
+
+			for(new iPlayerID; iPlayerID < MAX_PLAYERS; iPlayerID++)
+			{
+				if(!IsPlayerConnected(iPlayerID)) continue;
+		    	if(!IsPlayerAdmin(iPlayerID)) continue;
+			    SendClientMessage(iPlayerID, PM_INCOMING_COLOR, str);
+			}
+		}
+
+		return 0;
+	}
+
+	// Okay, now it's time for anti repeating.
+	if(!IsPlayerAdmin(playerid))
+	{
+		if(strlen(text) == strlen(szPlayerChatMsg[playerid]) && !strcmp(szPlayerChatMsg[playerid], text,  false))
+		{
+			SendClientMessage(playerid, 0xFF0000FF, "* Please do not repeat yourself.");
+			format(szPlayerChatMsg[playerid], 128, "%s", text);
+		    return 0;
+		}
+	}
+
+	format(szPlayerChatMsg[playerid], 128, "%s", text);
+    iPlayerChatTime[playerid] = GetTickCount();
+    return 1;
+}
+
+//------------------------------------------------
+
+public OnPlayerDisconnect(playerid, reason)
+{
+	#pragma unused reason
+
+	iPlayerChatTime[playerid] = 0;
+	szPlayerChatMsg[playerid] = "";
+	return 1;
+}
+
+//------------------------------------------------
+
+public OnPlayerCommandText(playerid, cmdtext[])
+{
+
+	if(IsPlayerFlooding(playerid) && !IsPlayerAdmin(playerid))
+	{
+		SendClientMessage(playerid, 0xFF0000FF, "* You can only use commands once every two seconds.");
+	    return 1;
+	}
+
+	iPlayerChatTime[playerid] = GetTickCount();
+
+	new cmd[256];
+	new	tmp[256];
+	new Message[256];
+	new gMessage[256];
+	new pName[MAX_PLAYER_NAME+1];
+	new iName[MAX_PLAYER_NAME+1];
+	new	idx;
+
+	cmd = strtok(cmdtext, idx);
+
+	// PM Command
+	if(strcmp("/pm", cmd, true) == 0)
+	{
+		tmp = strtok(cmdtext,idx);
+
+		if(!strlen(tmp) || strlen(tmp) > 5) {
+			SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Usage: /pm (id) (message)");
+			return 1;
+		}
+
+		new id = strval(tmp);
+        gMessage = strrest(cmdtext,idx);
+
+		if(!strlen(gMessage)) {
+			SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Usage: /pm (id) (message)");
+			return 1;
+		}
+
+		if(!IsPlayerConnected(id)) {
+			SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/pm : Bad player ID");
+		}
+
+		if(playerid != id) {
+			GetPlayerName(id,iName,sizeof(iName));
+			GetPlayerName(playerid,pName,sizeof(pName));
+			format(Message,sizeof(Message),">> %s(%d): %s",iName,id,gMessage);
+			SendClientMessage(playerid,PM_OUTGOING_COLOR,Message);
+			format(Message,sizeof(Message),"** %s(%d): %s",pName,playerid,gMessage);
+			SendClientMessage(id,PM_INCOMING_COLOR,Message);
+			PlayerPlaySound(id,1085,0.0,0.0,0.0);
+
+			printf("PM: %s",Message);
+
+		}
+		else {
+			SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"You cannot PM yourself");
+		}
+		return 1;
+	}
+
+	//Kick Command
+	if(strcmp("/kick", cmd, true) == 0)
+	{
+	    if(IsPlayerAdmin(playerid)) {
+			tmp = strtok(cmdtext,idx);
+			if(!strlen(tmp) || strlen(tmp) > 5) {
+				return SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Usage: /kick (id) [reason]");
+			}
+
+			new id = strval(tmp);
+
+			if(!IsPlayerConnected(id)) {
+				SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/kick : Bad player ID");
+				return 1;
+			}
+
+			gMessage = strrest(cmdtext,idx);
+
+			GetPlayerName(id,iName,sizeof(iName));
+			SendClientMessage(id,ADMINFS_MESSAGE_COLOR,"-- You have been kicked from the server.");
+
+			if(strlen(gMessage) > 0) {
+				format(Message,sizeof(Message),"Reason: %s",gMessage);
+				SendClientMessage(id,ADMINFS_MESSAGE_COLOR,Message);
+			}
+
+			format(Message,sizeof(Message),">> %s(%d) has been kicked.",iName,id);
+			SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,Message);
+
+			Kick(id);
+			return 1;
+		} else {
+            SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/kick : You are not an admin");
+			return 1;
+		}
+	}
+
+	//Ban Command
+	if(strcmp("/ban", cmd, true) == 0)
+	{
+	    if(IsPlayerAdmin(playerid)) {
+			tmp = strtok(cmdtext,idx);
+			if(!strlen(tmp) || strlen(tmp) > 5) {
+				return SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Usage: /ban (id) [reason]");
+			}
+
+			new id = strval(tmp);
+
+			if(!IsPlayerConnected(id)) {
+				SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/ban : Bad player ID");
+				return 1;
+			}
+
+			gMessage = strrest(cmdtext,idx);
+
+			GetPlayerName(id,iName,sizeof(iName));
+			SendClientMessage(id,ADMINFS_MESSAGE_COLOR,"-- You have been banned from the server.");
+
+			if(strlen(gMessage) > 0) {
+				format(Message,sizeof(Message),"Reason: %s",gMessage);
+				SendClientMessage(id,ADMINFS_MESSAGE_COLOR,Message);
+			}
+
+			format(Message,sizeof(Message),">> %s(%d) has been banned.",iName,id);
+			SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,Message);
+
+			Ban(id);
+			return 1;
+		} else {
+            SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/ban : You are not an admin");
+			return 1;
+		}
+	}
+
+	return 0;
+}
+
+//-----------------------------------------------

BIN
Texture-Studio-master/filterscripts/fsdebug.amx


+ 2108 - 0
Texture-Studio-master/filterscripts/fsdebug.pwn

@@ -0,0 +1,2108 @@
+/* SA:MP PAWN Debug -
+ *  Debugging filterscript used
+ *  for creation of gamemode.
+ *
+ *  Simon Campbell
+ *  10/03/2007, 6:31pm
+ *
+ *  17/11/2011
+ *    Updated to 0.5d which supports SA:MP 0.3d
+*/
+
+//==============================================================================
+
+#include <a_samp>
+
+#undef KEY_UP
+#undef KEY_DOWN
+#undef KEY_LEFT
+#undef KEY_RIGHT
+
+#define KEY_UP  	65408
+#define KEY_DOWN	128
+#define KEY_LEFT    65408
+#define KEY_RIGHT   128
+
+#define DEBUG_VERSION   "0.5d"
+
+#define SKIN_SELECT   	true
+#define	VEHI_SELECT   	true
+#define WORL_SELECT     true
+#define CAME_SELECT     true
+#define OBJE_SELECT		true
+
+#define MISCEL_CMDS     true
+#define ADMINS_ONLY     false
+
+#define SKIN_SEL_STAT   1
+#define VEHI_SEL_STAT   2
+#define WORL_SEL_STAT   3
+#define CAME_SEL_STAT   4
+#define OBJE_SEL_STAT	5
+
+#define COLOR_RED   	0xFF4040FF
+#define COLOR_GREEN 	0x40FF40FF
+#define COLOR_BLUE  	0x4040FFFF
+
+#define COLOR_CYAN  	0x40FFFFFF
+#define COLOR_PINK  	0xFF40FFFF
+#define COLOR_YELLOW    0xFFFF40FF
+
+#define COLOR_WHITE		0xFFFFFFFF
+#define COLOR_BLACK		0x000000FF
+#define COLOR_NONE      0x00000000
+
+#define MIN_SKIN_ID		0
+#define MAX_SKIN_ID		299
+
+#define MIN_VEHI_ID		400
+#define MAX_VEHI_ID		611
+
+#define MIN_TIME_ID		0
+#define MAX_TIME_ID		23
+
+#define MIN_WEAT_ID     0
+#define MAX_WEAT_ID		45
+
+#define MIN_OBJE_ID		615
+#define MAX_OBJE_ID		13563
+
+#define DEFAULT_GRA     0.008
+
+#define VEHI_DIS        5.0
+#define OBJE_DIS		10.0
+
+#define CMODE_A			0
+#define CMODE_B			1
+
+#define O_MODE_SELECTOR	0
+#define O_MODE_MOVER	1
+#define O_MODE_ROTATOR	2
+
+#define PI				3.14159265
+
+#define CAMERA_TIME     40
+
+#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
+
+//==============================================================================
+
+new gPlayerStatus[MAX_PLAYERS]; // Player Status
+new gPlayerTimers[MAX_PLAYERS]; // Player TimerID's for keypresses
+new gWorldStatus[3] =  {12, 4}; // Time, Weather
+
+new curPlayerSkin[MAX_PLAYERS]				= {MIN_SKIN_ID, ...}; // Current Player Skin ID
+new curPlayerVehM[MAX_PLAYERS]				= {MIN_VEHI_ID, ...}; // Current Player Vehicle ID
+new curPlayerVehI[MAX_PLAYERS]				= {-1, ...};
+
+enum E_OBJECT
+{
+	OBJ_MOD,
+	OBJ_MDL,
+	Float:OBJ_X,
+	Float:OBJ_Y,
+	Float:OBJ_Z,
+	Float:OBJ_RX,
+	Float:OBJ_RY,
+	Float:OBJ_RZ
+}
+
+enum E_OBJ_RATE
+{
+	Float:OBJ_RATE_ROT,
+	Float:OBJ_RATE_MOVE
+}
+
+new pObjectRate[ MAX_PLAYERS ][ E_OBJ_RATE ];
+new curPlayerObjM[ MAX_PLAYERS ][ E_OBJECT ];
+new curPlayerObjI[ MAX_PLAYERS ]				= {-1, ...};
+
+enum P_CAMERA_D {
+	CMODE,
+	Float:RATE,
+	Float:CPOS_X,
+	Float:CPOS_Y,
+	Float:CPOS_Z,
+	Float:CLOO_X,
+	Float:CLOO_Y,
+	Float:CLOO_Z
+};
+
+new curPlayerCamD[MAX_PLAYERS][P_CAMERA_D];
+
+enum CURVEHICLE {
+	bool:spawn,
+	vmodel,
+	vInt
+};
+
+new curServerVehP[MAX_VEHICLES][CURVEHICLE];
+
+new aSelNames[5][] = {			// Menu selection names
+	{"SkinSelect"},
+	{"VehicleSelect"},
+	{"WeatherSelect"},
+	{"CameraSelect"},
+	{"ObjectSelect"}
+};
+
+new aWeaponNames[][32] = {
+	{"Unarmed (Fist)"}, // 0
+	{"Brass Knuckles"}, // 1
+	{"Golf Club"}, // 2
+	{"Night Stick"}, // 3
+	{"Knife"}, // 4
+	{"Baseball Bat"}, // 5
+	{"Shovel"}, // 6
+	{"Pool Cue"}, // 7
+	{"Katana"}, // 8
+	{"Chainsaw"}, // 9
+	{"Purple Dildo"}, // 10
+	{"Big White Vibrator"}, // 11
+	{"Medium White Vibrator"}, // 12
+	{"Small White Vibrator"}, // 13
+	{"Flowers"}, // 14
+	{"Cane"}, // 15
+	{"Grenade"}, // 16
+	{"Teargas"}, // 17
+	{"Molotov"}, // 18
+	{" "}, // 19
+	{" "}, // 20
+	{" "}, // 21
+	{"Colt 45"}, // 22
+	{"Colt 45 (Silenced)"}, // 23
+	{"Desert Eagle"}, // 24
+	{"Normal Shotgun"}, // 25
+	{"Sawnoff Shotgun"}, // 26
+	{"Combat Shotgun"}, // 27
+	{"Micro Uzi (Mac 10)"}, // 28
+	{"MP5"}, // 29
+	{"AK47"}, // 30
+	{"M4"}, // 31
+	{"Tec9"}, // 32
+	{"Country Rifle"}, // 33
+	{"Sniper Rifle"}, // 34
+	{"Rocket Launcher"}, // 35
+	{"Heat-Seeking Rocket Launcher"}, // 36
+	{"Flamethrower"}, // 37
+	{"Minigun"}, // 38
+	{"Satchel Charge"}, // 39
+	{"Detonator"}, // 40
+	{"Spray Can"}, // 41
+	{"Fire Extinguisher"}, // 42
+	{"Camera"}, // 43
+	{"Night Vision Goggles"}, // 44
+	{"Infrared Vision Goggles"}, // 45
+	{"Parachute"}, // 46
+	{"Fake Pistol"} // 47
+};
+
+
+new aVehicleNames[212][] = {	// Vehicle Names - Betamaster
+	{"Landstalker"},
+	{"Bravura"},
+	{"Buffalo"},
+	{"Linerunner"},
+	{"Perrenial"},
+	{"Sentinel"},
+	{"Dumper"},
+	{"Firetruck"},
+	{"Trashmaster"},
+	{"Stretch"},
+	{"Manana"},
+	{"Infernus"},
+	{"Voodoo"},
+	{"Pony"},
+	{"Mule"},
+	{"Cheetah"},
+	{"Ambulance"},
+	{"Leviathan"},
+	{"Moonbeam"},
+	{"Esperanto"},
+	{"Taxi"},
+	{"Washington"},
+	{"Bobcat"},
+	{"Mr Whoopee"},
+	{"BF Injection"},
+	{"Hunter"},
+	{"Premier"},
+	{"Enforcer"},
+	{"Securicar"},
+	{"Banshee"},
+	{"Predator"},
+	{"Bus"},
+	{"Rhino"},
+	{"Barracks"},
+	{"Hotknife"},
+	{"Trailer 1"}, //artict1
+	{"Previon"},
+	{"Coach"},
+	{"Cabbie"},
+	{"Stallion"},
+	{"Rumpo"},
+	{"RC Bandit"},
+	{"Romero"},
+	{"Packer"},
+	{"Monster"},
+	{"Admiral"},
+	{"Squalo"},
+	{"Seasparrow"},
+	{"Pizzaboy"},
+	{"Tram"},
+	{"Trailer 2"}, //artict2
+	{"Turismo"},
+	{"Speeder"},
+	{"Reefer"},
+	{"Tropic"},
+	{"Flatbed"},
+	{"Yankee"},
+	{"Caddy"},
+	{"Solair"},
+	{"Berkley's RC Van"},
+	{"Skimmer"},
+	{"PCJ-600"},
+	{"Faggio"},
+	{"Freeway"},
+	{"RC Baron"},
+	{"RC Raider"},
+	{"Glendale"},
+	{"Oceanic"},
+	{"Sanchez"},
+	{"Sparrow"},
+	{"Patriot"},
+	{"Quad"},
+	{"Coastguard"},
+	{"Dinghy"},
+	{"Hermes"},
+	{"Sabre"},
+	{"Rustler"},
+	{"ZR-350"},
+	{"Walton"},
+	{"Regina"},
+	{"Comet"},
+	{"BMX"},
+	{"Burrito"},
+	{"Camper"},
+	{"Marquis"},
+	{"Baggage"},
+	{"Dozer"},
+	{"Maverick"},
+	{"News Chopper"},
+	{"Rancher"},
+	{"FBI Rancher"},
+	{"Virgo"},
+	{"Greenwood"},
+	{"Jetmax"},
+	{"Hotring"},
+	{"Sandking"},
+	{"Blista Compact"},
+	{"Police Maverick"},
+	{"Boxville"},
+	{"Benson"},
+	{"Mesa"},
+	{"RC Goblin"},
+	{"Hotring Racer A"}, //hotrina
+	{"Hotring Racer B"}, //hotrinb
+	{"Bloodring Banger"},
+	{"Rancher"},
+	{"Super GT"},
+	{"Elegant"},
+	{"Journey"},
+	{"Bike"},
+	{"Mountain Bike"},
+	{"Beagle"},
+	{"Cropdust"},
+	{"Stunt"},
+	{"Tanker"}, //petro
+	{"Roadtrain"},
+	{"Nebula"},
+	{"Majestic"},
+	{"Buccaneer"},
+	{"Shamal"},
+	{"Hydra"},
+	{"FCR-900"},
+	{"NRG-500"},
+	{"HPV1000"},
+	{"Cement Truck"},
+	{"Tow Truck"},
+	{"Fortune"},
+	{"Cadrona"},
+	{"FBI Truck"},
+	{"Willard"},
+	{"Forklift"},
+	{"Tractor"},
+	{"Combine"},
+	{"Feltzer"},
+	{"Remington"},
+	{"Slamvan"},
+	{"Blade"},
+	{"Freight"},
+	{"Streak"},
+	{"Vortex"},
+	{"Vincent"},
+	{"Bullet"},
+	{"Clover"},
+	{"Sadler"},
+	{"Firetruck LA"}, //firela
+	{"Hustler"},
+	{"Intruder"},
+	{"Primo"},
+	{"Cargobob"},
+	{"Tampa"},
+	{"Sunrise"},
+	{"Merit"},
+	{"Utility"},
+	{"Nevada"},
+	{"Yosemite"},
+	{"Windsor"},
+	{"Monster A"}, //monstera
+	{"Monster B"}, //monsterb
+	{"Uranus"},
+	{"Jester"},
+	{"Sultan"},
+	{"Stratum"},
+	{"Elegy"},
+	{"Raindance"},
+	{"RC Tiger"},
+	{"Flash"},
+	{"Tahoma"},
+	{"Savanna"},
+	{"Bandito"},
+	{"Freight Flat"}, //freiflat
+	{"Streak Carriage"}, //streakc
+	{"Kart"},
+	{"Mower"},
+	{"Duneride"},
+	{"Sweeper"},
+	{"Broadway"},
+	{"Tornado"},
+	{"AT-400"},
+	{"DFT-30"},
+	{"Huntley"},
+	{"Stafford"},
+	{"BF-400"},
+	{"Newsvan"},
+	{"Tug"},
+	{"Trailer 3"}, //petrotr
+	{"Emperor"},
+	{"Wayfarer"},
+	{"Euros"},
+	{"Hotdog"},
+	{"Club"},
+	{"Freight Carriage"}, //freibox
+	{"Trailer 3"}, //artict3
+	{"Andromada"},
+	{"Dodo"},
+	{"RC Cam"},
+	{"Launch"},
+	{"Police Car (LSPD)"},
+	{"Police Car (SFPD)"},
+	{"Police Car (LVPD)"},
+	{"Police Ranger"},
+	{"Picador"},
+	{"S.W.A.T. Van"},
+	{"Alpha"},
+	{"Phoenix"},
+	{"Glendale"},
+	{"Sadler"},
+	{"Luggage Trailer A"}, //bagboxa
+	{"Luggage Trailer B"}, //bagboxb
+	{"Stair Trailer"}, //tugstair
+	{"Boxville"},
+	{"Farm Plow"}, //farmtr1
+	{"Utility Trailer"} //utiltr1
+};
+
+//==============================================================================
+
+forward SkinSelect(playerid);
+forward VehicleSelect(playerid);
+forward WorldSelect(playerid);
+forward CameraSelect(playerid);
+forward ObjectSelect( playerid );
+
+//==============================================================================
+
+dcmd_debug(playerid, params[]) {
+	if(strcmp(params, "help", true, 4) == 0) {
+		SendClientMessage(playerid, COLOR_BLUE, "[DEBUG]: Debug Mode 0.2 - HELP");
+		SendClientMessage(playerid, COLOR_CYAN, "[DEBUG]: Debug Mode 0.2 is a filterscript which allows scripters");
+		SendClientMessage(playerid, COLOR_CYAN, "[DEBUG]: or people who wish to explore SA:MP 0.2\'s features to have access");
+		SendClientMessage(playerid, COLOR_CYAN, "[DEBUG]: to many commands and \"menu\'s\".");
+		SendClientMessage(playerid, COLOR_YELLOW, "[DEBUG]: This filterscript was designed for SA:MP version 0.2");
+		SendClientMessage(playerid, COLOR_PINK, "[DEBUG]: For the command list type \"/debug commands\"");
+
+		return true;
+	}
+	if(strcmp(params, "commands", true, 8) == 0) {
+	    SendClientMessage(playerid, COLOR_BLUE, "[DEBUG]: Debug Mode 0.2 - COMMANDS");
+	    SendClientMessage(playerid, COLOR_CYAN, "[WORLD]: /w, /weather, /t, /time, /wsel, /g, /gravity");
+	    SendClientMessage(playerid, COLOR_CYAN, "[VEHICLES]: /v, /vehicle, /vs");
+	    SendClientMessage(playerid, COLOR_CYAN, "[PLAYER]: /s, /skin, /skinsel, /weapon, /w2");
+	    SendClientMessage(playerid, COLOR_CYAN, "[PLAYER]: /goto, /warpto, /bring, /setloc");
+	    SendClientMessage(playerid, COLOR_CYAN, "[CAMERA]: /camera, /csel");
+
+	    return true;
+	}
+
+	if(strcmp(params, "dump", true, 4) == 0) {
+	    SendClientMessage(playerid, COLOR_GREEN, "[SUCCESS]: All current server data dumped to a file.");
+	    new File:F_DUMP = fopen("DEBUG-DUMP.txt", io_append);
+	    if(F_DUMP) {
+	        new h, m, s, Y, M, D, cString[256];
+
+			getdate(Y, M, D);
+			gettime(h, m, s);
+
+	        format(cString, 256, "// %d-%d-%d @ %d:%d:%d\r\n", D, M, Y, h, m, s);
+	        fwrite(F_DUMP, cString);
+
+	    	for(new i = 0; i < MAX_VEHICLES; i++) {
+				if(curServerVehP[i][spawn] 	== true) {
+				    new Float:vx, Float:vy, Float:vz, Float:va;
+				    GetVehiclePos(i, vx, vy, vz);
+				    GetVehicleZAngle(i, va);
+					format(cString, 256, "CreateVehicle(%d, %f, %f, %f, %f, -1, -1, 5000); // Interior(%d), %s\r\n", curServerVehP[i][vmodel], vx, vy, vz, va, curServerVehP[i][vInt], aVehicleNames[curServerVehP[i][vmodel] - MIN_VEHI_ID]);
+					fwrite(F_DUMP, cString);
+	        	}
+	    	}
+	    	print("** Dumped current server information.");
+	    	fclose(F_DUMP);
+	    }
+	    else {
+			print("** Failed to create the file \"DEBUG-DUMP.txt\".\n");
+	    }
+	    return true;
+	}
+	return false;
+}
+
+#if CAME_SELECT == true
+
+dcmd_object(playerid, params[])
+{
+	new cString[ 128 ], idx;
+	cString = strtok( params, idx );
+
+	if ( !strlen( cString ) || !strlen( params[ idx + 1 ] ) )
+	{
+	    SendClientMessage( playerid, COLOR_WHITE, "[USAGE]: /object [RRATE/MRATE/CAMERA] [RATE/ID]");
+
+	    return 1;
+	}
+
+	if ( strcmp( cString, "rrate", true ) == 0 )
+	{
+	    pObjectRate[ playerid ][ OBJ_RATE_ROT ] = floatstr( params[ idx + 1 ] );
+
+	    format( cString, 128, "[SUCCESS]: Object rotation rate changed to %f.", pObjectRate[ playerid ][ OBJ_RATE_ROT ] );
+		SendClientMessage( playerid, COLOR_GREEN, cString );
+
+		return 1;
+	}
+
+	if ( strcmp( cString, "mrate", true ) == 0 )
+	{
+	    pObjectRate[ playerid ][ OBJ_RATE_MOVE ] = floatstr( params[ idx + 1 ] );
+
+	    format( cString, 128, "[SUCCESS]: Object movement rate changed to %f.", pObjectRate[ playerid ][ OBJ_RATE_MOVE ] );
+	    SendClientMessage( playerid, COLOR_GREEN, cString );
+
+	    return 1;
+	}
+
+	if ( strcmp( cString, "mode", true ) == 0 )
+	{
+	    new fuck = strval( params[ idx + 1 ] );
+
+	    if ( fuck >= O_MODE_SELECTOR || fuck <= O_MODE_ROTATOR )
+	    {
+		    curPlayerObjM[ playerid ][ OBJ_MOD ] = fuck;
+
+		    switch ( fuck )
+		    {
+		    	case O_MODE_SELECTOR: SendClientMessage( playerid, COLOR_GREEN, "[SUCCESS]: Object mode changed to Object Selection." );
+		    	case O_MODE_MOVER: SendClientMessage( playerid, COLOR_GREEN, "[SUCCESS]: Object mode changed to Object Mover." );
+		    	case O_MODE_ROTATOR: SendClientMessage( playerid, COLOR_GREEN, "[SUCCESS]: Object mode changed to Object Rotator." );
+			}
+
+			return 1;
+		}
+		else
+		{
+		    SendClientMessage( playerid, COLOR_RED, "[ERROR]: Invalid modeid." );
+
+		    return 1;
+		}
+	}
+
+	if ( strcmp( cString, "focus", true ) == 0 )
+	{
+		new objectid = strval( params[ idx + 1 ] );
+
+		if ( !IsValidObject( objectid ) )
+		{
+			SendClientMessage( playerid, COLOR_RED, "[ERROR]: Enter a valid objectid." );
+
+			return 1;
+		}
+
+		else
+		{
+			curPlayerObjI[ playerid ] = objectid;
+
+			GetObjectPos( objectid, curPlayerObjM[ playerid ][ OBJ_X ], curPlayerObjM[ playerid ][ OBJ_Y ], curPlayerObjM[ playerid ][ OBJ_Z ] );
+			GetObjectRot( objectid, curPlayerObjM[ playerid ][ OBJ_RX ], curPlayerObjM[ playerid ][ OBJ_RY ], curPlayerObjM[ playerid ][ OBJ_RZ ] );
+
+		   	curPlayerCamD[playerid][CPOS_X] = curPlayerObjM[ playerid ][ OBJ_X ] + 5.0;
+			curPlayerCamD[playerid][CPOS_Y] = curPlayerObjM[ playerid ][ OBJ_Y ] - 20.0;
+			curPlayerCamD[playerid][CPOS_Z] = curPlayerObjM[ playerid ][ OBJ_Z ] + 30.0;
+
+			curPlayerCamD[playerid][CLOO_X] = curPlayerObjM[ playerid ][ OBJ_X ];
+			curPlayerCamD[playerid][CLOO_Y] = curPlayerObjM[ playerid ][ OBJ_Y ];
+			curPlayerCamD[playerid][CLOO_Z] = curPlayerObjM[ playerid ][ OBJ_Z ];
+
+			if ( gPlayerStatus[ playerid ] == OBJE_SEL_STAT )
+			{
+				SetPlayerCameraPos( playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z] );
+            	SetPlayerCameraLookAt( playerid, curPlayerObjM[ playerid ][ OBJ_X ], curPlayerObjM[ playerid ][ OBJ_Y ], curPlayerObjM[ playerid ][ OBJ_Z ] );
+			}
+
+			return 1;
+		}
+	}
+
+	if ( strcmp( cString, "camera", true ) == 0 )
+	{
+	    new cameraid = strval( params[ idx + 1 ] );
+
+		if ( cameraid >= 0 && cameraid < 4 )
+		{
+		    switch ( cameraid )
+		    {
+		        case 0:
+		        {
+		            curPlayerCamD[playerid][CPOS_X] = curPlayerObjM[ playerid ][ OBJ_X ] + 7.0;
+					curPlayerCamD[playerid][CPOS_Y] = curPlayerObjM[ playerid ][ OBJ_Y ] - 20.0;
+					curPlayerCamD[playerid][CPOS_Z] = curPlayerObjM[ playerid ][ OBJ_Z ] + 30.0;
+		        }
+
+		        case 1:
+		        {
+		            curPlayerCamD[playerid][CPOS_X] = curPlayerObjM[ playerid ][ OBJ_X ] + 7.0;
+					curPlayerCamD[playerid][CPOS_Y] = curPlayerObjM[ playerid ][ OBJ_Y ] + 15.0;
+					curPlayerCamD[playerid][CPOS_Z] = curPlayerObjM[ playerid ][ OBJ_X ] + 15.0;
+		        }
+
+		        case 2:
+		        {
+		            curPlayerCamD[playerid][CPOS_X] = curPlayerObjM[ playerid ][ OBJ_X ] - 20.0;
+					curPlayerCamD[playerid][CPOS_Y] = curPlayerObjM[ playerid ][ OBJ_Y ] + 20.0;
+					curPlayerCamD[playerid][CPOS_Z] = curPlayerObjM[ playerid ][ OBJ_X ] + 20.0;
+		        }
+
+		        case 3:
+		        {
+		            curPlayerCamD[playerid][CPOS_X] = curPlayerObjM[ playerid ][ OBJ_X ] - 10.0;
+					curPlayerCamD[playerid][CPOS_Y] = curPlayerObjM[ playerid ][ OBJ_Y ] + 25.0;
+					curPlayerCamD[playerid][CPOS_Z] = curPlayerObjM[ playerid ][ OBJ_X ] + 15.0;
+		        }
+		    }
+
+		    SetPlayerCameraPos( playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z] );
+            SetPlayerCameraLookAt( playerid, curPlayerObjM[ playerid ][ OBJ_X ], curPlayerObjM[ playerid ][ OBJ_Y ], curPlayerObjM[ playerid ][ OBJ_Z ] );
+
+			return 1;
+		}
+		else
+		{
+		    SendClientMessage( playerid, COLOR_RED, "[ERROR]: Invalid object camera id.");
+
+		    return 1;
+		}
+	}
+	return 0;
+}
+
+dcmd_osel(playerid, params[])
+{
+	#pragma unused params
+
+	new cString[ 128 ];
+
+	if ( gPlayerStatus[ playerid ] != 0 )
+	{
+		format( cString, 128, "[ERROR]: You are already using \"%s\".", aSelNames[ gPlayerStatus[ playerid ] - 1 ] );
+		SendClientMessage(playerid, COLOR_RED, cString);
+
+		return 1;
+	}
+
+	new Float:a;
+
+	gPlayerStatus[playerid] = OBJE_SEL_STAT;
+
+	GetPlayerPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
+	curPlayerCamD[playerid][CPOS_Z] += 5.0;
+	SetPlayerCameraPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
+
+	GetXYInFrontOfPlayer(playerid, curPlayerCamD[playerid][CLOO_X], curPlayerCamD[playerid][CLOO_Y], OBJE_DIS);
+
+	curPlayerCamD[playerid][CLOO_Z] = curPlayerCamD[playerid][CPOS_Z] - 5.0;
+
+	SetPlayerCameraLookAt(playerid, curPlayerCamD[playerid][CLOO_X], curPlayerCamD[playerid][CLOO_Y], curPlayerCamD[playerid][CLOO_Z]);
+
+	TogglePlayerControllable(playerid, 0);
+
+	GetPlayerFacingAngle(playerid, a);
+
+	curPlayerObjM[ playerid ][ OBJ_X ] = curPlayerCamD[playerid][CLOO_X];
+	curPlayerObjM[ playerid ][ OBJ_Y ] = curPlayerCamD[playerid][CLOO_Y];
+	curPlayerObjM[ playerid ][ OBJ_Z ] = curPlayerCamD[playerid][CLOO_Z];
+	curPlayerObjM[ playerid ][ OBJ_RX ] = 0.0;
+	curPlayerObjM[ playerid ][ OBJ_RY ] = 0.0;
+	curPlayerObjM[ playerid ][ OBJ_RZ ] = 0.0;
+
+	curPlayerObjI[ playerid ] = CreateObject( curPlayerObjM[ playerid ][ OBJ_MDL ], curPlayerObjM[ playerid ][ OBJ_X ],
+		curPlayerObjM[ playerid ][ OBJ_Y ], curPlayerObjM[ playerid ][ OBJ_Z ],
+		curPlayerObjM[ playerid ][ OBJ_RX ], curPlayerObjM[ playerid ][ OBJ_RY ], curPlayerObjM[ playerid ][ OBJ_RZ ]
+	);
+
+	gPlayerTimers[ playerid ] = SetTimerEx("ObjectSelect", 200, 1, "i", playerid);
+
+	return 1;
+}
+
+dcmd_camera(playerid, params[]) {
+	new idx; new cString[128];
+
+	cString = strtok(params, idx);
+
+	if (!strlen(cString)) {
+	    SendClientMessage(playerid, COLOR_RED, "[USAGE]: /camera [RATE/MODE] [RATE/MODEID]");
+
+	    return true;
+	}
+
+	if (strcmp(cString, "rate", true, 4) == 0) {
+	    curPlayerCamD[playerid][RATE] = floatstr(params[idx+1]);
+
+	    return true;
+	}
+
+	if (strcmp(cString, "mode", true, 4) == 0) {
+	    curPlayerCamD[playerid][CMODE] = strval(params[idx+1]);
+
+	    return true;
+	}
+
+	return true;
+}
+
+dcmd_csel(playerid, params[]) {
+	#pragma unused params
+
+	new cString[128];
+
+	if (gPlayerStatus[playerid] != 0) {
+		format(cString, 128, "[ERROR]: You are already using \"%s\".", aSelNames[gPlayerStatus[playerid] - 1]);
+		SendClientMessage(playerid, COLOR_RED, cString);
+
+		return true;
+	}
+
+	gPlayerStatus[playerid] = CAME_SEL_STAT;
+
+    TogglePlayerControllable(playerid, 0);
+
+	GetPlayerPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
+	GetXYInFrontOfPlayer(playerid, curPlayerCamD[playerid][CLOO_X], curPlayerCamD[playerid][CLOO_Y], 5.0);
+
+	curPlayerCamD[playerid][CLOO_Z] = curPlayerCamD[playerid][CPOS_Z];
+
+	gPlayerTimers[playerid] = SetTimerEx("CameraSelect", 200, 1, "i", playerid);
+
+	return true;
+}
+
+#endif
+
+#if WORL_SELECT == true
+dcmd_g(playerid, params[]) {
+	new cString[128];
+
+	if (!strlen(params[0]))
+	{
+	    SendClientMessage(playerid, COLOR_RED, "[USAGE]: /g GRAVITY or /gravity GRAVITY");
+	    return true;
+	}
+
+	new Float:grav = floatstr(params[0]);
+
+	SetGravity(grav);
+
+	format(cString, 128, "[SUCCESS]: World gravity changed to %f", grav);
+	SendClientMessage(playerid, COLOR_GREEN, cString);
+
+	return true;
+}
+
+dcmd_gravity(playerid, params[])
+	return dcmd_g(playerid, params);
+
+dcmd_w(playerid, params[]) {
+	new idx, iString[128];
+	iString = strtok(params, idx);
+
+	if (!strlen(iString)) {
+	    SendClientMessage(playerid, COLOR_RED, "[USAGE]: /w WEATHERID or /weather WEATHERID");
+	    return true;
+	}
+
+	idx = strval(iString);
+
+	if (idx < MIN_WEAT_ID || idx > MAX_WEAT_ID) {
+	    SendClientMessage(playerid, COLOR_RED, "[ERROR]: Invalid WEATHERID");
+	    return true;
+	}
+
+	gWorldStatus[1] = idx;
+
+	SetWeather(idx);
+
+	format(iString, 128, "[SUCCESS]: Weather has changed to WEATHERID %d", idx);
+	SendClientMessage(playerid, COLOR_GREEN, iString);
+
+	return true;
+}
+
+dcmd_weather(playerid, params[])
+	return dcmd_w(playerid, params);
+
+dcmd_t(playerid, params[]) {
+	new idx, iString[128];
+	iString = strtok(params, idx);
+
+	if (!strlen(iString)) {
+	    SendClientMessage(playerid, COLOR_RED, "[USAGE]: /t HOUR or /time HOUR");
+	    return true;
+	}
+
+	idx = strval(iString);
+
+	if (idx < MIN_TIME_ID || idx > MAX_TIME_ID) {
+	    SendClientMessage(playerid, COLOR_RED, "[ERROR]: Invalid HOUR");
+	    return true;
+	}
+
+	gWorldStatus[0] = idx;
+
+	SetWorldTime(idx);
+
+	format(iString, 128, "[SUCCESS]: Time has changed to HOUR %d", idx);
+	SendClientMessage(playerid, COLOR_GREEN, iString);
+
+	return true;
+}
+
+dcmd_time(playerid, params[])
+	return dcmd_t(playerid, params);
+
+dcmd_wsel(playerid, params[]) {
+	#pragma unused params
+
+	new cString[128];
+
+	if (gPlayerStatus[playerid] != 0) {
+		format(cString, 128, "[ERROR]: You are already using \"%s\".", aSelNames[gPlayerStatus[playerid] - 1]);
+		SendClientMessage(playerid, COLOR_RED, cString);
+		return true;
+	}
+
+	new Float:x, Float:y, Float:z;
+
+	gPlayerStatus[playerid] = WORL_SEL_STAT;
+
+	GetPlayerPos(playerid, x, y, z);
+	SetPlayerCameraPos(playerid, x, y, z + 40.0);
+
+	GetXYInFrontOfPlayer(playerid, x, y, 100.0);
+
+	SetPlayerCameraLookAt(playerid, x, y, z + 5.0);
+
+	TogglePlayerControllable(playerid, 0);
+
+	gPlayerTimers[playerid] = SetTimerEx("WorldSelect", 200, 1, "i", playerid);
+
+	GameTextForPlayer(playerid, "WorldSelect", 1500, 3);
+
+	return true;
+}
+#endif
+
+#if VEHI_SELECT == true
+
+dcmd_v(playerid, params[])
+{
+	new
+		idx,
+		iString[ 128 ];
+
+	if ( gPlayerStatus[ playerid ] != 0 )
+	{
+		format				( iString, 128, "[ERROR]: You are already using \"%s\".", aSelNames[ gPlayerStatus[ playerid ] - 1 ] );
+		SendClientMessage	( playerid, COLOR_RED, iString );
+
+		return true;
+	}
+
+	if ( params[ 0 ] == '\0' )	// Same effect as a !strlen check.
+		return SendClientMessage( playerid, COLOR_RED, "[USAGE]: /v MODELID/NAME or /vehicle MODELID/NAME" );
+
+	//***************
+	// Fix by Mike! *
+	//***************
+
+	idx = GetVehicleModelIDFromName( params );
+
+	if( idx == -1 )
+	{
+		idx = strval(iString);
+
+		if ( idx < MIN_VEHI_ID || idx > MAX_VEHI_ID )
+			return SendClientMessage(playerid, COLOR_RED, "[ERROR]: Invalid MODELID/NAME");
+	}
+
+	new
+		Float:x,
+		Float:y,
+		Float:z,
+		Float:a;
+
+	GetPlayerPos(playerid, x, y, z);
+	GetXYInFrontOfPlayer(playerid, x, y, VEHI_DIS);
+	GetPlayerFacingAngle(playerid, a);
+
+	curPlayerVehM[playerid] = idx;
+
+	curPlayerVehI[playerid] = CreateVehicle(idx, x, y, z + 2.0, a + 90.0, -1, -1, 5000);
+	LinkVehicleToInterior(curPlayerVehI[playerid], GetPlayerInterior(playerid));
+
+ 	curServerVehP[curPlayerVehI[playerid]][spawn] 	= true;
+	curServerVehP[curPlayerVehI[playerid]][vmodel]	= idx;
+	curServerVehP[curPlayerVehI[playerid]][vInt]    = GetPlayerInterior(playerid);
+
+	format(iString, 128, "[SUCCESS]: Spawned a \"%s\" (MODELID: %d, VEHICLEID: %d)", aVehicleNames[idx - MIN_VEHI_ID], idx, curPlayerVehI[playerid]);
+
+	SendClientMessage(playerid, COLOR_GREEN, iString);
+
+	return true;
+}
+
+dcmd_vehicle(playerid, params[])
+	return dcmd_v(playerid, params);
+
+dcmd_vs(playerid, params[])
+{
+	// /vsel allows players to select a vehicle using playerkeys.
+	#pragma unused params
+
+	new cString[128];
+
+	if (gPlayerStatus[playerid] != 0) {
+		format(cString, 128, "[ERROR]: You are already using \"%s\".", aSelNames[gPlayerStatus[playerid] - 1]);
+		SendClientMessage(playerid, COLOR_RED, cString);
+		return true;
+	}
+
+	new Float:x, Float:y, Float:z, Float:a;
+
+	gPlayerStatus[playerid] = VEHI_SEL_STAT;
+
+	GetPlayerPos(playerid, x, y, z);
+	SetPlayerCameraPos(playerid, x, y, z + 3.0);
+
+	GetXYInFrontOfPlayer(playerid, x, y, VEHI_DIS);
+	SetPlayerCameraLookAt(playerid, x, y, z);
+
+	TogglePlayerControllable(playerid, 0);
+
+	GetPlayerFacingAngle(playerid, a);
+
+	curPlayerVehI[playerid] = CreateVehicle(curPlayerVehM[playerid], x, y, z + 2.0, a + 90.0, -1, -1, 5000);
+	printf( "vsel vehicle start id = %d", curPlayerVehI[playerid] );
+
+	LinkVehicleToInterior(curPlayerVehI[playerid], GetPlayerInterior(playerid));
+
+ 	curServerVehP[curPlayerVehI[playerid]][spawn] 	= true;
+	curServerVehP[curPlayerVehI[playerid]][vmodel]	= curPlayerVehM[playerid];
+	curServerVehP[curPlayerVehI[playerid]][vInt]    = GetPlayerInterior(playerid);
+
+	gPlayerTimers[playerid] = SetTimerEx("VehicleSelect", 200, 1, "i", playerid);
+
+	return true;
+}
+
+#endif
+
+#if SKIN_SELECT == true
+
+dcmd_skinsel(playerid, params[])
+{
+	// /ssel allows players to select a skin using playerkeys.
+	#pragma unused params
+
+	new cString[128];
+
+	if (gPlayerStatus[playerid] != 0) {
+		format(cString, 128, "[ERROR]: You are already using \"%s\".", aSelNames[gPlayerStatus[playerid] - 1]);
+		SendClientMessage(playerid, COLOR_RED, cString);
+		return true;
+	}
+
+	new Float:x, Float:y, Float:z;
+
+	gPlayerStatus[playerid] = SKIN_SEL_STAT;
+
+	GetPlayerPos(playerid, x, y, z);
+	SetPlayerCameraLookAt(playerid, x, y, z);
+
+	GetXYInFrontOfPlayer(playerid, x, y, 3.5);
+	SetPlayerCameraPos(playerid, x, y, z);
+
+	TogglePlayerControllable(playerid, 0);
+
+	gPlayerTimers[playerid] = SetTimerEx("SkinSelect", 200, 1, "i", playerid);
+
+	return true;
+}
+
+dcmd_s(playerid, params[])
+{
+    // /s SKINID allows players to directly select a skin using it's ID.
+	new idx, iString[128];
+	iString = strtok(params, idx);
+
+	if (!strlen(iString)) {
+	    SendClientMessage(playerid, COLOR_RED, "[USAGE]: /s SKINID");
+	    return true;
+	}
+
+	idx = strval(iString);
+
+	if (IsInvalidSkin(idx) || idx < MIN_SKIN_ID || idx > MAX_SKIN_ID) {
+	    SendClientMessage(playerid, COLOR_RED, "[ERROR]: Invalid SKINID");
+	    return true;
+	}
+
+	SetPlayerSkin(playerid, idx);
+	curPlayerSkin[playerid] = idx;
+	format(iString, 128, "[SUCCESS]: Changed skin to SKINID %d", idx);
+
+	SendClientMessage(playerid, COLOR_GREEN, iString);
+
+	return true;
+}
+
+dcmd_skin(playerid, params[])
+{
+	dcmd_s(playerid, params);
+
+	return true;
+}
+
+#endif
+
+#if MISCEL_CMDS == true
+dcmd_goto(playerid, params[])
+{
+	new idx, iString[128];
+	iString = strtok(params, idx);
+
+	if (!strlen(iString)) {
+	    SendClientMessage(playerid, COLOR_RED, "[USAGE]: /goto PLAYERID (X_OFFSET Y_OFFSET Z_OFFSET)");
+	    return true;
+	}
+
+	new ID = strval(iString);
+
+	if (!IsPlayerConnected(ID)) {
+	    SendClientMessage(playerid, COLOR_RED, "[ERROR]: Not connected PLAYERID.");
+	    return true;
+	}
+
+	new Float:X, Float:Y, Float:Z;
+	new Interior = GetPlayerInterior(ID);
+
+	GetPlayerPos(ID, X, Y, Z);
+
+	iString = strtok(params, idx);
+
+	if (!strlen(iString)) {
+	    GetXYInFrontOfPlayer(ID, X, Y, 1.5);
+	    SetPlayerInterior(playerid, Interior);
+		SetPlayerPos(playerid, X, Y, Z);
+
+		GetPlayerName(ID, iString, 128);
+		format(iString, 128, "[SUCCESS]: You have warped to %s (ID: %d).", iString, ID);
+		SendClientMessage(playerid, COLOR_GREEN, iString);
+
+	    return true;
+	}
+
+	X += floatstr(iString);
+	iString = strtok(params, idx);
+
+	if (!strlen(iString)) {
+	    goto fwarpto;
+	}
+
+	Y += floatstr(iString);
+	iString = strtok(params, idx);
+
+	if (!strlen(iString)) {
+	    goto fwarpto;
+	}
+
+	Z += floatstr(iString);
+
+	fwarpto:
+
+	new pVID = GetPlayerVehicleID( playerid );
+
+	if ( pVID )
+	{
+	    SetVehiclePos( pVID, X, Y, Z );
+	    LinkVehicleToInterior( pVID, Interior );
+	}
+	else
+	{
+		SetPlayerPos( playerid, X, Y, Z);
+	}
+
+	SetPlayerInterior( playerid, Interior);
+
+	GetPlayerName(ID, iString, 128);
+	format(iString, 128, "[SUCCESS]: You have warped to %s (ID: %d).", iString, ID);
+	SendClientMessage(playerid, COLOR_GREEN, iString);
+
+	return true;
+}
+
+dcmd_warpto(playerid, params[])
+{
+	dcmd_goto(playerid, params);
+
+	return true;
+}
+
+dcmd_setloc(playerid, params[])
+{
+	new idx, iString[128];
+	iString = strtok(params, idx);
+
+	if (!strlen(iString)) {
+	    SendClientMessage(playerid, COLOR_RED, "[USAGE]: /setloc X Y Z INTERIOR");
+	    return true;
+	}
+
+	new Float:X, Float:Y, Float:Z;
+	new Interior;
+
+	X = floatstr(iString);
+	Y = floatstr(strtok(params,idx));
+	Z = floatstr(strtok(params,idx));
+	Interior = strval(strtok(params,idx));
+
+    new pVID = GetPlayerVehicleID( playerid );
+
+	if ( pVID )
+	{
+	    SetVehiclePos( pVID, X, Y, Z );
+	    LinkVehicleToInterior( pVID, Interior );
+	}
+	else
+	{
+		SetPlayerPos( playerid, X, Y, Z );
+	}
+
+	SetPlayerInterior(playerid, Interior);
+
+	return true;
+
+
+}
+
+dcmd_bring(playerid, params[])
+{
+	new idx, iString[128];
+	iString = strtok(params, idx);
+
+	if (!strlen(iString)) {
+	    SendClientMessage(playerid, COLOR_RED, "[USAGE]: /bring PLAYERID (X_OFFSET Y_OFFSET Z_OFFSET)");
+	    return true;
+	}
+
+	new ID = strval(iString);
+
+	if (!IsPlayerConnected(ID)) {
+	    SendClientMessage(playerid, COLOR_RED, "[ERROR]: Not connected PLAYERID.");
+	    return true;
+	}
+
+	new Float:X, Float:Y, Float:Z;
+	new Interior = GetPlayerInterior(playerid);
+
+	GetPlayerPos(playerid, X, Y, Z);
+
+	iString = strtok(params, idx);
+
+	if (!strlen(iString)) {
+	    GetXYInFrontOfPlayer(playerid, X, Y, 1.5);
+	    SetPlayerInterior(ID, Interior);
+		SetPlayerPos(ID, X, Y, Z);
+
+		GetPlayerName(ID, iString, 128);
+		format(iString, 128, "[SUCCESS]: You have brought %s (ID: %d) to you.", iString, ID);
+		SendClientMessage(playerid, COLOR_GREEN, iString);
+
+	    return true;
+	}
+
+	X += floatstr(iString);
+	iString = strtok(params, idx);
+
+	if (!strlen(iString)) {
+	    goto fbring;
+	}
+
+	Y += floatstr(iString);
+	iString = strtok(params, idx);
+
+	if (!strlen(iString)) {
+	    goto fbring;
+	}
+
+	Z += floatstr(iString);
+
+	fbring:
+
+	new pVID = GetPlayerVehicleID( ID );
+
+	if ( pVID )
+	{
+	    SetVehiclePos( pVID, X, Y, Z );
+	    LinkVehicleToInterior( pVID, Interior );
+	}
+	else
+	{
+		SetPlayerPos( ID, X, Y, Z );
+	}
+
+	SetPlayerInterior(ID, Interior);
+
+	GetPlayerName(ID, iString, 128);
+	format(iString, 128, "[SUCCESS]: You have brought %s (ID: %d) to you.", iString, ID);
+	SendClientMessage(playerid, COLOR_GREEN, iString);
+
+	return true;
+}
+
+dcmd_weapon(playerid, params[])
+{
+	dcmd_w2(playerid, params);
+
+	return true;
+}
+
+dcmd_w2(playerid, params[])
+{
+	new idx, iString[128];
+	iString = strtok(params, idx);
+
+	if (!strlen(iString)) {
+	    SendClientMessage(playerid, COLOR_RED, "[USAGE]: /w2 WEAPONID/NAME (AMMO) or /weapon WEAPONID/NAME (AMMO)");
+	    return true;
+	}
+
+	new weaponid = GetWeaponModelIDFromName(iString);
+
+	if (weaponid == -1) {
+		weaponid = strval(iString);
+		if (weaponid < 0 || weaponid > 47) {
+	    	SendClientMessage(playerid, COLOR_RED, "[ERROR]: Invalid WEAPONID/NAME");
+	    	return true;
+		}
+	}
+
+	if (!strlen(params[idx+1])) {
+	    GivePlayerWeapon(playerid, weaponid, 500);
+
+	    format(iString, 128, "[SUCCESS]: You were given weapon %s (ID: %d) with 500 ammo.", aWeaponNames[weaponid], weaponid);
+	    SendClientMessage(playerid, COLOR_GREEN, iString);
+
+	    return true;
+	}
+
+	idx = strval(params[idx+1]);
+
+    GivePlayerWeapon(playerid, weaponid, idx);
+
+    format(iString, 128, "[SUCCESS]: You were given weapon %s (ID: %d) with %d ammo.", aWeaponNames[weaponid], weaponid, idx);
+    SendClientMessage(playerid, COLOR_GREEN, iString);
+
+	return true;
+}
+#endif
+
+public OnFilterScriptInit()
+{
+	print("\n  *********************\n  * SA:MP DEBUG 0.2   *");
+	print("  * By Simon Campbell *\n  *********************");
+	printf("  * Version: %s      *\n  *********************", DEBUG_VERSION);
+	print("  * -- LOADED         *\n  *********************\n");
+
+	for ( new i = 0; i < MAX_PLAYERS; i++ )
+	{
+		curPlayerObjM[ i ][ OBJ_MDL ] = MIN_OBJE_ID;
+		pObjectRate[ i ][ OBJ_RATE_ROT ] = 1.0;
+		pObjectRate[ i ][ OBJ_RATE_MOVE ] = 1.0;
+	}
+
+}
+
+public OnFilterScriptExit()
+{
+	print("\n  *********************\n  * SA:MP DEBUG 0.2   *");
+	print("  * -- SHUTDOWN       *\n  *********************\n");
+}
+
+public OnPlayerCommandText(playerid, cmdtext[])
+{
+	#if ADMINS_ONLY == true
+	if(IsPlayerAdmin(playerid)) {
+	#endif
+
+	#if SKIN_SELECT == true
+	dcmd(s, 1, cmdtext);
+	dcmd(skinsel, 7, cmdtext);
+	dcmd(skin, 4, cmdtext);
+	#endif
+
+	#if VEHI_SELECT == true
+	dcmd(v, 1, cmdtext);
+	dcmd(vs, 4, cmdtext);
+	dcmd(vehicle, 7, cmdtext);
+	#endif
+
+	#if WORL_SELECT == true
+	dcmd(w, 1, cmdtext);
+	dcmd(t, 1, cmdtext);
+	dcmd(g, 1, cmdtext);
+	dcmd(wsel, 4, cmdtext);
+	dcmd(time, 4, cmdtext);
+	dcmd(weather, 7, cmdtext);
+	dcmd(gravity, 7, cmdtext);
+	#endif
+
+	#if MISCEL_CMDS == true
+	dcmd(w2, 2, cmdtext);
+	dcmd(goto, 4, cmdtext);
+	dcmd(bring, 5, cmdtext);
+	dcmd(warpto, 6, cmdtext);
+	dcmd(weapon, 6, cmdtext);
+	dcmd(setloc, 6, cmdtext);
+	#endif
+
+	#if CAME_SELECT == true
+	dcmd(csel, 4, cmdtext);
+	dcmd(camera, 6, cmdtext);
+	#endif
+
+	dcmd(osel, 4, cmdtext);
+	dcmd(object, 6, cmdtext);
+	dcmd(debug, 5, cmdtext);
+
+	#if ADMINS_ONLY == true
+	}
+	#endif
+
+	return 0;
+}
+
+public OnPlayerDisconnect(playerid,reason)
+{
+	KillTimer(gPlayerTimers[playerid]);
+
+	gPlayerStatus[playerid] = 0;
+	gPlayerTimers[playerid] = 0;
+
+	curPlayerSkin[playerid] = MIN_SKIN_ID; // Current Player Skin ID
+	curPlayerVehM[playerid] = MIN_VEHI_ID; // Current Player Vehicle ID
+	curPlayerVehI[playerid] = -1;
+
+	return 0;
+}
+
+public OnPlayerConnect(playerid)
+{
+    curPlayerCamD[playerid][CMODE] = CMODE_A;
+    curPlayerCamD[playerid][RATE]  = 2.0;
+
+	return 0;
+}
+
+public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ) {
+	#if ADMINS_ONLY == true
+	if (IsPlayerAdmin(playerid)) {
+	#endif
+	SetPlayerPosFindZ(playerid, fX, fY, fZ);
+	#if ADMINS_ONLY == true
+	}
+	#endif
+}
+
+
+//==============================================================================
+
+#if WORL_SELECT == true
+public WorldSelect(playerid)
+{   // Created by Simon
+	/*
+	// Make sure the player is not in world selection before continuing
+	if (gPlayerStatus[playerid] != WORL_SEL_STAT) {
+		KillTimer(skinTimerID[playerid]);
+        return;
+	}
+	*/
+
+	new keys, updown, leftright;
+
+    GetPlayerKeys(playerid, keys, updown, leftright);
+
+	new cString[128];
+
+	// Right key increases World Time
+	if (leftright == KEY_RIGHT) {
+		if(gWorldStatus[0] == MAX_TIME_ID) {
+			gWorldStatus[0] = MIN_TIME_ID;
+		}
+		else {
+			gWorldStatus[0]++;
+		}
+		format(cString, 128, "World Time: %d~n~Weather ID: %d", gWorldStatus[0], gWorldStatus[1]);
+    	GameTextForPlayer(playerid, cString, 1500, 3);
+		SetWorldTime(gWorldStatus[0]);
+	}
+
+	// Left key decreases World Time
+	if (leftright == KEY_LEFT) {
+	    if(gWorldStatus[0] == MIN_TIME_ID) {
+	        gWorldStatus[0] = MAX_TIME_ID;
+	    }
+	    else {
+	        gWorldStatus[0]--;
+	    }
+		format(cString, 128, "World Time: %d~n~Weather ID: %d", gWorldStatus[0], gWorldStatus[1]);
+    	GameTextForPlayer(playerid, cString, 1500, 3);
+		SetWorldTime(gWorldStatus[0]);
+	}
+
+	// Up key increases Weather ID
+	if(updown == KEY_UP) {
+		if(gWorldStatus[1] == MAX_WEAT_ID) {
+			gWorldStatus[1] = MIN_WEAT_ID;
+		}
+		else {
+		        gWorldStatus[1]++;
+		}
+		format(cString, 128, "World Time: %d~n~Weather ID: %d", gWorldStatus[0], gWorldStatus[1]);
+    	GameTextForPlayer(playerid, cString, 1500, 3);
+		SetWeather(gWorldStatus[1]);
+	}
+
+	// Down key decreases Weather ID
+	if(updown == KEY_DOWN) {
+		if(gWorldStatus[1] == MIN_WEAT_ID) {
+			gWorldStatus[1] = MAX_WEAT_ID;
+		}
+		else {
+		        gWorldStatus[1]--;
+		}
+		format(cString, 128, "World Time: %d~n~Weather ID: %d", gWorldStatus[0], gWorldStatus[1]);
+    	GameTextForPlayer(playerid, cString, 1500, 3);
+		SetWeather(gWorldStatus[1]);
+	}
+
+	// Action key exits WorldSelection
+	if(keys & KEY_ACTION) {
+		SetCameraBehindPlayer(playerid);
+		TogglePlayerControllable(playerid, 1);
+
+		format(cString, 128, "[SUCCESS]: Time changed to %d hours and weather changed to WEATHERID %d", gWorldStatus[0], gWorldStatus[1]);
+		SendClientMessage(playerid, COLOR_GREEN, cString);
+
+		new File:F_WORLD = fopen("TIME-WEATHER.txt", io_append);
+
+		if(F_WORLD) {
+		    new h, m, s, Y, M, D;
+
+			getdate(Y, M, D);
+			gettime(h, m, s);
+
+			format(cString, 128, "// %d-%d-%d @ %d:%d:%d\r\nSetWeather(%d);\r\nSetWorldTime(%d);\r\n", D, M, Y, h, m, s);
+
+			fwrite(F_WORLD, cString);
+			fclose(F_WORLD);
+			printf("\n%s\n",cString);
+		}
+		else {
+			print("Failed to create the file \"TIME-WEATHER.txt\".\n");
+		}
+
+		gPlayerStatus[playerid] = 0;
+		KillTimer(gPlayerTimers[playerid]);
+
+		return;
+	}
+}
+
+#endif
+
+#if SKIN_SELECT == true
+public SkinSelect(playerid)
+{   // Created by Simon
+	/*
+	// Make sure the player is not in skin selection before continuing
+	if (gPlayerStatus[playerid] != SKIN_SEL_STAT) {
+		KillTimer(skinTimerID[playerid]);
+        return;
+	}
+	*/
+
+	new keys, updown, leftright;
+
+    GetPlayerKeys(playerid, keys, updown, leftright);
+
+	new cString[128];
+
+	// Right key increases Skin ID
+	if (leftright == KEY_RIGHT) {
+		if(curPlayerSkin[playerid] == MAX_SKIN_ID) {
+			curPlayerSkin[playerid] = MIN_SKIN_ID;
+		}
+		else {
+  			curPlayerSkin[playerid]++;
+	    }
+		while(IsInvalidSkin(curPlayerSkin[playerid])) {
+			curPlayerSkin[playerid]++;
+		}
+
+  		format(cString, 128, "Skin ID: %d", curPlayerSkin[playerid]);
+    	GameTextForPlayer(playerid, cString, 1500, 3);
+	    SetPlayerSkin(playerid, curPlayerSkin[playerid]);
+	}
+
+	// Left key decreases Skin ID
+	if(leftright == KEY_LEFT) {
+ 		if(curPlayerSkin[playerid] == MIN_SKIN_ID) {
+			curPlayerSkin[playerid] = MAX_SKIN_ID;
+		}
+		else {
+			curPlayerSkin[playerid]--;
+		}
+		while(IsInvalidSkin(curPlayerSkin[playerid])) {
+			curPlayerSkin[playerid]--;
+		}
+
+		format(cString, 128, "Skin ID: %d", curPlayerSkin[playerid]);
+  		GameTextForPlayer(playerid, cString, 1500, 3);
+  		SetPlayerSkin(playerid, curPlayerSkin[playerid]);
+	}
+
+	// Action key exits skin selection
+	if(keys & KEY_ACTION)
+	{
+		SetCameraBehindPlayer(playerid);
+		TogglePlayerControllable(playerid, 1);
+
+		format(cString, 128, "[SUCCESS]: You have changed to SKINID %d", curPlayerSkin[playerid]);
+		SendClientMessage(playerid, COLOR_GREEN, cString);
+
+		gPlayerStatus[playerid] = 0;
+		KillTimer(gPlayerTimers[playerid]);
+	}
+}
+#endif
+
+#if CAME_SELECT == true
+public CameraSelect(playerid)
+{
+	// CMODE_A 0	Up/Down = IncreaseZ/DecreaseZ; Left/Right = IncreaseX/DecreaseX; Num4/Num6 = IncreaseY/DecreaseY
+	// CMODE_B 1	Up/Down = Rotate Up/Down; Left/Right = Rotate Left/Right; Num4/Num6 = Move Left/Right
+
+	new keys, updown, leftright;
+
+	GetPlayerKeys(playerid, keys, updown, leftright);
+
+	printf("Player (%d) keys = %d, updown = %d, leftright = %d", playerid, keys, updown, leftright);
+
+	if (curPlayerCamD[playerid][CMODE] == CMODE_A)
+	{
+	    if (leftright == KEY_RIGHT) {
+	        curPlayerCamD[playerid][CPOS_X] += curPlayerCamD[playerid][RATE];
+	        curPlayerCamD[playerid][CLOO_X] += curPlayerCamD[playerid][RATE];
+
+	        SetPlayerPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
+
+	        SetPlayerCameraPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
+	        SetPlayerCameraLookAt(playerid, curPlayerCamD[playerid][CLOO_X], curPlayerCamD[playerid][CLOO_Y], curPlayerCamD[playerid][CLOO_Z]);
+	 	}
+
+		if (leftright == KEY_LEFT) {
+	        curPlayerCamD[playerid][CPOS_X] -= curPlayerCamD[playerid][RATE];
+	        curPlayerCamD[playerid][CLOO_X] -= curPlayerCamD[playerid][RATE];
+
+	        SetPlayerPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
+
+	        SetPlayerCameraPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
+	        SetPlayerCameraLookAt(playerid, curPlayerCamD[playerid][CLOO_X], curPlayerCamD[playerid][CLOO_Y], curPlayerCamD[playerid][CLOO_Z]);
+		}
+
+		if (updown == KEY_UP) {
+			curPlayerCamD[playerid][CPOS_Z] += curPlayerCamD[playerid][RATE];
+	        curPlayerCamD[playerid][CLOO_Z] += curPlayerCamD[playerid][RATE];
+
+	        SetPlayerPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
+
+	        SetPlayerCameraPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
+	        SetPlayerCameraLookAt(playerid, curPlayerCamD[playerid][CLOO_X], curPlayerCamD[playerid][CLOO_Y], curPlayerCamD[playerid][CLOO_Z]);
+		}
+
+		if (updown == KEY_DOWN) {
+  			curPlayerCamD[playerid][CPOS_Z] -= curPlayerCamD[playerid][RATE];
+	        curPlayerCamD[playerid][CLOO_Z] -= curPlayerCamD[playerid][RATE];
+
+	        SetPlayerPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
+
+	        SetPlayerCameraPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
+	        SetPlayerCameraLookAt(playerid, curPlayerCamD[playerid][CLOO_X], curPlayerCamD[playerid][CLOO_Y], curPlayerCamD[playerid][CLOO_Z]);
+		}
+
+		if (keys & KEY_ANALOG_RIGHT) {
+		    curPlayerCamD[playerid][CPOS_Y] += curPlayerCamD[playerid][RATE];
+	        curPlayerCamD[playerid][CLOO_Y] += curPlayerCamD[playerid][RATE];
+
+	        SetPlayerPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
+
+	        SetPlayerCameraPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
+	        SetPlayerCameraLookAt(playerid, curPlayerCamD[playerid][CLOO_X], curPlayerCamD[playerid][CLOO_Y], curPlayerCamD[playerid][CLOO_Z]);
+		}
+
+
+		if (keys & KEY_ANALOG_LEFT) {
+		    curPlayerCamD[playerid][CPOS_Y] -= curPlayerCamD[playerid][RATE];
+	        curPlayerCamD[playerid][CLOO_Y] -= curPlayerCamD[playerid][RATE];
+
+	        SetPlayerPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
+
+	        SetPlayerCameraPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
+	        SetPlayerCameraLookAt(playerid, curPlayerCamD[playerid][CLOO_X], curPlayerCamD[playerid][CLOO_Y], curPlayerCamD[playerid][CLOO_Z]);
+		}
+	}
+
+
+	if(curPlayerCamD[playerid][CMODE] == CMODE_B)
+	{
+	    if (leftright == KEY_RIGHT) {
+	        // Rotate Y +
+   		}
+
+   		if (leftright == KEY_LEFT) {
+   		    // Rotate Y -
+   		}
+
+   		if (updown == KEY_UP) {
+   		    // Rotate X +
+   		}
+
+   		if (updown == KEY_DOWN) {
+   		    // Rotate X -
+   		}
+
+   		if (keys & KEY_ANALOG_RIGHT) {
+   		    // Rotate Z +
+   		}
+
+   		if (keys & KEY_ANALOG_LEFT) {
+   		    // Rotate Z -
+   		}
+	}
+
+	if (keys & KEY_ACTION)
+	{
+	    SetCameraBehindPlayer(playerid);
+
+        new
+			File:F_CAMERA = fopen("CAMERA.txt", io_append);
+
+		if( F_CAMERA )
+		{
+ 			new
+				cString[512], h, m, s, Y, M, D;
+
+			getdate(Y, M, D);
+			gettime(h, m, s);
+
+			format(cString, sizeof( cString ), "// %d-%d-%d @ %d:%d:%d\r\nSetPlayerCameraPos(playerid, %f, %f, %f);\r\nSetPlayerCameraLookAt(playerid, %f, %f, %f);\r\n", D, M, Y, h, m, s,curPlayerCamD[playerid][CPOS_X],curPlayerCamD[playerid][CPOS_Y],curPlayerCamD[playerid][CPOS_Z],curPlayerCamD[playerid][CLOO_X],curPlayerCamD[playerid][CLOO_Y],curPlayerCamD[playerid][CLOO_Z]);
+
+			fwrite(F_CAMERA, cString);
+			fclose(F_CAMERA);
+
+			printf("\n%s\n",cString);
+
+			SendClientMessage( playerid, COLOR_GREEN, "Current camera data saved to 'CAMERA.txt'" );
+		}
+		else
+			print("Failed to create the file \"CAMERA.txt\".\n");
+
+		TogglePlayerControllable(playerid, 1);
+
+		KillTimer(gPlayerTimers[playerid]);
+
+		gPlayerStatus[playerid] = 0;
+	}
+}
+
+#endif
+
+#if VEHI_SELECT == true
+public VehicleSelect(playerid)
+{
+	/*
+	// Make sure the player is not in skin selection before continuing
+	if (gPlayerStatus[playerid] != VEHI_SEL_STAT) {
+		KillTimer(skinTimerID[playerid]);
+        return;
+	}
+	*/
+
+	new keys, updown, leftright;
+
+    GetPlayerKeys(playerid, keys, updown, leftright);
+
+	new cString[128];
+
+	// Right key increases Vehicle MODELID
+	if (leftright == KEY_RIGHT) {
+		if(curPlayerVehM[playerid] == MAX_VEHI_ID) {
+			curPlayerVehM[playerid] = MIN_VEHI_ID;
+		}
+		else {
+  			curPlayerVehM[playerid]++;
+	    }
+
+		format(cString, 128, "Model ID: %d~n~Vehicle Name: %s", curPlayerVehM, aVehicleNames[curPlayerVehM[playerid] - MIN_VEHI_ID]);
+    	GameTextForPlayer(playerid, cString, 1500, 3);
+
+    	new Float:x, Float:y, Float:z, Float:a;
+
+		GetPlayerPos(playerid, x, y, z);
+		GetXYInFrontOfPlayer(playerid, x, y, VEHI_DIS);
+		GetPlayerFacingAngle(playerid, a);
+
+		DestroyVehicle(curPlayerVehI[playerid]);
+		curServerVehP[curPlayerVehI[playerid]][spawn] 	= false;
+
+		curPlayerVehI[playerid] = CreateVehicle(curPlayerVehM[playerid], x, y, z + 2.0, a + 90.0, -1, -1, 5000);
+		printf( "vsel vehicle select id = %d", curPlayerVehI[playerid] );
+
+        LinkVehicleToInterior(curPlayerVehI[playerid], GetPlayerInterior(playerid));
+
+        curServerVehP[curPlayerVehI[playerid]][spawn] 	= true;
+		curServerVehP[curPlayerVehI[playerid]][vmodel]	= curPlayerVehM[playerid];
+		curServerVehP[curPlayerVehI[playerid]][vInt]    = GetPlayerInterior(playerid);
+	}
+
+	// Left key decreases Vehicle MODELID
+	if(leftright == KEY_LEFT) {
+ 		if(curPlayerVehM[playerid] == MIN_VEHI_ID) {
+			curPlayerVehM[playerid] = MAX_VEHI_ID;
+		}
+		else {
+			curPlayerVehM[playerid]--;
+		}
+
+		format(cString, 128, "Model ID: %d~n~Vehicle Name: %s", curPlayerVehM, aVehicleNames[curPlayerVehM[playerid] - MIN_VEHI_ID]);
+  		GameTextForPlayer(playerid, cString, 1500, 3);
+
+   		new Float:x, Float:y, Float:z, Float:a;
+
+		GetPlayerPos(playerid, x, y, z);
+		GetXYInFrontOfPlayer(playerid, x, y, VEHI_DIS);
+		GetPlayerFacingAngle(playerid, a);
+
+		DestroyVehicle(curPlayerVehI[playerid]);
+		curServerVehP[curPlayerVehI[playerid]][spawn] 	= false;
+
+		curPlayerVehI[playerid] = CreateVehicle(curPlayerVehM[playerid], x, y, z + 2.0, a + 90.0, -1, -1, 5000);
+		printf( "vsel vehicle select id = %d", curPlayerVehI[playerid] );
+
+		LinkVehicleToInterior(curPlayerVehI[playerid], GetPlayerInterior(playerid));
+
+ 		curServerVehP[curPlayerVehI[playerid]][spawn] 	= true;
+		curServerVehP[curPlayerVehI[playerid]][vmodel]	= curPlayerVehM[playerid];
+		curServerVehP[curPlayerVehI[playerid]][vInt]    = GetPlayerInterior(playerid);
+	}
+
+	// Action key exits vehicle selection
+	if(keys & KEY_ACTION)
+	{
+		SetCameraBehindPlayer(playerid);
+		TogglePlayerControllable(playerid, 1);
+
+		format(cString, 128, "[SUCCESS]: Spawned a \"%s\" (MODELID: %d, VEHICLEID: %d)", aVehicleNames[curPlayerVehM[playerid] - MIN_VEHI_ID], curPlayerVehM[playerid], curPlayerVehI[playerid]);
+		SendClientMessage(playerid, COLOR_GREEN, cString);
+
+		gPlayerStatus[playerid] = 0;
+		KillTimer(gPlayerTimers[playerid]);
+	}
+}
+#endif
+
+#if OBJE_SELECT == true
+public ObjectSelect( playerid )
+{
+	new keys, updown, leftright;
+
+    GetPlayerKeys( playerid, keys, updown, leftright );
+
+	new cString[ 128 ];
+
+	switch ( curPlayerObjM[ playerid ][ OBJ_MOD ] )
+	{
+		case O_MODE_SELECTOR:
+		{
+			if ( updown == KEY_UP)
+			{
+				curPlayerObjM[ playerid ][ OBJ_MDL ] += 10;
+
+				if ( curPlayerObjM[ playerid ][ OBJ_MDL ] >= MAX_OBJE_ID )
+				{
+					curPlayerObjM[ playerid ][ OBJ_MDL ] = MIN_OBJE_ID;
+				}
+
+				while ( !IsValidModel( curPlayerObjM[ playerid ][ OBJ_MDL ] ) )
+				{
+					curPlayerObjM[ playerid ][ OBJ_MDL ]++;
+				}
+
+				DestroyObject( curPlayerObjI[ playerid ] );
+				curPlayerObjI[ playerid ] = CreateObject( curPlayerObjM[ playerid ][ OBJ_MDL ], curPlayerObjM[ playerid ][ OBJ_X ],
+					curPlayerObjM[ playerid ][ OBJ_Y ], curPlayerObjM[ playerid ][ OBJ_Z ],
+					curPlayerObjM[ playerid ][ OBJ_RX ], curPlayerObjM[ playerid ][ OBJ_RY ], curPlayerObjM[ playerid ][ OBJ_RZ ]
+				);
+
+				format( cString, 128, "Model ID: %d", curPlayerObjM[ playerid ][ OBJ_MDL ] );
+  				GameTextForPlayer(playerid, cString, 1500, 3);
+			}
+
+			if ( updown == KEY_DOWN)
+			{
+				curPlayerObjM[ playerid ][ OBJ_MDL ] -= 10;
+
+				if ( curPlayerObjM[ playerid ][ OBJ_MDL ] <= MIN_OBJE_ID )
+				{
+					curPlayerObjM[ playerid ][ OBJ_MDL ] = MAX_OBJE_ID;
+				}
+
+				while ( !IsValidModel( curPlayerObjM[ playerid ][ OBJ_MDL ] ) )
+				{
+					curPlayerObjM[ playerid ][ OBJ_MDL ]--;
+				}
+
+				DestroyObject( curPlayerObjI[ playerid ] );
+				curPlayerObjI[ playerid ] = CreateObject( curPlayerObjM[ playerid ][ OBJ_MDL ], curPlayerObjM[ playerid ][ OBJ_X ],
+					curPlayerObjM[ playerid ][ OBJ_Y ], curPlayerObjM[ playerid ][ OBJ_Z ],
+					curPlayerObjM[ playerid ][ OBJ_RX ], curPlayerObjM[ playerid ][ OBJ_RY ], curPlayerObjM[ playerid ][ OBJ_RZ ]
+				);
+
+				format( cString, 128, "Model ID: %d", curPlayerObjM[ playerid ][ OBJ_MDL ] );
+  				GameTextForPlayer(playerid, cString, 1500, 3);
+			}
+
+			if ( leftright == KEY_LEFT)
+			{
+				curPlayerObjM[ playerid ][ OBJ_MDL ]--;
+
+				if ( curPlayerObjM[ playerid ][ OBJ_MDL ] <= MIN_OBJE_ID )
+				{
+					curPlayerObjM[ playerid ][ OBJ_MDL ] = MAX_OBJE_ID;
+				}
+
+				while ( !IsValidModel( curPlayerObjM[ playerid ][ OBJ_MDL ] ) )
+				{
+					curPlayerObjM[ playerid ][ OBJ_MDL ]--;
+				}
+
+				DestroyObject( curPlayerObjI[ playerid ] );
+				curPlayerObjI[ playerid ] = CreateObject( curPlayerObjM[ playerid ][ OBJ_MDL ], curPlayerObjM[ playerid ][ OBJ_X ],
+					curPlayerObjM[ playerid ][ OBJ_Y ], curPlayerObjM[ playerid ][ OBJ_Z ],
+					curPlayerObjM[ playerid ][ OBJ_RX ], curPlayerObjM[ playerid ][ OBJ_RY ], curPlayerObjM[ playerid ][ OBJ_RZ ]
+				);
+
+				format( cString, 128, "Model ID: %d", curPlayerObjM[ playerid ][ OBJ_MDL ] );
+  				GameTextForPlayer(playerid, cString, 1500, 3);
+			}
+
+			if ( leftright == KEY_RIGHT)
+			{
+				curPlayerObjM[ playerid ][ OBJ_MDL ]++;
+
+				if ( curPlayerObjM[ playerid ][ OBJ_MDL ] >= MAX_OBJE_ID )
+				{
+					curPlayerObjM[ playerid ][ OBJ_MDL ] = MIN_OBJE_ID;
+				}
+
+				while ( !IsValidModel( curPlayerObjM[ playerid ][ OBJ_MDL ] ) )
+				{
+					curPlayerObjM[ playerid ][ OBJ_MDL ]++;
+				}
+
+				DestroyObject( curPlayerObjI[ playerid ] );
+				curPlayerObjI[ playerid ] = CreateObject( curPlayerObjM[ playerid ][ OBJ_MDL ], curPlayerObjM[ playerid ][ OBJ_X ],
+					curPlayerObjM[ playerid ][ OBJ_Y ], curPlayerObjM[ playerid ][ OBJ_Z ],
+					curPlayerObjM[ playerid ][ OBJ_RX ], curPlayerObjM[ playerid ][ OBJ_RY ], curPlayerObjM[ playerid ][ OBJ_RZ ]
+				);
+
+				format( cString, 128, "Model ID: %d", curPlayerObjM[ playerid ][ OBJ_MDL ] );
+  				GameTextForPlayer(playerid, cString, 1500, 3);
+			}
+		}
+
+		case O_MODE_MOVER:
+		{
+			if ( updown == KEY_UP)
+			{
+				curPlayerObjM[ playerid ][ OBJ_Z ] += pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
+				curPlayerCamD[ playerid ][ CPOS_Z ] += pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
+	        	curPlayerCamD[ playerid ][ CLOO_Z ] += pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
+			}
+
+			if ( updown == KEY_DOWN)
+			{
+				curPlayerObjM[ playerid ][ OBJ_Z ] -= pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
+				curPlayerCamD[ playerid ][ CPOS_Z ] -= pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
+	        	curPlayerCamD[ playerid ][ CLOO_Z ] -= pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
+			}
+
+			if ( leftright == KEY_LEFT)
+			{
+				curPlayerObjM[ playerid ][ OBJ_Y ] -= pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
+				curPlayerCamD[ playerid ][ CPOS_Y ] -= pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
+	        	curPlayerCamD[ playerid ][ CLOO_Y ] -= pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
+			}
+
+			if ( leftright == KEY_RIGHT)
+			{
+				curPlayerObjM[ playerid ][ OBJ_Y ] += pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
+				curPlayerCamD[ playerid ][ CPOS_Y ] += pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
+	        	curPlayerCamD[ playerid ][ CLOO_Y ] += pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
+			}
+
+			if ( keys & KEY_ANALOG_LEFT )
+			{
+				curPlayerObjM[ playerid ][ OBJ_Y ] -= pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
+				curPlayerCamD[ playerid ][ CPOS_Y ] -= pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
+	        	curPlayerCamD[ playerid ][ CLOO_Y ] -= pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
+			}
+
+			if ( keys & KEY_ANALOG_LEFT )
+			{
+				curPlayerObjM[ playerid ][ OBJ_X ] += pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
+				curPlayerCamD[ playerid ][ CPOS_X ] += pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
+	        	curPlayerCamD[ playerid ][ CLOO_X ] += pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
+			}
+
+			SetPlayerPos( playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z] );
+			SetObjectPos( curPlayerObjI[ playerid ], curPlayerObjM[ playerid ][ OBJ_X ], curPlayerObjM[ playerid ][ OBJ_Y ], curPlayerObjM[ playerid ][ OBJ_Z ] );
+			SetPlayerCameraPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
+	        SetPlayerCameraLookAt(playerid, curPlayerCamD[playerid][CLOO_X], curPlayerCamD[playerid][CLOO_Y], curPlayerCamD[playerid][CLOO_Z]);
+		}
+
+		case O_MODE_ROTATOR:
+		{
+			if ( updown == KEY_UP)
+			{
+				curPlayerObjM[ playerid ][ OBJ_RZ ] += pObjectRate[ playerid ][ OBJ_RATE_ROT ];
+			}
+
+			if ( updown == KEY_DOWN)
+			{
+				curPlayerObjM[ playerid ][ OBJ_RZ ] -= pObjectRate[ playerid ][ OBJ_RATE_ROT ];
+
+			}
+
+			if ( leftright == KEY_LEFT)
+			{
+				curPlayerObjM[ playerid ][ OBJ_RY ] -= pObjectRate[ playerid ][ OBJ_RATE_ROT ];
+			}
+
+			if ( leftright == KEY_RIGHT)
+			{
+				curPlayerObjM[ playerid ][ OBJ_RY ] += pObjectRate[ playerid ][ OBJ_RATE_ROT ];
+			}
+
+			if ( keys & KEY_ANALOG_LEFT )
+			{
+				curPlayerObjM[ playerid ][ OBJ_RY ] -= pObjectRate[ playerid ][ OBJ_RATE_ROT ];
+			}
+
+			if ( keys & KEY_ANALOG_LEFT )
+			{
+				curPlayerObjM[ playerid ][ OBJ_RX ] += pObjectRate[ playerid ][ OBJ_RATE_ROT ];
+			}
+
+			SetObjectRot( curPlayerObjI[ playerid ], curPlayerObjM[ playerid ][ OBJ_RX ], curPlayerObjM[ playerid ][ OBJ_RY ], curPlayerObjM[ playerid ][ OBJ_RZ ] );
+		}
+	}
+
+	if ( keys & KEY_ACTION )
+	{
+		gPlayerStatus[ playerid ] = 0;
+		TogglePlayerControllable( playerid, 1 );
+		SetCameraBehindPlayer( playerid );
+		KillTimer( gPlayerTimers[playerid] );
+	}
+
+}
+#endif
+
+IsInvalidSkin(skinid)
+{   // Created by Simon
+	// Checks whether the skinid parsed is crashable or not.
+
+	#define	MAX_BAD_SKINS   14
+
+	new badSkins[MAX_BAD_SKINS] = {
+		3, 4, 5, 6, 8, 42, 65, 74, 86,
+		119, 149, 208, 273, 289
+	};
+
+	for (new i = 0; i < MAX_BAD_SKINS; i++) {
+	    if (skinid == badSkins[i]) return true;
+	}
+
+	return false;
+}
+
+GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
+{	// Created by Y_Less
+
+	new Float:a;
+
+	GetPlayerPos(playerid, x, y, a);
+	GetPlayerFacingAngle(playerid, a);
+
+	if (GetPlayerVehicleID(playerid)) {
+	    GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
+	}
+
+	x += (distance * floatsin(-a, degrees));
+	y += (distance * floatcos(-a, degrees));
+}
+
+strtok(const string[], &index)
+{   // Created by Compuphase
+
+	new length = strlen(string);
+	while ((index < length) && (string[index] <= ' '))
+	{
+		index++;
+	}
+
+	new offset = index;
+	new result[20];
+	while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
+	{
+		result[index - offset] = string[index];
+		index++;
+	}
+	result[index - offset] = EOS;
+	return result;
+}
+
+GetVehicleModelIDFromName(vname[])
+{
+	for(new i = 0; i < 211; i++)
+	{
+		if ( strfind(aVehicleNames[i], vname, true) != -1 )
+			return i + MIN_VEHI_ID;
+	}
+	return -1;
+}
+
+GetWeaponModelIDFromName(wname[])
+{
+    for(new i = 0; i < 48; i++) {
+        if (i == 19 || i == 20 || i == 21) continue;
+		if (strfind(aWeaponNames[i], wname, true) != -1) {
+			return i;
+		}
+	}
+	return -1;
+}
+
+IsValidModel(modelid)
+{
+	// Created by Y_Less.
+
+	static modeldat[] =
+	{
+		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128,
+		-515899393, -134217729, -1, -1, 33554431, -1, -1, -1, -14337, -1, -33,
+		127, 0, 0, 0, 0, 0, -8388608, -1, -1, -1, -16385, -1, -1, -1, -1, -1,
+		-1, -1, -33, -1, -771751937, -1, -9, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+		-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+		-1, -1, -1, -1, -1, -1, -1, -1, 33554431, -25, -1, -1, -1, -1, -1, -1,
+		-1073676289, -2147483648, 34079999, 2113536, -4825600, -5, -1, -3145729,
+		-1, -16777217, -63, -1, -1, -1, -1, -201326593, -1, -1, -1, -1, -1,
+		-257, -1, 1073741823, -133122, -1, -1, -65, -1, -1, -1, -1, -1, -1,
+		-2146435073, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1073741823, -64, -1,
+		-1, -1, -1, -2635777, 134086663, 0, -64, -1, -1, -1, -1, -1, -1, -1,
+		-536870927, -131069, -1, -1, -1, -1, -1, -1, -1, -1, -16384, -1,
+		-33554433, -1, -1, -1, -1, -1, -1610612737, 524285, -128, -1,
+		2080309247, -1, -1, -1114113, -1, -1, -1, 66977343, -524288, -1, -1, -1,
+		-1, -2031617, -1, 114687, -256, -1, -4097, -1, -4097, -1, -1,
+		1010827263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32768, -1, -1, -1, -1, -1,
+		2147483647, -33554434, -1, -1, -49153, -1148191169, 2147483647,
+		-100781080, -262145, -57, 134217727, -8388608, -1, -1, -1, -1, -1, -1,
+		-1, -1, -1, -1, -1, -1, -1, -1, -1048577, -1, -449, -1017, -1, -1, -1,
+		-1, -1, -1, -1, -1, -1, -1, -1, -1835009, -2049, -1, -1, -1, -1, -1, -1,
+		-8193, -1, -536870913, -1, -1, -1, -1, -1, -87041, -1, -1, -1, -1, -1,
+		-1, -209860, -1023, -8388609, -2096897, -1, -1048577, -1, -1, -1, -1,
+		-1, -1, -897, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1610612737,
+		-3073, -28673, -1, -1, -1, -1537, -1, -1, -13, -1, -1, -1, -1, -1985,
+		-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1056964609, -1, -1, -1,
+		-1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+		-236716037, -1, -1, -1, -1, -1, -1, -1, -536870913, 3, 0, 0, 0, 0, 0, 0,
+		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+		0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+		-1, -1, -1, -1, -1, -2097153, -2109441, -1, 201326591, -4194304, -1, -1,
+		-241, -1, -1, -1, -1, -1, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+		0, -32768, -1, -1, -1, -2, -671096835, -1, -8388609, -66323585, -13,
+		-1793, -32257, -247809, -1, -1, -513, 16252911, 0, 0, 0, -131072,
+		33554383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+		0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+		-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8356095, 0, 0, 0, 0, 0,
+		0, -256, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+		-268435449, -1, -1, -2049, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+		92274627, -65536, -2097153, -268435457, 591191935, 1, 0, -16777216, -1,
+		-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127
+	};
+	if ((modelid >= 0) && ((modelid / 32) < sizeof (modeldat)) && (modeldat[modelid / 32] & (1 << (modelid % 32))))
+	{
+	    return 1;
+	}
+	return 0;
+}

BIN
Texture-Studio-master/filterscripts/gl_actions.amx


+ 328 - 0
Texture-Studio-master/filterscripts/gl_actions.pwn

@@ -0,0 +1,328 @@
+//-------------------------------------------------
+//
+// Generic Special Actions And Anims
+// kyeman 2007
+//
+//-------------------------------------------------
+
+#include <a_samp>
+#include <core>
+#include <float>
+#pragma tabsize 0
+
+#include "../include/gl_common.inc"
+
+new gPlayerUsingLoopingAnim[MAX_PLAYERS];
+new gPlayerAnimLibsPreloaded[MAX_PLAYERS];
+
+new Text:txtAnimHelper;
+
+//-------------------------------------------------
+
+OnePlayAnim(playerid,animlib[],animname[], Float:Speed, looping, lockx, locky, lockz, lp)
+{
+	ApplyAnimation(playerid, animlib, animname, Speed, looping, lockx, locky, lockz, lp);
+}
+
+//-------------------------------------------------
+
+LoopingAnim(playerid,animlib[],animname[], Float:Speed, looping, lockx, locky, lockz, lp)
+{
+    gPlayerUsingLoopingAnim[playerid] = 1;
+    ApplyAnimation(playerid, animlib, animname, Speed, looping, lockx, locky, lockz, lp);
+    TextDrawShowForPlayer(playerid,txtAnimHelper);
+}
+
+//-------------------------------------------------
+
+StopLoopingAnim(playerid)
+{
+	gPlayerUsingLoopingAnim[playerid] = 0;
+    ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 0, 0);
+}
+
+//-------------------------------------------------
+
+PreloadAnimLib(playerid, animlib[])
+{
+	ApplyAnimation(playerid,animlib,"null",0.0,0,0,0,0,0);
+}
+
+//-------------------------------------------------
+
+// ********** CALLBACKS **********
+
+public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
+{
+	if(!gPlayerUsingLoopingAnim[playerid]) return;
+
+	if(IsKeyJustDown(KEY_SPRINT,newkeys,oldkeys)) {
+	    StopLoopingAnim(playerid);
+        TextDrawHideForPlayer(playerid,txtAnimHelper);
+    }
+}
+
+//------------------------------------------------
+
+public OnPlayerDeath(playerid, killerid, reason)
+{
+	// if they die whilst performing a looping anim, we should reset the state
+	if(gPlayerUsingLoopingAnim[playerid]) {
+        gPlayerUsingLoopingAnim[playerid] = 0;
+        TextDrawHideForPlayer(playerid,txtAnimHelper);
+	}
+
+ 	return 1;
+}
+
+//-------------------------------------------------
+
+public OnPlayerSpawn(playerid)
+{
+	if(!gPlayerAnimLibsPreloaded[playerid]) {
+   		PreloadAnimLib(playerid,"BOMBER");
+   		PreloadAnimLib(playerid,"RAPPING");
+    	PreloadAnimLib(playerid,"SHOP");
+   		PreloadAnimLib(playerid,"BEACH");
+   		PreloadAnimLib(playerid,"SMOKING");
+    	PreloadAnimLib(playerid,"FOOD");
+    	PreloadAnimLib(playerid,"ON_LOOKERS");
+    	PreloadAnimLib(playerid,"DEALER");
+		PreloadAnimLib(playerid,"CRACK");
+		PreloadAnimLib(playerid,"CARRY");
+		PreloadAnimLib(playerid,"COP_AMBIENT");
+		PreloadAnimLib(playerid,"PARK");
+		PreloadAnimLib(playerid,"INT_HOUSE");
+		PreloadAnimLib(playerid,"FOOD");
+		gPlayerAnimLibsPreloaded[playerid] = 1;
+	}
+	return 1;
+}
+
+//-------------------------------------------------
+
+public OnPlayerConnect(playerid)
+{
+    gPlayerUsingLoopingAnim[playerid] = 0;
+	gPlayerAnimLibsPreloaded[playerid] = 0;
+	
+	return 1;
+}
+
+//-------------------------------------------------
+
+public OnFilterScriptInit()
+{
+	// Init our text display
+	txtAnimHelper = TextDrawCreate(610.0, 400.0,
+	"~r~~k~~PED_SPRINT~ ~w~to stop the animation");
+	TextDrawUseBox(txtAnimHelper, 0);
+	TextDrawFont(txtAnimHelper, 2);
+	TextDrawSetShadow(txtAnimHelper,0); // no shadow
+    TextDrawSetOutline(txtAnimHelper,1); // thickness 1
+    TextDrawBackgroundColor(txtAnimHelper,0x000000FF);
+    TextDrawColor(txtAnimHelper,0xFFFFFFFF);
+    TextDrawAlignment(txtAnimHelper,3); // align right
+}
+
+//-------------------------------------------------
+
+public OnPlayerCommandText(playerid, cmdtext[])
+{
+	new cmd[256];
+	new idx;
+	new dancestyle;
+	cmd = strtok(cmdtext, idx);
+
+	if(strcmp(cmd,"/animlist",true)==0)
+	{
+		SendClientMessage(playerid,0xAFAFAFAA,"Available Animations:");
+	    SendClientMessage(playerid,0xAFAFAFAA,"/handsup /drunk /bomb /getarrested /laugh /lookout /robman");
+        SendClientMessage(playerid,0xAFAFAFAA,"/crossarms /lay /hide /vomit /eat /wave /taichi");
+        SendClientMessage(playerid,0xAFAFAFAA,"/deal /crack /smokem /smokef /groundsit /chat /dance /f**ku");
+	}
+	
+	if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) {
+        // We don't handle anything here that can be used InVehicle
+        return 0;
+	}
+
+	// HANDSUP
+ 	if(strcmp(cmd, "/handsup", true) == 0) {
+		SetPlayerSpecialAction(playerid,SPECIAL_ACTION_HANDSUP);
+        return 1;
+    }
+    
+    // CELLPHONE IN
+ 	if(strcmp(cmd, "/cellin", true) == 0) {
+		SetPlayerSpecialAction(playerid,SPECIAL_ACTION_USECELLPHONE);
+        return 1;
+    }
+    
+    // CELLPHONE OUT
+ 	if(strcmp(cmd, "/cellout", true) == 0) {
+		SetPlayerSpecialAction(playerid,SPECIAL_ACTION_STOPUSECELLPHONE);
+        return 1;
+    }
+
+    // Drunk
+    if(strcmp(cmd, "/drunk", true) == 0) {
+		LoopingAnim(playerid,"PED","WALK_DRUNK",4.0,1,1,1,1,0);
+		return 1;
+    }
+    
+	// Place a Bomb
+    if (strcmp("/bomb", cmdtext, true) == 0) {
+		ClearAnimations(playerid);
+		OnePlayAnim(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0); // Place Bomb
+		return 1;
+	}
+	// Police Arrest
+    if (strcmp("/getarrested", cmdtext, true, 7) == 0) {
+	      LoopingAnim(playerid,"ped", "ARRESTgun", 4.0, 0, 1, 1, 1, -1); // Gun Arrest
+		  return 1;
+    }
+	// Laugh
+    if (strcmp("/laugh", cmdtext, true) == 0) {
+          OnePlayAnim(playerid, "RAPPING", "Laugh_01", 4.0, 0, 0, 0, 0, 0); // Laugh
+		  return 1;
+	}
+	// Rob Lookout
+    if (strcmp("/lookout", cmdtext, true) == 0) {
+          OnePlayAnim(playerid, "SHOP", "ROB_Shifty", 4.0, 0, 0, 0, 0, 0); // Rob Lookout
+		  return 1;
+	}
+	// Rob Threat
+    if (strcmp("/robman", cmdtext, true) == 0) {
+          LoopingAnim(playerid, "SHOP", "ROB_Loop_Threat", 4.0, 1, 0, 0, 0, 0); // Rob
+		  return 1;
+	}
+	// Arms crossed
+    if (strcmp("/crossarms", cmdtext, true) == 0) {
+          LoopingAnim(playerid, "COP_AMBIENT", "Coplook_loop", 4.0, 0, 1, 1, 1, -1); // Arms crossed
+		  return 1;
+	}
+	// Lay Down
+    if (strcmp("/lay", cmdtext, true, 6) == 0) {
+          LoopingAnim(playerid,"BEACH", "bather", 4.0, 1, 0, 0, 0, 0); // Lay down
+		  return 1;
+    }
+	// Take Cover
+    if (strcmp("/hide", cmdtext, true, 3) == 0) {
+          LoopingAnim(playerid, "ped", "cower", 3.0, 1, 0, 0, 0, 0); // Taking Cover
+		  return 1;
+	}
+	// Vomit
+    if (strcmp("/vomit", cmdtext, true) == 0) {
+	      OnePlayAnim(playerid, "FOOD", "EAT_Vomit_P", 3.0, 0, 0, 0, 0, 0); // Vomit BAH!
+		  return 1;
+	}
+	// Eat Burger
+    if (strcmp("/eat", cmdtext, true) == 0) {
+	      OnePlayAnim(playerid, "FOOD", "EAT_Burger", 3.0, 0, 0, 0, 0, 0); // Eat Burger
+		  return 1;
+	}
+	// Wave
+    if (strcmp("/wave", cmdtext, true) == 0) {
+	      LoopingAnim(playerid, "ON_LOOKERS", "wave_loop", 4.0, 1, 0, 0, 0, 0); // Wave
+		  return 1;
+	}
+	// Slap Ass
+    if (strcmp("/slapass", cmdtext, true) == 0) {
+         OnePlayAnim(playerid, "SWEET", "sweet_ass_slap", 4.0, 0, 0, 0, 0, 0); // Ass Slapping
+		  return 1;
+	}
+	// Dealer
+    if (strcmp("/deal", cmdtext, true) == 0) {
+          OnePlayAnim(playerid, "DEALER", "DEALER_DEAL", 4.0, 0, 0, 0, 0, 0); // Deal Drugs
+		  return 1;
+	}
+	// Crack Dieing
+    if (strcmp("/crack", cmdtext, true, 6) == 0) {
+          LoopingAnim(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0); // Dieing of Crack
+		  return 1;
+	}
+	// Male Smoking
+    if (strcmp("/smokem", cmdtext, true, 4) == 0) {
+          LoopingAnim(playerid,"SMOKING", "M_smklean_loop", 4.0, 1, 0, 0, 0, 0); // Smoke
+		  return 1;
+	}
+	// Female Smoking
+    if (strcmp("/smokef", cmdtext, true) == 0) {
+          LoopingAnim(playerid, "SMOKING", "F_smklean_loop", 4.0, 1, 0, 0, 0, 0); // Female Smoking
+		  return 1;
+	}
+	// Sit
+    if (strcmp("/groundsit", cmdtext, true, 4) == 0) {
+          LoopingAnim(playerid,"BEACH", "ParkSit_M_loop", 4.0, 1, 0, 0, 0, 0); // Sit
+		  return 1;
+    }
+    // Idle Chat
+    if(strcmp(cmd, "/chat", true) == 0) {
+		 OnePlayAnim(playerid,"PED","IDLE_CHAT",4.0,0,0,0,0,0);
+         return 1;
+    }
+    // Fucku
+    if(strcmp(cmd, "/fucku", true) == 0) {
+		 OnePlayAnim(playerid,"PED","fucku",4.0,0,0,0,0,0);
+         return 1;
+    }
+    // TaiChi
+    if(strcmp(cmd, "/taichi", true) == 0) {
+		 LoopingAnim(playerid,"PARK","Tai_Chi_Loop",4.0,1,0,0,0,0);
+         return 1;
+    }
+    
+    // ChairSit
+    if(strcmp(cmd, "/chairsit", true) == 0) {
+		 LoopingAnim(playerid,"BAR","dnk_stndF_loop",4.0,1,0,0,0,0);
+         return 1;
+    }
+    
+    /* Would allow people to troll... but would be cool as a script
+	   controlled function
+    // Bed Sleep R
+    if(strcmp(cmd, "/inbedright", true) == 0) {
+		 LoopingAnim(playerid,"INT_HOUSE","BED_Loop_R",4.0,1,0,0,0,0);
+         return 1;
+    }
+    // Bed Sleep L
+    if(strcmp(cmd, "/inbedleft", true) == 0) {
+		 LoopingAnim(playerid,"INT_HOUSE","BED_Loop_L",4.0,1,0,0,0,0);
+         return 1;
+    }*/
+    
+
+	// START DANCING
+ 	if(strcmp(cmd, "/dance", true) == 0) {
+		    new tmp[256];
+
+			// Get the dance style param
+      		tmp = strtok(cmdtext, idx);
+			if(!strlen(tmp) || strlen(tmp) > 2) {
+				SendClientMessage(playerid,0xFF0000FF,"USAGE: /dance [style 1-4]");
+				return 1;
+			}
+			
+			dancestyle = strval(tmp);
+			if(dancestyle < 1 || dancestyle > 4) {
+			    SendClientMessage(playerid,0xFF0000FF,"USAGE: /dance [style 1-4]");
+			    return 1;
+			}
+			
+			if(dancestyle == 1) {
+			    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE1);
+			} else if(dancestyle == 2) {
+			    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE2);
+			} else if(dancestyle == 3) {
+			    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE3);
+			} else if(dancestyle == 4) {
+			    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE4);
+			}
+ 	  		return 1;
+	}
+
+	return 0;
+}
+//-------------------------------------------------
+// EOF

BIN
Texture-Studio-master/filterscripts/gl_chatbubble.amx


+ 63 - 0
Texture-Studio-master/filterscripts/gl_chatbubble.pwn

@@ -0,0 +1,63 @@
+//
+// Example use of chat above player's head
+//
+
+#include <a_samp>
+#include "../include/gl_common.inc"
+
+#define MESSAGE_COLOR 		  0xEEEEEEFF
+#define ECHO_COLOR 		  	  0xEEEEEEFF
+#define ACTION_COLOR     	  0xEE66EEFF
+
+//------------------------------------------------
+
+public OnFilterScriptInit()
+{
+	print("\n--Speech bubble example loaded.\n");
+	return 1;
+}
+
+//------------------------------------------------
+
+public OnPlayerText(playerid, text[])
+{
+	 if(strlen(text) > 128) return 0;
+	 
+	 new to_others[MAX_CHATBUBBLE_LENGTH+1];
+	 new to_me[MAX_CHATBUBBLE_LENGTH+1];
+	 
+	 format(to_others,MAX_CHATBUBBLE_LENGTH,"Says: %s",text);
+	 format(to_me,MAX_CHATBUBBLE_LENGTH,">> %s",text);
+	 
+     SetPlayerChatBubble(playerid,to_others,MESSAGE_COLOR,35.0,10000);
+     SendClientMessage(playerid,ECHO_COLOR,to_me);
+     
+     return 0; // can't do normal chat with this loaded
+}
+
+//------------------------------------------------
+
+public OnPlayerCommandText(playerid, cmdtext[])
+{
+	new cmd[256];
+	new Message[256];
+	new	idx;
+	new actiontext[MAX_CHATBUBBLE_LENGTH+1];
+
+	cmd = strtok(cmdtext, idx);
+
+	// Action command
+	if(strcmp("/me", cmd, true) == 0)
+	{
+	    Message = strrest(cmdtext,idx);
+	    format(actiontext,MAX_CHATBUBBLE_LENGTH,"* %s",Message);
+       	SetPlayerChatBubble(playerid,actiontext,ACTION_COLOR,30.0,10000);
+    	SendClientMessage(playerid,ACTION_COLOR,actiontext);
+		return 1;
+	}
+	
+	return 0; // not handled by this script
+}
+
+//------------------------------------------------
+

BIN
Texture-Studio-master/filterscripts/gl_npcs.amx


+ 144 - 0
Texture-Studio-master/filterscripts/gl_npcs.pwn

@@ -0,0 +1,144 @@
+//-------------------------------------------------
+//
+//  NPC initialisation for Grand Larceny
+//
+//-------------------------------------------------
+
+#pragma tabsize 0
+#include <a_samp>
+
+//-------------------------------------------------
+
+public OnFilterScriptInit()
+{
+	ConnectNPC("TrainDriverLV","train_lv");
+	ConnectNPC("TrainDriverLS","train_ls");
+	ConnectNPC("TrainDriverSF","train_sf");
+	
+	ConnectNPC("PilotLV","at400_lv");
+	ConnectNPC("PilotSF","at400_sf");
+	ConnectNPC("PilotLS","at400_ls");
+
+	// Testing
+	//ConnectNPC("TestIdle","onfoot_test");
+	//ConnectNPC("TaxiTest","mat_test");
+	
+	return 1;
+}
+
+//-------------------------------------------------
+// IMPORTANT: This restricts NPCs connecting from
+// an IP address outside this server. If you need
+// to connect NPCs externally you will need to modify
+// the code in this callback.
+
+public OnPlayerConnect(playerid)
+{
+	if(IsPlayerNPC(playerid)) {
+	    new ip_addr_npc[64+1];
+	    new ip_addr_server[64+1];
+	    GetServerVarAsString("bind",ip_addr_server,64);
+	    GetPlayerIp(playerid,ip_addr_npc,64);
+	    
+		if(!strlen(ip_addr_server)) {
+		    ip_addr_server = "127.0.0.1";
+		}
+		
+		if(strcmp(ip_addr_npc,ip_addr_server,true) != 0) {
+		    // this bot is remote connecting
+		    printf("NPC: Got a remote NPC connecting from %s and I'm kicking it.",ip_addr_npc);
+		    Kick(playerid);
+		    return 0;
+		}
+        printf("NPC: Connection from %s is allowed.",ip_addr_npc);
+	}
+	
+	return 1;
+}
+
+//-------------------------------------------------
+
+public OnPlayerRequestClass(playerid, classid)
+{
+	if(!IsPlayerNPC(playerid)) return 0; // We only deal with NPC players in this script
+	
+	new playername[64];
+	GetPlayerName(playerid,playername,64);
+
+ 	if(!strcmp(playername,"TrainDriverLV",true)) {
+        SetSpawnInfo(playerid,69,255,1462.0745,2630.8787,10.8203,0.0,-1,-1,-1,-1,-1,-1);
+	}
+	else if(!strcmp(playername,"TrainDriverSF",true)) {
+	    SetSpawnInfo(playerid,69,255,-1942.7950,168.4164,27.0006,0.0,-1,-1,-1,-1,-1,-1);
+	}
+	else if(!strcmp(playername,"TrainDriverLS",true)) {
+	    SetSpawnInfo(playerid,69,255,1700.7551,-1953.6531,14.8756,0.0,-1,-1,-1,-1,-1,-1);
+	}
+	else if(!strcmp(playername,"PilotLV",true)) {
+	    SetSpawnInfo(playerid,69,61,0.0,0.0,0.0,0.0,-1,-1,-1,-1,-1,-1);
+	}
+	else if(!strcmp(playername,"PilotSF",true)) {
+	    SetSpawnInfo(playerid,69,61,0.0,0.0,0.0,0.0,-1,-1,-1,-1,-1,-1);
+	}
+	else if(!strcmp(playername,"PilotLS",true)) {
+	    SetSpawnInfo(playerid,69,61,0.0,0.0,0.0,0.0,-1,-1,-1,-1,-1,-1);
+	}
+	else if(!strcmp(playername,"TestIdleDriver",true)) {
+	    SetSpawnInfo(playerid,69,61,0.0,0.0,0.0,0.0,-1,-1,-1,-1,-1,-1);
+	}
+	else if(!strcmp(playername,"TaxiTest",true)) {
+	    SetSpawnInfo(playerid,69,61,0.0,0.0,0.0,0.0,-1,-1,-1,-1,-1,-1);
+	}
+
+	return 0;
+}
+
+//-------------------------------------------------
+
+public OnPlayerSpawn(playerid)
+{
+	if(!IsPlayerNPC(playerid)) return 1; // We only deal with NPC players in this script
+
+	new playername[64];
+	GetPlayerName(playerid,playername,64);
+
+	if(!strcmp(playername,"TrainDriverLV",true)) {
+        PutPlayerInVehicle(playerid,1,0);
+        SetPlayerColor(playerid,0xFFFFFFFF);
+ 	}
+	else if(!strcmp(playername,"TrainDriverSF",true)) {
+	    PutPlayerInVehicle(playerid,5,0);
+	    SetPlayerColor(playerid,0xFFFFFFFF);
+	}
+	else if(!strcmp(playername,"TrainDriverLS",true)) {
+	    PutPlayerInVehicle(playerid,9,0);
+	    SetPlayerColor(playerid,0xFFFFFFFF);
+	}
+	else if(!strcmp(playername,"PilotLV",true)) {
+	    PutPlayerInVehicle(playerid,13,0);
+	    SetPlayerColor(playerid,0xFFFFFFFF);
+	}
+	else if(!strcmp(playername,"PilotSF",true)) {
+	    PutPlayerInVehicle(playerid,14,0);
+	    SetPlayerColor(playerid,0xFFFFFFFF);
+	}
+	else if(!strcmp(playername,"PilotLS",true)) {
+	    PutPlayerInVehicle(playerid,15,0);
+	    SetPlayerColor(playerid,0xFFFFFFFF);
+	}
+	else if(!strcmp(playername,"TestIdleDriver",true)) {
+	    PutPlayerInVehicle(playerid,43,0);
+	    SetPlayerColor(playerid,0xFFFFFFFF);
+	}
+	else if(!strcmp(playername,"TaxiTest",true)) {
+	    PutPlayerInVehicle(playerid,968,0);
+	    SetPlayerColor(playerid,0xFFFFFFFF);
+	}
+
+	return 1;
+}
+
+//-------------------------------------------------
+// EOF
+
+

BIN
Texture-Studio-master/filterscripts/gl_property.amx


+ 835 - 0
Texture-Studio-master/filterscripts/gl_property.pwn

@@ -0,0 +1,835 @@
+//-------------------------------------------------------
+//
+// GRAND LARCENY Property creation and management script
+//
+// by damospiderman 2008
+//
+//-------------------------------------------------------
+
+#include <a_samp>
+#include "../include/gl_common.inc"
+
+#define FILTERSCRIPT
+//#define USE_SQLITE
+
+#define PROP_VW    		(10000)
+#define MAX_INTERIORS	(146)
+#define MAX_PROPERTIES  (1000)
+
+#define PROPERTY_FOLDER	"properties" // Location of properties file
+#define PROPERTY_UNIQID_FILE    "properties/uniqId.txt" // Location of Uniq Interior Info
+#define DB_PROPERTIES   "properties/dbProperties.db" // Location of the properties Database
+
+#define MAX_TYPES       (5)
+#define TYPE_EMPTY      (0)
+#define TYPE_HOUSE 		(1)
+#define TYPE_BUSINESS	(2)
+#define TYPE_BANK   	(3)
+#define TYPE_COP        (4)
+
+enum // Property Type Enum
+	E_P_TYPES {
+		tIcon,
+		tName[32]
+	}
+
+enum // Uniq Interiors Enum
+	E_INTERIORS {
+		inIntID,
+		Float:inExitX,
+		Float:inExitY,
+		Float:inExitZ,
+		Float:inExitA,
+		inName[64]
+	};
+
+enum // Properties Enum
+	E_PROPERTIES {
+		eInterior,
+		eType,
+		Float:eEntX,
+		Float:eEntY,
+		Float:eEntZ,
+		Float:eEntA,
+		eUniqIntId,
+		eOwner,
+		ePrice,
+		ePname[64]
+	};
+
+//  [ uniq property id ]
+new	unid;
+
+//	[ Array of all the property interior info ]
+new interiorInfo[MAX_INTERIORS][E_INTERIORS];
+
+//	[ Pickup array with property id assigned via array slot ( pickupid ) ]
+new propPickups[MAX_PROPERTIES] = {-1};
+
+//	[ Handles for 3D text displayed at property entrances ]
+new Text3D:propTextInfo[MAX_PROPERTIES];
+
+// 	[ Mass array of all the properties and info about them ]
+new properties[MAX_PROPERTIES][E_PROPERTIES];
+
+//	[ The last pickup the player went through so they can do /enter command ]
+new lastPickup[MAX_PLAYERS] = {-1};
+
+//	[ Current property Unique Interior the player is in.. defaults to -1 when not in any property ]
+new currentInt[MAX_PLAYERS] = {-1};
+
+//	[ Player Position array to store the last place the player was before /view command so they can be teleported back ]
+new Float:plPos[MAX_PLAYERS][3];
+
+//	[ Players actual interior id used for /view /return command ]
+new plInt[MAX_PLAYERS];
+
+//  [ Array of property type iconid's and strings for property type ]
+new propIcons[MAX_TYPES][E_P_TYPES] =	{
+											{ 0, "" }, 					// TYPE_EMPTY ( not used )
+											{ 1273, "House" }, 			// TYPE_HOUSE green house icon
+											{ 1272, "Business" }, 		// TYPE_BUSINESS blue house icon
+											{ 1274, "Bank" }, 			// TYPE_BANK dollar sign icon
+											{ 1247, "Police Station" }	// TYPE_COP Bribe Star 1247
+										};
+										
+new	propFile[MAX_TYPES][64] =   {
+									{ "blank" },
+		                            { "properties/houses.txt" },
+		                            { "properties/businesses.txt" },
+		                            { "properties/banks.txt" },
+		                            { "properties/police.txt" }
+							 	};
+							 	
+//  Keep track of what properties we've sent an /enter notification for
+new gLastPropertyEnterNotification[MAX_PLAYERS];
+
+
+/********************************
+*   Interior Info Functions     *
+********************************/
+stock Float:GetInteriorExit( id, &Float:x, &Float:y, &Float:z ){
+	if( id > MAX_INTERIORS ) return 0.0;
+	else {
+	    x = interiorInfo[id][inExitX];
+	    y = interiorInfo[id][inExitY];
+	    z = interiorInfo[id][inExitZ];
+		return interiorInfo[id][inExitA];
+	}
+}
+
+// Gets interior exit info from uniq Interior Id. Returns InteriorId or -1 if interior doesn't exist
+stock GetInteriorExitInfo( uniqIntId, &Float:exitX, &Float:exitY, &Float:exitZ, &Float:exitA ){
+	if( uniqIntId < MAX_INTERIORS ){
+	    exitX = interiorInfo[uniqIntId][inExitX];
+	    exitY = interiorInfo[uniqIntId][inExitY];
+	    exitZ = interiorInfo[uniqIntId][inExitZ];
+	    exitA = interiorInfo[uniqIntId][inExitA];
+		return interiorInfo[uniqIntId][inIntID];
+	}
+	return -1;
+}
+
+
+stock GetInteriorIntID( id ){ // Gets the interior id of a uniq Interior Id :S
+	if( id > MAX_INTERIORS ) return -1;
+	else return interiorInfo[id][inIntID];
+}
+
+stock GetInteriorName( id )
+{
+	new tmp[64];
+	if( id > MAX_PROPERTIES ) return tmp;
+
+	else {
+  		format( tmp, 64, "%s", interiorInfo[id][inName] );
+		return tmp;
+	}
+}
+
+/********************************************************
+********************************************************/
+
+
+/********************************
+*  	 Property Functions  		*
+********************************/
+
+stock Float:GetPropertyEntrance( id, &Float:x, &Float:y, &Float:z ){
+	if( id > MAX_PROPERTIES ) return 0.0;
+	x = properties[id][eEntX];
+	y = properties[id][eEntY];
+	z = properties[id][eEntZ];
+	return properties[id][eEntA];
+}
+
+stock Float:GetPropertyExit( id, &Float:x, &Float:y, &Float:z ){
+	if( id > MAX_PROPERTIES ) return 0.0;
+	return GetInteriorExit( properties[id][eUniqIntId], x, y, z );
+}
+
+stock GetPropertyInteriorFileId( id ){
+	if( id > MAX_PROPERTIES ) return 0;
+	else return properties[id][eUniqIntId];
+}
+
+stock GetPropertyInteriorId( id ){
+	if( id > MAX_PROPERTIES ) return 0;
+	else return GetInteriorIntID( properties[id][eUniqIntId] );
+}
+
+stock GetPropertyType( id ){
+	if( id > MAX_PROPERTIES ) return 0;
+	else return properties[id][eType];
+}
+
+stock GetPropertyOwner( id ){
+	if( id > MAX_PROPERTIES ) return -1;
+	else return properties[id][eOwner];
+}
+
+stock GetPropertyPrice( id ){
+	if( id > MAX_PROPERTIES ) return -1;
+	else return properties[id][ePrice];
+}
+
+stock GetPropertyName( id ){
+	new tmp[64];
+	if( id > MAX_PROPERTIES ) return tmp;
+	else {
+  		format( tmp, 64, "%s", properties[id][ePname] );
+		return tmp;
+	}
+}
+
+/********************************************************
+********************************************************/
+
+/********************************
+*   	Database Functions	    *
+********************************/
+
+stock Float:dbGetPropertyEntrance( database[], uniqId, &Float:x, &Float:y, &Float:z ){
+	new
+	    DB:prop,
+	    DBResult:query_result,
+	    query[128],
+		num;
+
+	prop = db_open( database );
+	format( query, 128,"SELECT entX, entY, enZ, entA FROM properties WHERE id = %d LIMIT 1", uniqId );
+
+	query_result = db_query( prop, query );
+	num = db_num_rows(query_result);
+	if(!num) return -1.0;
+
+	else {
+		db_get_field_assoc( query_result, "entX", query, 128 );
+		x = floatstr( query );
+		db_get_field_assoc( query_result, "entY", query, 128 );
+		y = floatstr( query );
+		db_get_field_assoc( query_result, "entZ", query, 128 );
+		z = floatstr( query );
+		db_get_field_assoc( query_result, "entA", query, 128 );
+		return floatstr( query );
+	}
+}
+
+stock dbSetPropertyOwner( database[], uniqId, ownerId ){
+}
+
+stock dbSetPropertyPrice( database[], uniqId, price ){
+}
+
+stock dbDeleteProperty( database[], uniqId ){
+}
+
+stock dbCreateProperty( database[], uniqId, Float:entX, Float:entY, Float:entZ, Float:entA ){ // remember to add rest of params
+}
+
+stock dbLoadProperties( database[] )
+{
+	new
+		    DB:prop,
+		    DBResult:query_result,
+		    query[128],
+			num,
+			i;
+
+	prop = db_open( database );
+	format( query, 128,"SELECT * FROM properties", uniqId );
+
+	query_result = db_query( prop, query );
+	num = db_num_rows(query_result);
+	if(!num) return 0;
+	else {
+		while( i < num ){
+		    db_get_field_assoc( query_result, "entX", query, 128 );
+			x = floatstr( query );
+			db_get_field_assoc( query_result, "entX", query, 128 );
+			x = floatstr( query );
+			db_get_field_assoc( query_result, "entY", query, 128 );
+			y = floatstr( query );
+			db_get_field_assoc( query_result, "entZ", query, 128 );
+			z = floatstr( query );
+			db_get_field_assoc( query_result, "entA", query, 128 );
+			i++;
+		}
+	}
+
+}
+/********************************************************
+********************************************************/
+
+/*********************************
+*   Property System Functions    *
+*********************************/
+
+ReadInteriorInfo( fileName[] )
+{
+	new
+	    File:file_ptr,
+	    buf[256],
+	    tmp[64],
+	    idx,
+		uniqId;
+
+
+	file_ptr = fopen( fileName, io_read );
+	if( file_ptr ){
+		while( fread( file_ptr, buf, 256 ) > 0){
+		    idx = 0;
+
+     		idx = token_by_delim( buf, tmp, ' ', idx );
+			if(idx == (-1)) continue;
+			uniqId = strval( tmp );
+
+			if( uniqId >= MAX_INTERIORS ) return 0;
+
+			idx = token_by_delim( buf, tmp, ' ', idx+1 );
+		    if(idx == (-1)) continue;
+		 	interiorInfo[uniqId][inIntID] = strval( tmp );
+
+			idx = token_by_delim( buf, tmp, ' ', idx+1 );
+		    if(idx == (-1)) continue;
+			interiorInfo[uniqId][inExitX] = floatstr( tmp );
+
+			idx = token_by_delim( buf, tmp, ' ', idx+1 );
+		    if(idx == (-1)) continue;
+			interiorInfo[uniqId][inExitY] = floatstr( tmp );
+
+			idx = token_by_delim( buf, tmp, ' ', idx+1);
+		    if(idx == (-1)) continue;
+			interiorInfo[uniqId][inExitZ] = floatstr( tmp );
+
+			idx = token_by_delim( buf, tmp, ' ', idx+1 );
+		    if(idx == (-1)) continue;
+			interiorInfo[uniqId][inExitA] = floatstr( tmp );
+
+			idx = token_by_delim( buf, interiorInfo[uniqId][inName], ';', idx+1 );
+		    if(idx == (-1)) continue;
+
+			/*
+			printf( "ReadInteriorInfo(%d, %d, %f, %f, %f, %f ( %s ))",
+					uniqId,
+					interiorInfo[uniqId][inIntID],
+					interiorInfo[uniqId][inExitX],
+					interiorInfo[uniqId][inExitY],
+					interiorInfo[uniqId][inExitZ],
+					interiorInfo[uniqId][inExitA],
+					interiorInfo[uniqId][inName] );*/
+
+		}
+		//printf( "Interiors File read successfully" );
+		fclose( file_ptr );
+		return 1;
+	}
+	printf( "Could Not Read Interiors file ( %s )", fileName );
+	return 0;
+}
+
+ReadPropertyFile( fileName[] )
+{
+	new  File:file_ptr,
+	    tmp[128],
+		buf[256],
+		idx,
+		Float:enX,
+		Float:enY,
+		Float:enZ,
+		Float:enA,
+		uniqIntId,
+		p_type,
+		pIcon;
+
+	printf("Reading File: %s",fileName);
+
+	file_ptr = fopen( fileName, io_read );
+
+	if(!file_ptr )return 0;
+
+ 	while( fread( file_ptr, buf, 256 ) > 0){
+ 	    idx = 0;
+
+ 	    idx = token_by_delim( buf, tmp, ',', idx );
+		if(idx == (-1)) continue;
+		pIcon = strval( tmp );
+
+ 	    idx = token_by_delim( buf, tmp, ',', idx+1 );
+		if(idx == (-1)) continue;
+		enX = floatstr( tmp );
+
+  		idx = token_by_delim( buf, tmp, ',', idx+1 );
+		if(idx == (-1)) continue;
+		enY = floatstr( tmp );
+
+		idx = token_by_delim( buf, tmp, ',', idx+1 );
+		if(idx == (-1)) continue;
+		enZ = floatstr( tmp );
+
+ 		idx = token_by_delim( buf, tmp, ',', idx+1 );
+		if(idx == (-1)) continue;
+		enA = floatstr( tmp );
+
+		idx = token_by_delim( buf, tmp, ',', idx+1 );
+		if(idx == (-1)) continue;
+		uniqIntId = strval( tmp );
+
+		idx = token_by_delim( buf, tmp, ';', idx+1 );
+		if(idx == (-1)) continue;
+		p_type = strval( tmp );
+
+		CreateProperty( uniqIntId, pIcon, enX, enY, enZ, enA, p_type  );
+	}
+	fclose( file_ptr );
+	return 1;
+}
+
+PutPlayerInProperty( playerid, propId, propVW = 0 )
+{
+	new Float:x, Float:y, Float:z, Float:a;
+	new intFileId;
+	
+    a = GetPropertyExit( propId, x, y, z );
+	SetPlayerPos( playerid, x, y, z );
+	SetPlayerFacingAngle( playerid, a );
+	SetPlayerInterior( playerid, GetPropertyInteriorId( propId ));
+	SetPlayerVirtualWorld( playerid, (propVW==0)? propId+PROP_VW:propVW );
+	intFileId = GetPropertyInteriorFileId(propId);
+	currentInt[playerid] = propId;
+	
+	//new dbgstring[128];
+	//format(dbgstring,sizeof(dbgstring),"PutPlayerInProperty(%d): FileInt=%d",propId,intFileId);
+	//SendClientMessage(playerid,0xFFFFFFFF,dbgstring);
+	
+	// the following will make the client shop scripts run if we tell it
+	// the name of the shop.
+	if(intFileId == 22) {
+	    SetPlayerShopName(playerid,"FDPIZA");
+	}
+	else if(intFileId == 47) {
+		SetPlayerShopName(playerid,"FDBURG");
+	}
+	else if(intFileId == 130) {
+	    SetPlayerShopName(playerid,"FDCHICK");
+	}
+	else if(intFileId == 32) {
+	    SetPlayerShopName(playerid,"AMMUN1");
+	}
+	else if(intFileId == 96) {
+	    SetPlayerShopName(playerid,"AMMUN2");
+	}
+	else if(intFileId == 122) {
+	    SetPlayerShopName(playerid,"AMMUN3");
+	}
+	else if(intFileId == 123) {
+	    SetPlayerShopName(playerid,"AMMUN5");
+	}
+	
+}
+
+// Adds new property to property file
+AddProperty( uniqIntId, Float:entX, Float:entY, Float:entZ, Float:entA, p_type, comment[]="" )
+{
+	new
+	    Float:exitX,
+	    Float:exitY,
+	    Float:exitZ,
+	    Float:exitA,
+		interiorId,
+		File:file_ptr,
+		tmp[128];
+
+	interiorId = GetInteriorExitInfo( uniqIntId, exitX, exitY, exitZ, exitA );
+
+	if( interiorId != -1 ){
+	    file_ptr = fopen( propFile[p_type], io_append );
+	    if(file_ptr){
+			format( tmp, 128, "%d, %f, %f, %f, %f, %d, %d ; //%s\r\n", propIcons[p_type][tIcon],entX, entY, entZ, entA, uniqIntId, p_type, comment );
+
+			fwrite( file_ptr, tmp );
+			fclose( file_ptr );
+			printf( "PropDB - %s", tmp );
+			return CreateProperty( uniqIntId, propIcons[p_type][tIcon], entX, entY, entZ, entA,  p_type );
+		}
+	}
+	return -1;
+}
+
+CreateProperty( uniqIntId, iconId,  Float:entX, Float:entY, Float:entZ, Float:entA, p_type, name[64]="", owner=-1, price=0 )
+{
+	if( (unid+1) < MAX_PROPERTIES ){
+		new Id = CreatePickup( iconId ,23, entX, entY, entZ, 0 );
+		//printf( "CreateProperty(%d, %d, %f, %f, %f, %f, %d)", uniqIntId, iconId, entX, entY, entZ, entA, p_type );
+		propPickups[Id] = unid;
+		properties[unid][eEntX] 	= entX;
+		properties[unid][eEntY] 	= entY;
+		properties[unid][eEntZ] 	= entZ;
+		properties[unid][eEntA] 	= entA;
+		properties[unid][eUniqIntId] = uniqIntId;
+		properties[unid][eOwner] 	= owner;
+		properties[unid][ePrice] 	= price;
+		properties[unid][eType] 	= p_type;
+		format( properties[unid][ePname], 64, "%s", name );
+		
+		new text_info[256];
+		
+		propTextInfo[unid] = Text3D:INVALID_3DTEXT_ID;
+		
+		if(p_type == TYPE_HOUSE) {
+		    format(text_info,256,"[House]");
+		    propTextInfo[unid] = Create3DTextLabel(text_info,0x88EE88FF,entX,entY,entZ+0.75,20.0,0,1);
+		}
+		else if(p_type == TYPE_BUSINESS) {
+		    format(text_info,256,"[Business]");
+		    propTextInfo[unid] = Create3DTextLabel(text_info,0xAAAAFFFF,entX,entY,entZ+0.75,20.0,0,1);
+		}
+		else if(p_type == TYPE_BANK) {
+		    format(text_info,256,"[Bank]");
+		    propTextInfo[unid] = Create3DTextLabel(text_info,0xEEEE88FF,entX,entY,entZ+0.75,20.0,0,1);
+		}
+		else if(p_type == TYPE_COP) {
+		    format(text_info,256,"[Police Station]");
+		    propTextInfo[unid] = Create3DTextLabel(text_info,0xEEEE88FF,entX,entY,entZ+0.75,20.0,0,1);
+		}
+
+		return unid++;
+	}
+	else print( "Property Limit Reached" );
+	return -1;
+}
+
+PropertyCommand( playerid, cmd[],cmdtext[],idx, p_type )
+{
+	new
+	        Float:x,
+	        Float:y,
+	        Float:z,
+	        Float:a,
+	        tmp[256],
+	        string[128],
+			uniqId,
+			id;
+
+	if( GetPlayerInterior(playerid) != 0 || GetPlayerVirtualWorld(playerid)!= 0 ){
+	    SendClientMessage(playerid, 0x550000FF, "You can only create properties in Interior 0 and VW 0" );
+	    return 1;
+	}
+
+	GetPlayerPos( playerid, x, y, z );
+	GetPlayerFacingAngle( playerid, a );
+
+	tmp = strtok( cmdtext, idx );
+	if(!strlen(tmp)){
+	    format( string, 128, "Usage: %s [uniqInteriorId] [optional-comment]", cmd );
+	    SendClientMessage( playerid, 0xFF00CC, string );
+	    return 1;
+	}
+	if(!isNumeric(tmp)){
+	    SendClientMessage(playerid, 0x550000, "Uniq Interior Id must be a number" );
+	    return 1;
+	}
+	uniqId = strval( tmp );
+
+	if( uniqId > MAX_INTERIORS || uniqId < 0 ){
+		SendClientMessage( playerid, 0xFFFFCC, "Invalid Uniq Interior Id" );
+		return 1;
+	}
+
+    idx = token_by_delim( cmdtext, tmp, '\0', idx );
+ 	if(idx){
+ 	    id = AddProperty( uniqId, x, y, z, a, p_type, tmp );
+	}
+
+	else {
+		id = AddProperty( uniqId, x, y, z, a, p_type );
+	}
+
+	if( id != -1 ){
+		format( tmp, 256, "Property Type ( %d ) Added Successfully: UniqId: %d Interior: %d IntName: %s",p_type, id, interiorInfo[uniqId][inIntID], interiorInfo[uniqId][inName] );
+	    SendClientMessage( playerid, 0xCC7700, tmp );
+	}else{
+	    SendClientMessage( playerid, 0x00FF55, "Error: Something went wrong/Property Limit Reached" );
+	}
+	return 1;
+}
+
+LoadProperties()
+{
+	if( properties[0][eType] != TYPE_EMPTY ){
+	    UnloadProperties();
+	}
+	unid = 0;
+   	for( new i = 0; i < MAX_PROPERTIES; i++ ){
+   	    properties[i][eType] = TYPE_EMPTY;
+	}
+
+	ReadInteriorInfo( "properties/interiors.txt" );
+
+	for( new i = 0; i < MAX_TYPES; i++ ){
+   		ReadPropertyFile( propFile[i] );
+	}
+	return 1;
+}
+
+UnloadProperties()
+{
+	new
+	    p;
+	for( new i = 0; i < MAX_PROPERTIES; i++ ){
+		if( propPickups[i] != -1 ){
+			DestroyPickup( i );
+			p = propPickups[i];
+			propPickups[i] = -1;
+			properties[p][eInterior] = -1;
+			properties[p][eType] = TYPE_EMPTY;
+			properties[p][eOwner] = -1;
+			properties[p][ePrice] = 0;
+			properties[p][ePname][0] = '\0';
+		}
+	}
+}
+
+/********************************************************
+********************************************************/
+
+
+/************************************
+*   		Callbacks			    *
+************************************/
+
+
+public OnFilterScriptInit()
+{
+	print("\n-----------------------------------");
+	print("Grand Larceny Property Filterscript		");
+	print("-----------------------------------\n");
+	return 1;
+}
+
+public OnFilterScriptExit()
+{
+	UnloadProperties();
+	return 1;
+}
+
+public OnGameModeInit()
+{
+	LoadProperties();
+	return 1;
+}
+
+public OnGameModeExit()
+{
+	UnloadProperties();
+	return 1;
+}
+
+public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
+{
+	if( newinteriorid == 0 ){
+		currentInt[playerid] = -1;
+		SetPlayerVirtualWorld( playerid, 0 );
+	}
+	return 1;
+}
+
+public OnPlayerSpawn( playerid )
+{
+	gLastPropertyEnterNotification[playerid] = -1;
+	return 1;
+}
+
+public OnPlayerPickUpPickup(playerid, pickupid)
+{
+	//printf( "DEBUG: Player %d pickedup Pickup %d Prop Id %d", playerid, pickupid );
+	lastPickup[playerid] = pickupid;
+	new id = propPickups[pickupid];
+	new pmsg[256];
+
+	if( properties[id][eType] > 0 ){
+	
+	    if(gLastPropertyEnterNotification[playerid] != id){
+	        gLastPropertyEnterNotification[playerid] = id;
+          	switch( properties[id][eType] ){
+		    	case TYPE_HOUSE:{
+		        	format(pmsg,256,"* House: type /enter to enter");
+		        	SendClientMessage( playerid, 0xFF55BBFF, pmsg );
+		        	return 1;
+				}
+
+				case TYPE_BUSINESS:{
+			   		format(pmsg,256,"* Business: type /enter to enter");
+		        	SendClientMessage( playerid, 0xFF55BBFF, pmsg );
+		        	return 1;
+				}
+
+				case TYPE_BANK:{
+					format(pmsg,256,"* Bank: type /enter to enter");
+		        	SendClientMessage( playerid, 0xFF55BBFF, pmsg );
+		        	return 1;
+				}
+
+				case TYPE_COP:{
+					format(pmsg,256,"* Police Station: type /enter to enter");
+		        	SendClientMessage( playerid, 0xFF55BBFF, pmsg );
+		        	return 1;
+				}
+		 	}
+		}
+	}
+	else SendClientMessage( playerid, 0xFF9900FF, "This property doesn't exist :S" );
+
+	return 1;
+}
+
+public OnPlayerCommandText(playerid, cmdtext[])
+{
+	new idx;
+	new cmd[256];
+
+	cmd = strtok(cmdtext, idx);
+	
+	// Public commands.
+	if(strcmp("/enter", cmd, true) == 0) // enter property
+	{
+		if( lastPickup[playerid] != -1 || properties[lastPickup[playerid]][eType] > 0 ){
+		    new
+		        id = propPickups[lastPickup[playerid]],
+		        Float:x,
+		        Float:y,
+		        Float:z;
+
+			GetPropertyEntrance( id, x, y, z );
+	    	if( IsPlayerInRangeOfPoint( playerid, 3.0, x, y, z )){
+	    	    PutPlayerInProperty( playerid, id );
+	    	    SendClientMessage( playerid, 0x55AADDFF, "* You have entered a property.. type /exit to leave" );
+	    	    return 1;
+			}
+		}
+		return 1;
+	}
+	else if(strcmp("/exit", cmd, true) == 0) // exit property
+	{
+	    if( currentInt[playerid] > -1 && GetPlayerInterior(playerid) == GetPropertyInteriorId( currentInt[playerid] )){
+
+	        new id = currentInt[playerid];
+	        new Float:x;
+			new	Float:y;
+			new	Float:z;
+			new	Float:a;
+
+			// make sure they're near the exit before allowing them to exit.
+			GetPropertyExit( id, x, y, z );
+			if(!IsPlayerInRangeOfPoint(playerid,4.5,x,y,z)) {
+			    SendClientMessage(playerid,0xDDAA55FF,"* You must be near the property exit to /exit");
+			    return 1;
+			}
+
+			a = GetPropertyEntrance( id, x, y, z );
+			SetPlayerPos( playerid, x, y, z );
+			SetPlayerFacingAngle( playerid, a );
+			SetPlayerInterior( playerid, 0 );
+			SetPlayerVirtualWorld( playerid, 0 );
+		}
+		currentInt[playerid] = -1;
+		return 1;
+	}
+	
+	// The rest of the commands here are for
+	// property creation which is admin only.
+	
+	if(!IsPlayerAdmin(playerid)) return 0;
+
+	if(strcmp("/chouse", cmd, true) == 0) // creates a house type property
+	{
+		PropertyCommand( playerid, cmd, cmdtext,idx, TYPE_HOUSE );
+		return 1;
+	}
+	else if(strcmp("/cbus", cmd, true) == 0) // creates a business type property
+	{
+ 	    PropertyCommand( playerid, cmd, cmdtext,idx, TYPE_BUSINESS );
+ 	    return 1;
+	}
+	else if(strcmp("/ccop", cmd, true) == 0) // creates a police station property
+	{
+		PropertyCommand( playerid, cmd, cmdtext,idx, TYPE_COP );
+		return 1;
+	}
+	else if(strcmp("/cbank", cmd, true) == 0) // creates a bank type property
+	{
+		PropertyCommand( playerid, cmd, cmdtext,idx, TYPE_BANK );
+		return 1;
+	}
+	else if(strcmp("/view", cmd, true) == 0) //Basically lets you view an interior from the interiors.txt file by id
+	{
+
+	    new
+			tmp[256],
+			string[128],
+			uniqId,
+			Float:x,
+			Float:y,
+			Float:z,
+			Float:a;
+		tmp = strtok( cmdtext, idx );
+		if(!strlen(tmp)){
+		    format( string, 128, "Usage: %s [uniqInteriorId]", cmd );
+		    SendClientMessage( playerid, 0xFF00CC, string );
+
+		    return 1;
+		}
+		if(!isNumeric(tmp)){
+		    SendClientMessage(playerid, 0x550000, "Uniq Interior Id must be a number" );
+		    return 1;
+		}
+		uniqId = strval( tmp );
+
+		if( uniqId > MAX_INTERIORS || uniqId < 0 ){
+			SendClientMessage( playerid, 0xFFFFCC, "Invalid Uniq Interior Id" );
+			return 1;
+		}
+		if( GetPlayerInterior( playerid ) == 0 ){
+			GetPlayerPos( playerid, plPos[playerid][0], plPos[playerid][1], plPos[playerid][2] );
+			plInt[playerid] = GetPlayerInterior( playerid );
+		}
+		a = GetInteriorExit( uniqId, x, y, z );
+		SetPlayerInterior( playerid, GetInteriorIntID( uniqId ) );
+		SetPlayerPos( playerid, x, y, z );
+		SetPlayerFacingAngle( playerid, a );
+		format( string, 128, "UniqId: %d InteriorId: %d Name: %s | Use /return to go to last position", uniqId,GetInteriorIntID( uniqId ), GetInteriorName( uniqId ));
+		SendClientMessage( playerid, 0x556600FF, string );
+		return 1;
+	}
+	else if( strcmp( "/return", cmd, true ) == 0 ) // return from /view command to last position
+	{
+	    SetPlayerPos( playerid, plPos[playerid][0], plPos[playerid][1], plPos[playerid][2] );
+	    SetPlayerInterior( playerid, plInt[playerid] );
+		return 1;
+	}
+
+	return 0;
+}
+
+/***********************************************************************
+***********************************************************************/

BIN
Texture-Studio-master/filterscripts/gl_realtime.amx


+ 89 - 0
Texture-Studio-master/filterscripts/gl_realtime.pwn

@@ -0,0 +1,89 @@
+//
+// Keeps the in game time synced to the server's time and
+// draws the current time on the player's hud using a textdraw/
+// (1 minute = 1 minute real world time)
+//
+//  Kye 2009
+
+#include <a_samp>
+#pragma tabsize 0
+
+//--------------------------------------------------
+
+new Text:txtTimeDisp;
+new hour, minute;
+new timestr[32];
+
+forward UpdateTime();
+
+//--------------------------------------------------
+
+
+public UpdateTime()
+{
+    gettime(hour, minute);
+   	format(timestr,32,"%02d:%02d",hour,minute);
+   	TextDrawSetString(txtTimeDisp,timestr);
+   	
+   	SetWorldTime(hour);
+   	
+	new x=0;
+	while(x!=MAX_PLAYERS) {
+	    if(IsPlayerConnected(x) && GetPlayerState(x) != PLAYER_STATE_NONE) {
+	        SetPlayerTime(x,hour,minute);
+		 }
+		 x++;
+	}
+}
+
+//--------------------------------------------------
+
+public OnGameModeInit()
+{
+	// Init our text display
+	txtTimeDisp = TextDrawCreate(605.0,25.0,"00:00");
+	TextDrawUseBox(txtTimeDisp, 0);
+	TextDrawFont(txtTimeDisp, 3);
+	TextDrawSetShadow(txtTimeDisp,0); // no shadow
+    TextDrawSetOutline(txtTimeDisp,2); // thickness 1
+    TextDrawBackgroundColor(txtTimeDisp,0x000000FF);
+    TextDrawColor(txtTimeDisp,0xFFFFFFFF);
+    TextDrawAlignment(txtTimeDisp,3);
+	TextDrawLetterSize(txtTimeDisp,0.5,1.5);
+	
+	UpdateTime();
+	SetTimer("UpdateTime",1000 * 60,1);
+
+	return 1;
+}
+
+//--------------------------------------------------
+
+public OnPlayerSpawn(playerid)
+{
+	TextDrawShowForPlayer(playerid,txtTimeDisp);
+	
+	gettime(hour, minute);
+	SetPlayerTime(playerid,hour,minute);
+	
+	return 1;
+}
+
+//--------------------------------------------------
+
+public OnPlayerDeath(playerid, killerid, reason)
+{
+    TextDrawHideForPlayer(playerid,txtTimeDisp);
+ 	return 1;
+}
+
+//--------------------------------------------------
+
+public OnPlayerConnect(playerid)
+{
+    gettime(hour, minute);
+    SetPlayerTime(playerid,hour,minute);
+    return 1;
+}
+
+//--------------------------------------------------

BIN
Texture-Studio-master/filterscripts/menutest.amx


+ 53 - 0
Texture-Studio-master/filterscripts/menutest.pwn

@@ -0,0 +1,53 @@
+// Test menu functionality filterscipt
+
+#include <a_samp>
+
+#define TEST_MENU_ITEMS 6
+
+new Menu:TestMenu;
+new TestMenuStrings[6][16] = {"Test1", "Test2", "Test3", "Test4", "Test5", "Test6"};
+
+HandleTestMenuSelection(playerid, row)
+{
+	new s[256];
+	
+	if(row < TEST_MENU_ITEMS) {
+		format(s,256,"You selected item %s",TestMenuStrings[row]);
+		SendClientMessage(playerid,0xFFFFFFFF,s);
+	}
+}
+
+InitTestMenu()
+{
+	TestMenu = CreateMenu("Test Menu", 1, 200.0, 150.0, 200.0, 200.0);
+
+	for(new x=0; x < TEST_MENU_ITEMS; x++) {
+    	AddMenuItem(TestMenu, 0, TestMenuStrings[x]);
+	}
+}
+
+public OnFilterScriptInit()
+{
+   	InitTestMenu();
+}
+
+public OnPlayerSelectedMenuRow(playerid, row)
+{
+    new Menu:PlayerMenu = GetPlayerMenu(playerid);
+    
+	if(PlayerMenu == TestMenu) {
+	    HandleTestMenuSelection(playerid, row);
+	}
+}
+
+public OnPlayerCommandText(playerid, cmdtext[])
+{
+	if(!strcmp(cmdtext, "/menutest", true))	{
+    	ShowMenuForPlayer(TestMenu, playerid);
+    	return 1;
+	}
+	return 0;
+}
+
+
+

BIN
Texture-Studio-master/filterscripts/npc_record.amx


+ 75 - 0
Texture-Studio-master/filterscripts/npc_record.pwn

@@ -0,0 +1,75 @@
+//-------------------------------------------------
+//
+//  Recording player data for NPC playback
+//  Kye 2009
+//
+//-------------------------------------------------
+
+#pragma tabsize 0
+
+#include <a_samp>
+#include <core>
+#include <float>
+
+#include "../include/gl_common.inc"
+
+//-------------------------------------------------
+
+public OnPlayerCommandText(playerid, cmdtext[])
+{
+	new cmd[256];
+	new idx;
+	cmd = strtok(cmdtext, idx);
+	
+	if(!IsPlayerAdmin(playerid)) return 0; // this is an admin only script
+	
+	// Start recording vehicle data (/vrecord recording_name[])
+	// Find the recording_name[] file in /scriptfiles/
+ 	if(strcmp(cmd, "/vrecord", true) == 0) {
+	    new tmp[512];
+      	tmp = strtok(cmdtext, idx);
+		if(!strlen(tmp)) {
+			SendClientMessage(playerid,0xFF0000FF,"Usage: /vrecord {name}");
+			return 1;
+		}
+		if(!IsPlayerInAnyVehicle(playerid)) {
+            SendClientMessage(playerid,0xFF0000FF,"Recording: Get in a vehicle.");
+			return 1;
+		}
+		StartRecordingPlayerData(playerid,PLAYER_RECORDING_TYPE_DRIVER,tmp);
+		SendClientMessage(playerid,0xFF0000FF,"Recording: started.");
+		return 1;
+	}
+
+	// Start recording onfoot data (/ofrecord recording_name[])
+	// Find the recording_name[] file in /scriptfiles/
+ 	if(strcmp(cmd, "/ofrecord", true) == 0) {
+	    new tmp[512];
+      	tmp = strtok(cmdtext, idx);
+		if(!strlen(tmp)) {
+			SendClientMessage(playerid,0xFF0000FF,"Usage: /ofrecord {name}");
+			return 1;
+		}
+ 		if(IsPlayerInAnyVehicle(playerid)) {
+            SendClientMessage(playerid,0xFF0000FF,"Recording: Leave the vehicle and reuse the command.");
+			return 1;
+		}
+		StartRecordingPlayerData(playerid,PLAYER_RECORDING_TYPE_ONFOOT,tmp);
+		SendClientMessage(playerid,0xFF0000FF,"Recording: started.");
+		return 1;
+	}
+	
+	// Stop recording any data
+	if(strcmp(cmd, "/stoprecord", true) == 0) {
+		StopRecordingPlayerData(playerid);
+		SendClientMessage(playerid,0xFF0000FF,"Recording: stopped.");
+		return 1;
+	}
+
+	return 0;
+}
+
+//-------------------------------------------------
+// EOF
+
+

BIN
Texture-Studio-master/filterscripts/test_cmds.amx


+ 495 - 0
Texture-Studio-master/filterscripts/test_cmds.pwn

@@ -0,0 +1,495 @@
+//-------------------------------------------------
+//
+//  SA-MP 0.3 commands for testing
+//  Don't load this script on a public server
+//  it could break your existing scripts.
+//  Kye 2009
+//
+//-------------------------------------------------
+
+#pragma tabsize 0
+
+#include <a_samp>
+#include <core>
+#include <float>
+
+#include "../include/gl_common.inc"
+
+new Text3D:textid;
+new PlayerText3D:playertextid;
+
+new savanna=0;
+new blade=0;
+
+//-------------------------------------------------
+
+public OnPlayerCommandText(playerid, cmdtext[])
+{
+	new cmd[256];
+	new idx;
+	cmd = strtok(cmdtext, idx);
+	
+	if(!IsPlayerAdmin(playerid)) return 0; // this is an admin only script
+
+	if(strcmp(cmd, "/player2v", true) == 0)
+	{
+  		new tmp[256];
+	  	new tmp2[256];
+		tmp = strtok(cmdtext,idx);
+		tmp2 = strtok(cmdtext,idx);
+		PutPlayerInVehicle(strval(tmp),strval(tmp2),0);
+	    return 1;
+	}
+
+	if(strcmp( cmd, "/vehicle", true ) == 0 )
+	{
+		new Float:X, Float:Y, Float:Z;
+		new tmp[256];
+		new created_vehicle_id;
+		tmp = strtok( cmdtext, idx );
+
+		GetPlayerPos( playerid, X, Y, Z );
+
+		created_vehicle_id = CreateVehicle( strval(tmp), X+2, Y+2, Z, 0, 0, 0, -1 );
+
+		new msg[256];
+		format(msg,256,"Created vehicle: %d",created_vehicle_id);
+		SendClientMessage(playerid,0xAAAAAAAA,msg);
+
+		return 1;
+	}
+
+	if(strcmp( cmd, "/dvehicle", true ) == 0 )
+	{
+		new tmp[256];
+		tmp = strtok( cmdtext, idx );
+
+		DestroyVehicle( strval(tmp) );
+
+		new msg[256];
+		format(msg,256,"Destroyed vehicle: %d",strval(tmp));
+		SendClientMessage(playerid,0xAAAAAAAA,msg);
+
+		return 1;
+	}
+
+	if ( strcmp( cmd, "/goto", true ) == 0 )
+	{
+	    new tmp[256];
+
+	    tmp = strtok( cmdtext, idx );
+
+	    if ( !strlen( tmp ) ) { return 1; }
+
+	    new Float:X, Float:Y, Float:Z;
+
+	    if ( GetPlayerVehicleID( playerid ) )
+	    {
+		    GetPlayerPos( strval(tmp), X, Y, Z );
+		    SetVehiclePos( GetPlayerVehicleID(playerid), X+2, Y+2, Z );
+	    } else {
+		    GetPlayerPos( strval(tmp), X, Y, Z );
+		    SetPlayerPos( playerid, X+2, Y+2, Z );
+	    }
+
+	    return 1;
+	}
+
+	if ( strcmp( cmd, "/bring", true ) == 0 )
+	{
+	    new tmp[256];
+
+	    tmp = strtok( cmdtext, idx );
+
+	    if ( !strlen( tmp ) ) { return 1; }
+
+	    new Float:X, Float:Y, Float:Z;
+
+	    if ( GetPlayerVehicleID( strval(tmp) ) )
+	    {
+		    GetPlayerPos( playerid, X, Y, Z );
+		    SetVehiclePos( GetPlayerVehicleID(strval(tmp)), X+2, Y+2, Z );
+	    } else {
+		    GetPlayerPos( playerid, X, Y, Z );
+		    SetPlayerPos( strval(tmp), X+2, Y+2, Z );
+	    }
+
+	    return 1;
+	}
+
+	if (strcmp(cmd, "/me2v", true) == 0)
+	{
+	  	new tmp[256];
+		tmp = strtok(cmdtext,idx);
+		PutPlayerInVehicle(playerid,strval(tmp),0);
+	    return 1;
+	}
+
+	if (strcmp(cmd, "/tpzero", true) == 0)
+	{
+	  	new vid = GetPlayerVehicleID(playerid);
+	  	if(vid != INVALID_VEHICLE_ID) {
+			SetVehiclePos(vid,0.0,0.0,10.0);
+		}
+	    return 1;
+	}
+
+	if(strcmp(cmd, "/myvw", true) == 0)
+	{
+        new tmp[256];
+		tmp = strtok(cmdtext,idx);
+		SetPlayerVirtualWorld(playerid,strval(tmp));
+	    return 1;
+	}
+
+	if(strcmp( cmd, "/fight", true ) == 0)
+	{
+		new tmp[256];
+		new name[128];
+
+		tmp = strtok(cmdtext, idx);
+		new style = strval(tmp);
+		SetPlayerFightingStyle(playerid, style);
+		GetPlayerName(playerid,name,128);
+		format(tmp, 256, "(%s) fighting style changed to %d", name, style);
+		SendClientMessageToAll(0x4499CCFF,tmp);
+		return 1;
+	}
+
+	if(strcmp( cmd, "/myfacingangle", true ) == 0)
+	{
+	    new Float:angle;
+	    new tmp[256];
+	    GetPlayerFacingAngle(playerid,angle);
+		format(tmp, 256, "Facing: %f",angle);
+		SendClientMessage(playerid,0x4499CCFF,tmp);
+		return 1;
+	}
+
+	if(strcmp(cmd, "/crime", true) == 0) {
+	    new tmp[256];
+	  	new tmp2[256];
+		tmp = strtok(cmdtext,idx);
+		tmp2 = strtok(cmdtext,idx);
+		PlayCrimeReportForPlayer(playerid, strval(tmp), strval(tmp2));
+		return 1;
+	}
+
+	if(strcmp(cmd, "/repairmycar", true) == 0) {
+	    new vid = GetPlayerVehicleID(playerid);
+	    if (vid) RepairVehicle(vid);
+		return 1;
+	}
+
+    if(strcmp(cmd, "/bv", true) == 0)
+	{
+		new tmp[128], iCar, string[128];
+
+		tmp = strtok(cmdtext, idx);
+
+		if(strlen(tmp) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "DO: /bv [vehicleid]");
+
+		iCar = strval(tmp);
+
+		new File:file = fopen("badvehicles.txt",io_append);
+		format(string,sizeof(string),"%d\r\n", iCar);
+		fwrite(file,string);
+		fclose(file);
+
+		GetPlayerName(playerid,tmp,128);
+		format(string, sizeof(string), "Veh ID %i marked as bad vehicle by %s", iCar, tmp);
+		SendClientMessageToAll(0xFFFFFFFF, string);
+		return 1;
+	}
+
+	if(strcmp(cmd, "/weapskill", true) == 0) {
+	    new tmp[256];
+	  	new tmp2[256];
+		tmp = strtok(cmdtext,idx);
+		tmp2 = strtok(cmdtext,idx);
+		SetPlayerSkillLevel(playerid, strval(tmp), strval(tmp2));
+		return 1;
+	}
+
+	if(strcmp(cmd, "/labelonvehicle", true) == 0) {
+	    new vid = GetPlayerVehicleID(playerid);
+	    textid = Create3DTextLabel("My Vehicle\nOwned by me\nNo Fuel\nRunning on vapour",0xEEEEEE50,0.0,0.0,0.0,15.0,0);
+	    Attach3DTextLabelToVehicle(textid, vid, 0.0, -1.6, -0.35); // tail of the vehicle toward the ground
+		return 1;
+	}
+
+	if(strcmp(cmd, "/labelonplayer", true) == 0) {
+		new tmp[256];
+		tmp = strtok(cmdtext,idx);
+ 		textid = Create3DTextLabel("Player Label",0xFFFFFFFF,0.0,0.0,0.0,40.0,0);
+	    Attach3DTextLabelToPlayer(textid, strval(tmp), 0.0, 0.0, -0.4);
+		return 1;
+	}
+
+    if(strcmp(cmd, "/dellabel", true) == 0) {
+	    Delete3DTextLabel(textid);
+		return 1;
+	}
+
+	if(strcmp(cmd, "/playerlabel", true) == 0) {
+	    new Float:X, Float:Y, Float:Z;
+	    GetPlayerPos( playerid, X, Y, Z );
+	    playertextid = CreatePlayer3DTextLabel(playerid,"Hello\nI'm at your position",0x008080FF,X,Y,Z,40.0);
+		return 1;
+	}
+
+	if(strcmp(cmd, "/playerlabelveh", true) == 0) {
+	    new vid = GetPlayerVehicleID(playerid);
+	    playertextid = CreatePlayer3DTextLabel(playerid,"im in your vehicles\nand hiding behind the walls",0x008080FF,0.0,-1.6,-0.35,20.0,INVALID_PLAYER_ID,vid,1);
+		return 1;
+	}
+
+	if(strcmp(cmd, "/playerlabelpl", true) == 0) {
+	    new tmp[256];
+		tmp = strtok(cmdtext,idx);
+	    playertextid = CreatePlayer3DTextLabel(playerid,"Hello Testing",0x008080FF,0.0,0.0,0.0,30.0,strval(tmp));
+		return 1;
+	}
+
+    if(strcmp(cmd, "/delplayerlabel", true) == 0) {
+	    DeletePlayer3DTextLabel(playerid, playertextid);
+		return 1;
+	}
+
+	if(strcmp(cmd, "/updateplayerlabel", true) == 0) {
+	    UpdatePlayer3DTextLabelText(playerid, playertextid, 0xFFFFFFFF, "");
+		return 1;
+	}
+
+	if(strcmp(cmd, "/carmodtest", true) == 0) {
+	    // spawns a couple of cars in Grove with mods applied
+	   	savanna = CreateVehicle(567,2509.1343,-1686.2330,13.2296,47.3679,16,16,10000);
+		AddVehicleComponent(savanna,1189); //Front Bumper
+		AddVehicleComponent(savanna,1187); //Rear Bumper
+		AddVehicleComponent(savanna,1129); //Exhaust
+		AddVehicleComponent(savanna,1102); //Left Side Skirt
+		AddVehicleComponent(savanna,1133); //Right Side Skirt
+		AddVehicleComponent(savanna,1078); //Wheels
+		AddVehicleComponent(savanna,1010); //Nitro 10x
+		AddVehicleComponent(savanna,1087); //Hydrolics
+
+		blade = CreateVehicle(536,2509.8462,-1671.8666,13.1510,348.3512,16,16,10000);
+		AddVehicleComponent(blade,1182); //Front Bumper
+		AddVehicleComponent(blade,1184); //Rear Bumper
+		AddVehicleComponent(blade,1104); //Exhaust
+		AddVehicleComponent(blade,1108); //Left Side Skirt
+		AddVehicleComponent(blade,1107); //Right Side Skirt
+		AddVehicleComponent(blade,1078); //Wheels
+		AddVehicleComponent(blade,1010); //Nitro 10x
+		AddVehicleComponent(blade,1087); //Hydrolics
+  		return 1;
+	}
+
+	if(strcmp(cmd, "/addnitro", true) == 0) {
+	    new vid = GetPlayerVehicleID(playerid);
+	    AddVehicleComponent(vid, 1010);
+	    return 1;
+	}
+
+
+	if(strcmp(cmd, "/remnitro", true) == 0) {
+        new vid = GetPlayerVehicleID(playerid);
+	    RemoveVehicleComponent(vid, 1010);
+	    return 1;
+	}
+
+	if(strcmp(cmd, "/paintjob", true) == 0) {
+	    new tmp[256];
+		tmp = strtok(cmdtext,idx);
+	    new vid = GetPlayerVehicleID(playerid);
+		ChangeVehiclePaintjob(vid,strval(tmp));
+		return 1;
+	}
+
+	if(strcmp(cmd, "/longtd", true) == 0) {
+  		new st4[256];
+  		new st5[256];
+		new st6[256];
+		new st7[1024];
+
+		format(st4,sizeof(st4),"0123456789012345678901234567890123456789~n~012345678901234567890123456789~n~01234567890123456789~n~0123456789~n~0123456789012345678901234567890123456789~n~01234567890123456789~n~01234567890123456789~n~01234567890123456789~n~");
+		format(st5,sizeof(st5),"0123456789012345678901234567890123456789~n~012345678901234567890123456789~n~01234567890123456789~n~0123456789~n~0123456789012345678901234567890123456789~n~01234567890123456789~n~01234567890123456789~n~01234567890123456789~n~");
+		format(st6,sizeof(st6),"0123456789012345678901234567890123456789~n~012345678901234567890123456789~n~01234567890123456789~n~0123456789~n~0123456789012345678901234567890123456789~n~01234567890123456789~n~01234567890123456789~n~01234567890123456789");
+		format(st7,sizeof(st7),"%s %s %s~n~LEN(%d)",st4,st5,st6,strlen(st4)+strlen(st5)+strlen(st6));
+
+        new Text:Stats = TextDrawCreate(10.0, 10.0, st7);
+		TextDrawTextSize(Stats, 400.0, 400.0);
+		TextDrawUseBox(Stats,0);
+		TextDrawBoxColor(Stats,0xFFFFFFFF);
+		TextDrawFont(Stats,1);
+		TextDrawLetterSize(Stats,0.5,0.5);
+		TextDrawShowForPlayer(playerid,Stats);
+		return 1;
+	}
+	
+	if(strcmp(cmd, "/testmsgbox", true) == 0) {
+		ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Welcome","Welcome to the SA-MP 0.3 server. This is test_cmds.pwn /testmsgbox\nHope it's useful to you.","OK","Cancel");
+        return 1;
+	}
+	
+	if(strcmp(cmd, "/testmsgbox2", true) == 0) {
+		ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Welcome","Welcome:\tInfo\nTest:\t\tTabulated\nLine:\t\tHello","OK","Cancel");
+        return 1;
+	}
+
+	if(strcmp(cmd, "/testinputbox", true) == 0) {
+	    new loginmsg[256+1];
+	    new loginname[MAX_PLAYER_NAME+1];
+	    GetPlayerName(playerid,loginname,MAX_PLAYER_NAME);
+	    format(loginmsg,256,"Welcome to the SA-MP 0.3 server.\n\nAccount:\t%s\n\nPlease enter your password below:",loginname);
+		ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Login to SA-MP",loginmsg,"Login","Cancel");
+        return 1;
+	}
+	
+	if(strcmp(cmd, "/testlistbox", true) == 0) {
+	    new listitems[] = "1\tDeagle\n2\tSawnoff\n3\tPistol\n4\tGrenade\n5\tParachute\n6\tLorikeet";
+	    ShowPlayerDialog(playerid,2,DIALOG_STYLE_LIST,"List of weapons:",listitems,"Select","Cancel");
+        return 1;
+	}
+	
+    if(strcmp(cmd, "/testclosebox", true) == 0) {
+	    ShowPlayerDialog(playerid,-1,0,"","","","");
+        return 1;
+	}
+
+    if(strcmp(cmd, "/setfacingzero", true) == 0) {
+	    SetPlayerFacingAngle(playerid, 0.0);
+        return 1;
+	}
+
+    if(strcmp(cmd, "/detachtrailer", true) == 0) {
+        new vid = GetPlayerVehicleID(playerid);
+	    DetachTrailerFromVehicle(vid);
+        return 1;
+	}
+	
+	if(strcmp(cmd, "/testformat", true) == 0) {
+	    new strtest[256];
+	    new File:f = fopen("test.txt",io_write);
+	    format(strtest,256,"[chat] %d %s\r\n",24,"þÿÿþ");
+	    SendClientMessage(playerid,0xFFFFFFFF,strtest);
+	    fwrite(f,strtest);
+	    format(strtest,256,"[chat] %d %s\r\n",34," þÿÿþ");
+	    SendClientMessage(playerid,0xFFFFFFFF,strtest);
+	    fwrite(f,strtest);
+	    fclose(f);
+	    return 1;
+	}
+
+	if(strcmp(cmd, "/setskin", true) == 0) {
+        new tmp[256];
+		tmp = strtok(cmdtext,idx);
+		SetPlayerSkin(playerid,strval(tmp));
+	    return 1;
+	}
+
+	return 0;
+}
+
+//-------------------------------------------
+// Test reapplying vehicle mods on respawn
+
+public OnVehicleSpawn(vehicleid)
+{
+	if(vehicleid == savanna) {
+	    AddVehicleComponent(savanna,1189); //Front Bumper
+		AddVehicleComponent(savanna,1187); //Rear Bumper
+		AddVehicleComponent(savanna,1129); //Exhaust
+		AddVehicleComponent(savanna,1102); //Left Side Skirt
+		AddVehicleComponent(savanna,1133); //Right Side Skirt
+		AddVehicleComponent(savanna,1078); //Wheels
+		AddVehicleComponent(savanna,1010); //Nitro 10x
+		AddVehicleComponent(savanna,1087); //Hydrolics
+	}
+	else if(vehicleid == blade) {
+	    AddVehicleComponent(blade,1182); //Front Bumper
+		AddVehicleComponent(blade,1184); //Rear Bumper
+		AddVehicleComponent(blade,1104); //Exhaust
+		AddVehicleComponent(blade,1108); //Left Side Skirt
+		AddVehicleComponent(blade,1107); //Right Side Skirt
+		AddVehicleComponent(blade,1078); //Wheels
+		AddVehicleComponent(blade,1010); //Nitro 10x
+		AddVehicleComponent(blade,1087); //Hydrolics
+	}
+}
+
+//-------------------------------------------
+// Example of handling dialog responses.
+
+public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
+{
+    if(!IsPlayerAdmin(playerid)) return 0; // this is an admin only script
+    
+	if(dialogid == 0) { // Our example msgbox
+		if(response) {
+		    SendClientMessage(playerid,0xFFFFFFFF,"You selected OK");
+		} else {
+		    SendClientMessage(playerid,0xFFFFFFFF,"You selected Cancel");
+		}
+		return 1; // we processed this. no need for other filterscripts to process it.
+	}
+	
+	if(dialogid == 1) { // Our example inputbox
+		if(response) {
+			new message[256+1];
+			format(message, 256, "You replied: %s", inputtext);
+		    SendClientMessage(playerid, 0xFFFFFFFF, message);
+		} else {
+		    SendClientMessage(playerid, 0xFFFFFFFF, "You selected Cancel");
+		}
+		return 1; // we processed it.
+	}
+	
+	if(dialogid == 2) { // Our example listbox
+		if(response) {
+			new message[256+1];
+			if(listitem != 5) {
+				format(message, 256, "You selected item %d:", listitem);
+		    	SendClientMessage(playerid, 0xFFFFFFFF, message);
+		    	SendClientMessage(playerid, 0xFFFFFFFF, inputtext);
+			} else {
+			    SendClientMessage(playerid, 0x5555FFFF, "A Lorikeet is NOT a weapon!");
+			}
+		} else {
+		    SendClientMessage(playerid, 0xFFFFFFFF, "You selected Cancel");
+		}
+		return 1; // we processed it.
+	}
+	
+	return 0; // we didn't handle anything.
+}
+
+//-------------------------------------------
+// Example of handling scoreboard click.
+
+public OnPlayerClickPlayer(playerid, clickedplayerid, source)
+{
+	if(!IsPlayerAdmin(playerid)) return 0; // this is an admin only script
+	
+    new message[256+1];
+	format(message, 256, "You clicked on player %d", clickedplayerid);
+	SendClientMessage(playerid, 0xFFFFFFFF, message);
+	return 1;
+}
+
+//-------------------------------------------
+/*
+public OnEnterExitModShop(playerid, enterexit, interiorid)
+{
+    new message[256+1];
+    if(enterexit) {
+		format(message, 256, "You entered modshop at interior %d", interiorid);
+		SendClientMessage(playerid, 0xFFFFFFFF, message);
+	} else {
+	   	format(message, 256, "You exited the modshop");
+		SendClientMessage(playerid, 0xFFFFFFFF, message);
+	}
+	return 1;
+}
+*/
+//-------------------------------------------

BIN
Texture-Studio-master/filterscripts/tstudio.amx


+ 642 - 0
Texture-Studio-master/filterscripts/tstudio.pwn

@@ -0,0 +1,642 @@
+/*
+		A
+            ....
+            ,DDDDDD      ..DDDDDDD=...        . .......
+            DDDDDDD     .DDDDDDDDDDDD.        .~DDDD8:.
+         ..DD.DDDDD     DDDDDDZ.7DDDDD8.   .7DDDDDDDDDDD.
+    .. ..,DD..DDDDD....=DDDDDD...DDDDDD....DDDDDDDD.DDDDD..
+      =.DDDD...DDD,D...DDDDDDD...DDDDDD...8DDDD$..8.ODDDD  .
+    ...Z.~8I..,D:.I.. .DDDDDD8...DDDDDD...DDDD...D,..8DDD8D.
+  ...+DD...D. D...D..     .....D8DDDDDD..DDDD..O,D  .DDD.+..
+  .,DDDDD..=. =..D+8O     .=DDDDDDDDDD...D8DD. .O$  .D...D..
+..DDDD7..~+.~$.8...DD   .:D.ODDDDDD8..  .DDDD8...8..D,...D~.
+DDDDDDDD=...~,...I8DD.DODDZ..8DD.,..     DDO88D........ID8D~
+DDDDDDDDDDID~DDDDDDDD.O.,D8..$..?...     DD8Z...8.Z:,?...7I.
++DDDDDDDDDDDDDDDDDDDD..Z..Z..8 .DDDDDDDD.8DDD88,=?:~..~?DD..
+.DDDDDDDDDDDDDDDDDDDD+ZD7.....+Z,+DDDDD+..DDDDD7$D$8?DDDD:..
+.DDDDDDDD8ZZZ8DDDDD8D.8.....+Z..=DDDDDD...DDDDDDDDDDDDDDD...
+ ...        .DDDDDD  ..DDDDI?8DDDDDDDDD....DDDDDDDDDDDDZ.
+            .8DDDDD....DD8DO$Z??$$ODDDD.   .?DDDDDDDDD.
+            ........................  ..   ............
+										Production
+
+ _______        _                     _____ _             _ _
+|__   __|      | |                   / ____| |           | (_)
+   | | _____  _| |_ _   _ _ __ ___  | (___ | |_ _   _  __| |_  ___
+   | |/ _ \ \/ / __| | | | '__/ _ \  \___ \| __| | | |/ _` | |/ _ \
+   | |  __/>  <| |_| |_| | | |  __/  ____) | |_| |_| | (_| | | (_) |
+   |_|\___/_/\_\\__|\__,_|_|  \___| |_____/ \__|\__,_|\__,_|_|\___/
+	Texture Studio v1.9g by [uL]Pottus and Crayder
+
+You may modify and re-release this this script if you please just rememeber the
+mule who built it!
+
+About Texture Studio:
+
+Well after releasing the texture viewer and getting back a lot of positive feedback
+I couldn't help but one up myself. The challange create a companion map editor using
+all the techniques I've learned with SA-MP scripting to create an extensible mapping
+script as fast as possible. Basically that means texture studio was built in one day
+but I of course I had some good reference code from medit and in fact this script
+works very similarily to medit but with a greatly enhanced core design.
+
+Commands: (Currently 65 commands)
+
+	Maps:
+	/loadmap - Load a map
+	/newmap - Create a new map
+	/importmap - Import CreateObject() or CreateDynamicObject() raw code
+	/export - Export a map to code or vehicle
+
+
+	Objects:
+	/cobject <objectid> - Create an object
+	/dobject - Delete your selected object
+	/robject - Resets an objects text and materials
+	/osearch - Search for a object
+	/sel <objectid> - Select a object id index
+	/csel - Use the mouse to select an object
+	/lsel - Use a list / preview to display objects
+	/flymode - Enter flymode
+	/ogoto - Goto your selected object (must be in flymode)
+	/pivot - Set a pivot position to rotate objects around
+	/togpivot - Turn on/off pivot rotation
+	/oprop - Object property editor
+	
+	Movement:
+	/editobject - Edit object mode
+	/ox - /oy - /oz - Standard movement commands
+	/rx - ry - /rz - Standard rotation commands
+	/dox - /doy - /doz - Delta move map
+	/drx - /dry - /drz - Rotate map around map center
+
+	
+	Textures/Text/Indexes/Theme:
+	/mtextures - Show a list of textures in a list
+	/ttextures - Show a list of textures in (Theme)
+	/stexture - Texture editor
+	/mtset <index> <textureref> - Set a material
+	/mtsetall <index> <textureref> - Set a material to ALL objects of the same modelid
+	/mtcolor <index> <Hex Color ARGB> - Sets a material color
+	/mtcolorall <index> <Hex Color ARGB> - Sets a material color to ALL objects of the same modelid
+	/copy - Copy object properties to buffer from currently selected object
+	/paste - Paste object properties from buffer to currently selected object
+	/clear - Clear object properties from buffer
+	/text - Open the object text editor
+	/sindex - Set text on a object will show material IDs
+	/rindex - Removes material indexes shown on an object
+	/loadtheme - Load a texture theme
+	/savetheme - Saves a texture theme
+	/deletetheme - Delete a texture theme
+	/tsearch - Find a texture by part of name
+
+	Groups/Prefabs:
+	/setgroup - Sets a group id for a group objects
+	/selectgroup - Select a group of objects to edit
+	/gsel - Open up click select to add/remove objects from your group
+	/gadd - Add an object to your group useful for objects that cannot be clicked on
+	/grem - Remove a specific object from your group
+	/gclear - Clear your group selection
+	/gclone - Clone your group selection
+	/gdelete - Delete all objects in your group
+	/editgroup - Start editing a group
+	/gox - /goy - /goz - Stardard group movement commands
+	/gox - /goy - /goz - Stardard group rotation commands
+	/gaexport - Exports a group of objects to a attached object FS (Not yet completed)
+	/gprefab - Export a group of objects to a loadable prefab file
+	/prefabsetz - Set the load offset of a prefab file
+	/prefab <LoadName"> - Load a prefab file, /prefab will show all prefabs
+	/0group - This will move all grouped objects center to 0,0,0 useful for getting attached object offsets (Not in the GUI yet)
+
+	Vehicles:
+	/avmodcar - Mod a car it will teleport the vehicle to the correct mod garage if modable
+	/avsetspawn - Set the spawn position of a vehicle
+	/avnewcar - Create a new car
+	/avdeletecar - Delete an unwanted car
+	/avcarcolor - Set vehicle car color
+	/avpaint - Set a vehicles paintjob
+	/avattach - Attach currently selected object to currently selected vehicle
+	/avdetach - Detach currently selected object from vehicle
+	/avsel - Select a vehicle to edit
+	/avexport - Export a car to filterscript
+	/avexportall - Export all cars to filterscript
+	/avox - /avoy - /avoz - Standard vehicle object movement commands
+	/avrx - /avry - /avrz - Standard vehicle object rotation commands
+	/avmirror - Mirror currently selected object on vehicle
+	(Special note: using /editobject on an attached object will edit the object on the vehicle)
+
+	Bind Editor:
+	/bindeditor - Open the bind editor you can enter a series of commands to execute
+	/runbind <index> - Runs a bind
+	
+	Other:
+	/echo - Will echo back any text sent this is useful for autohotkey so that you can create
+	displayed output for your keybinds
+
+	
+Keycombos:
+	/csel:
+	Holding 'H' while clicking an object will copy properites to buffer
+	Holding 'Walk Key' while clicking an object will paste properties from buffer
+
+	/editgroup:
+	Hold 'Walk Key' to set the group rotation pivot you can only do this once per edit
+	
+	GUI:
+	When in fly mode to open the GUI press 'Jump Key' otherwise it can be opened by pressing 'N' Key
+
+	Texture Viewer:
+	In Fly mode instead of pressing Y/H to scroll through textures hold enter/exit vehicle and press ANALOG Left ---- ANALOG Right
+	Pressing sprint will add textures to your theme in fly mode press sprint+aim to add textures to theme in walk mode
+	Walk key will apply the selected texture to your object
+
+Change Log:
+	v1.0 - First release
+	v1.1 - Updated features
+		- Fixed a bug with OnPlayerEditDyanmicObject()
+		- Added some new commands to texture or color all like objects
+		- Added text editing support (New map files will not be compatible)
+		- Whole map movement/rotation
+		- Texture viewer is now in compiled into this FS
+	v1.2 - Added support for importing RemoveBuildingForPlayer() this will be saved to DB
+		- Can now copy/paste texture and text from one object to another
+	v1.3 - Complete GUI implementation that calls all commands
+		- Groups added you can edit group selections
+	    - Texture editor texture objects with a GUI
+	    - You can make your own texture themes
+	    - Prefabs can be saved/loaded
+	    - Texture themes can now be created "default_theme" is always loaded when a player connects
+	    - You can make your own command based binds and execute them
+	v1.4 - New command /lsel gives a new advanced object selection method
+	    - Fix a spelling mistake in the gui
+	    - Added /oprop command to directly edit all object properties
+	    - Map exporting now has a option for CreateDynamicObject() instead of CreateDynamicObjectEx()
+	v1.5 - Greatly enhanced /osearch command
+	v1.5a - Added a feature to clone in edit object mode simply press 'walk' to clone the object
+	    - You can press enter/exit vehicle to save a objects position in edit object mode
+	v1.5b - Added /obmedit command an object metric tool
+	v1.5c - Improved object metric tool to include rotation translations
+	    - Added degree option to object metric tool
+	v1.5d - Minor update to object metric tool to set object orientation for rotation translation
+	v1.5e - Important fix
+	v1.6 - Editable vehicles
+	    - A few bug fixes with texturing and overlapping key presses with other systems
+	v1.6a - New command /tsearch search for textures useful for finding the index of a known texture
+	v1.6b - Added feature to export map including cars to filterscript
+	    - New command /avmirror mirror objects on a car
+	    - Completely rebuild the all objects array some where missing it should be complete now
+	v1.6c - Text length is now 128 characters and will accept \n for new line
+	    - Fixed a issue with folders now showing on github
+	v1.6d - Fixed an issue with exporting objects if an object had text the parameters were out of order
+	    - Any object should be able to be created now there even LOD
+	    - Re-organized the project slightly
+	v1.7 - /undo command (Note you can't undo edits on vehicles currently)
+*/
+
+/*      NONE    MAJOR   MINOR   PATCH
+-  0x   00      00      00      00
+-  Major: X.00 (# 1-10)
+-  Minor: 0.X0 (# 1-10)
+-  Patch: 0.0X (Letter a-z, not A-Z)
+*/
+#define TS_VERSION (0x00010907)
+
+#define FILTERSCRIPT
+
+// Uncomment to turn on DEBUG mode
+// #define DEBUG
+
+// #define GUI_DEBUG
+
+// Compile the Angular Map Extension module
+//#define COMPILE_MANGLE
+
+// Compile the local input module for advanced keys and mouse control
+//#define COMPILE_LOCAL_INPUT
+
+#if defined DEBUG
+	#define DB_DEBUG true
+	#define DB_QUERY_ERRORS true
+#endif
+
+// Includes
+#include <a_samp>
+
+// Set max players
+#undef MAX_PLAYERS
+#define MAX_PLAYERS 10
+
+// "tsfunc" definition, to replace "stock"
+#define tsfunc
+	
+// System defines
+#define BroadcastCommand(%0,%1) CallLocalFunction("OnPlayerCommandText","is",%0,%1)
+
+// System includes
+#include <sqlitei>
+#include <formatex>
+#include <strlib>
+
+// Plugins
+#include <streamer>
+#include <filemanager>
+#include <sscanf2>
+
+// GUI System
+#include "tstudio\gui\guisys.pwn"
+
+// YSI
+#include <YSI\y_iterate>
+#include <YSI\y_inline>
+#include <YSI\y_dialog>
+#define Y_COMMANDS_NO_IPC 
+#include <YSI\y_commands>
+
+// All SA Textures
+#include "tstudio\alltextures.pwn"
+
+// Valid SA models
+#include "tstudio\validmodels.pwn"
+
+// Model sizes
+#include "tstudio\modelsizes.pwn"
+
+// Include 3D Menus (By SDraw)
+#include "tstudio\3dmenu.pwn"
+
+// Command Buffer
+#include "tstudio\cmdbuffer.pwn"
+
+// Common functions
+#include <functions>
+
+// Colors
+#define         STEALTH_GREEN          0x33DD1100
+#define         STEALTH_ORANGE         0xFF880000
+#define         STEALTH_YELLOW         0xFFFF00AA
+
+// Maximum number of objects
+#define         MAX_TEXTURE_OBJECTS         10000
+
+// Maximum number of remove buildings (Anymore than 1000 will likely crash GTA)
+#define         MAX_REMOVE_BUILDING         1000
+
+// Maximum of editable materials (16 is the limit even if set higher)
+#define         MAX_MATERIALS               16
+
+// Highlight color for an object
+#define         HIGHLIGHT_OBJECT_COLOR      0xFFFF0000
+
+// Maximum text length
+#define         MAX_TEXT_LENGTH             129
+
+// Max Groups
+#define         MAX_GROUPS                  201
+
+
+// 3D Text drawdistance
+new             Float:TEXT3D_DRAW_DIST  =   100.0;
+
+// Vehicle attach update types
+#define         VEHICLE_ATTACH_UPDATE           0
+#define         VEHICLE_REATTACH_UPDATE         1
+
+forward OnPlayerObjectSelectChange(playerid, index);
+forward OnObjectUpdatePos(playerid, index);
+forward OnUpdateGroup3DText(index);
+forward OnDeleteGroup3DText(index);
+
+// ARGB
+#define ARGB(%0,%1,%2,%3) ((((%0) & 0xFF) << 24) | (((%1) & 0xFF) << 16) | (((%2) & 0xFF) << 8) | (((%3) & 0xFF) << 0))
+
+// Edit check makes sure the player is actually editing an object before doing certain commands
+#define EditCheck(%0); if(CurrObject[%0] == -1) { \
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________"); \
+	return SendClientMessage(playerid, STEALTH_YELLOW, "You need to select an object to use this command"); }
+
+// Don't let player use command if they are editing an object
+#define NoEditingMode(%0); if(EditingMode[%0]) { \
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________"); \
+	return SendClientMessage(playerid, STEALTH_YELLOW, "You need to finish editing your object before using this command"); }
+
+// Checks if a map is open
+#define MapOpenCheck(); if(!MapOpen) { \
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________"); \
+	return SendClientMessage(playerid, STEALTH_YELLOW, "There is no map currently open"); }
+
+// Removebuilding information enum
+enum REMOVEINFO
+{
+	rModel,
+	Float:rX,
+	Float:rY,
+	Float:rZ,
+	Float:rRange,
+}
+
+// Removebuilding array
+new RemoveData[MAX_REMOVE_BUILDING][REMOVEINFO];
+
+// Object information ENUM
+enum OBJECTINFO
+{
+	oID,                                        // Object id
+#if defined COMPILE_MANGLE
+	oCAID,                                      // ColAndreas index
+#endif
+	oGroup,                                     // Object group
+	oModel,                                     // Object Model
+	Text3D:oTextID,                             // Object 3d text label
+    oNote[64],                                  // Object note
+	Float:oX,                                   // Position Z
+	Float:oY,                                   // Position Z
+	Float:oZ,                                   // Position Z
+	Float:oRX,                                  // Rotation Z
+	Float:oRY,                                  // Rotation Z
+	Float:oRZ,                                  // Rotation Z
+	oTexIndex[MAX_MATERIALS],                   // Texture index ref
+	oColorIndex[MAX_MATERIALS],                 // Material List
+	ousetext,              						// Use text
+	oFontFace,    								// Font face reference
+	oFontSize,    								// Font size reference
+	oFontBold,    								// Font bold
+	oFontColor,   								// Font color
+	oBackColor,   								// Font back color
+	oAlignment,   								// Font alignment
+	oTextFontSize, 							 	// Font text size
+	oObjectText[MAX_TEXT_LENGTH],              	// Font text
+	oAttachedVehicle,                           // Vehicle object is attached to
+    Float:oDD                                   // Draw distance
+}
+
+// Copy object material / color
+enum COPYINFO
+{
+	cTexIndex[MAX_MATERIALS],                   // Texture index ref
+	cColorIndex[MAX_MATERIALS],                 // Material List
+	cusetext,              						// Use text
+	cFontFace,    								// Font face reference
+	cFontSize,    								// Font size reference
+	cFontBold,    								// Font bold
+	cFontColor,   								// Font color
+	cBackColor,   								// Font back color
+	cAlignment,   								// Font alignment
+	cTextFontSize, 							 	// Font text size
+	cObjectText[MAX_TEXT_LENGTH],              	// Font text
+}
+
+enum XYZ { Float:xPos, Float:yPos, Float:zPos }
+enum XYZR { Float:xPos, Float:yPos, Float:zPos, Float:rxPos, Float:ryPos, Float:rzPos }
+
+// Copy buffer data
+new CopyBuffer[MAX_PLAYERS][COPYINFO];
+
+// Object information array
+new ObjectData[MAX_TEXTURE_OBJECTS][OBJECTINFO];
+
+// 3D Text Options
+enum TEXTOPTIONS
+{
+    bool:tShowText,
+    bool:tShowNote,
+    bool:tShowModel,
+    bool:tShowGroup,
+    bool:tShowGrouped,
+	bool:tAlwaysShowNew
+}
+new TextOption[TEXTOPTIONS] = {
+    true, false, false, true, true, false
+};
+
+// Map Options
+enum MAPOPTIONS
+{
+    mVersion,
+    mAuthor[MAX_PLAYER_NAME],
+    mLastEdit,
+    mSpawn[XYZ],
+    
+    mInterior,
+    mVirtualWorld
+}
+new MapSetting[MAPOPTIONS];
+
+// Sets the current object a player is editing
+new CurrObject[MAX_PLAYERS] = { -1, ... };
+
+// In edit object mode
+new bool:EditingMode[MAX_PLAYERS];
+
+// Set textdraw open
+new bool:TextDrawOpen[MAX_PLAYERS];
+
+// Current players textdraw
+new CurrTextDraw[MAX_PLAYERS];
+
+// Pivot object reference
+new PivotObject[MAX_PLAYERS];
+
+// Pivot point
+new PivotPoint[MAX_PLAYERS][XYZ];
+
+// Turns pivot point on/off
+new bool:PivotPointOn[MAX_PLAYERS];
+
+// Save the current editing position
+new Float:CurrEditPos[MAX_PLAYERS][6];
+
+// Currmode
+#define 		EDIT_MODE_NONE          0
+#define 		EDIT_MODE_OBJECT        1
+#define         EDIT_MODE_CP            2
+#define         EDIT_MODE_SELECTION     3
+#define         EDIT_MODE_TEXT          4
+#define         EDIT_MODE_GROUP         5
+#define         EDIT_MODE_PIVOT         6
+#define         EDIT_MODE_OBJECTGROUP   7
+#define         EDIT_MODE_TEXTURING     8
+#define         EDIT_MODE_LISTSEL       9
+#define         EDIT_MODE_OSEARCH       10
+#define         EDIT_MODE_OBM           11
+#define         EDIT_MODE_VOBJECT 		12
+#define         EDIT_MODE_MODCAR        13
+
+
+// Textdraw modes
+#define         TEXTDRAW_NONE    		0
+#define         TEXTDRAW_TEXTEDIT	    1
+#define         TEXTDRAW_MATERIALS      2
+#define         TEXTDRAW_LISTSEL        3
+#define         TEXTDRAW_OSEARCH        4
+
+
+// Set the players editing mode
+#define SetEditMode(%0,%1) CurrMode[%0] = %1
+
+// Get the players editing mode
+#define GetEditMode(%0) CurrMode[%0]
+
+// Toggle players textdraw open closed
+#define ToggleTextDrawOpen(%0,%1) TextDrawOpen[%0] = %1
+
+// Sets Current TD draw index
+#define SetCurrTextDraw(%0,%1) CurrTextDraw[%0] = %1
+
+// Gets Current TD draw index
+#define GetCurrTextDraw(%0) CurrTextDraw[%0]
+
+// Get the font face of a player object
+#define GetObjectUseText(%0) ObjectData[%0][ousetext]
+
+// Get the font face of a player object
+#define GetObjectFontFace(%0) ObjectData[%0][oFontFace]
+
+// Get the font size of a player object
+#define GetObjectFontSize(%0) ObjectData[%0][oFontSize]
+
+// Get the font bold of a player object
+#define GetObjectFontBold(%0) ObjectData[%0][oFontBold]
+
+// Get the font color of a player object
+#define GetObjectFontColor(%0) ObjectData[%0][oFontColor]
+
+// Get the back color of a player object
+#define GetObjectBackColor(%0) ObjectData[%0][oBackColor]
+
+// Get the alignment of a player object
+#define GetObjectAlignment(%0) ObjectData[%0][oAlignment]
+
+// Get the font size of a player object
+#define GetObjectTextFontSize(%0) ObjectData[%0][oTextFontSize]
+
+// Get the text of a player object
+#define GetObjectObjectText(%0) ObjectData[%0][oObjectText]
+
+// Set use text
+#define SetObjectUseText(%0,%1) ObjectData[%0][ousetext] = %1
+
+// Set object object text
+#define SetObjectObjectText(%0,%1) format(ObjectData[%0][oObjectText], MAX_TEXT_LENGTH, "%s", %1)
+
+// Set font face
+#define SetObjectFontFace(%0,%1) ObjectData[%0][oFontFace] = %1
+
+// Set font size
+#define SetObjectFontSize(%0,%1) ObjectData[%0][oFontSize] = %1
+
+// Set font bold
+#define SetObjectFontBold(%0,%1) ObjectData[%0][oFontBold] = %1
+
+// Set the alignment of a player object
+#define SetObjectAlignment(%0,%1) ObjectData[%0][oAlignment] = %1
+
+// Set the font size of a player object
+#define SetObjectTextFontSize(%0,%1) ObjectData[%0][oTextFontSize] = %1
+
+// Set font color
+#define SetFontColor(%0,%1) ObjectData[%0][oFontColor] = %1
+
+// Set font color
+#define SetBackColor(%0,%1) ObjectData[%0][oBackColor] = %1
+
+
+// Current mode player is in
+new CurrMode[MAX_PLAYERS];
+
+// Iterator for ObjectData
+new Iterator:Objects<MAX_TEXTURE_OBJECTS>;
+
+// System database
+new DB: SystemDB;
+
+// Database for the edit map
+new DB: EditMap;
+
+// Current map name
+new MapName[128];
+
+// Theme data
+new DB: ThemeDataDB;
+
+// Checks if a map is open
+new bool:MapOpen;
+
+// Undo module
+#include "tstudio\undo.pwn"
+
+// Webcolor list
+#include "tstudio\webcolors.pwn"
+
+// Flymode
+#include "tstudio\flymode.pwn"
+
+// Text editor module
+#include "tstudio\texteditor.pwn"
+
+// Texture viewer
+#include "tstudio\texviewer.pwn"
+
+// ===== Restriction Variables =====
+new Iterator:Restriction[MAX_GROUPS]<MAX_PLAYERS>, bool:gRestricted[MAX_GROUPS] = {false, ...};
+
+// playerid, object index (must be 0 or more than 50, if not it must be in a group with no restrictions, if not then the restriction must allow this player)
+#define CanSelectObject(%0,%1) \
+    (!(0 <= %1 < MAX_TEXTURE_OBJECTS) || (!gRestricted[ObjectData[%1][oGroup]] || !(0 < ObjectData[%1][oGroup] < MAX_GROUPS) || !Iter_Count(Restriction[ObjectData[%1][oGroup]]) || Iter_Contains(Restriction[ObjectData[%1][oGroup]], playerid) || IsPlayerAdmin(playerid)))
+// playerid, group index (it must be a group with no restrictions, if not then the restriction must allow this player)
+#define CanSelectGroup(%0,%1) \
+    (!(0 < %1 < MAX_GROUPS) || (!gRestricted[%1] || !Iter_Count(Restriction[%1]) || Iter_Contains(Restriction[%1], playerid) || IsPlayerAdmin(playerid)))
+    //not in this ? then safely test these
+// ===== Not a very good modular technique... =====
+    
+// Group editing
+#include "tstudio\groups.pwn"
+
+// RCON Restrictor
+#include "tstudio\restrict.pwn"
+
+// List selection
+#include "tstudio\listsel.pwn"
+
+// Object property editor/viewer
+#include "tstudio\propeditor.pwn"
+
+// Object search
+#include "tstudio\osearch.pwn"
+
+// Objectmetry module
+#include "tstudio\objm.pwn"
+#include "tstudio\obmedit.pwn"
+
+// GTA objects module
+#include "tstudio\gtaobjects.pwn"
+
+// Local input module
+#if defined COMPILE_LOCAL_INPUT
+	#include "tstudio\localinput.pwn"
+#endif
+
+// Vehicles
+#include "tstudio\vehiclecolors.pwn"
+#include "tstudio\vehicles.pwn"
+
+// Special includes
+#if defined COMPILE_MANGLE
+	#include "tstudio\mangle.pwn"
+#endif
+
+// Menu GUI
+#include "tstudio\menugui.pwn"
+
+// Help Command
+#include "tstudio\helpcmd.pwn"
+
+// Main system
+#include "tstudio\tsmain.pwn"
+
+// SA-MP Introspect by Slice and Y_Less, automatically included with debug mode.
+#if debug > 1
+	#define AMX_NAME "tstudio.amx"
+	#include <interpreter>
+	
+	#include "tstudio\debugging.pwn"
+#endif

+ 311 - 0
Texture-Studio-master/filterscripts/tstudio/3dmenu.pwn

@@ -0,0 +1,311 @@
+//3DMenu. Author: SDraw
+//Original posts are on forum.sa-mp.com, pawno.ru
+/* Fake natives. Thanks to TheArcher.
+native Create3DMenu(Float:x,Float:y,Float:z,Float:rotation,boxes,playerid);
+native SetBoxText(MenuID,box,text[],materialsize,fontface[],fontsize,bold,fontcolor,selectcolor,unselectcolor,textalignment);
+native Select3DMenu(playerid,MenuID);
+native CancelSelect3DMenu(playerid);
+native Destroy3DMenu(MenuID);
+*/
+
+
+#define INVALID_3DMENU  (0xFFFF)
+
+#define MAX_3DMENUS (MAX_PLAYERS)
+#define MAX_BOXES (16)
+
+new SelectedMenu[MAX_PLAYERS] = { -1, ...};
+new SelectedBox[MAX_PLAYERS];
+
+enum MenuParams
+{
+	Float:MenuRotation,
+	Boxes,
+	bool:IsExist,
+	Objects[MAX_BOXES],
+	Float:OrigPosX[MAX_BOXES],
+	Float:OrigPosY[MAX_BOXES],
+	Float:OrigPosZ[MAX_BOXES],
+	Float:AddingX,
+	Float:AddingY,
+	SelectColor[MAX_BOXES],
+	UnselectColor[MAX_BOXES],
+	Player
+}
+
+new MenuInfo[MAX_3DMENUS][MenuParams];
+
+//Callbacks
+forward OnPlayerSelect3DMenuBox(playerid,MenuID,boxid);
+forward OnPlayerChange3DMenuBox(playerid,MenuID,boxid);
+
+// Create a new menu
+tsfunc Create3DMenu(playerid,Float:x,Float:y,Float:z,Float:rotation,boxes)
+{
+	// Make sure box is in range
+	if(boxes > MAX_BOXES || boxes <= 0) return -1;
+
+	// Create 3D Menu
+	for(new i = 0; i < MAX_3DMENUS; i++)
+	{
+		// Menu exists continue
+	    if(MenuInfo[i][IsExist]) continue;
+
+     	new Float:NextLineX,Float:NextLineY;
+      	new lineindx,binc;
+
+       	MenuInfo[i][MenuRotation] = rotation;
+		MenuInfo[i][Boxes] = boxes;
+		MenuInfo[i][AddingX] = 0.25*floatsin(rotation,degrees);
+		MenuInfo[i][AddingY] = -floatcos(rotation,degrees)*0.25;
+
+		NextLineX = floatcos(rotation,degrees)+0.05*floatcos(rotation,degrees);
+		NextLineY = floatsin(rotation,degrees)+0.05*floatsin(rotation,degrees);
+
+		// Create menu objects
+		for(new b = 0; b < boxes; b++)
+		{
+  			if(b%4 == 0 && b != 0) lineindx++,binc+=4;
+   			MenuInfo[i][Objects][b] = CreateDynamicObject(2661,x+NextLineX*lineindx,y+NextLineY*lineindx,z+1.65-0.55*(b-binc),0,0,rotation,-1,-1,playerid,100.0);
+      		GetDynamicObjectPos(MenuInfo[i][Objects][b],MenuInfo[i][OrigPosX][b],MenuInfo[i][OrigPosY][b],MenuInfo[i][OrigPosZ][b]);
+		}
+		MenuInfo[i][IsExist] = true;
+		MenuInfo[i][Player] = playerid;
+		Streamer_Update(playerid);
+		return i;
+	}
+	return -1;
+}
+
+tsfunc SetBoxMaterial(MenuID,box,index,model,txd[],texture[], selectcolor, unselectcolor)
+{
+	if(!MenuInfo[MenuID][IsExist]) return -1;
+	if(box == MenuInfo[MenuID][Boxes] || box < 0) return -1;
+	if(MenuInfo[MenuID][Objects][box] == INVALID_OBJECT_ID) return -1;
+	MenuInfo[MenuID][SelectColor][box] = selectcolor;
+	MenuInfo[MenuID][UnselectColor][box] = unselectcolor;
+	if(SelectedBox[MenuInfo[MenuID][Player]] == box) SetDynamicObjectMaterial(MenuInfo[MenuID][Objects][box], index, model, txd, texture, selectcolor);
+	else SetDynamicObjectMaterial(MenuInfo[MenuID][Objects][box], index, model, txd, texture, unselectcolor);
+	return 1;
+}
+
+tsfunc Select3DMenu(playerid,MenuID)
+{
+	if(!IsPlayerConnected(playerid)) return -1;
+	if(!MenuInfo[MenuID][IsExist]) return -1;
+	if(MenuInfo[MenuID][Player] != playerid) return -1;
+	if(SelectedMenu[playerid] != -1) CancelSelect3DMenu(playerid);
+
+	SelectedMenu[playerid] = MenuID;
+
+	Select3DMenuBox(playerid, MenuID, 0);
+	
+	return 1;
+}
+
+public OnFilterScriptInit()
+{
+	for(new i = 0; i < MAX_3DMENUS; i++)
+	{
+	    for(new b = 0; b < MAX_BOXES; b++) MenuInfo[i][Objects][b] = INVALID_OBJECT_ID;
+	    MenuInfo[i][Boxes] = 0;
+	    MenuInfo[i][IsExist] = false;
+	    MenuInfo[i][AddingX] = 0.0;
+ 	    MenuInfo[i][AddingY] = 0.0;
+ 	    MenuInfo[i][Player] = -1;
+	}
+
+	#if defined TM_OnFilterScriptInit
+		TM_OnFilterScriptInit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptInit
+	#undef OnFilterScriptInit
+#else
+	#define _ALS_OnFilterScriptInit
+#endif
+#define OnFilterScriptInit TM_OnFilterScriptInit
+#if defined TM_OnFilterScriptInit
+	forward TM_OnFilterScriptInit();
+#endif
+
+public OnFilterScriptExit()
+{
+	for(new i = 0; i < MAX_3DMENUS; i++)
+	{
+		if(MenuInfo[i][IsExist]) Destroy3DMenu(i);
+	}
+
+	#if defined TM_OnFilterScriptExit
+		TM_OnFilterScriptExit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptExit
+	#undef OnFilterScriptExit
+#else
+	#define _ALS_OnFilterScriptExit
+#endif
+#define OnFilterScriptExit TM_OnFilterScriptExit
+#if defined TM_OnFilterScriptExit
+	forward TM_OnFilterScriptExit();
+#endif
+
+public OnPlayerConnect(playerid)
+{
+    SelectedMenu[playerid] = -1;
+	SelectedBox[playerid] = -1;
+
+	#if defined TM_OnPlayerConnect
+		TM_OnPlayerConnect(playerid);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerConnect
+	#undef OnPlayerConnect
+#else
+	#define _ALS_OnPlayerConnect
+#endif
+#define OnPlayerConnect TM_OnPlayerConnect
+#if defined TM_OnPlayerConnect
+	forward TM_OnPlayerConnect(playerid);
+#endif
+
+public OnPlayerDisconnect(playerid,reason)
+{
+    if(SelectedMenu[playerid] != -1) CancelSelect3DMenu(playerid);
+
+	#if defined TM_OnPlayerDisconnect
+		TM_OnPlayerDisconnect(playerid,reason);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerDisconnect
+	#undef OnPlayerDisconnect
+#else
+	#define _ALS_OnPlayerDisconnect
+#endif
+#define OnPlayerDisconnect TM_OnPlayerDisconnect
+#if defined TM_OnPlayerDisconnect
+	forward TM_OnPlayerDisconnect(playerid,reason);
+#endif
+
+
+OnPlayerKeyStateChange3DMenu(playerid,newkeys,oldkeys)
+{
+	#pragma unused oldkeys
+
+	if(SelectedMenu[playerid] != -1)
+	{
+		new MenuID = SelectedMenu[playerid];
+
+		if(OnPlayerKeyStateChangeMenu(playerid,newkeys,oldkeys)) return 1;
+
+
+	    if(newkeys == KEY_CTRL_BACK || (IsFlyMode(playerid) && (newkeys & KEY_ANALOG_LEFT && (newkeys & KEY_SECONDARY_ATTACK || oldkeys & KEY_SECONDARY_ATTACK) )))
+	    {
+			new model,txd[32],texture[32], color;
+			GetDynamicObjectMaterial(MenuInfo[MenuID][Objects][SelectedBox[playerid]],0,model, txd, texture, color);
+		 	SetDynamicObjectMaterial(MenuInfo[MenuID][Objects][SelectedBox[playerid]],0, model, txd, texture, MenuInfo[MenuID][UnselectColor][SelectedBox[playerid]]);
+
+			MoveDynamicObject(MenuInfo[MenuID][Objects][SelectedBox[playerid]],MenuInfo[MenuID][OrigPosX][SelectedBox[playerid]],MenuInfo[MenuID][OrigPosY][SelectedBox[playerid]],MenuInfo[MenuID][OrigPosZ][SelectedBox[playerid]],1.0);
+			SelectedBox[playerid]++;
+
+			if(SelectedBox[playerid] == MenuInfo[MenuID][Boxes]) SelectedBox[playerid] = 0;
+
+			GetDynamicObjectMaterial(MenuInfo[MenuID][Objects][SelectedBox[playerid]],0,model, txd, texture, color);
+		 	SetDynamicObjectMaterial(MenuInfo[MenuID][Objects][SelectedBox[playerid]],0, model, txd, texture, MenuInfo[MenuID][SelectColor][SelectedBox[playerid]]);
+
+			MoveDynamicObject(MenuInfo[MenuID][Objects][SelectedBox[playerid]],MenuInfo[MenuID][OrigPosX][SelectedBox[playerid]]+MenuInfo[MenuID][AddingX],MenuInfo[MenuID][OrigPosY][SelectedBox[playerid]]+MenuInfo[MenuID][AddingY],MenuInfo[MenuID][OrigPosZ][SelectedBox[playerid]],1.0);
+
+			if(funcidx("OnPlayerChange3DMenuBox") != -1) OnPlayerChange3DMenuBox(playerid,MenuID,SelectedBox[playerid]);
+
+			return 1;
+		}
+		if(newkeys == KEY_YES || (IsFlyMode(playerid) && (newkeys & KEY_ANALOG_RIGHT && (newkeys & KEY_SECONDARY_ATTACK || oldkeys & KEY_SECONDARY_ATTACK) )))
+	    {
+			new model,txd[32],texture[32], color;
+			GetDynamicObjectMaterial(MenuInfo[MenuID][Objects][SelectedBox[playerid]],0,model, txd, texture, color);
+		 	SetDynamicObjectMaterial(MenuInfo[MenuID][Objects][SelectedBox[playerid]],0, model, txd, texture, MenuInfo[MenuID][UnselectColor][SelectedBox[playerid]]);
+
+	        MoveDynamicObject(MenuInfo[MenuID][Objects][SelectedBox[playerid]],MenuInfo[MenuID][OrigPosX][SelectedBox[playerid]],MenuInfo[MenuID][OrigPosY][SelectedBox[playerid]],MenuInfo[MenuID][OrigPosZ][SelectedBox[playerid]],1.0);
+			SelectedBox[playerid]--;
+
+			if(SelectedBox[playerid] < 0) SelectedBox[playerid] = MenuInfo[MenuID][Boxes]-1;
+
+			GetDynamicObjectMaterial(MenuInfo[MenuID][Objects][SelectedBox[playerid]],0,model, txd, texture, color);
+		 	SetDynamicObjectMaterial(MenuInfo[MenuID][Objects][SelectedBox[playerid]],0, model, txd, texture, MenuInfo[MenuID][SelectColor][SelectedBox[playerid]]);
+
+			MoveDynamicObject(MenuInfo[MenuID][Objects][SelectedBox[playerid]],MenuInfo[MenuID][OrigPosX][SelectedBox[playerid]]+MenuInfo[MenuID][AddingX],MenuInfo[MenuID][OrigPosY][SelectedBox[playerid]]+MenuInfo[MenuID][AddingY],MenuInfo[MenuID][OrigPosZ][SelectedBox[playerid]],1.0);
+
+			if(funcidx("OnPlayerChange3DMenuBox") != -1) OnPlayerChange3DMenuBox(playerid,MenuID,SelectedBox[playerid]);
+
+			return 1;
+		}
+	}
+	return 0;
+}
+
+tsfunc CancelSelect3DMenu(playerid)
+{
+	if(!IsPlayerConnected(playerid)) return -1;
+	if(SelectedMenu[playerid] == -1) return -1;
+	new MenuID = SelectedMenu[playerid];
+
+	if(SelectedBox[playerid] != -1)
+	{
+		new model,txd[32],texture[32], color;
+		GetDynamicObjectMaterial(MenuInfo[MenuID][Objects][SelectedBox[playerid]],0,model, txd, texture, color);
+		SetDynamicObjectMaterial(MenuInfo[MenuID][Objects][SelectedBox[playerid]],0, model, txd, texture, MenuInfo[MenuID][UnselectColor][SelectedBox[playerid]]);
+
+		MoveDynamicObject(MenuInfo[MenuID][Objects][SelectedBox[playerid]],MenuInfo[MenuID][OrigPosX][SelectedBox[playerid]],MenuInfo[MenuID][OrigPosY][SelectedBox[playerid]],MenuInfo[MenuID][OrigPosZ][SelectedBox[playerid]],1.0);
+	}
+	
+	SelectedMenu[playerid] = -1;
+	SelectedBox[playerid] = -1;
+	return 1;
+}
+
+tsfunc Select3DMenuBox(playerid,MenuID,BoxID)
+{
+	if(!IsPlayerConnected(playerid)) return -1;
+	if(!MenuInfo[MenuID][IsExist]) return -1;
+	if(MenuInfo[MenuID][Player] != playerid) return -1;
+
+	new model,txd[32],texture[32], color;
+	if(SelectedBox[playerid] != -1)
+	{
+		GetDynamicObjectMaterial(MenuInfo[MenuID][Objects][SelectedBox[playerid]],0,model, txd, texture, color);
+		SetDynamicObjectMaterial(MenuInfo[MenuID][Objects][SelectedBox[playerid]],0, model, txd, texture, MenuInfo[MenuID][UnselectColor][SelectedBox[playerid]]);
+		
+		MoveDynamicObject(MenuInfo[MenuID][Objects][SelectedBox[playerid]],MenuInfo[MenuID][OrigPosX][SelectedBox[playerid]],MenuInfo[MenuID][OrigPosY][SelectedBox[playerid]],MenuInfo[MenuID][OrigPosZ][SelectedBox[playerid]],1.0);
+	}
+
+
+	SelectedBox[playerid] = BoxID;
+
+	GetDynamicObjectMaterial(MenuInfo[MenuID][Objects][SelectedBox[playerid]],0, model, txd, texture, color);
+	SetDynamicObjectMaterial(MenuInfo[MenuID][Objects][SelectedBox[playerid]],0, model, txd, texture, MenuInfo[MenuID][SelectColor][SelectedBox[playerid]]);
+
+	MoveDynamicObject(MenuInfo[MenuID][Objects][SelectedBox[playerid]],MenuInfo[MenuID][OrigPosX][SelectedBox[playerid]]+MenuInfo[MenuID][AddingX],MenuInfo[MenuID][OrigPosY][SelectedBox[playerid]]+MenuInfo[MenuID][AddingY],MenuInfo[MenuID][OrigPosZ][SelectedBox[playerid]],1.0);
+
+	return 1;
+}
+
+tsfunc Destroy3DMenu(MenuID)
+{
+    if(!MenuInfo[MenuID][IsExist]) return -1;
+    if(SelectedMenu[MenuInfo[MenuID][Player]] == MenuID) CancelSelect3DMenu(MenuInfo[MenuID][Player]);
+    for(new i = 0; i < MenuInfo[MenuID][Boxes]; i++)
+    {
+		DestroyDynamicObject(MenuInfo[MenuID][Objects][i]);
+		MenuInfo[MenuID][Objects][i] = INVALID_OBJECT_ID;
+	}
+ 	MenuInfo[MenuID][Boxes] = 0;
+ 	MenuInfo[MenuID][IsExist] = false;
+ 	MenuInfo[MenuID][AddingX] = 0.0;
+ 	MenuInfo[MenuID][AddingY] = 0.0;
+ 	MenuInfo[MenuID][Player] = -1;
+	return 1;
+}

+ 27 - 0
Texture-Studio-master/filterscripts/tstudio/allobjects.pwn

@@ -0,0 +1,27 @@
+#if defined ALLOBJECTS
+	#endinput
+#endif
+#define ALLOBJECTS
+
+new DB:AO_DB, DBResult:AO_RESULT;
+
+public OnFilterScriptInit()
+{
+	if((AO_DB = db_open("tstudio/allbuildings.db")) == DB:0)
+		print("All Buildings - Loading Failed (Database Could Not Be Opened).");
+	#if defined AO_OnFilterScriptInit
+		AO_OnFilterScriptInit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptInit
+	#undef OnFilterScriptInit
+#else
+	#define _ALS_OnFilterScriptInit
+#endif
+#define OnFilterScriptInit AO_OnFilterScriptInit
+#if defined AO_OnFilterScriptInit
+	forward AO_OnFilterScriptInit();
+#endif
+
+#define SEARCH_DATA_SIZE (44763)

+ 9116 - 0
Texture-Studio-master/filterscripts/tstudio/alltextures.pwn

@@ -0,0 +1,9116 @@
+#if defined ALLTEXTURES
+	#endinput
+#endif
+#define ALLTEXTURES
+
+#define GetTModel(%0) ObjectTextures[%0][TModel]
+#define GetTXDName(%0) ObjectTextures[%0][TXDName]
+#define GetTextureName(%0) ObjectTextures[%0][TextureName]
+
+new MAX_TEXTURES;
+
+enum TEXTUREDEF { TModel, TXDName[32], TextureName[32] }
+
+new ObjectTextures[][TEXTUREDEF] =
+{
+////////////////////////////////////////////////////////////////////////////////
+// Original SA textures ////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+	{ 0, "INVALID", "INVALID" },
+	{ 10101, "2notherbuildsfe", "Bow_Abpave_Gen" },
+	{ 10101, "2notherbuildsfe", "Bow_church_grass_alt" },
+	{ 10101, "2notherbuildsfe", "ferry_build14" },
+	{ 10101, "2notherbuildsfe", "flatdoor01_law" },
+	{ 10101, "2notherbuildsfe", "gz_vicdoor1" },
+	{ 10101, "2notherbuildsfe", "gz_vicdoor2" },
+	{ 10101, "2notherbuildsfe", "sl_vicbrikwall01" },
+	{ 10101, "2notherbuildsfe", "sl_vicrfedge" },
+	{ 10101, "2notherbuildsfe", "sl_vicwall01" },
+	{ 10101, "2notherbuildsfe", "sl_vicwall02" },
+	{ 10101, "2notherbuildsfe", "sl_vicwin01" },
+	{ 10101, "2notherbuildsfe", "sl_vicwin02" },
+	{ 10101, "2notherbuildsfe", "ws_rooftarmac1" },
+	{ 14668, "711c", "bwtilebroth" },
+	{ 14668, "711c", "CJ_7_11_TILE" },
+	{ 14668, "711c", "CJ_7_11_win" },
+	{ 14668, "711c", "CJ_CHIP_M2" },
+	{ 14668, "711c", "cj_white_wall2" },
+	{ 14668, "711c", "forumstand1_LAe" },
+	{ 14668, "711c", "gun_ceiling1128" },
+	{ 14668, "711c", "gun_ceiling3" },
+	{ 14668, "711c", "sec_camera1" },
+	{ 9514, "711_sfw", "beachwall_law" },
+	{ 9514, "711_sfw", "brick" },
+	{ 9514, "711_sfw", "dt_carpark_line_texture" },
+	{ 9514, "711_sfw", "mono1_sfe" },
+	{ 9514, "711_sfw", "mono2_sfe" },
+	{ 9514, "711_sfw", "pcut_bot_law" },
+	{ 9514, "711_sfw", "rebrckwall_128" },
+	{ 9514, "711_sfw", "shingles2" },
+	{ 9514, "711_sfw", "staddoors1" },
+	{ 9514, "711_sfw", "supasave_sfw" },
+	{ 9514, "711_sfw", "supasave_wintemp" },
+	{ 9514, "711_sfw", "sw_sheddoor2" },
+	{ 9514, "711_sfw", "ws_carpark2" },
+	{ 1560, "7_11_door", "CJ_CHROME2" },
+	{ 1560, "7_11_door", "cj_sheetmetal2" },
+	{ 14690, "7_11_posters", "CJ_7_11_POST" },
+	{ 14690, "7_11_posters", "CJ_7_11_POST2" },
+	{ 14690, "7_11_posters", "cokopops_1" },
+	{ 14690, "7_11_posters", "munkyJuice_2" },
+	{ 13659, "8bars", "AH_gbarrier" },
+	{ 13659, "8bars", "barrier" },
+	{ 13659, "8bars", "bridgeconc" },
+	{ 13659, "8bars", "Upt_Fence_Mesh" },
+	{ 13628, "8stad", "stadroof" },
+	{ 16640, "a51", "a51_blastdoor" },
+	{ 16640, "a51", "a51_boffstuff1" },
+	{ 16640, "a51", "a51_boffstuff3" },
+	{ 16640, "a51", "a51_cardreader" },
+	{ 16640, "a51", "a51_floorpanel1" },
+	{ 16640, "a51", "a51_glass" },
+	{ 16640, "a51", "a51_handrail" },
+	{ 16640, "a51", "a51_intdoor" },
+	{ 16640, "a51", "a51_metal1" },
+	{ 16640, "a51", "a51_monitors" },
+	{ 16640, "a51", "a51_panel2" },
+	{ 16640, "a51", "a51_panels1" },
+	{ 16640, "a51", "a51_pipeend" },
+	{ 16640, "a51", "a51_strips1" },
+	{ 16640, "a51", "a51_vent1" },
+	{ 16640, "a51", "a51_wall1" },
+	{ 16640, "a51", "a51_weedoors" },
+	{ 16640, "a51", "airvent_gz" },
+	{ 16640, "a51", "Alumox64" },
+	{ 16640, "a51", "banding3c_64HV" },
+	{ 16640, "a51", "banding3_64HV" },
+	{ 16640, "a51", "banding9_64HV" },
+	{ 16640, "a51", "bluemetal" },
+	{ 16640, "a51", "bonyrd_skin2" },
+	{ 16640, "a51", "carparkwall12_256" },
+	{ 16640, "a51", "concretegroundl1_256" },
+	{ 16640, "a51", "concretemanky" },
+	{ 16640, "a51", "concretewall22_256" },
+	{ 16640, "a51", "concreteyellow256 copy" },
+	{ 16640, "a51", "dam_gencon" },
+	{ 16640, "a51", "des_factower" },
+	{ 16640, "a51", "des_tunnellight" },
+	{ 16640, "a51", "Metal3_128" },
+	{ 16640, "a51", "Metalox64" },
+	{ 16640, "a51", "metpat64" },
+	{ 16640, "a51", "pavegrey128" },
+	{ 16640, "a51", "plaintarmac1" },
+	{ 16640, "a51", "redmetal" },
+	{ 16640, "a51", "scratchedmetal" },
+	{ 16640, "a51", "sl_metalwalk" },
+	{ 16640, "a51", "sm_conc_hatch" },
+	{ 16640, "a51", "stormdrain7" },
+	{ 16640, "a51", "sw_olddrum1" },
+	{ 16640, "a51", "vent01_64" },
+	{ 16640, "a51", "ventb128" },
+	{ 16640, "a51", "ventb64" },
+	{ 16640, "a51", "vgs_shopwall01_128" },
+	{ 16640, "a51", "wallgreyred128" },
+	{ 16640, "a51", "ws_carparkwall2" },
+	{ 16640, "a51", "ws_castironwalk" },
+	{ 16640, "a51", "ws_metalpanel1" },
+	{ 16640, "a51", "ws_stationfloor" },
+	{ 3095, "a51jdrx", "sam_camo" },
+	{ 16646, "a51_alpha", "a51_sign1" },
+	{ 16646, "a51_alpha", "des_rails1" },
+	{ 16646, "a51_alpha", "stanwind_nt" },
+	{ 16646, "a51_alpha", "waterdirty256" },
+	{ 16646, "a51_alpha", "ws_stationgirder1" },
+	{ 2917, "a51_crane", "banding5_64HV" },
+	{ 2917, "a51_crane", "dish_base1" },
+	{ 2917, "a51_crane", "dish_base2" },
+	{ 2917, "a51_crane", "girder2_grey_64HV" },
+	{ 2917, "a51_crane", "quarry_conv_belt_struct" },
+	{ 16644, "a51_detailstuff", "a51_map" },
+	{ 16644, "a51_detailstuff", "a51_radardisp" },
+	{ 16644, "a51_detailstuff", "a51_radarscan_m" },
+	{ 16644, "a51_detailstuff", "a51_secdesk" },
+	{ 16644, "a51_detailstuff", "aluminiumbands256" },
+	{ 16644, "a51_detailstuff", "Gen_Keyboard" },
+	{ 16644, "a51_detailstuff", "Gen_Monitor" },
+	{ 16644, "a51_detailstuff", "roucghstonebrtb" },
+	{ 16644, "a51_detailstuff", "steel256128" },
+	{ 16093, "a51_ext", "a51_fencsign" },
+	{ 16093, "a51_ext", "alleydoor2" },
+	{ 16093, "a51_ext", "alleydoor9b" },
+	{ 16093, "a51_ext", "BLOCK" },
+	{ 16093, "a51_ext", "BLOCK2" },
+	{ 16093, "a51_ext", "block2_high" },
+	{ 16093, "a51_ext", "cabin5" },
+	{ 16093, "a51_ext", "corugwall_sandy" },
+	{ 16093, "a51_ext", "des_backdoor1" },
+	{ 16093, "a51_ext", "des_dirt1" },
+	{ 16093, "a51_ext", "des_dirttrack1" },
+	{ 16093, "a51_ext", "des_dirttrack1r" },
+	{ 16093, "a51_ext", "des_elepylon" },
+	{ 16093, "a51_ext", "stormdrain2_nt" },
+	{ 16093, "a51_ext", "Tar_1line256HV" },
+	{ 16093, "a51_ext", "wilswin01_la" },
+	{ 16093, "a51_ext", "ws_controltowerwin1" },
+	{ 16093, "a51_ext", "ws_corr_2_plain" },
+	{ 16093, "a51_ext", "ws_trans_concr" },
+	{ 16093, "a51_ext", "ws_whitewall2_bottom" },
+	{ 16093, "a51_ext", "ws_whitewall2_top" },
+	{ 2951, "a51_labdoor", "washapartwall1_256" },
+	{ 16639, "a51_labs", "a51_labwall1" },
+	{ 16639, "a51_labs", "dam_terazzo" },
+	{ 16639, "a51_labs", "studiowall4_law" },
+	{ 16639, "a51_labs", "ws_trainstationwin1" },
+	{ 2887, "a51_spotlight", "dts_spotlight" },
+	{ 2887, "a51_spotlight", "stormdrain5_nt" },
+	{ 16322, "a51_stores", "dam_gencrane" },
+	{ 16322, "a51_stores", "des_ghotwood1" },
+	{ 16322, "a51_stores", "dish_panel_a" },
+	{ 16322, "a51_stores", "dish_roundbit_a" },
+	{ 16322, "a51_stores", "fence_64" },
+	{ 16322, "a51_stores", "Gen_Freight" },
+	{ 16322, "a51_stores", "hangingwires1" },
+	{ 16322, "a51_stores", "metalic128" },
+	{ 16322, "a51_stores", "metpat64chev_128" },
+	{ 16322, "a51_stores", "steel64" },
+	{ 16322, "a51_stores", "wtmetal3" },
+	{ 16293, "a51_undergrnd", "Was_scrpyd_door_in_hngr" },
+	{ 2567, "ab", "ab_metaledge" },
+	{ 2567, "ab", "ab_metalholes" },
+	{ 2567, "ab", "ab_plasicwrapa" },
+	{ 2567, "ab", "Box_Texturepage" },
+	{ 2567, "ab", "chipboard_256" },
+	{ 14615, "abatoir_daylite", "ab_volumelight" },
+	{ 2589, "ab_ab", "ab_carcass" },
+	{ 2589, "ab_ab", "ab_sheetSteel" },
+	{ 14612, "ab_abattoir_box", "ab_airconunit" },
+	{ 14612, "ab_abattoir_box", "ab_bloodfloor" },
+	{ 14612, "ab_abattoir_box", "ab_boxStack2" },
+	{ 14612, "ab_abattoir_box", "ab_walldamage" },
+	{ 14612, "ab_abattoir_box", "pipes_csite_256" },
+	{ 14584, "ab_abbatoir01", "ab_ceiling1" },
+	{ 14584, "ab_abbatoir01", "ab_concFloor" },
+	{ 14584, "ab_abbatoir01", "ab_drainage" },
+	{ 14584, "ab_abbatoir01", "ab_tiles" },
+	{ 14584, "ab_abbatoir01", "ab_tileWall" },
+	{ 14584, "ab_abbatoir01", "ab_vent1" },
+	{ 14584, "ab_abbatoir01", "ab_wall1b" },
+	{ 14584, "ab_abbatoir01", "carpet5kb" },
+	{ 14584, "ab_abbatoir01", "cj_sheetmetal" },
+	{ 14584, "ab_abbatoir01", "striplight1" },
+	{ 11150, "ab_acc_control", "ab_BoltPanel2" },
+	{ 11150, "ab_acc_control", "ab_dialsSwitches" },
+	{ 11150, "ab_acc_control", "ws_shipmetal5" },
+	{ 14628, "ab_caligulasfront", "sign_Caligulas2" },
+	{ 14548, "ab_cargo_int", "747_cage" },
+	{ 14548, "ab_cargo_int", "747_freight1" },
+	{ 14548, "ab_cargo_int", "ab_planeBoby" },
+	{ 14548, "ab_cargo_int", "ab_planeWing" },
+	{ 14548, "ab_cargo_int", "Alumplat64" },
+	{ 14548, "ab_cargo_int", "cargo_ceil2" },
+	{ 14548, "ab_cargo_int", "cargo_floor1" },
+	{ 14548, "ab_cargo_int", "cargo_floor2" },
+	{ 14548, "ab_cargo_int", "cargo_gir1" },
+	{ 14548, "ab_cargo_int", "cargo_gir2" },
+	{ 14548, "ab_cargo_int", "cargo_gir3" },
+	{ 14548, "ab_cargo_int", "cargo_pipes" },
+	{ 14548, "ab_cargo_int", "cargo_top1" },
+	{ 14548, "ab_cargo_int", "cargo_wall2" },
+	{ 14548, "ab_cargo_int", "metal_frame" },
+	{ 14548, "ab_cargo_int", "yellowmetal" },
+	{ 14629, "ab_chande", "ab_frostLiteGlass" },
+	{ 14629, "ab_chande", "ab_gemBead" },
+	{ 14629, "ab_chande", "ab_goldpipe" },
+	{ 2755, "ab_dojowall", "ab_trellis" },
+	{ 2755, "ab_dojowall", "mp_apt1_roomfloor" },
+	{ 1564, "ab_jetlite", "bathwin01_int" },
+	{ 1564, "ab_jetlite", "CJ_BULLETBRASS" },
+	{ 1562, "ab_jetseat", "mp_jet_seat" },
+	{ 14583, "ab_mafcaslaund", "crate_side" },
+	{ 14583, "ab_mafcaslaund", "hospital_trolley" },
+	{ 14581, "ab_mafiasuitea", "ab_blind" },
+	{ 14581, "ab_mafiasuitea", "ab_books" },
+	{ 14581, "ab_mafiasuitea", "ab_CeilRose" },
+	{ 14581, "ab_mafiasuitea", "ab_picFrame" },
+	{ 14581, "ab_mafiasuitea", "ab_pic_bridge" },
+	{ 14581, "ab_mafiasuitea", "ab_walnut" },
+	{ 14581, "ab_mafiasuitea", "ab_walnutLite" },
+	{ 14581, "ab_mafiasuitea", "ab_wood01" },
+	{ 14581, "ab_mafiasuitea", "barbersmir1" },
+	{ 14581, "ab_mafiasuitea", "carp01S" },
+	{ 14581, "ab_mafiasuitea", "ceilingLite" },
+	{ 14581, "ab_mafiasuitea", "cof_wood2" },
+	{ 14581, "ab_mafiasuitea", "goldDecal" },
+	{ 14581, "ab_mafiasuitea", "goldPillar" },
+	{ 14581, "ab_mafiasuitea", "kit_door1" },
+	{ 14581, "ab_mafiasuitea", "mp_burn_ceiling" },
+	{ 14581, "ab_mafiasuitea", "wallpapkb2" },
+	{ 14581, "ab_mafiasuitea", "walp45S" },
+	{ 14581, "ab_mafiasuitea", "wood02S" },
+	{ 14627, "ab_optilite", "ab_optilite" },
+	{ 2591, "ab_partition1", "ab_fabricCheck2" },
+	{ 14616, "ab_pillartemp", "ab_Pillar" },
+	{ 14616, "ab_pillartemp", "ab_PillarTop" },
+	{ 18062, "ab_sfammuitems01", "ammo_gunboard" },
+	{ 18062, "ab_sfammuitems01", "ammu_ammo" },
+	{ 18062, "ab_sfammuitems01", "ammu_clothes" },
+	{ 18062, "ab_sfammuitems01", "ammu_gunboard2" },
+	{ 18062, "ab_sfammuitems01", "ammu_gunboard3" },
+	{ 18062, "ab_sfammuitems01", "ammu_gunboard4" },
+	{ 18062, "ab_sfammuitems01", "gun_guns3a" },
+	{ 18062, "ab_sfammuitems01", "gun_guns4a" },
+	{ 18063, "ab_sfammuitems02", "1_to_8" },
+	{ 18063, "ab_sfammuitems02", "gun_sign_txta" },
+	{ 18063, "ab_sfammuitems02", "gun_xtra1" },
+	{ 18063, "ab_sfammuitems02", "gun_xtra2" },
+	{ 18065, "ab_sfammumain", "ab_stripped_floor" },
+	{ 18065, "ab_sfammumain", "ab_wallpaper02" },
+	{ 18065, "ab_sfammumain", "breezewall" },
+	{ 18065, "ab_sfammumain", "breezewall5" },
+	{ 18065, "ab_sfammumain", "carp20S" },
+	{ 18065, "ab_sfammumain", "gun_ceiling1" },
+	{ 18065, "ab_sfammumain", "gun_door1" },
+	{ 18065, "ab_sfammumain", "gun_floor1" },
+	{ 18065, "ab_sfammumain", "gun_floor2" },
+	{ 18065, "ab_sfammumain", "mp_gun_wall" },
+	{ 18065, "ab_sfammumain", "pavea256" },
+	{ 18065, "ab_sfammumain", "plate1" },
+	{ 18065, "ab_sfammumain", "plywood_gym" },
+	{ 18065, "ab_sfammumain", "shelf_glas" },
+	{ 18064, "ab_sfammuunits", "gun_blackbox" },
+	{ 18064, "ab_sfammuunits", "gun_divider2" },
+	{ 18064, "ab_sfammuunits", "gun_targeta" },
+	{ 18064, "ab_sfammuunits", "gun_targetb" },
+	{ 18064, "ab_sfammuunits", "gun_targetc" },
+	{ 18064, "ab_sfammuunits", "rubber_mat" },
+	{ 14786, "ab_sfgymbeams", "gym_floor5" },
+	{ 14786, "ab_sfgymbeams", "knot_wood128" },
+	{ 14788, "ab_sfgymbits01", "ab_rollmat01" },
+	{ 14788, "ab_sfgymbits01", "lockers" },
+	{ 14787, "ab_sfgymbits02", "ab_gymMark01" },
+	{ 14787, "ab_sfgymbits02", "ab_rollmat02" },
+	{ 14787, "ab_sfgymbits02", "sign_cobra1" },
+	{ 14787, "ab_sfgymbits02", "sign_cobra2" },
+	{ 14789, "ab_sfgymmain", "ab_panelWall1" },
+	{ 14789, "ab_sfgymmain", "ab_panelWall2" },
+	{ 14789, "ab_sfgymmain", "ab_wood02" },
+	{ 14789, "ab_sfgymmain", "CBchallenge_256" },
+	{ 14789, "ab_sfgymmain", "gun_ceiling2_128" },
+	{ 14789, "ab_sfgymmain", "gymwinodow3" },
+	{ 14789, "ab_sfgymmain", "gym_floor6" },
+	{ 14652, "ab_trukstpa", "barberswindo" },
+	{ 14652, "ab_trukstpa", "bbar_door1" },
+	{ 14652, "ab_trukstpa", "bbar_wall1" },
+	{ 14652, "ab_trukstpa", "bbar_wall4" },
+	{ 14652, "ab_trukstpa", "CJ_CORD" },
+	{ 14652, "ab_trukstpa", "CJ_WOOD1(EDGE)" },
+	{ 14652, "ab_trukstpa", "CJ_WOOD6" },
+	{ 14652, "ab_trukstpa", "diner_tbl3" },
+	{ 14652, "ab_trukstpa", "mp_diner_wood" },
+	{ 14652, "ab_trukstpa", "wood01" },
+	{ 14653, "ab_trukstpb", "diner_seat3" },
+	{ 14653, "ab_trukstpb", "ketchup" },
+	{ 14653, "ab_trukstpb", "met_supp" },
+	{ 14653, "ab_trukstpb", "mustard" },
+	{ 14653, "ab_trukstpb", "napkin_disp" },
+	{ 14650, "ab_trukstpc", "bbar_till1" },
+	{ 14650, "ab_trukstpc", "bras_base" },
+	{ 14650, "ab_trukstpc", "Gen_Sacki" },
+	{ 14650, "ab_trukstpc", "mp_CJ_WOOD5" },
+	{ 14650, "ab_trukstpc", "sa_wood08_128" },
+	{ 14651, "ab_trukstpd", "bbar_poollamp1" },
+	{ 14651, "ab_trukstpd", "Bow_bar_flooring" },
+	{ 14651, "ab_trukstpd", "Bow_bar_metal_cabinet" },
+	{ 14651, "ab_trukstpd", "Bow_bar_pool_table" },
+	{ 14651, "ab_trukstpd", "Bow_bar_pool_tablebase" },
+	{ 14651, "ab_trukstpd", "Bow_bar_tabletop_wood" },
+	{ 14654, "ab_trukstpe", "bbar_plates2" },
+	{ 14654, "ab_trukstpe", "bbar_signs1" },
+	{ 14654, "ab_trukstpe", "bbar_sports1" },
+	{ 14654, "ab_trukstpe", "bbar_stuff1" },
+	{ 14654, "ab_trukstpe", "bbar_stuff3" },
+	{ 14654, "ab_trukstpe", "bbar_stuff9" },
+	{ 2592, "ab_veg", "ab_slotBase" },
+	{ 2592, "ab_veg", "tubelite" },
+	{ 14486, "ab_vegasgymbits01", "bbar_wall2" },
+	{ 14794, "ab_vegasgymmain", "barrel_64HV" },
+	{ 14794, "ab_vegasgymmain", "bbar_wall3" },
+	{ 14794, "ab_vegasgymmain", "dt_compound_fanvent" },
+	{ 14794, "ab_vegasgymmain", "gym_pipes" },
+	{ 14794, "ab_vegasgymmain", "Gym_rope" },
+	{ 14794, "ab_vegasgymmain", "mp_CJ_SHEET2" },
+	{ 14794, "ab_vegasgymmain", "studiowall2_law" },
+	{ 14534, "ab_wooziea", "ab_fabricRed" },
+	{ 14534, "ab_wooziea", "ab_redwall" },
+	{ 14534, "ab_wooziea", "ab_tileDiamond" },
+	{ 14534, "ab_wooziea", "ab_wuzibet" },
+	{ 14534, "ab_wooziea", "ab_wuziMirror" },
+	{ 14534, "ab_wooziea", "ab_wuziwillow" },
+	{ 14534, "ab_wooziea", "carp02S" },
+	{ 14534, "ab_wooziea", "CJ_WOODDOOR5" },
+	{ 14534, "ab_wooziea", "dt_office_roof" },
+	{ 14534, "ab_wooziea", "light_full" },
+	{ 14534, "ab_wooziea", "mcstraps_window" },
+	{ 14534, "ab_wooziea", "walp72S" },
+	{ 14544, "ab_woozieb", "ap_screens1" },
+	{ 14544, "ab_woozieb", "golf_secgates1" },
+	{ 14544, "ab_woozieb", "otb_mach1" },
+	{ 14544, "ab_woozieb", "otb_numbers" },
+	{ 14544, "ab_woozieb", "otb_signs" },
+	{ 14544, "ab_woozieb", "otb_wind" },
+	{ 14535, "ab_wooziec", "ab_butfly_sword" },
+	{ 14535, "ab_wooziec", "ab_wallfan" },
+	{ 14535, "ab_wooziec", "ab_wallpaper01" },
+	{ 14535, "ab_wooziec", "ab_woodborder" },
+	{ 14535, "ab_wooziec", "sink1" },
+	{ 14535, "ab_wooziec", "wall4" },
+	{ 14554, "ab_wooziesshad", "shadow_wuzi_blak" },
+	{ 14538, "ab_xit_box", "sw_door07" },
+	{ 1569, "adam_v_doort", "ws_guardhousedoor" },
+	{ 3061, "addoorx", "lasjmdoorgud" },
+	{ 3080, "adjumpx", "gen_chrome" },
+	{ 3080, "adjumpx", "jumpit" },
+	{ 3080, "adjumpx", "jumptop1_64" },
+	{ 3080, "adjumpx", "planks64" },
+	{ 3080, "adjumpx", "rustyboltpanel" },
+	{ 3028, "adswrdx", "gun_katana" },
+	{ 3076, "ad_rmx", "ammo_tube" },
+	{ 3076, "ad_rmx", "ws_cargoshipdoor" },
+	{ 10839, "aircarpkbarier_sfse", "banding8_64HV" },
+	{ 10839, "aircarpkbarier_sfse", "bareboards_64a" },
+	{ 10839, "aircarpkbarier_sfse", "chevron_red_64HVa" },
+	{ 10839, "aircarpkbarier_sfse", "cratetop128" },
+	{ 10839, "aircarpkbarier_sfse", "glass_64a" },
+	{ 10839, "aircarpkbarier_sfse", "redband_64Ha" },
+	{ 915, "airconext", "CJ_plating" },
+	{ 915, "airconext", "cj_plating2" },
+	{ 915, "airconext", "cj_plating3" },
+	{ 915, "airconext", "cj_sheet2" },
+	{ 10806, "airfence_sfse", "ws_griddyfence" },
+	{ 10806, "airfence_sfse", "ws_leccyfncesign" },
+	{ 10806, "airfence_sfse", "ws_leccyfncetop" },
+	{ 10806, "airfence_sfse", "ws_oldpainted" },
+	{ 4835, "airoads_las", "aarprt8LAS" },
+	{ 4835, "airoads_las", "aarprt9LAS" },
+	{ 4835, "airoads_las", "concretenewb256" },
+	{ 4835, "airoads_las", "dt_road" },
+	{ 4835, "airoads_las", "easykerb" },
+	{ 4835, "airoads_las", "grassdry_128HV" },
+	{ 4835, "airoads_las", "kbpavement_test" },
+	{ 4835, "airoads_las", "sjmhoodlawn41" },
+	{ 4835, "airoads_las", "sjmhoodlawn42" },
+	{ 4835, "airoads_las", "snpedtest1" },
+	{ 4835, "airoads_las", "tardor2" },
+	{ 4835, "airoads_las", "weewall256" },
+	{ 4835, "airoads_las", "ws_carparkwall1" },
+	{ 10763, "airport1_sfse", "airportwind03" },
+	{ 10763, "airport1_sfse", "ws_airportdoors1" },
+	{ 10763, "airport1_sfse", "ws_lightlens" },
+	{ 10763, "airport1_sfse", "ws_rollerdoor_fire" },
+	{ 10763, "airport1_sfse", "ws_yelloscaff" },
+	{ 10763, "airport1_sfse", "yellowscum64" },
+	{ 4830, "airport2", "aarprt3LAS" },
+	{ 4830, "airport2", "aarprt5LAS" },
+	{ 4830, "airport2", "aarprt6LAS" },
+	{ 4830, "airport2", "bathtile01_int" },
+	{ 4830, "airport2", "bevflower2" },
+	{ 4830, "airport2", "brnstucco1" },
+	{ 4830, "airport2", "kbplanter_plants1" },
+	{ 4830, "airport2", "LASLACMA93" },
+	{ 4830, "airport2", "LASLACMA96" },
+	{ 4830, "airport2", "sanairtex1" },
+	{ 4830, "airport2", "sanairtex2" },
+	{ 4830, "airport2", "sanairtex3" },
+	{ 4830, "airport2", "sanpedock5" },
+	{ 4830, "airport2", "scaff2flas" },
+	{ 4830, "airport2", "sjmpostbar3" },
+	{ 4830, "airport2", "sm_Agave_2" },
+	{ 4830, "airport2", "sw_door12" },
+	{ 4830, "airport2", "sw_shedwall02" },
+	{ 4830, "airport2", "tardor9" },
+	{ 4830, "airport2", "ws_officewins_1" },
+	{ 4828, "airport3_las", "aarprt1LAS" },
+	{ 4828, "airport3_las", "alax1_las" },
+	{ 4828, "airport3_las", "alax3_las" },
+	{ 4828, "airport3_las", "alax5_las" },
+	{ 4828, "airport3_las", "alax6_las" },
+	{ 4828, "airport3_las", "brwall_128" },
+	{ 4828, "airport3_las", "gallery01_law" },
+	{ 4828, "airport3_las", "gnhotelwall02_128" },
+	{ 4828, "airport3_las", "mirrwind1_LAn" },
+	{ 4828, "airport3_las", "sanpedock7" },
+	{ 4828, "airport3_las", "sanpedock8" },
+	{ 10811, "airportbits_sfse", "ap_fuel2" },
+	{ 10811, "airportbits_sfse", "ap_fuel3" },
+	{ 10811, "airportbits_sfse", "ap_fuel4" },
+	{ 10811, "airportbits_sfse", "brckwhtwash128" },
+	{ 10778, "airportcpark_sfse", "elecbox2" },
+	{ 10778, "airportcpark_sfse", "helipad_bits" },
+	{ 10778, "airportcpark_sfse", "vgsclubdoor02_128" },
+	{ 10778, "airportcpark_sfse", "ws_aircarparksign1" },
+	{ 10778, "airportcpark_sfse", "ws_boothpanel" },
+	{ 10778, "airportcpark_sfse", "ws_carpark1" },
+	{ 10778, "airportcpark_sfse", "ws_carpark3" },
+	{ 10778, "airportcpark_sfse", "ws_crashbarrier" },
+	{ 10778, "airportcpark_sfse", "ws_crashbarrier2" },
+	{ 10778, "airportcpark_sfse", "ws_doubledoor1" },
+	{ 10778, "airportcpark_sfse", "ws_fireexit" },
+	{ 10778, "airportcpark_sfse", "ws_fluorescent1" },
+	{ 10778, "airportcpark_sfse", "ws_fluorescent2" },
+	{ 10778, "airportcpark_sfse", "ws_roadarrow1" },
+	{ 4992, "airportdetail", "aarprt91LAS" },
+	{ 4992, "airportdetail", "aarprt92LAS" },
+	{ 4992, "airportdetail", "aarprt93LAS" },
+	{ 4992, "airportdetail", "ads003 copy" },
+	{ 4992, "airportdetail", "bevflower1" },
+	{ 4992, "airportdetail", "diderSachs01" },
+	{ 4992, "airportdetail", "hedge2" },
+	{ 4992, "airportdetail", "kb_ivy_256" },
+	{ 4992, "airportdetail", "prolaps01" },
+	{ 4992, "airportdetail", "sm_Agave_1" },
+	{ 10765, "airportgnd_sfse", "ap_metal1" },
+	{ 10765, "airportgnd_sfse", "ap_runwaysigns" },
+	{ 10765, "airportgnd_sfse", "ap_runwaysigns2" },
+	{ 10765, "airportgnd_sfse", "black64" },
+	{ 10765, "airportgnd_sfse", "bobo_3" },
+	{ 10765, "airportgnd_sfse", "coasty_bit3_sfe" },
+	{ 10765, "airportgnd_sfse", "crackedgroundb" },
+	{ 10765, "airportgnd_sfse", "desgreengrass" },
+	{ 10765, "airportgnd_sfse", "gridchev_64HV" },
+	{ 10765, "airportgnd_sfse", "sea_wall_temp" },
+	{ 10765, "airportgnd_sfse", "sf_pave2" },
+	{ 10765, "airportgnd_sfse", "white" },
+	{ 10765, "airportgnd_sfse", "ws_airpt_concrete" },
+	{ 10765, "airportgnd_sfse", "ws_bridgepavement2" },
+	{ 10765, "airportgnd_sfse", "ws_oldpainted2rusty" },
+	{ 10765, "airportgnd_sfse", "ws_runwaytarmac" },
+	{ 10765, "airportgnd_sfse", "ws_skidmarks" },
+	{ 10765, "airportgnd_sfse", "ws_whiteplaster_btm" },
+	{ 10765, "airportgnd_sfse", "ws_whiteplaster_top" },
+	{ 10765, "airportgnd_sfse", "ws_whitestripe" },
+	{ 10765, "airportgnd_sfse", "ws_yellowline" },
+	{ 3440, "airportpillar", "carfx1" },
+	{ 3440, "airportpillar", "metalic_64" },
+	{ 10755, "airportrminl_sfse", "bumptile" },
+	{ 10755, "airportrminl_sfse", "mirrwind4_LAn" },
+	{ 10755, "airportrminl_sfse", "ws_airportconc1" },
+	{ 10755, "airportrminl_sfse", "ws_airportwall1" },
+	{ 10755, "airportrminl_sfse", "ws_airportwall2" },
+	{ 10755, "airportrminl_sfse", "ws_airportwin2" },
+	{ 10755, "airportrminl_sfse", "ws_airportwin3" },
+	{ 10755, "airportrminl_sfse", "ws_dom_departures" },
+	{ 10755, "airportrminl_sfse", "ws_rotten_concrete1" },
+	{ 10756, "airportroads_sfse", "dt_road_stoplinea" },
+	{ 10756, "airportroads_sfse", "Heliconcrete" },
+	{ 10756, "airportroads_sfse", "sf_junction5" },
+	{ 10756, "airportroads_sfse", "sf_pave6" },
+	{ 10756, "airportroads_sfse", "sf_road5" },
+	{ 10756, "airportroads_sfse", "stones256128" },
+	{ 10756, "airportroads_sfse", "ws_airbigsign2" },
+	{ 10756, "airportroads_sfse", "ws_white_wall1" },
+	{ 4829, "airport_las", "Bow_Loadingbay_Door" },
+	{ 4829, "airport_las", "Bow_Warehousewall" },
+	{ 4829, "airport_las", "fancy_slab128" },
+	{ 4829, "airport_las", "fencekb_64h" },
+	{ 4829, "airport_las", "Grass_128HV" },
+	{ 4829, "airport_las", "LASLACMA6" },
+	{ 4829, "airport_las", "liftdoorsac256" },
+	{ 4829, "airport_las", "sjmlahus28" },
+	{ 4829, "airport_las", "yellow" },
+	{ 10762, "airport_sfse", "ivy4new" },
+	{ 4833, "airprtrunway_las", "asandockw" },
+	{ 4833, "airprtrunway_las", "bobo_2" },
+	{ 4833, "airprtrunway_las", "cos_hiwaymid_256" },
+	{ 4833, "airprtrunway_las", "desbarlas" },
+	{ 4833, "airprtrunway_las", "dockwall1" },
+	{ 4833, "airprtrunway_las", "Gen_Meshfencing" },
+	{ 4833, "airprtrunway_las", "greyground256" },
+	{ 4833, "airprtrunway_las", "homies_1" },
+	{ 4833, "airprtrunway_las", "lasjmfence1" },
+	{ 4833, "airprtrunway_las", "Mannblok2_LAn" },
+	{ 4833, "airprtrunway_las", "policeha02black_128" },
+	{ 4833, "airprtrunway_las", "tuntest1las" },
+	{ 4833, "airprtrunway_las", "ws_bluelino" },
+	{ 2772, "airp_prop", "cj_AIRP_DIRECT" },
+	{ 2772, "airp_prop", "CJ_AIRP_S_1" },
+	{ 2772, "airp_prop", "CJ_AIRP_S_2" },
+	{ 2772, "airp_prop", "CJ_AIR_1" },
+	{ 2772, "airp_prop", "CJ_BANDEDMETAL" },
+	{ 2772, "airp_prop", "cj_chromepipe" },
+	{ 2772, "airp_prop", "CJ_GALVANISED" },
+	{ 2772, "airp_prop", "CJ_red_COUNTER" },
+	{ 2772, "airp_prop", "cj_TILL2" },
+	{ 10837, "airroadsigns_sfse", "CJ_LAMPPOST1" },
+	{ 10837, "airroadsigns_sfse", "ws_airbigsign1" },
+	{ 10838, "airwelcomesign_sfse", "bbback" },
+	{ 10838, "airwelcomesign_sfse", "sl_rustyrailing" },
+	{ 10838, "airwelcomesign_sfse", "ws_airwelcome1" },
+	{ 1613, "alleyprop", "hoteldetails2" },
+	{ 1613, "alleyprop", "stuffdirtcol" },
+	{ 12821, "alleystuff", "cratec" },
+	{ 12821, "alleystuff", "Crate_B" },
+	{ 12821, "alleystuff", "Gen_Crate" },
+	{ 12821, "alleystuff", "planks01" },
+	{ 12821, "alleystuff", "sjmstair" },
+	{ 10370, "alleys_sfs", "ws_alley_conc3" },
+	{ 10370, "alleys_sfs", "ws_asphalt" },
+	{ 10370, "alleys_sfs", "ws_sandstone1" },
+	{ 3066, "ammotrx", "ammotrn92crate64" },
+	{ 3066, "ammotrx", "ammotrn92tarp128" },
+	{ 2619, "ammounique", "mp_gun_man1" },
+	{ 18050, "ammu_2flrprops", "ammu_boots3" },
+	{ 18050, "ammu_2flrprops", "ammu_hats" },
+	{ 18050, "ammu_2flrprops", "chipboard_256128" },
+	{ 18050, "ammu_2flrprops", "dt_ammu_flr1" },
+	{ 18050, "ammu_2flrprops", "gun_target1" },
+	{ 18050, "ammu_2flrprops", "gun_target2" },
+	{ 18050, "ammu_2flrprops", "gun_target3" },
+	{ 18050, "ammu_2flrprops", "gun_xtra4" },
+	{ 4552, "ammu_lan2", "corporate1" },
+	{ 4552, "ammu_lan2", "dior" },
+	{ 4552, "ammu_lan2", "foodmartla1" },
+	{ 4552, "ammu_lan2", "gun_python" },
+	{ 4552, "ammu_lan2", "mallextmid01" },
+	{ 4552, "ammu_lan2", "newall4-4" },
+	{ 4552, "ammu_lan2", "sf_chinashop2" },
+	{ 4552, "ammu_lan2", "sl_dtbuild02win1" },
+	{ 4552, "ammu_lan2", "sl_dtrufrear2wall1" },
+	{ 4552, "ammu_lan2", "sl_dtrufrear2win1" },
+	{ 4552, "ammu_lan2", "sl_dtrufrear2win2" },
+	{ 4552, "ammu_lan2", "sl_dtrufrear2win3" },
+	{ 4552, "ammu_lan2", "sl_fudstore1" },
+	{ 4552, "ammu_lan2", "sl_fudstore2" },
+	{ 4552, "ammu_lan2", "sl_lavicdtwall1" },
+	{ 4552, "ammu_lan2", "sunsetammu1" },
+	{ 4552, "ammu_lan2", "sunsetammu2" },
+	{ 4552, "ammu_lan2", "sunsetammu4" },
+	{ 18049, "ammu_twofloor", "CJ_BACK_BOARD" },
+	{ 18049, "ammu_twofloor", "concretebig4256128" },
+	{ 18049, "ammu_twofloor", "gun_bacboard" },
+	{ 18049, "ammu_twofloor", "gun_ceiling2" },
+	{ 18049, "ammu_twofloor", "gun_windo" },
+	{ 18049, "ammu_twofloor", "mp_gun_stairs" },
+	{ 9920, "anotherbuildsfe", "grassgrn256" },
+	{ 9920, "anotherbuildsfe", "gz_vic1a" },
+	{ 9920, "anotherbuildsfe", "gz_vic1b" },
+	{ 9920, "anotherbuildsfe", "gz_vic1c" },
+	{ 9920, "anotherbuildsfe", "gz_vic1d" },
+	{ 9920, "anotherbuildsfe", "gz_vic1e" },
+	{ 9920, "anotherbuildsfe", "gz_vic2a" },
+	{ 9920, "anotherbuildsfe", "gz_vic2b" },
+	{ 9920, "anotherbuildsfe", "gz_vic2c" },
+	{ 9920, "anotherbuildsfe", "gz_vic2d" },
+	{ 5631, "apartmentalpha", "aptsign01_LA" },
+	{ 5631, "apartmentalpha", "gymshop1_LAe" },
+	{ 5631, "apartmentalpha", "ws_railing1" },
+	{ 3881, "apsecurity_sfxrf", "chromepipe2_64HV" },
+	{ 3881, "apsecurity_sfxrf", "CJ_WOOD1" },
+	{ 3881, "apsecurity_sfxrf", "leather_seat_256" },
+	{ 3881, "apsecurity_sfxrf", "lostonclad1" },
+	{ 3881, "apsecurity_sfxrf", "WIN_DESKTOP" },
+	{ 3881, "apsecurity_sfxrf", "ws_altz_wall10" },
+	{ 3881, "apsecurity_sfxrf", "ws_rooftarmac2" },
+	{ 10810, "ap_build4e", "airportdanger" },
+	{ 10810, "ap_build4e", "redpylon" },
+	{ 10810, "ap_build4e", "redwhite_stripe" },
+	{ 10810, "ap_build4e", "roof09L256" },
+	{ 1683, "ap_jumbos", "airblock1" },
+	{ 1683, "ap_jumbos", "airblock2" },
+	{ 1683, "ap_jumbos", "airblock3" },
+	{ 1683, "ap_jumbos", "blackshadow4" },
+	{ 1681, "ap_learjets", "ap_learjet" },
+	{ 1682, "ap_misc1bit", "ap_radar" },
+	{ 9575, "archbrij", "conc_wall_stripd2128h" },
+	{ 3715, "archlax", "arch_sign" },
+	{ 3715, "archlax", "ws_greymetal" },
+	{ 10041, "archybuild10", "bank_sfe2" },
+	{ 10041, "archybuild10", "bank_sfe5" },
+	{ 10041, "archybuild10", "copshop2" },
+	{ 10041, "archybuild10", "copshop3" },
+	{ 10041, "archybuild10", "copshop5" },
+	{ 10041, "archybuild10", "copshop6" },
+	{ 10041, "archybuild10", "hotel_bit2" },
+	{ 10041, "archybuild10", "rooftop_gz3" },
+	{ 10041, "archybuild10", "sfe_bigbuild2" },
+	{ 10041, "archybuild10", "sfe_pinkbuild1" },
+	{ 10041, "archybuild10", "sfe_pinkbuild2" },
+	{ 10041, "archybuild10", "sf_shop2" },
+	{ 10041, "archybuild10", "sf_windos_15" },
+	{ 10041, "archybuild10", "sf_windos_15b" },
+	{ 10041, "archybuild10", "sf_windos_7" },
+	{ 10041, "archybuild10", "sf_windos_8" },
+	{ 10041, "archybuild10", "sf_windos_9" },
+	{ 10041, "archybuild10", "stonesteps1" },
+	{ 10041, "archybuild10", "Upt_Conc floorClean" },
+	{ 10041, "archybuild10", "vgnburgwal4_128" },
+	{ 10041, "archybuild10", "vgnburgwal5_256" },
+	{ 10041, "archybuild10", "whitedecosfe1" },
+	{ 10041, "archybuild10", "whitedecosfe2" },
+	{ 10041, "archybuild10", "whitedecosfe3" },
+	{ 10041, "archybuild10", "whitedecosfe4" },
+	{ 3017, "arch_plx", "arch_plans" },
+	{ 3629, "arprtxxref_las", "aarprt4LAS" },
+	{ 3629, "arprtxxref_las", "airsetest1_LAS" },
+	{ 3629, "arprtxxref_las", "airstoof1_LAS" },
+	{ 3629, "arprtxxref_las", "chevron64HVa" },
+	{ 3629, "arprtxxref_las", "corrRoof_64HV" },
+	{ 3629, "arprtxxref_las", "dirtywhite" },
+	{ 3629, "arprtxxref_las", "dustytar_64HV" },
+	{ 3629, "arprtxxref_las", "grn_window2_16" },
+	{ 3629, "arprtxxref_las", "lastrk6" },
+	{ 3629, "arprtxxref_las", "metaldoor_128" },
+	{ 3629, "arprtxxref_las", "planetunnel_64HV" },
+	{ 3629, "arprtxxref_las", "rustybolts" },
+	{ 3629, "arprtxxref_las", "shuttersb" },
+	{ 3629, "arprtxxref_las", "wheel02_64" },
+	{ 3629, "arprtxxref_las", "ws_corrugated1" },
+	{ 3629, "arprtxxref_las", "ws_corrugated2" },
+	{ 3629, "arprtxxref_las", "ws_corrugateddoor1" },
+	{ 2990, "arsex", "blackdirt" },
+	{ 2990, "arsex", "nopark128" },
+	{ 2990, "arsex", "steel128" },
+	{ 10426, "backroad_sfs", "Bow_church_dirt" },
+	{ 10426, "backroad_sfs", "retainwall1" },
+	{ 701, "badlands", "newtreeleaves128" },
+	{ 701, "badlands", "sm_des_bush1" },
+	{ 10850, "bakerybit2_sfse", "frate64_blue" },
+	{ 10850, "bakerybit2_sfse", "frate64_red" },
+	{ 10850, "bakerybit2_sfse", "frate64_yellow" },
+	{ 10850, "bakerybit2_sfse", "frate_doors128red" },
+	{ 10850, "bakerybit2_sfse", "frate_doors64" },
+	{ 10850, "bakerybit2_sfse", "frate_doors64yellow" },
+	{ 10850, "bakerybit2_sfse", "GB_truckdepot29" },
+	{ 10850, "bakerybit2_sfse", "ws_altz_wall5" },
+	{ 10856, "bakerybit_sfse", "windoresidential256" },
+	{ 10856, "bakerybit_sfse", "ws_altz_wall7" },
+	{ 10856, "bakerybit_sfse", "ws_dickgoblinmural" },
+	{ 10856, "bakerybit_sfse", "ws_doubledoor4" },
+	{ 10856, "bakerybit_sfse", "ws_oldwarehouse10a" },
+	{ 10856, "bakerybit_sfse", "ws_oldwarehouse10c" },
+	{ 10856, "bakerybit_sfse", "ws_oldwarehouse10d" },
+	{ 10891, "bakery_sfse", "cabin6" },
+	{ 10891, "bakery_sfse", "ws_altz_wall4" },
+	{ 10891, "bakery_sfse", "ws_altz_wall5_door" },
+	{ 10891, "bakery_sfse", "ws_dflourmural" },
+	{ 10891, "bakery_sfse", "ws_RShaul_dirt" },
+	{ 3437, "ballypillar01", "ballywall01_64" },
+	{ 8391, "ballys01", "ballydoor01_128" },
+	{ 8391, "ballys01", "ballyledge01_128" },
+	{ 8391, "ballys01", "ballywall02_128" },
+	{ 8391, "ballys01", "ballywindw01_128" },
+	{ 8391, "ballys01", "ballywindw02_128" },
+	{ 8391, "ballys01", "casinolightsblu_128" },
+	{ 8391, "ballys01", "CJ_blackplastic" },
+	{ 8391, "ballys01", "greyground256128" },
+	{ 8391, "ballys01", "vgncorpdoor1_512" },
+	{ 8391, "ballys01", "ws_floortiles4" },
+	{ 8486, "ballys02", "Grass_concpath_128HV" },
+	{ 8486, "ballys02", "walltiles_128" },
+	{ 8394, "ballysign01", "HighRoller01_256" },
+	{ 8394, "ballysign01", "hortonsnug2_256" },
+	{ 8394, "ballysign01", "vgnmetaltopwal1_256" },
+	{ 8394, "ballysign01", "vgnpawnlng_256" },
+	{ 8394, "ballysign01", "ws_airpassage" },
+	{ 8487, "ballyswater", "waterclear256" },
+	{ 1252, "barrelexpos", "atm" },
+	{ 1949, "barrier", "barrier_stripe" },
+	{ 1949, "barrier", "pierlegs" },
+	{ 1949, "barrier", "plainboards64HV" },
+	{ 4510, "barrierblk", "warnsigns1" },
+	{ 4510, "barrierblk", "warnsigns2" },
+	{ 4510, "barrierblk", "yellow_64" },
+	{ 1282, "barrierm", "orangebarrier2" },
+	{ 5397, "barrio1_lae", "cargo7_128" },
+	{ 5397, "barrio1_lae", "carwash_256" },
+	{ 5397, "barrio1_lae", "closedblank1_256" },
+	{ 5397, "barrio1_lae", "concretenewgery256" },
+	{ 5397, "barrio1_lae", "corporate3green_128" },
+	{ 5397, "barrio1_lae", "crossing_law" },
+	{ 5397, "barrio1_lae", "dirtgaz64b" },
+	{ 5397, "barrio1_lae", "gassign1_256" },
+	{ 5397, "barrio1_lae", "roof06L256" },
+	{ 5397, "barrio1_lae", "rufwaldock1" },
+	{ 5397, "barrio1_lae", "sanpedocka1" },
+	{ 5397, "barrio1_lae", "snpdwargrn1" },
+	{ 5397, "barrio1_lae", "sw_wind16" },
+	{ 5397, "barrio1_lae", "telewires_law" },
+	{ 5397, "barrio1_lae", "wshbrsh1las" },
+	{ 17508, "barrio1_lae2", "alleywall2" },
+	{ 17508, "barrio1_lae2", "brickred" },
+	{ 17508, "barrio1_lae2", "dockpave_256" },
+	{ 17508, "barrio1_lae2", "gangshop10_LAe" },
+	{ 17508, "barrio1_lae2", "gangshop11_LAe" },
+	{ 17508, "barrio1_lae2", "gangshop12_LAe" },
+	{ 17508, "barrio1_lae2", "gangsign3_LAe" },
+	{ 17508, "barrio1_lae2", "gangsign4_LAe" },
+	{ 982, "bar_chainlink", "awirex2" },
+	{ 982, "bar_chainlink", "sjmshopBK" },
+	{ 10385, "baseballground_sfs", "Bow_church_dirt_to_grass_side_t" },
+	{ 10385, "baseballground_sfs", "ws_baseballdirt" },
+	{ 10385, "baseballground_sfs", "ws_football_lines2" },
+	{ 3819, "baseball_sfsx", "helipad_mesh_t" },
+	{ 3819, "baseball_sfsx", "helipad_strutT" },
+	{ 3819, "baseball_sfsx", "telepole128" },
+	{ 1946, "bball1", "basketball2" },
+	{ 7555, "bballcpark1", "backstageceiling1_128" },
+	{ 7555, "bballcpark1", "curbyell_64H" },
+	{ 7555, "bballcpark1", "vgncpark1_256" },
+	{ 7555, "bballcpark1", "vgspshrailing1" },
+	{ 7555, "bballcpark1", "ws_carparknew1" },
+	{ 7555, "bballcpark1", "ws_carparknew2" },
+	{ 7555, "bballcpark1", "ws_carparknew2a" },
+	{ 3452, "bballvgnint", "bballconcrete1_256" },
+	{ 3452, "bballvgnint", "bballconcrete2_256" },
+	{ 3452, "bballvgnint", "bballconcrete3_256" },
+	{ 3452, "bballvgnint", "bballconcrete4_256" },
+	{ 3452, "bballvgnint", "bballconcrete5_256" },
+	{ 3452, "bballvgnint", "Bow_Abattoir_Conc2" },
+	{ 3452, "bballvgnint", "carparkwall1_256" },
+	{ 3065, "bballx", "bball_fake_light" },
+	{ 3128, "bball_hpx", "wire2" },
+	{ 3096, "bbpcpx", "bluepink64" },
+	{ 3096, "bbpcpx", "blugrad32" },
+	{ 2020, "bdcabinets", "sideboard1" },
+	{ 14805, "bdupsfurn", "Bdup2_Lamp" },
+	{ 14805, "bdupsfurn", "Bdup2_Ttop1" },
+	{ 14805, "bdupsfurn", "Bdup2_Ttop2" },
+	{ 14805, "bdupsfurn", "Bdup_Ashtray" },
+	{ 14805, "bdupsfurn", "Bdup_Caps" },
+	{ 14805, "bdupsfurn", "Bdup_Crack" },
+	{ 14805, "bdupsfurn", "Bdup_CrackPipe" },
+	{ 14805, "bdupsfurn", "Bdup_Pills" },
+	{ 14805, "bdupsfurn", "blacksofa01" },
+	{ 14806, "bdupshifi", "Bdup2_amp" },
+	{ 14806, "bdupshifi", "Bdup2_CD" },
+	{ 14806, "bdupshifi", "Bdup2_speakers" },
+	{ 14806, "bdupshifi", "Bdup2_TV" },
+	{ 14806, "bdupshifi", "Bdup2_wood" },
+	{ 5520, "bdupshouse_lae", "awningsides2" },
+	{ 5520, "bdupshouse_lae", "compdoor2_LAe" },
+	{ 5520, "bdupshouse_lae", "compdoor4_LAe" },
+	{ 5520, "bdupshouse_lae", "comptwall23" },
+	{ 5520, "bdupshouse_lae", "gangwin4_LAe" },
+	{ 5520, "bdupshouse_lae", "shingles3" },
+	{ 5520, "bdupshouse_lae", "sw_woodflloor" },
+	{ 5520, "bdupshouse_lae", "ws_boxhouse_wins3" },
+	{ 14807, "bdupslight", "Bdup2_Light" },
+	{ 14803, "bdupsnew", "Bdup2_Artex" },
+	{ 14803, "bdupsnew", "Bdup2_carpet" },
+	{ 14803, "bdupsnew", "Bdup2_mask" },
+	{ 14803, "bdupsnew", "Bdup2_plant" },
+	{ 14803, "bdupsnew", "Bdup2_plantPot" },
+	{ 14803, "bdupsnew", "Bdup2_plantStalk" },
+	{ 14803, "bdupsnew", "Bdup2_poster" },
+	{ 14803, "bdupsnew", "Bdup2_Rug" },
+	{ 14803, "bdupsnew", "Bdup2_wallpaper" },
+	{ 14803, "bdupsnew", "Bdup2_wallpaperB" },
+	{ 14803, "bdupsnew", "Bdup2_wallpaperC" },
+	{ 3032, "bdwinx", "ct_canopy" },
+	{ 3032, "bdwinx", "gangwin3_LAe" },
+	{ 3653, "beachapts_lax", "Bow_dryclean_wall_upr" },
+	{ 3653, "beachapts_lax", "comptcowind1" },
+	{ 3653, "beachapts_lax", "eastwall3_LAe2" },
+	{ 3653, "beachapts_lax", "eastwall4_LAe2" },
+	{ 3653, "beachapts_lax", "eastwin07_LAe2" },
+	{ 3653, "beachapts_lax", "Grass_dry_64HV" },
+	{ 3653, "beachapts_lax", "Ind_Roadskank" },
+	{ 3653, "beachapts_lax", "sjmscorclawn" },
+	{ 3653, "beachapts_lax", "stormdrain6" },
+	{ 1598, "beachball", "beachball" },
+	{ 9549, "beachbx_sfw", "boxybox_sf1" },
+	{ 9549, "beachbx_sfw", "boxybox_sf1b" },
+	{ 9549, "beachbx_sfw", "boxybox_sf2" },
+	{ 9549, "beachbx_sfw", "boxybox_sf2b" },
+	{ 9549, "beachbx_sfw", "boxybox_sf2c" },
+	{ 9549, "beachbx_sfw", "boxybox_sf3" },
+	{ 9549, "beachbx_sfw", "boxybox_sf3b" },
+	{ 9549, "beachbx_sfw", "boxybox_sf4" },
+	{ 9549, "beachbx_sfw", "boxybox_sf4b" },
+	{ 9549, "beachbx_sfw", "boxybox_sf5" },
+	{ 9549, "beachbx_sfw", "boxybox_sf5b" },
+	{ 9549, "beachbx_sfw", "boxybox_sf6" },
+	{ 9549, "beachbx_sfw", "boxybox_sf6b" },
+	{ 9549, "beachbx_sfw", "cst_rock_coast_sfw" },
+	{ 9549, "beachbx_sfw", "NEWrockgrass_sfw" },
+	{ 9549, "beachbx_sfw", "SF_garden3" },
+	{ 3615, "beachhut", "asanmonbhut1" },
+	{ 3615, "beachhut", "asanmonbhut2" },
+	{ 3615, "beachhut", "sw_flatroof01" },
+	{ 3615, "beachhut", "ws_decking1" },
+	{ 17953, "beach_lae2", "block2_low" },
+	{ 4811, "beach_las", "grifnewtex1x_LAS" },
+	{ 4811, "beach_las", "grifnewtex2x_LAS" },
+	{ 4811, "beach_las", "lasclifface" },
+	{ 4811, "beach_las", "sandnew_law" },
+	{ 4811, "beach_las", "sandstonemixb" },
+	{ 4811, "beach_las", "sm_Agave_bloom" },
+	{ 4811, "beach_las", "sm_minipalm1" },
+	{ 5114, "beach_las2", "boardwalk_la" },
+	{ 5114, "beach_las2", "Bow_meshfence" },
+	{ 5114, "beach_las2", "ganggraf04_LA" },
+	{ 5114, "beach_las2", "luxorwall02_128sandblend" },
+	{ 5114, "beach_las2", "sw_sand" },
+	{ 10351, "beach_sfs", "rocktb128" },
+	{ 10351, "beach_sfs", "ws_drysand" },
+	{ 10351, "beach_sfs", "ws_drysand2grass" },
+	{ 10351, "beach_sfs", "ws_wetdryblendsand" },
+	{ 10351, "beach_sfs", "ws_wetsand" },
+	{ 6312, "beacliff_law2", "concretebigblu4256128" },
+	{ 6312, "beacliff_law2", "grasstype3" },
+	{ 6312, "beacliff_law2", "redcliffroof_LA" },
+	{ 6312, "beacliff_law2", "redclifftop256" },
+	{ 6312, "beacliff_law2", "sm_rock2_desert" },
+	{ 6404, "beafron1_law2", "beachsig01_LAw2" },
+	{ 6404, "beafron1_law2", "blueshade2_64" },
+	{ 6404, "beafron1_law2", "cafe01_law" },
+	{ 6404, "beafron1_law2", "compfence7_LAe" },
+	{ 6404, "beafron1_law2", "comptwall30" },
+	{ 6404, "beafron1_law2", "comptwall31" },
+	{ 6404, "beafron1_law2", "comptwall37" },
+	{ 6404, "beafron1_law2", "Gen_Scaffold_Wood_Under" },
+	{ 6404, "beafron1_law2", "icecream_law" },
+	{ 6404, "beafron1_law2", "melroran3_law" },
+	{ 6404, "beafron1_law2", "pierbild01_law" },
+	{ 6404, "beafron1_law2", "pierroof01_law" },
+	{ 6404, "beafron1_law2", "pierwin03_law" },
+	{ 6404, "beafron1_law2", "rippost01_LA" },
+	{ 6404, "beafron1_law2", "shingledblue_la" },
+	{ 6404, "beafron1_law2", "shutter02LA" },
+	{ 6404, "beafron1_law2", "shutter04LA" },
+	{ 6404, "beafron1_law2", "vencounter01_law" },
+	{ 6404, "beafron1_law2", "venshops02_law" },
+	{ 6404, "beafron1_law2", "woodroof01_128" },
+	{ 6282, "beafron2_law2", "asanwall2" },
+	{ 6282, "beafron2_law2", "bchhouse_law" },
+	{ 6282, "beafron2_law2", "boardwalk2_la" },
+	{ 6282, "beafron2_law2", "bobo_LAw" },
+	{ 6282, "beafron2_law2", "comptwall33" },
+	{ 6282, "beafron2_law2", "concretebigb256128" },
+	{ 6282, "beafron2_law2", "concretenewb256128" },
+	{ 6282, "beafron2_law2", "decoacwallbtmb21_256" },
+	{ 6282, "beafron2_law2", "des_bunting" },
+	{ 6282, "beafron2_law2", "downtshop7_LAn" },
+	{ 6282, "beafron2_law2", "downtsign3_LA" },
+	{ 6282, "beafron2_law2", "downtwin27" },
+	{ 6282, "beafron2_law2", "downtwin28" },
+	{ 6282, "beafron2_law2", "eastwin01_LAe2" },
+	{ 6282, "beafron2_law2", "eastwin08_LAe2" },
+	{ 6282, "beafron2_law2", "eris_3" },
+	{ 6282, "beafron2_law2", "examwall2_LAe" },
+	{ 6282, "beafron2_law2", "fire_esc_fence" },
+	{ 6282, "beafron2_law2", "giftsign01_law" },
+	{ 6282, "beafron2_law2", "heat_03" },
+	{ 6282, "beafron2_law2", "hollysign02_LAw" },
+	{ 6282, "beafron2_law2", "homies_2" },
+	{ 6282, "beafron2_law2", "LoadingDoorClean" },
+	{ 6282, "beafron2_law2", "melrshop04_LAwN" },
+	{ 6282, "beafron2_law2", "sanpiz1" },
+	{ 6282, "beafron2_law2", "scumshop01_LAe" },
+	{ 6282, "beafron2_law2", "shutter03LA" },
+	{ 6282, "beafron2_law2", "sjmcargr" },
+	{ 6282, "beafron2_law2", "smoothie" },
+	{ 6282, "beafron2_law2", "snpdwingrat1" },
+	{ 6282, "beafron2_law2", "snpedshptst1a" },
+	{ 6282, "beafron2_law2", "snpedshptst1c" },
+	{ 6282, "beafron2_law2", "spraysig1_LAw2" },
+	{ 6282, "beafron2_law2", "telewireslong" },
+	{ 6282, "beafron2_law2", "vertsign1_LA" },
+	{ 6282, "beafron2_law2", "ws_ed_shop11" },
+	{ 6282, "beafron2_law2", "ws_ed_shop9" },
+	{ 1281, "benches", "pierdoor02_law" },
+	{ 1281, "benches", "trafficcone" },
+	{ 1256, "benchm", "TaxiCo1_64" },
+	{ 11100, "bendytunnel_sfse", "blackmetal" },
+	{ 11100, "bendytunnel_sfse", "Bow_sub_wallshine" },
+	{ 11100, "bendytunnel_sfse", "Bow_sub_walltiles" },
+	{ 11100, "bendytunnel_sfse", "ws_altz_wall10b" },
+	{ 13691, "bevcunto2_lahills", "aamanbev96x" },
+	{ 13691, "bevcunto2_lahills", "adeta" },
+	{ 13691, "bevcunto2_lahills", "Bow_Abattoir_Floor_Clean" },
+	{ 13691, "bevcunto2_lahills", "crazypave" },
+	{ 13691, "bevcunto2_lahills", "newgrnd1brn_128" },
+	{ 13691, "bevcunto2_lahills", "stonewall3_la" },
+	{ 13691, "bevcunto2_lahills", "ws_floortiles2" },
+	{ 13691, "bevcunto2_lahills", "ws_patio1" },
+	{ 3603, "bevmans01_la", "aamanbev1x" },
+	{ 3603, "bevmans01_la", "aamanbev2x" },
+	{ 3603, "bevmans01_la", "aamanbev3x" },
+	{ 3603, "bevmans01_la", "aamanbev5x" },
+	{ 3603, "bevmans01_la", "aamanbev6x" },
+	{ 3603, "bevmans01_la", "aamanbev7x" },
+	{ 3603, "bevmans01_la", "aamanbev8x" },
+	{ 3603, "bevmans01_la", "aamanbev92x" },
+	{ 3603, "bevmans01_la", "aamanbev93x" },
+	{ 3603, "bevmans01_la", "aamanbev94x" },
+	{ 3603, "bevmans01_la", "aamanbev95x" },
+	{ 3603, "bevmans01_la", "cemebuild03_law" },
+	{ 3603, "bevmans01_la", "garagedoor4_law" },
+	{ 3603, "bevmans01_la", "genroof01_128" },
+	{ 3603, "bevmans01_la", "genroof02_128" },
+	{ 3603, "bevmans01_la", "hottop5d_law" },
+	{ 3603, "bevmans01_la", "lasbevcit7" },
+	{ 3603, "bevmans01_la", "lasjmhus21" },
+	{ 3603, "bevmans01_la", "pavepat2_128" },
+	{ 3603, "bevmans01_la", "pierwin01_law" },
+	{ 3603, "bevmans01_la", "rooftiles1" },
+	{ 3603, "bevmans01_la", "sjmhoodaad" },
+	{ 3603, "bevmans01_la", "sjmhoodalldr" },
+	{ 3603, "bevmans01_la", "sjmhoodlawn9s" },
+	{ 3603, "bevmans01_la", "sjmlahus21" },
+	{ 3603, "bevmans01_la", "sjmlahus23" },
+	{ 3603, "bevmans01_la", "sjmlahus25" },
+	{ 3603, "bevmans01_la", "sjmlahus26" },
+	{ 3603, "bevmans01_la", "sjmlahus27" },
+	{ 3603, "bevmans01_la", "sjmlahus29" },
+	{ 3603, "bevmans01_la", "wilsdoor_01_la" },
+	{ 6284, "bev_law2", "beachwalkway" },
+	{ 6284, "bev_law2", "comptdoor2" },
+	{ 6284, "bev_law2", "comptwindo2" },
+	{ 6284, "bev_law2", "concretebigb256" },
+	{ 6284, "bev_law2", "dirtKB_64HV" },
+	{ 6284, "bev_law2", "glass_fence_64hv" },
+	{ 6284, "bev_law2", "lasjmposh1" },
+	{ 6284, "bev_law2", "lasjmposh2" },
+	{ 6284, "bev_law2", "lasjmposh3" },
+	{ 6284, "bev_law2", "lasjmposh4" },
+	{ 6284, "bev_law2", "lasmalhus92" },
+	{ 6284, "bev_law2", "letterbox_law" },
+	{ 6284, "bev_law2", "pierbild04_law" },
+	{ 6284, "bev_law2", "pierdoor03_law" },
+	{ 6284, "bev_law2", "pierfence01_law" },
+	{ 6284, "bev_law2", "pierfence02b_law" },
+	{ 6284, "bev_law2", "pierfence02_law" },
+	{ 6284, "bev_law2", "pierhouse01_law" },
+	{ 6284, "bev_law2", "pierhouse02b_law" },
+	{ 6284, "bev_law2", "pierhouse02_law" },
+	{ 6284, "bev_law2", "pierhouse3_law" },
+	{ 6284, "bev_law2", "pierwall02_law" },
+	{ 6284, "bev_law2", "pierwall03_law" },
+	{ 6284, "bev_law2", "pierwin04_law" },
+	{ 6284, "bev_law2", "pierwin05_law" },
+	{ 6284, "bev_law2", "pierwin06_law" },
+	{ 6284, "bev_law2", "pierwin07_law" },
+	{ 6284, "bev_law2", "pierwin08b_law" },
+	{ 6284, "bev_law2", "pierwin08_law" },
+	{ 6284, "bev_law2", "shinglegrey_la" },
+	{ 6284, "bev_law2", "shopdoor01_law" },
+	{ 6284, "bev_law2", "sjmlawarwall3" },
+	{ 6284, "bev_law2", "studwalltop_law" },
+	{ 6284, "bev_law2", "windbox01_law" },
+	{ 9515, "bigboxtemp1", "acrooftop1256" },
+	{ 9515, "bigboxtemp1", "board64_law" },
+	{ 9515, "bigboxtemp1", "browntin1" },
+	{ 9515, "bigboxtemp1", "carlot1_sfw" },
+	{ 9515, "bigboxtemp1", "garagedoor5_law" },
+	{ 9515, "bigboxtemp1", "int02_128" },
+	{ 9515, "bigboxtemp1", "lombard_build2_2" },
+	{ 9515, "bigboxtemp1", "lombard_build2_4" },
+	{ 9515, "bigboxtemp1", "lombard_build2_5" },
+	{ 9515, "bigboxtemp1", "lombard_build3_1" },
+	{ 9515, "bigboxtemp1", "mullcar01_law" },
+	{ 9515, "bigboxtemp1", "patiodr_law" },
+	{ 9515, "bigboxtemp1", "poshbox2a" },
+	{ 9515, "bigboxtemp1", "poshbox2b" },
+	{ 9515, "bigboxtemp1", "poshbox2c" },
+	{ 9515, "bigboxtemp1", "poshbox3a" },
+	{ 9515, "bigboxtemp1", "poshbox3b" },
+	{ 9515, "bigboxtemp1", "poshbox3c" },
+	{ 9515, "bigboxtemp1", "poshground_sfw" },
+	{ 9515, "bigboxtemp1", "redbrickground256" },
+	{ 9515, "bigboxtemp1", "rooftiles2" },
+	{ 9515, "bigboxtemp1", "sfn_grass1" },
+	{ 9515, "bigboxtemp1", "sf_concrete1" },
+	{ 9515, "bigboxtemp1", "shingles1" },
+	{ 9515, "bigboxtemp1", "tarmacplain_bank" },
+	{ 9515, "bigboxtemp1", "ws_airportwin1" },
+	{ 9515, "bigboxtemp1", "ws_alley5_256_blank" },
+	{ 9515, "bigboxtemp1", "ws_garagedoor3_white" },
+	{ 5763, "bigbuildlawn", "bevdoor02_law" },
+	{ 5763, "bigbuildlawn", "ornatebuildlaw2_1" },
+	{ 5763, "bigbuildlawn", "ornatebuildlaw2_2" },
+	{ 5763, "bigbuildlawn", "ornatebuildlaw2_3" },
+	{ 5763, "bigbuildlawn", "ornatebuildlaw2_4" },
+	{ 5763, "bigbuildlawn", "roof10L256" },
+	{ 3816, "bighangarsfxr", "railgird32bit" },
+	{ 3816, "bighangarsfxr", "ws_breezeblocks" },
+	{ 3816, "bighangarsfxr", "ws_crossbeam1" },
+	{ 3816, "bighangarsfxr", "ws_hangardoor" },
+	{ 10056, "bigoldbuild_sfe", "alleys_sfe" },
+	{ 10056, "bigoldbuild_sfe", "bank_sfe1" },
+	{ 10056, "bigoldbuild_sfe", "bank_sfe3" },
+	{ 10056, "bigoldbuild_sfe", "bigbrown1_sfe" },
+	{ 10056, "bigoldbuild_sfe", "bigbrown2_sfe" },
+	{ 10056, "bigoldbuild_sfe", "clubdoor1_256" },
+	{ 10056, "bigoldbuild_sfe", "cluckbell01_law" },
+	{ 10056, "bigoldbuild_sfe", "cluckbell02_law" },
+	{ 10056, "bigoldbuild_sfe", "lanky1_sfe" },
+	{ 10056, "bigoldbuild_sfe", "lanky2_sfe" },
+	{ 10056, "bigoldbuild_sfe", "lanky3_sfe" },
+	{ 10056, "bigoldbuild_sfe", "lanky4_sfe" },
+	{ 10056, "bigoldbuild_sfe", "roofthing2_sfe" },
+	{ 10056, "bigoldbuild_sfe", "sfe_arch1" },
+	{ 10056, "bigoldbuild_sfe", "sfe_bigbuild1" },
+	{ 10056, "bigoldbuild_sfe", "sfe_nicearch4" },
+	{ 10056, "bigoldbuild_sfe", "sfe_pinkbuild3" },
+	{ 10056, "bigoldbuild_sfe", "sf_backaley1" },
+	{ 10056, "bigoldbuild_sfe", "sf_shop4" },
+	{ 10056, "bigoldbuild_sfe", "sf_windos_1" },
+	{ 10056, "bigoldbuild_sfe", "sf_windos_13wall" },
+	{ 10056, "bigoldbuild_sfe", "sf_windos_2" },
+	{ 10056, "bigoldbuild_sfe", "sf_windos_3" },
+	{ 10056, "bigoldbuild_sfe", "vgnburgwal3_256" },
+	{ 15041, "bigsfsave", "ah_ceilpan1" },
+	{ 15041, "bigsfsave", "AH_flrdiamonds" },
+	{ 15041, "bigsfsave", "AH_flroortile5" },
+	{ 15041, "bigsfsave", "AH_flroortile9" },
+	{ 15041, "bigsfsave", "ah_greencarp" },
+	{ 15041, "bigsfsave", "AH_grepaper2" },
+	{ 15041, "bigsfsave", "AH_skt5" },
+	{ 15041, "bigsfsave", "AH_strntiles" },
+	{ 15041, "bigsfsave", "ah_utilbor1" },
+	{ 15041, "bigsfsave", "ah_utilbor2" },
+	{ 15041, "bigsfsave", "AH_walltile6" },
+	{ 15041, "bigsfsave", "AH_wdpanscum" },
+	{ 15041, "bigsfsave", "ah_wpaper7" },
+	{ 15041, "bigsfsave", "ah_wrnplnks" },
+	{ 15041, "bigsfsave", "andydark" },
+	{ 15041, "bigsfsave", "carp11S" },
+	{ 15041, "bigsfsave", "mp_carter_tilewall" },
+	{ 15041, "bigsfsave", "wall6" },
+	{ 15041, "bigsfsave", "walp73S" },
+	{ 15041, "bigsfsave", "windo_blinds" },
+	{ 2944, "bigshapx", "freighter1" },
+	{ 9583, "bigshap_sfw", "alleywin5" },
+	{ 9583, "bigshap_sfw", "boatfunnel1_128" },
+	{ 9583, "bigshap_sfw", "boatfunnel2_64" },
+	{ 9583, "bigshap_sfw", "bridge_walls2_sfw" },
+	{ 9583, "bigshap_sfw", "bridge_walls3_sfw" },
+	{ 9583, "bigshap_sfw", "cof_tile1" },
+	{ 9583, "bigshap_sfw", "freighter1b" },
+	{ 9583, "bigshap_sfw", "freighter2" },
+	{ 9583, "bigshap_sfw", "freighter2b" },
+	{ 9583, "bigshap_sfw", "freighter3" },
+	{ 9583, "bigshap_sfw", "freighter4" },
+	{ 9583, "bigshap_sfw", "freighter4b" },
+	{ 9583, "bigshap_sfw", "freighter5" },
+	{ 9583, "bigshap_sfw", "freighterhull1" },
+	{ 9583, "bigshap_sfw", "freighterhull2" },
+	{ 9583, "bigshap_sfw", "freight_crate1" },
+	{ 9583, "bigshap_sfw", "freight_crate2" },
+	{ 9583, "bigshap_sfw", "freight_crate3" },
+	{ 9583, "bigshap_sfw", "freight_crate4" },
+	{ 9583, "bigshap_sfw", "freight_crate5" },
+	{ 9583, "bigshap_sfw", "freight_crate6" },
+	{ 9583, "bigshap_sfw", "freight_crate7" },
+	{ 9583, "bigshap_sfw", "generatorside1_128" },
+	{ 9583, "bigshap_sfw", "man_ceiling" },
+	{ 9583, "bigshap_sfw", "ropladr_sfw" },
+	{ 9583, "bigshap_sfw", "sf_ship_glasst" },
+	{ 9583, "bigshap_sfw", "ship2wall_1" },
+	{ 9583, "bigshap_sfw", "ship2wall_2" },
+	{ 9583, "bigshap_sfw", "ship2wall_3" },
+	{ 9583, "bigshap_sfw", "shipceiling_sfw" },
+	{ 9583, "bigshap_sfw", "shipfloor_sfw" },
+	{ 10840, "bigshed_sfse", "sw_warewinx4" },
+	{ 10840, "bigshed_sfse", "ws_corr_metal2" },
+	{ 10840, "bigshed_sfse", "ws_corr_metal3" },
+	{ 10840, "bigshed_sfse", "ws_corr_plastic" },
+	{ 10840, "bigshed_sfse", "ws_oldwarehouse1" },
+	{ 10840, "bigshed_sfse", "ws_oldwarehouse9" },
+	{ 10840, "bigshed_sfse", "ws_reinforcedbutwonky" },
+	{ 10023, "bigwhitesfe", "archgrnd1_SFE" },
+	{ 10023, "bigwhitesfe", "archgrnd2_SFE" },
+	{ 10023, "bigwhitesfe", "archgrnd3_SFE" },
+	{ 10023, "bigwhitesfe", "bigwhite_2" },
+	{ 10023, "bigwhitesfe", "bigwhite_3" },
+	{ 10023, "bigwhitesfe", "bigwhite_4" },
+	{ 10023, "bigwhitesfe", "bigwhite_5" },
+	{ 10023, "bigwhitesfe", "bigwhite_6" },
+	{ 10023, "bigwhitesfe", "clubpole_SFw" },
+	{ 10023, "bigwhitesfe", "forestfloor3" },
+	{ 10023, "bigwhitesfe", "helix2_sfe" },
+	{ 10023, "bigwhitesfe", "liftdoors_kb_256" },
+	{ 10023, "bigwhitesfe", "lomall_ext2_" },
+	{ 10023, "bigwhitesfe", "recessed_light_SF" },
+	{ 10023, "bigwhitesfe", "sfe_arch10" },
+	{ 10023, "bigwhitesfe", "sfe_arch2" },
+	{ 10023, "bigwhitesfe", "sfe_arch3" },
+	{ 10023, "bigwhitesfe", "sfe_arch4" },
+	{ 10023, "bigwhitesfe", "sfe_arch5" },
+	{ 10023, "bigwhitesfe", "sfe_arch6" },
+	{ 10023, "bigwhitesfe", "sfe_arch7" },
+	{ 10023, "bigwhitesfe", "sfe_arch8" },
+	{ 10023, "bigwhitesfe", "sfe_arch9" },
+	{ 10023, "bigwhitesfe", "zombotech1" },
+	{ 10023, "bigwhitesfe", "zombotech2" },
+	{ 10023, "bigwhitesfe", "zombotech3" },
+	{ 14603, "bikeskool", "artish1" },
+	{ 14603, "bikeskool", "door_pan1_64_128" },
+	{ 14603, "bikeskool", "dor_slider_16_32b" },
+	{ 14603, "bikeskool", "lw_pistol_128" },
+	{ 14603, "bikeskool", "motel_wall3" },
+	{ 3083, "billbox", "ADDWOOD" },
+	{ 3083, "billbox", "billdetaily" },
+	{ 3083, "billbox", "iron" },
+	{ 3083, "billbox", "Sprunk_postersign1" },
+	{ 1259, "billbrd", "BBoardBack" },
+	{ 1259, "billbrd", "bluemetal02" },
+	{ 1259, "billbrd", "fence1" },
+	{ 1259, "billbrd", "spotlight_64" },
+	{ 1259, "billbrd", "ws_oldpainted2" },
+	{ 4230, "billbrd01_lan", "eris_2" },
+	{ 4230, "billbrd01_lan", "heat_02" },
+	{ 4729, "billbrd01_lan2", "eris_1" },
+	{ 4729, "billbrd01_lan2", "hardon_1" },
+	{ 5818, "billbrdlawn", "bobobillboard1" },
+	{ 5818, "billbrdlawn", "semi1Dirty" },
+	{ 5818, "billbrdlawn", "semi2Dirty" },
+	{ 5818, "billbrdlawn", "semi3Dirty" },
+	{ 3922, "bistro", "ahoodfence2" },
+	{ 3922, "bistro", "barbersflr1_LA" },
+	{ 3922, "bistro", "BistroMenu" },
+	{ 3922, "bistro", "Cabinet" },
+	{ 3922, "bistro", "Cakes" },
+	{ 3922, "bistro", "Candle_Holder" },
+	{ 3922, "bistro", "Coffemachine" },
+	{ 3922, "bistro", "concretebig3_256" },
+	{ 3922, "bistro", "Cutlery" },
+	{ 3922, "bistro", "deco_chair_1" },
+	{ 3922, "bistro", "DinerFloor" },
+	{ 3922, "bistro", "Marble" },
+	{ 3922, "bistro", "Marble2" },
+	{ 3922, "bistro", "marblekb_256128" },
+	{ 3922, "bistro", "mottled_grey_64HV" },
+	{ 3922, "bistro", "mp_snow" },
+	{ 3922, "bistro", "Panel" },
+	{ 3922, "bistro", "Plate" },
+	{ 3922, "bistro", "rest_wall4" },
+	{ 3922, "bistro", "SaltNPeppa" },
+	{ 3922, "bistro", "StainedGlass" },
+	{ 3922, "bistro", "sw_door11" },
+	{ 3922, "bistro", "sw_wallbrick_01" },
+	{ 3922, "bistro", "Tablecloth" },
+	{ 3922, "bistro", "vent_64" },
+	{ 3945, "bistro_alpha", "creme128" },
+	{ 3946, "bistro_plants", "starflower2" },
+	{ 3946, "bistro_plants", "starflower4" },
+	{ 2023, "bitsnbobs", "CJ_LIGHTWOOD" },
+	{ 3108, "bjmptx", "target_crv" },
+	{ 3108, "bjmptx", "target_nmbrs" },
+	{ 10871, "blacksky_sfse", "corporate3" },
+	{ 10871, "blacksky_sfse", "ws_altz_wall7_top" },
+	{ 10871, "blacksky_sfse", "ws_blackmarble" },
+	{ 10871, "blacksky_sfse", "ws_glass_balustrade" },
+	{ 10871, "blacksky_sfse", "ws_skywinsgreen" },
+	{ 10871, "blacksky_sfse", "ws_slatetiles" },
+	{ 17510, "blackwestran1_lae2", "des_indrails" },
+	{ 14634, "blindinglite", "ws_volumetriclight" },
+	{ 3077, "blkbrdx", "nf_blackbrd" },
+	{ 3077, "blkbrdx", "tatty_wood_1" },
+	{ 3077, "blkbrdx", "WCList1" },
+	{ 3077, "blkbrdx", "WCList2" },
+	{ 3077, "blkbrdx", "WCList3" },
+	{ 3077, "blkbrdx", "WCScore" },
+	{ 3077, "blkbrdx", "WCTitle" },
+	{ 5630, "blockalpha", "duskyred_64" },
+	{ 5630, "blockalpha", "grille2_LA" },
+	{ 9524, "blokmodb", "alleywin4" },
+	{ 9524, "blokmodb", "bincosf_1" },
+	{ 9524, "blokmodb", "bincosign1_128" },
+	{ 9524, "blokmodb", "binco_sf2" },
+	{ 9524, "blokmodb", "Bow_Grimebrick" },
+	{ 9524, "blokmodb", "fireescape1_sfe" },
+	{ 9524, "blokmodb", "Grass" },
+	{ 9524, "blokmodb", "lightwallv256" },
+	{ 9524, "blokmodb", "lombard_build1_1" },
+	{ 9524, "blokmodb", "lombard_build1_2" },
+	{ 9524, "blokmodb", "lombard_build1_4" },
+	{ 9524, "blokmodb", "lombard_build5_1" },
+	{ 9524, "blokmodb", "lombard_build5_2" },
+	{ 9524, "blokmodb", "lombard_build5_3" },
+	{ 9524, "blokmodb", "sf_garagedr1" },
+	{ 1685, "blokpalet", "ws_blockpall" },
+	{ 10310, "boigas_sfe", "burgershotmenu256" },
+	{ 10310, "boigas_sfe", "burgershotsign1_256" },
+	{ 10310, "boigas_sfe", "vgnburger_256" },
+	{ 9525, "boigas_sfw", "calfederal4" },
+	{ 9525, "boigas_sfw", "calfederal5" },
+	{ 9525, "boigas_sfw", "GEwhite1_64" },
+	{ 9525, "boigas_sfw", "vgnburgwal1_128" },
+	{ 9525, "boigas_sfw", "vgnburgwal2_128" },
+	{ 9525, "boigas_sfw", "vgnburgwal6_256" },
+	{ 5042, "bombshop_las", "dynobox" },
+	{ 5042, "bombshop_las", "greymetal" },
+	{ 5042, "bombshop_las", "kb_spray_light1" },
+	{ 5042, "bombshop_las", "lightcover1" },
+	{ 5042, "bombshop_las", "shutterclosed_law" },
+	{ 10148, "bombshop_sfe", "calendar01" },
+	{ 3269, "boneyard", "bonyrd_frame1" },
+	{ 3269, "boneyard", "bonyrd_skin1" },
+	{ 1248, "bonus", "gta3l" },
+	{ 2923, "bottle_bank", "recycle" },
+	{ 1220, "boxes", "cardboxes_128" },
+	{ 1220, "boxes", "crate128" },
+	{ 3820, "boxhses_sfsx", "hilcouwall1" },
+	{ 3820, "boxhses_sfsx", "LAbluewall" },
+	{ 3820, "boxhses_sfsx", "LAcreamwall1" },
+	{ 3820, "boxhses_sfsx", "LAgreenwall" },
+	{ 3820, "boxhses_sfsx", "sl_vic_decor1" },
+	{ 3820, "boxhses_sfsx", "stonewall_la" },
+	{ 3820, "boxhses_sfsx", "sw_barnwoodblu" },
+	{ 3820, "boxhses_sfsx", "tanboard1" },
+	{ 3820, "boxhses_sfsx", "ws_ irongate" },
+	{ 3820, "boxhses_sfsx", "ws_ irongate_white" },
+	{ 3820, "boxhses_sfsx", "ws_ irongate_yello" },
+	{ 3820, "boxhses_sfsx", "ws_blocks_grey_1" },
+	{ 3820, "boxhses_sfsx", "ws_blocks_red_1" },
+	{ 3820, "boxhses_sfsx", "ws_boxhouse_wins5" },
+	{ 3820, "boxhses_sfsx", "ws_boxhouse_wins7" },
+	{ 3820, "boxhses_sfsx", "ws_chimneypot" },
+	{ 3820, "boxhses_sfsx", "ws_doorframe" },
+	{ 3820, "boxhses_sfsx", "ws_garagedoor2_blue" },
+	{ 3820, "boxhses_sfsx", "ws_garagedoor2_white" },
+	{ 3820, "boxhses_sfsx", "ws_garagedoor3_green" },
+	{ 3820, "boxhses_sfsx", "ws_garagedoor3_pink" },
+	{ 3820, "boxhses_sfsx", "ws_green_wall1" },
+	{ 3820, "boxhses_sfsx", "ws_mixedbrick" },
+	{ 3820, "boxhses_sfsx", "ws_painted_doors1" },
+	{ 3820, "boxhses_sfsx", "ws_painted_doors2" },
+	{ 3820, "boxhses_sfsx", "ws_painted_doors3" },
+	{ 3820, "boxhses_sfsx", "ws_pink_wall1" },
+	{ 3820, "boxhses_sfsx", "ws_shutters" },
+	{ 3820, "boxhses_sfsx", "ws_stucco_white_2" },
+	{ 3820, "boxhses_sfsx", "ws_vic_bits" },
+	{ 3820, "boxhses_sfsx", "ws_vic_cornice1" },
+	{ 3820, "boxhses_sfsx", "ws_vic_wood1" },
+	{ 3820, "boxhses_sfsx", "ws_wood_doors1" },
+	{ 3820, "boxhses_sfsx", "ws_wood_doors2" },
+	{ 9507, "boxybld2_sfw", "bevdoor01_law" },
+	{ 9507, "boxybld2_sfw", "boxybox_sf3z" },
+	{ 9507, "boxybld2_sfw", "compcouwall1" },
+	{ 9507, "boxybld2_sfw", "comptdoor3" },
+	{ 9507, "boxybld2_sfw", "dirty01" },
+	{ 9507, "boxybld2_sfw", "gz_vic4a" },
+	{ 9507, "boxybld2_sfw", "gz_vic4b" },
+	{ 9507, "boxybld2_sfw", "gz_vic4c" },
+	{ 9507, "boxybld2_sfw", "gz_vic4e" },
+	{ 9507, "boxybld2_sfw", "hospital3_sfw" },
+	{ 9507, "boxybld2_sfw", "lombard_build2_1" },
+	{ 9507, "boxybld2_sfw", "sfn_rock2" },
+	{ 9507, "boxybld2_sfw", "sfn_rockgrass1" },
+	{ 9507, "boxybld2_sfw", "sfn_rockgrass10" },
+	{ 9507, "boxybld2_sfw", "sfw_poshbox1" },
+	{ 9507, "boxybld2_sfw", "sfw_poshbox1b" },
+	{ 9507, "boxybld2_sfw", "sfw_poshbox1c" },
+	{ 9507, "boxybld2_sfw", "sfw_poshbox1d" },
+	{ 9507, "boxybld2_sfw", "vengardoor01_SFW" },
+	{ 9496, "boxybld_sfw", "boxybox_sf1z" },
+	{ 9496, "boxybld_sfw", "boxybox_sf5bz" },
+	{ 9496, "boxybld_sfw", "fence1_sfw" },
+	{ 9496, "boxybld_sfw", "hospwall1" },
+	{ 9496, "boxybld_sfw", "pierbuild_btm1" },
+	{ 9496, "boxybld_sfw", "taxi_256" },
+	{ 9496, "boxybld_sfw", "ven_house4" },
+	{ 9496, "boxybld_sfw", "ws_alley_conc1" },
+	{ 9496, "boxybld_sfw", "ws_altz_wall8_bot" },
+	{ 3054, "break_ballx", "brk_ball1" },
+	{ 3054, "break_ballx", "brk_Ball2" },
+	{ 1486, "break_bar", "CJ_bottle" },
+	{ 1486, "break_bar", "CJ_bottle2" },
+	{ 1453, "break_farm", "CJ_DarkWood" },
+	{ 1453, "break_farm", "CJ_HAY" },
+	{ 1453, "break_farm", "cj_hay2" },
+	{ 1408, "break_fence1", "CJ_W_wood" },
+	{ 1408, "break_fence1", "compfence2_LAe" },
+	{ 1419, "break_fence3", "CJ_BIN_LID" },
+	{ 1419, "break_fence3", "CJ_DUMP" },
+	{ 1419, "break_fence3", "CJ_DUMP2" },
+	{ 1419, "break_fence3", "CJ_DUMP3" },
+	{ 1419, "break_fence3", "CJ_FRAME_Glass" },
+	{ 1419, "break_fence3", "CJ_Trafficlights" },
+	{ 1419, "break_fence3", "ornatefence" },
+	{ 1411, "break_fen_mesh2", "mp_barbedwire" },
+	{ 1413, "break_f_mesh", "CJ_CORRIGATED" },
+	{ 1413, "break_f_mesh", "meetwalv2" },
+	{ 1407, "break_f_w", "CJ_GREENWOOD" },
+	{ 1407, "break_f_w", "CJ_SLATEDWOOD" },
+	{ 1448, "break_pallet", "Gen_Bin_Bag" },
+	{ 1448, "break_pallet", "slated" },
+	{ 1422, "break_road", "CJ_DETOUR" },
+	{ 1422, "break_road", "CJ_orangebarrier2" },
+	{ 1422, "break_road", "CJ_ROAD_SIGN1" },
+	{ 1422, "break_road", "cj_S_POLE" },
+	{ 1422, "break_road", "CJ_W_BALL" },
+	{ 1459, "break_road_ws", "CJ_SHEET2" },
+	{ 1426, "break_scaffold", "cheerybox03" },
+	{ 1426, "break_scaffold", "CJ_avery" },
+	{ 1426, "break_scaffold", "CJ_BLUE_WOOD" },
+	{ 1426, "break_scaffold", "CJ_NET" },
+	{ 1414, "break_street1", "cj_crates" },
+	{ 1414, "break_street1", "CJ_TV_SCREEN" },
+	{ 1355, "break_s_bins", "CJ_RED_LEATHER" },
+	{ 1355, "break_s_bins", "CJ_SF_BUCKET" },
+	{ 1355, "break_s_bins", "CJ_SKIP2" },
+	{ 1355, "break_s_bins", "CJ_TABLE_TOP" },
+	{ 1355, "break_s_bins", "CJ_WOOD_DARK" },
+	{ 1355, "break_s_bins", "dirt64b" },
+	{ 1355, "break_s_bins", "Gen_Box" },
+	{ 1355, "break_s_bins", "marble1" },
+	{ 1443, "break_s_fillers", "cj_burger" },
+	{ 1443, "break_s_fillers", "CJ_SEX_SIGN1" },
+	{ 1444, "break_s_sf", "CJ_FERRY_MAP" },
+	{ 1365, "break_s_ws", "CJ_SKIP" },
+	{ 1210, "breifcase", "briefcase" },
+	{ 10864, "bridgeland_sfse", "prolaps02" },
+	{ 10864, "bridgeland_sfse", "ws_altz_wall1" },
+	{ 946, "bskball_standext", "bballboard128" },
+	{ 946, "bskball_standext", "drkbrownmetal" },
+	{ 4593, "buildblk55", "downtwin1" },
+	{ 4593, "buildblk55", "drugstore256" },
+	{ 4593, "buildblk55", "GB_nastybar03" },
+	{ 4593, "buildblk55", "holpac01_law" },
+	{ 4593, "buildblk55", "lawshop4" },
+	{ 4593, "buildblk55", "sl_plazatile01" },
+	{ 4593, "buildblk55", "snpdsqdoor" },
+	{ 4593, "buildblk55", "ws_oldershop1" },
+	{ 4593, "buildblk55", "ws_oldershop2" },
+	{ 4604, "buildblk555", "gm_labuld5_a" },
+	{ 4604, "buildblk555", "gm_labuld5_b" },
+	{ 4604, "buildblk555", "gm_labuld5_c" },
+	{ 4604, "buildblk555", "sl_sfngrssdrt01" },
+	{ 8869, "buildingsitevge", "boardgate_law" },
+	{ 8869, "buildingsitevge", "telepole2128" },
+	{ 8869, "buildingsitevge", "ws_floodlight" },
+	{ 8869, "buildingsitevge", "ws_generatorside" },
+	{ 8869, "buildingsitevge", "ws_oldpaintedyello" },
+	{ 8869, "buildingsitevge", "ws_woodenscreen1" },
+	{ 5819, "buildtestlawn", "alleydoor8" },
+	{ 5819, "buildtestlawn", "lawshopwall4" },
+	{ 1243, "buoy", "buoyrust_128" },
+	{ 1243, "buoy", "yellowrust_64" },
+	{ 11092, "burgalrystore_sfse", "Bow_LoadingBayDoor" },
+	{ 11092, "burgalrystore_sfse", "ws_altz_wall2bluetop" },
+	{ 11092, "burgalrystore_sfse", "ws_HARRYPLUMS" },
+	{ 11092, "burgalrystore_sfse", "ws_peeling_ceiling2" },
+	{ 11092, "burgalrystore_sfse", "ws_warehswin1" },
+	{ 11092, "burgalrystore_sfse", "ws_warehswin2" },
+	{ 11092, "burgalrystore_sfse", "ws_whousedoor1" },
+	{ 2212, "burger_tray", "bkidside" },
+	{ 2212, "burger_tray", "btdeck256" },
+	{ 2212, "burger_tray", "burgerfries" },
+	{ 2212, "burger_tray", "burgerfront" },
+	{ 2212, "burger_tray", "burgerfront2" },
+	{ 2212, "burger_tray", "burgerkids" },
+	{ 2212, "burger_tray", "burgerside" },
+	{ 2212, "burger_tray", "burgertop" },
+	{ 2212, "burger_tray", "chickenskin" },
+	{ 2212, "burger_tray", "drinktop_cb" },
+	{ 2212, "burger_tray", "fries_cb" },
+	{ 2212, "burger_tray", "pplate" },
+	{ 2212, "burger_tray", "salad" },
+	{ 2212, "burger_tray", "sprinkler" },
+	{ 2212, "burger_tray", "sprinkles" },
+	{ 2212, "burger_tray", "sprunk_cb" },
+	{ 6257, "burgsh01_law", "burgroof01_LAw" },
+	{ 6257, "burgsh01_law", "fastfd01_LA" },
+	{ 6257, "burgsh01_law", "newall2" },
+	{ 14383, "burg_1", "burglry_wall3" },
+	{ 14383, "burg_1", "carpet4kb" },
+	{ 14383, "burg_1", "curtain_sink2" },
+	{ 14383, "burg_1", "gragedoorkb1" },
+	{ 14383, "burg_1", "hospital_wall2" },
+	{ 14383, "burg_1", "kb_kit_wal1" },
+	{ 14383, "burg_1", "kit_windo_12" },
+	{ 14383, "burg_1", "la_carp3" },
+	{ 14383, "burg_1", "mp_diner_woodwall" },
+	{ 14383, "burg_1", "wallpapkb1" },
+	{ 17958, "burnsalpha", "plantb256" },
+	{ 17545, "burnsground", "ahoodgardr" },
+	{ 17545, "burnsground", "bluapartwall1_256" },
+	{ 17545, "burnsground", "dirtyredwall512" },
+	{ 17545, "burnsground", "indund_64" },
+	{ 17545, "burnsground", "LAroad_offroad1" },
+	{ 17545, "burnsground", "newall1-1128" },
+	{ 17545, "burnsground", "newall10_seamless" },
+	{ 1257, "bustopm", "bus shelter" },
+	{ 1257, "bustopm", "CJ_BS_MENU5" },
+	{ 1257, "bustopm", "CJ_GREENMETAL" },
+	{ 10012, "cables_sfe", "dt_overwire_t" },
+	{ 10143, "calfed_sfe", "calfederal1" },
+	{ 10143, "calfed_sfe", "calfederal2" },
+	{ 10143, "calfed_sfe", "calfederal3" },
+	{ 10143, "calfed_sfe", "calfederal6" },
+	{ 10143, "calfed_sfe", "calfederal7" },
+	{ 10143, "calfed_sfe", "slidingdoor01_128" },
+	{ 6094, "canalsg_law", "block2bb" },
+	{ 6094, "canalsg_law", "Bow_church_grass_gen" },
+	{ 6094, "canalsg_law", "sw_brewbrick01" },
+	{ 6094, "canalsg_law", "venicearch1" },
+	{ 6094, "canalsg_law", "ws_sheetwood_clean" },
+	{ 642, "canopy", "kb_canopybse64" },
+	{ 642, "canopy", "weathered wood2 64HV" },
+	{ 642, "canopy", "wood02" },
+	{ 5766, "capitol_lawn", "alleygroundb256" },
+	{ 5766, "capitol_lawn", "capitol1_LAwN" },
+	{ 5766, "capitol_lawn", "capitol2_LAwN" },
+	{ 5766, "capitol_lawn", "capitol3_LAwN" },
+	{ 5766, "capitol_lawn", "capitolwin1_LAwN" },
+	{ 5766, "capitol_lawn", "hilcouwall2" },
+	{ 5766, "capitol_lawn", "lasjmscruffwall3" },
+	{ 5766, "capitol_lawn", "vgs_whitewall_128" },
+	{ 9276, "caravanprk_sfn", "desertgryard256" },
+	{ 9276, "caravanprk_sfn", "sfn_rocktbrn128" },
+	{ 9276, "caravanprk_sfn", "sl_sfndirt01" },
+	{ 9276, "caravanprk_sfn", "sl_sfngrass01" },
+	{ 10051, "carimpound_sfe", "poundroofblock_sfe" },
+	{ 10051, "carimpound_sfe", "poundroofsupport_sfe" },
+	{ 10051, "carimpound_sfe", "poundwall1_sfe" },
+	{ 14478, "carlsflr", "carlscock" },
+	{ 14476, "carlslounge", "ah_bantisto" },
+	{ 14476, "carlslounge", "AH_barpole1" },
+	{ 14476, "carlslounge", "ah_blu_paper" },
+	{ 14476, "carlslounge", "ah_blu_paper2" },
+	{ 14476, "carlslounge", "AH_cheapredcarpet" },
+	{ 14476, "carlslounge", "AH_plnskirting" },
+	{ 14476, "carlslounge", "breezewallbse" },
+	{ 14476, "carlslounge", "burg_curt_1" },
+	{ 14489, "carlspics", "ah_bdflwd" },
+	{ 14489, "carlspics", "AH_flroortile7" },
+	{ 14489, "carlspics", "AH_landscap1" },
+	{ 14489, "carlspics", "AH_landscap3" },
+	{ 14489, "carlspics", "AH_picture2" },
+	{ 14489, "carlspics", "AH_picture3" },
+	{ 14489, "carlspics", "AH_picture4" },
+	{ 14489, "carlspics", "AH_wdpanelend" },
+	{ 14471, "carls_kit1", "barbersflr1" },
+	{ 14471, "carls_kit1", "kit_table" },
+	{ 14471, "carls_kit1", "wall1" },
+	{ 14471, "carls_kit1", "wall3" },
+	{ 14471, "carls_kit1", "wall7" },
+	{ 14472, "carls_kit2", "curtain_sinkb" },
+	{ 14472, "carls_kit2", "fridge_1b" },
+	{ 14472, "carls_kit2", "micro1" },
+	{ 14472, "carls_kit2", "stove_1" },
+	{ 14472, "carls_kit2", "wall2b" },
+	{ 14472, "carls_kit2", "wall4b" },
+	{ 14472, "carls_kit2", "wall5b" },
+	{ 8420, "carpark3_lvs", "Corner1_128" },
+	{ 8420, "carpark3_lvs", "greyground12802" },
+	{ 8420, "carpark3_lvs", "greystones01_128" },
+	{ 8420, "carpark3_lvs", "newgrnd1_128" },
+	{ 8420, "carpark3_lvs", "Pave02_128" },
+	{ 9254, "carparkssfn", "decoacwallbtm1_256" },
+	{ 9254, "carparkssfn", "parking2" },
+	{ 9254, "carparkssfn", "parking2plain" },
+	{ 9254, "carparkssfn", "sf_junction1" },
+	{ 9254, "carparkssfn", "sf_junction2" },
+	{ 11145, "carrierint_sfs", "ab_ACcarrierDoor" },
+	{ 11145, "carrierint_sfs", "ab_BoltPanel" },
+	{ 11145, "carrierint_sfs", "chainlinkac1_128" },
+	{ 11145, "carrierint_sfs", "noodpot_64" },
+	{ 11145, "carrierint_sfs", "ws_accables" },
+	{ 11145, "carrierint_sfs", "ws_cogtrack" },
+	{ 11145, "carrierint_sfs", "ws_doorfront" },
+	{ 11145, "carrierint_sfs", "ws_floor2" },
+	{ 11145, "carrierint_sfs", "ws_shipmetal3" },
+	{ 11145, "carrierint_sfs", "ws_shipmetal4" },
+	{ 3113, "carrierxr", "ws_carrierdeckbase" },
+	{ 3113, "carrierxr", "ws_controlpanel1" },
+	{ 3113, "carrierxr", "ws_decklines" },
+	{ 3113, "carrierxr", "ws_shipmetal1" },
+	{ 10770, "carrier_sfse", "ws_bridgewins" },
+	{ 10770, "carrier_sfse", "ws_carrierdecals" },
+	{ 10770, "carrier_sfse", "ws_hulltemp2" },
+	{ 3850, "carshowglass_sfsx", "ws_carshowwin1" },
+	{ 3850, "carshowglass_sfsx", "ws_glass_balustrade_better" },
+	{ 11301, "carshow_sfse", "concpanel_la" },
+	{ 11301, "carshow_sfse", "concreteslab_small" },
+	{ 11301, "carshow_sfse", "laspryshpsig1" },
+	{ 11301, "carshow_sfse", "ws_basheddoor1" },
+	{ 11301, "carshow_sfse", "ws_carshowdoor1" },
+	{ 11301, "carshow_sfse", "ws_officy_ceiling" },
+	{ 11301, "carshow_sfse", "ws_rollerdoor_silver" },
+	{ 11301, "carshow_sfse", "ws_Transfender_dirty" },
+	{ 11301, "carshow_sfse", "ws_wangcar1" },
+	{ 11301, "carshow_sfse", "ws_wangcar2" },
+	{ 1458, "cart", "CJ_GENER_WHEEL" },
+	{ 1458, "cart", "CJ_tyre" },
+	{ 14407, "carter_block", "ab_corFloor" },
+	{ 14407, "carter_block", "ab_stripped_floor2" },
+	{ 14407, "carter_block", "black256" },
+	{ 14407, "carter_block", "dt_ind_door" },
+	{ 14407, "carter_block", "firestation_rollerdoor2" },
+	{ 14407, "carter_block", "mp_carter_bars" },
+	{ 14407, "carter_block", "mp_carter_bwall" },
+	{ 14407, "carter_block", "mp_carter_ceiling" },
+	{ 14407, "carter_block", "mp_carter_gangway" },
+	{ 14407, "carter_block", "mp_carter_girder" },
+	{ 14407, "carter_block", "mp_carter_light" },
+	{ 14407, "carter_block", "mp_carter_partyspot" },
+	{ 14407, "carter_block", "mp_carter_sep" },
+	{ 14407, "carter_block", "mp_carter_smoothwall" },
+	{ 14407, "carter_block", "mp_carter_tramp" },
+	{ 14407, "carter_block", "mp_carter_tramp1" },
+	{ 14407, "carter_block", "mp_carter_wall" },
+	{ 14407, "carter_block", "mp_carter_wallbot" },
+	{ 14407, "carter_block", "mp_carter_whitewall" },
+	{ 14407, "carter_block", "mp_carter_windows" },
+	{ 14407, "carter_block", "zebra_skin" },
+	{ 14415, "carter_block_2", "cd_wall1" },
+	{ 14415, "carter_block_2", "cl_of_wltemp" },
+	{ 14415, "carter_block_2", "mp_carter_cage" },
+	{ 14415, "carter_block_2", "mp_carter_cuffs" },
+	{ 14415, "carter_block_2", "mp_carter_floor" },
+	{ 14415, "carter_block_2", "mp_carter_pcarpet" },
+	{ 14415, "carter_block_2", "mp_carter_statue" },
+	{ 14415, "carter_block_2", "mp_carter_wallpaper" },
+	{ 14415, "carter_block_2", "mp_gs_woodpanel" },
+	{ 14415, "carter_block_2", "mp_gs_woodpanel1" },
+	{ 14415, "carter_block_2", "mp_motel_carpet1" },
+	{ 14415, "carter_block_2", "mp_shop_floor2" },
+	{ 14415, "carter_block_2", "walp29S" },
+	{ 14415, "carter_block_2", "ws_doormat" },
+	{ 17933, "carter_mainmap", "mp_apt1_brokedoor" },
+	{ 17933, "carter_mainmap", "mp_carter_carpet" },
+	{ 17933, "carter_mainmap", "mp_carter_doorway" },
+	{ 17933, "carter_mainmap", "mp_carter_greenwall" },
+	{ 14466, "carter_outside", "comptwall22" },
+	{ 14466, "carter_outside", "gangwin2_LAe" },
+	{ 14466, "carter_outside", "mp_carter_corrwall" },
+	{ 7088, "casinoshops1", "247sign1" },
+	{ 7088, "casinoshops1", "247sign2" },
+	{ 7088, "casinoshops1", "crapdoor1_256" },
+	{ 7088, "casinoshops1", "fakestone1_LA" },
+	{ 7088, "casinoshops1", "GB_nastybar19" },
+	{ 7088, "casinoshops1", "hosp02_law" },
+	{ 7088, "casinoshops1", "inwindow1shdw64" },
+	{ 7088, "casinoshops1", "LAredwall" },
+	{ 7088, "casinoshops1", "sexsign1_256" },
+	{ 7088, "casinoshops1", "venshade01_law" },
+	{ 7088, "casinoshops1", "vgnbordpnk1_256" },
+	{ 7088, "casinoshops1", "vgshopwndw01_128" },
+	{ 7088, "casinoshops1", "vgsn_yelwall" },
+	{ 7088, "casinoshops1", "vinesign1_LAw" },
+	{ 14577, "casinovault01", "ab_concrete" },
+	{ 14577, "casinovault01", "ab_corWallLwr" },
+	{ 14577, "casinovault01", "ab_corWallUpr" },
+	{ 14577, "casinovault01", "ab_loadbayMark01" },
+	{ 14577, "casinovault01", "ab_mottleSteps" },
+	{ 14577, "casinovault01", "ab_shutter1" },
+	{ 14577, "casinovault01", "carp04S" },
+	{ 14577, "casinovault01", "cof_wood1" },
+	{ 14577, "casinovault01", "compound_roof1" },
+	{ 14577, "casinovault01", "conc_wall_128H" },
+	{ 14577, "casinovault01", "copbtm_brown" },
+	{ 14577, "casinovault01", "dts_elevator_door" },
+	{ 14577, "casinovault01", "vaultFloor" },
+	{ 14577, "casinovault01", "vaultWall" },
+	{ 14577, "casinovault01", "wallTrim2" },
+	{ 2176, "casino_props", "flameOptic" },
+	{ 2176, "casino_props", "marblebox" },
+	{ 14582, "casmafbar", "ab_CasRomCeil" },
+	{ 14582, "casmafbar", "ab_CasRomTile1" },
+	{ 14582, "casmafbar", "beerfridge128" },
+	{ 14582, "casmafbar", "bottlestacked256" },
+	{ 14582, "casmafbar", "ginoptic128" },
+	{ 14582, "casmafbar", "martinioptic128" },
+	{ 14582, "casmafbar", "opticbracket128" },
+	{ 14582, "casmafbar", "vodkaoptic128" },
+	{ 14582, "casmafbar", "whiskyoptic128" },
+	{ 8501, "casroyale", "royale02_128" },
+	{ 8501, "casroyale", "royaledoor01_128" },
+	{ 8501, "casroyale", "royaleledge01" },
+	{ 8501, "casroyale", "royaleroof01_64" },
+	{ 8501, "casroyale", "royalesign02_256" },
+	{ 8501, "casroyale", "royalewall01_128" },
+	{ 8501, "casroyale", "royalewall02_128" },
+	{ 8501, "casroyale", "royalewall03_128" },
+	{ 8501, "casroyale", "royalewindow01_128" },
+	{ 2799, "castable", "chrome_pipe_32" },
+	{ 2799, "castable", "cl_ashtray" },
+	{ 2799, "castable", "cl_cig" },
+	{ 2799, "castable", "cl_cigar_1" },
+	{ 2799, "castable", "cl_hiball2" },
+	{ 2799, "castable", "cl_knif_fork" },
+	{ 2799, "castable", "cl_napkin" },
+	{ 2799, "castable", "cl_redwine_gls" },
+	{ 2799, "castable", "cl_seat2temp" },
+	{ 2799, "castable", "cl_s_and_p" },
+	{ 2799, "castable", "cl_table_top_256" },
+	{ 2799, "castable", "cl_tble_lamp" },
+	{ 2799, "castable", "cl_tbl_shado2a" },
+	{ 2799, "castable", "cl_winebtl1" },
+	{ 2799, "castable", "cl_winebtl2" },
+	{ 10368, "cathedral_sfs", "dirt64b2" },
+	{ 10368, "cathedral_sfs", "ws_bigwooddoor" },
+	{ 10368, "cathedral_sfs", "ws_coppersheet" },
+	{ 10368, "cathedral_sfs", "ws_woodyhedge" },
+	{ 2343, "cb_bar_bits", "CJ_POLISHED" },
+	{ 2767, "cb_details", "100%fowl_cb" },
+	{ 2767, "cb_details", "CJ_cbell_top" },
+	{ 2767, "cb_details", "CJ_cb_bin1" },
+	{ 2767, "cb_details", "cluckinbig_cb" },
+	{ 2767, "cb_details", "fillets_cb" },
+	{ 2767, "cb_details", "fillet_cb" },
+	{ 2767, "cb_details", "kidsfront_cb" },
+	{ 2767, "cb_details", "pattern1_cb" },
+	{ 2767, "cb_details", "wrapfood_cb" },
+	{ 2767, "cb_details", "wrapper_cb" },
+	{ 3462, "ceaserangel", "ceaser_angel01_256" },
+	{ 8618, "ceasersign", "Caligulasign01_256" },
+	{ 8618, "ceasersign", "ceaserspillar01_128" },
+	{ 8618, "ceasersign", "ceaserssign01_128" },
+	{ 8618, "ceasersign", "ceaserssign02_256" },
+	{ 8618, "ceasersign", "mexreast1_256" },
+	{ 13139, "cecuntetunnel", "ab_walllite" },
+	{ 13139, "cecuntetunnel", "airportwall_2_2" },
+	{ 13139, "cecuntetunnel", "conc_wall_stripd128H" },
+	{ 13139, "cecuntetunnel", "dirtywall_256" },
+	{ 13139, "cecuntetunnel", "hangingwires2" },
+	{ 13139, "cecuntetunnel", "Pave04_128" },
+	{ 3741, "cehillhse14", "comptonbrij1" },
+	{ 3741, "cehillhse14", "comptwindo4" },
+	{ 3741, "cehillhse14", "glassblocks1" },
+	{ 3741, "cehillhse14", "ladukfeen1" },
+	{ 3741, "cehillhse14", "swimpoolbtm1_128" },
+	{ 3741, "cehillhse14", "swimpoolside1_128" },
+	{ 3048, "cemenx", "ct_hole" },
+	{ 5710, "cemetery_law", "brickgrey" },
+	{ 5710, "cemetery_law", "cemebuild01_law" },
+	{ 5710, "cemetery_law", "cemebuild02_law" },
+	{ 5710, "cemetery_law", "cemewall04_law" },
+	{ 5710, "cemetery_law", "churcharch_law" },
+	{ 5710, "cemetery_law", "conc_wall2_128H" },
+	{ 5710, "cemetery_law", "desmud" },
+	{ 5710, "cemetery_law", "desmudgrass" },
+	{ 5710, "cemetery_law", "Grass_path_law" },
+	{ 5710, "cemetery_law", "grave01_law" },
+	{ 5710, "cemetery_law", "hottop6_law" },
+	{ 5710, "cemetery_law", "mausdoor01_law" },
+	{ 5710, "cemetery_law", "mauswall01_law" },
+	{ 5710, "cemetery_law", "mauswall02_law" },
+	{ 5710, "cemetery_law", "mauswall03_law" },
+	{ 5710, "cemetery_law", "ppinkwallb512" },
+	{ 5712, "cemetint_law", "crypttv_law" },
+	{ 5712, "cemetint_law", "lw_seat2_law" },
+	{ 5712, "cemetint_law", "pizzabox" },
+	{ 1597, "centralresac1", "blueash" },
+	{ 1597, "centralresac1", "fuzzyplant256" },
+	{ 1597, "centralresac1", "hedge2_128" },
+	{ 1597, "centralresac1", "kbbark_test1" },
+	{ 1597, "centralresac1", "kbtree3_test" },
+	{ 1597, "centralresac1", "kbtree4_test" },
+	{ 13363, "cephotoblockcs_t", "alleydoor3" },
+	{ 13363, "cephotoblockcs_t", "BigS01_law" },
+	{ 13363, "cephotoblockcs_t", "dustyjade_128" },
+	{ 13363, "cephotoblockcs_t", "lampost_16clr" },
+	{ 13363, "cephotoblockcs_t", "sw_door16" },
+	{ 13363, "cephotoblockcs_t", "sw_wall_05" },
+	{ 13363, "cephotoblockcs_t", "sw_wind23" },
+	{ 13363, "cephotoblockcs_t", "wallwashv128" },
+	{ 3335, "ceroadsigns", "stormdrain3_nt" },
+	{ 3335, "ceroadsigns", "sw_barberpole" },
+	{ 3335, "ceroadsigns", "sw_mailbox" },
+	{ 3335, "ceroadsigns", "sw_roadsign" },
+	{ 13364, "cetown3cs_t", "des_cafesign" },
+	{ 13364, "cetown3cs_t", "floor_tileone_256" },
+	{ 13364, "cetown3cs_t", "pierboards_la" },
+	{ 13364, "cetown3cs_t", "sw_barnwood2" },
+	{ 13364, "cetown3cs_t", "sw_door17" },
+	{ 13364, "cetown3cs_t", "sw_door18" },
+	{ 13364, "cetown3cs_t", "sw_slate01" },
+	{ 13364, "cetown3cs_t", "sw_storewin01" },
+	{ 13364, "cetown3cs_t", "sw_wall03" },
+	{ 13364, "cetown3cs_t", "sw_wind10" },
+	{ 13364, "cetown3cs_t", "sw_wind15" },
+	{ 13364, "cetown3cs_t", "sw_wind18" },
+	{ 13364, "cetown3cs_t", "taxitop01" },
+	{ 13364, "cetown3cs_t", "ws_sandstone2" },
+	{ 13078, "cewrehse", "corr_roof1" },
+	{ 13078, "cewrehse", "sw_wind13" },
+	{ 12946, "ce_bankalley1", "alleywall3" },
+	{ 12946, "ce_bankalley1", "Bow_abbmetaldoor" },
+	{ 12946, "ce_bankalley1", "hospunder_law" },
+	{ 12946, "ce_bankalley1", "lalightledge" },
+	{ 12946, "ce_bankalley1", "newindow13" },
+	{ 12946, "ce_bankalley1", "pizza_wellstacked" },
+	{ 12946, "ce_bankalley1", "sjmALLEY" },
+	{ 12946, "ce_bankalley1", "sw_brick03" },
+	{ 12946, "ce_bankalley1", "sw_dicksounds" },
+	{ 12946, "ce_bankalley1", "sw_door09" },
+	{ 12946, "ce_bankalley1", "sw_furnisign" },
+	{ 12946, "ce_bankalley1", "sw_stairs1" },
+	{ 12946, "ce_bankalley1", "sw_stereosign" },
+	{ 12946, "ce_bankalley1", "sw_storewin02" },
+	{ 12946, "ce_bankalley1", "sw_warewall" },
+	{ 12946, "ce_bankalley1", "sw_warewin" },
+	{ 12946, "ce_bankalley1", "sw_wind05" },
+	{ 12946, "ce_bankalley1", "ws_ammu-awning" },
+	{ 12946, "ce_bankalley1", "ws_basheddoor2" },
+	{ 12946, "ce_bankalley1", "ws_boxhouse_wins1" },
+	{ 12944, "ce_bankalley2", "newall5-2" },
+	{ 12944, "ce_bankalley2", "sw_awningsx4" },
+	{ 12944, "ce_bankalley2", "sw_brick04" },
+	{ 12944, "ce_bankalley2", "sw_dryclean" },
+	{ 12944, "ce_bankalley2", "sw_genx4" },
+	{ 12944, "ce_bankalley2", "sw_jazz" },
+	{ 12944, "ce_bankalley2", "sw_litlad" },
+	{ 12944, "ce_bankalley2", "sw_wind08" },
+	{ 12822, "ce_bankalley3", "bankside_256" },
+	{ 12822, "ce_bankalley3", "Metal1_128" },
+	{ 12822, "ce_bankalley3", "sffront5_256" },
+	{ 12822, "ce_bankalley3", "sw_Fleishberg01" },
+	{ 3378, "ce_breweryref", "sw_keg01" },
+	{ 3378, "ce_breweryref", "sw_keg02" },
+	{ 3314, "ce_burbhouse", "black_128" },
+	{ 3314, "ce_burbhouse", "notice02" },
+	{ 3314, "ce_burbhouse", "shingles4" },
+	{ 3314, "ce_burbhouse", "sw_door13" },
+	{ 3314, "ce_burbhouse", "sw_lattice" },
+	{ 3314, "ce_burbhouse", "sw_shedwindow1" },
+	{ 3314, "ce_burbhouse", "sw_wallbrick_06" },
+	{ 3314, "ce_burbhouse", "ventc64" },
+	{ 3314, "ce_burbhouse", "wallbeigenew256" },
+	{ 13060, "ce_fact01", "airconfrnt1_128" },
+	{ 13060, "ce_fact01", "airportmetalwall256" },
+	{ 13060, "ce_fact01", "des_hooswin2" },
+	{ 13060, "ce_fact01", "des_sherrifwall1" },
+	{ 13060, "ce_fact01", "glassblock_law" },
+	{ 13060, "ce_fact01", "puttywall1" },
+	{ 13059, "ce_fact03", "GB_truckdepot19" },
+	{ 13059, "ce_fact03", "Ind_PKabin" },
+	{ 13059, "ce_fact03", "shitydoor1_256" },
+	{ 13059, "ce_fact03", "sw_corrugtile" },
+	{ 13059, "ce_fact03", "sw_garwind" },
+	{ 13059, "ce_fact03", "sw_newcorrug" },
+	{ 13059, "ce_fact03", "sw_shedwall01" },
+	{ 3374, "ce_farmxref", "desertstones256" },
+	{ 3374, "ce_farmxref", "forestfloor256" },
+	{ 3374, "ce_farmxref", "forestfloorbranch256" },
+	{ 3374, "ce_farmxref", "sw_barndoor1" },
+	{ 3374, "ce_farmxref", "sw_barndoor2" },
+	{ 3374, "ce_farmxref", "sw_barnfloor1" },
+	{ 3374, "ce_farmxref", "sw_barnwind01" },
+	{ 3374, "ce_farmxref", "sw_barnwood1" },
+	{ 3374, "ce_farmxref", "sw_barnwood4" },
+	{ 3374, "ce_farmxref", "sw_barnwood5" },
+	{ 3374, "ce_farmxref", "sw_woodflloorsplat" },
+	{ 12871, "ce_ground01", "cs_rockdetail2" },
+	{ 12871, "ce_ground01", "cw2_mountrock" },
+	{ 12871, "ce_ground01", "desertgravelgrassroad" },
+	{ 12871, "ce_ground01", "desgreengrassmix" },
+	{ 12871, "ce_ground01", "des_dirt1Grass" },
+	{ 12871, "ce_ground01", "dirttracksforest" },
+	{ 12871, "ce_ground01", "dirttracksgrass256" },
+	{ 12871, "ce_ground01", "forestfloorgrass" },
+	{ 12871, "ce_ground01", "grassbrn2rockbrnG" },
+	{ 12871, "ce_ground01", "grassbrn2rockbrnG2" },
+	{ 12871, "ce_ground01", "rocktbrn128" },
+	{ 12871, "ce_ground01", "sw_rockgrass1" },
+	{ 12871, "ce_ground01", "sw_rockgrassB1" },
+	{ 12871, "ce_ground01", "sw_rockgrassB2" },
+	{ 12871, "ce_ground01", "sw_stones" },
+	{ 12871, "ce_ground01", "sw_stonesgrass" },
+	{ 12823, "ce_ground02", "desertgravelgrass256" },
+	{ 12823, "ce_ground02", "sw_sandgrass" },
+	{ 12823, "ce_ground02", "sw_warewall2" },
+	{ 12870, "ce_ground03", "carpark_256128" },
+	{ 12870, "ce_ground03", "desclifftypebs" },
+	{ 12870, "ce_ground03", "desclifftypebsmix" },
+	{ 12870, "ce_ground03", "desmudtrail" },
+	{ 12870, "ce_ground03", "sw_grass01" },
+	{ 12870, "ce_ground03", "sw_grass01a" },
+	{ 12869, "ce_ground04", "carpark_128" },
+	{ 12869, "ce_ground04", "desertgryard256grs2" },
+	{ 12869, "ce_ground04", "grassgrnbrn256" },
+	{ 12869, "ce_ground04", "rocktbrn128blnd" },
+	{ 12866, "ce_ground07", "brngrss2stones" },
+	{ 12866, "ce_ground07", "desgrassbrn" },
+	{ 12866, "ce_ground07", "sw_crops" },
+	{ 12866, "ce_ground07", "sw_grassB01" },
+	{ 12825, "ce_ground08", "brngrss2stonesB" },
+	{ 12825, "ce_ground08", "cw2_mountdirt" },
+	{ 12825, "ce_ground08", "cw2_mountdirt2grass" },
+	{ 12825, "ce_ground08", "desgrassbrn_grn" },
+	{ 12825, "ce_ground08", "dirtblendlit" },
+	{ 12825, "ce_ground08", "grassbrn2rockbrn" },
+	{ 12825, "ce_ground08", "sw_rock1a" },
+	{ 13235, "ce_ground09", "des_ranchwall1" },
+	{ 13206, "ce_ground10", "desgreengrasstrckend" },
+	{ 13206, "ce_ground10", "des_dirt2 trackl" },
+	{ 13206, "ce_ground10", "des_dirt2" },
+	{ 13206, "ce_ground10", "des_dirt2grass" },
+	{ 13206, "ce_ground10", "des_dirt2track" },
+	{ 13206, "ce_ground10", "des_shingles" },
+	{ 12908, "ce_ground11", "grassdead1" },
+	{ 12908, "ce_ground11", "grassdead1blnd" },
+	{ 12908, "ce_ground11", "sw_dirt01" },
+	{ 12908, "ce_ground11", "sw_farmroad01" },
+	{ 13081, "ce_ground13", "concretedust2_line" },
+	{ 13081, "ce_ground13", "dustyconcrete" },
+	{ 13035, "ce_ground14", "desertstones256grass" },
+	{ 13035, "ce_ground14", "desmuddesgrsblend" },
+	{ 12805, "ce_loadbay", "sw_container" },
+	{ 12805, "ce_loadbay", "sw_container2" },
+	{ 12805, "ce_loadbay", "sw_container3" },
+	{ 12805, "ce_loadbay", "sw_corrug" },
+	{ 12805, "ce_loadbay", "sw_pal" },
+	{ 12805, "ce_loadbay", "sw_shutters2" },
+	{ 12805, "ce_loadbay", "sw_smlite" },
+	{ 12805, "ce_loadbay", "sw_trailer" },
+	{ 12805, "ce_loadbay", "sw_trailerred" },
+	{ 12805, "ce_loadbay", "sw_waredoor" },
+	{ 12805, "ce_loadbay", "sw_warewall3" },
+	{ 12805, "ce_loadbay", "sw_warewin2" },
+	{ 12805, "ce_loadbay", "sw_wheel1" },
+	{ 12805, "ce_loadbay", "sw_wheelT" },
+	{ 13461, "ce_nitelite", "ws_boxhouse_wins6nite" },
+	{ 12992, "ce_oldbridge", "banding8_64" },
+	{ 12992, "ce_oldbridge", "BLOCK2_high" },
+	{ 12992, "ce_oldbridge", "Gen_Rusty_Poll" },
+	{ 12992, "ce_oldbridge", "Gen_Scrap_Wheel_Rim" },
+	{ 12978, "ce_payspray", "airvent2_128" },
+	{ 12978, "ce_payspray", "sf_spray2" },
+	{ 12978, "ce_payspray", "sf_spray3" },
+	{ 12978, "ce_payspray", "sf_spray_floor1" },
+	{ 12978, "ce_payspray", "sf_spray_floor2" },
+	{ 12978, "ce_payspray", "spraypipegz1" },
+	{ 12978, "ce_payspray", "sw_shedwall03" },
+	{ 13361, "ce_pizza", "brickred2" },
+	{ 13361, "ce_pizza", "comptwall36" },
+	{ 13361, "ce_pizza", "FastFood1_LAe" },
+	{ 13361, "ce_pizza", "Parking1_LAe2" },
+	{ 13361, "ce_pizza", "pizzasign2LA" },
+	{ 13361, "ce_pizza", "pizzasign_LAe" },
+	{ 13003, "ce_racestart", "CJ_TARTAN" },
+	{ 13003, "ce_racestart", "lw_seat2" },
+	{ 13003, "ce_racestart", "sa_wood07_128" },
+	{ 3411, "ce_railbridge", "rusta256128" },
+	{ 13295, "ce_terminal", "cabin3" },
+	{ 13295, "ce_terminal", "des_adobewall2" },
+	{ 13295, "ce_terminal", "Gen_Metal" },
+	{ 13295, "ce_terminal", "grass4dirtyb" },
+	{ 13295, "ce_terminal", "mp_gimp_oilfloor" },
+	{ 13295, "ce_terminal", "sw_truckterm" },
+	{ 13295, "ce_terminal", "whitewall256" },
+	{ 13295, "ce_terminal", "ws_peeling_ceiling1" },
+	{ 12831, "ce_traintrack1", "sw_traingravelB1" },
+	{ 12831, "ce_traintrack1", "sw_tunnel01" },
+	{ 12831, "ce_traintrack1", "sw_tunnel02bmp" },
+	{ 12831, "ce_traintrack1", "ws_traintrax1" },
+	{ 12832, "ce_traintrack2", "sw_backdoor02" },
+	{ 11089, "cf_metals_sfse", "ws_altz_wall8_top" },
+	{ 1594, "chairsntable", "mallfloor6" },
+	{ 5986, "chateau_lawn", "backstagefloor1_256" },
+	{ 5986, "chateau_lawn", "chatarc01_law" },
+	{ 5986, "chateau_lawn", "chatbalc01_law" },
+	{ 5986, "chateau_lawn", "chatbalc02_law" },
+	{ 5986, "chateau_lawn", "chatbalc03_law" },
+	{ 5986, "chateau_lawn", "chatshade02_law" },
+	{ 5986, "chateau_lawn", "chatwall01_law" },
+	{ 5986, "chateau_lawn", "chatwall03_law" },
+	{ 5986, "chateau_lawn", "chatwin01_law" },
+	{ 5986, "chateau_lawn", "chatwin02_law" },
+	{ 5986, "chateau_lawn", "doorkb_1_256" },
+	{ 5123, "chemgrnd_las2", "newall1-1" },
+	{ 5123, "chemgrnd_las2", "newall1-3seamless" },
+	{ 5123, "chemgrnd_las2", "sanpedock997" },
+	{ 5123, "chemgrnd_las2", "sanpedock999" },
+	{ 5123, "chemgrnd_las2", "sjmhicut5las" },
+	{ 5123, "chemgrnd_las2", "Was_side" },
+	{ 10252, "chgatedes", "corrugated2" },
+	{ 2930, "chgatex", "NOPARK" },
+	{ 5444, "chicano10_lae", "compfence1_LAe" },
+	{ 5444, "chicano10_lae", "comptsign4_LAe" },
+	{ 5444, "chicano10_lae", "comptsign5_LAe" },
+	{ 5444, "chicano10_lae", "comptsign8_LAe" },
+	{ 5444, "chicano10_lae", "comptwall10" },
+	{ 5444, "chicano10_lae", "comptwall15" },
+	{ 5444, "chicano10_lae", "comptwall32" },
+	{ 5444, "chicano10_lae", "comptwall5" },
+	{ 5444, "chicano10_lae", "crakwall1_LAe2" },
+	{ 5444, "chicano10_lae", "desmuddesgrsblend_sw" },
+	{ 5444, "chicano10_lae", "downtwin16" },
+	{ 5444, "chicano10_lae", "downtwin4" },
+	{ 5444, "chicano10_lae", "eris_5" },
+	{ 5444, "chicano10_lae", "frame_LA" },
+	{ 5444, "chicano10_lae", "gangshop2_LAe" },
+	{ 5444, "chicano10_lae", "gangshop8_LAe" },
+	{ 5444, "chicano10_lae", "gangsign5_LAe" },
+	{ 5444, "chicano10_lae", "GB_nastybar22" },
+	{ 5444, "chicano10_lae", "gm_labuld2_d" },
+	{ 5444, "chicano10_lae", "grassdeadbrn256" },
+	{ 5444, "chicano10_lae", "g_256" },
+	{ 5444, "chicano10_lae", "heat_04" },
+	{ 5444, "chicano10_lae", "newall7" },
+	{ 5444, "chicano10_lae", "santall4" },
+	{ 5444, "chicano10_lae", "ws_garagedoor2_green" },
+	{ 5449, "chicanotr1_lae", "eb_firesc1_LAe2" },
+	{ 5449, "chicanotr1_lae", "eb_firesc2_LAe2" },
+	{ 5449, "chicanotr1_lae", "fireesc1_LAe" },
+	{ 5449, "chicanotr1_lae", "lasjmfnce1" },
+	{ 5449, "chicanotr1_lae", "sunsfire1b_LAw" },
+	{ 5449, "chicanotr1_lae", "sunsfire1_LAw" },
+	{ 2215, "chick_tray", "bucket_cb" },
+	{ 2215, "chick_tray", "dip32" },
+	{ 2215, "chick_tray", "friesbox_cb" },
+	{ 2215, "chick_tray", "plaincup_cb" },
+	{ 2215, "chick_tray", "strawroof_cb" },
+	{ 10031, "chinatown2", "patio1" },
+	{ 10031, "chinatown2", "rooftiles4" },
+	{ 10031, "chinatown2", "rooftiles4b" },
+	{ 10031, "chinatown2", "ws_plasterwall2" },
+	{ 10031, "chinatown2", "ws_red_wood2" },
+	{ 10031, "chinatown2", "ws_trans_window1" },
+	{ 8639, "chinatownmall", "ctmall01_128" },
+	{ 8639, "chinatownmall", "ctmall02_64" },
+	{ 8639, "chinatownmall", "ctmall03_64" },
+	{ 8639, "chinatownmall", "ctmall04_64" },
+	{ 8639, "chinatownmall", "ctmall05" },
+	{ 8639, "chinatownmall", "ctmall06" },
+	{ 8639, "chinatownmall", "ctmall07" },
+	{ 8639, "chinatownmall", "ctmall08" },
+	{ 8639, "chinatownmall", "ctmall10_64" },
+	{ 8639, "chinatownmall", "ctmall11_64" },
+	{ 8639, "chinatownmall", "ctmall12_128" },
+	{ 8639, "chinatownmall", "ctmall13" },
+	{ 8639, "chinatownmall", "ctmall15_128" },
+	{ 8639, "chinatownmall", "ctmall16_128" },
+	{ 8639, "chinatownmall", "ctmall17_128" },
+	{ 8639, "chinatownmall", "ctmall18_64" },
+	{ 8639, "chinatownmall", "ctmall19_128" },
+	{ 8639, "chinatownmall", "ctmallsign01_128" },
+	{ 8639, "chinatownmall", "ziplogo1_128" },
+	{ 9494, "chinatownsfe", "awning1_SFe" },
+	{ 9494, "chinatownsfe", "awning2T_SFe" },
+	{ 9494, "chinatownsfe", "awning3_SFe" },
+	{ 9494, "chinatownsfe", "chtown4_sf" },
+	{ 9494, "chinatownsfe", "chtown5_sf" },
+	{ 9494, "chinatownsfe", "chtown6_sf" },
+	{ 9494, "chinatownsfe", "chtown7_sf" },
+	{ 9494, "chinatownsfe", "chtown8_sf" },
+	{ 9494, "chinatownsfe", "chtown9_sf" },
+	{ 9494, "chinatownsfe", "chtown_brightcarcafe" },
+	{ 9494, "chinatownsfe", "chtown_todaydayrestaurant" },
+	{ 9494, "chinatownsfe", "partition_gz" },
+	{ 9494, "chinatownsfe", "rooftop_gz1" },
+	{ 9494, "chinatownsfe", "sf_chinashop1" },
+	{ 9494, "chinatownsfe", "sf_chinashopground" },
+	{ 9494, "chinatownsfe", "sf_windos_11a" },
+	{ 9494, "chinatownsfe", "sf_windos_11b" },
+	{ 9494, "chinatownsfe", "sf_windos_11wall" },
+	{ 9494, "chinatownsfe", "sf_windos_12a" },
+	{ 9494, "chinatownsfe", "sf_windos_12b" },
+	{ 9494, "chinatownsfe", "sf_windos_12_wall" },
+	{ 9494, "chinatownsfe", "sf_windos_13a" },
+	{ 9494, "chinatownsfe", "sf_windos_13b" },
+	{ 9494, "chinatownsfe", "sf_windos_14b" },
+	{ 9494, "chinatownsfe", "wallwash128" },
+	{ 9494, "chinatownsfe", "Was_scrpyd_baler_floor" },
+	{ 9494, "chinatownsfe", "woozie_hall" },
+	{ 1568, "china_light", "chinlite_sfe" },
+	{ 14571, "chinese_furn", "ab_tv_noise" },
+	{ 14571, "chinese_furn", "ab_tv_tricas1" },
+	{ 14571, "chinese_furn", "ab_tv_tricas2" },
+	{ 14571, "chinese_furn", "chinese9" },
+	{ 14571, "chinese_furn", "chinese9b" },
+	{ 1859, "chips2", "chip_stck1" },
+	{ 1859, "chips2", "chip_stck2" },
+	{ 1859, "chips2", "chip_stck3" },
+	{ 1859, "chips2", "chip_stck4" },
+	{ 1859, "chips2", "chip_stck5" },
+	{ 1859, "chips2", "chip_stck6" },
+	{ 1859, "chips2", "indx_chip132" },
+	{ 1859, "chips2", "indx_chip164" },
+	{ 1859, "chips2", "indx_chip232" },
+	{ 1859, "chips2", "indx_chip264" },
+	{ 1859, "chips2", "indx_chip332" },
+	{ 1859, "chips2", "indx_chip364" },
+	{ 1859, "chips2", "indx_chip432" },
+	{ 1859, "chips2", "indx_chip464" },
+	{ 1859, "chips2", "indx_chip532" },
+	{ 1859, "chips2", "indx_chip564" },
+	{ 1859, "chips2", "indx_chip632" },
+	{ 1859, "chips2", "indx_chip664" },
+	{ 8680, "chnatwnfnce", "ctmallfence" },
+	{ 3007, "chopcopx", "LAPDM2" },
+	{ 9931, "churchsfe", "church_sfe1" },
+	{ 9931, "churchsfe", "church_sfe2" },
+	{ 9931, "churchsfe", "church_sfe3" },
+	{ 9931, "churchsfe", "church_sfe4" },
+	{ 9931, "churchsfe", "church_sfe5" },
+	{ 9931, "churchsfe", "gravelkb_128" },
+	{ 9931, "churchsfe", "pier69_roof1" },
+	{ 9931, "churchsfe", "posh_eagle3_sfe" },
+	{ 3044, "ciggarx", "ciggy_burn" },
+	{ 3044, "ciggarx", "CJ_bark" },
+	{ 3044, "ciggarx", "CJ_KITCHDOOR" },
+	{ 3027, "ciggyx", "ciggy" },
+	{ 17851, "cinemart_alpha", "autoarrow_lae2" },
+	{ 17851, "cinemart_alpha", "carwash_sign" },
+	{ 17851, "cinemart_alpha", "kb_ivy2_256" },
+	{ 17851, "cinemart_alpha", "lasjmslumwud2" },
+	{ 17851, "cinemart_alpha", "shadow_law" },
+	{ 3980, "cityhall_lan", "bevdoor03_law" },
+	{ 3980, "cityhall_lan", "cityhalldoor1" },
+	{ 3980, "cityhall_lan", "cityhallroof" },
+	{ 3980, "cityhall_lan", "cityhalltow1" },
+	{ 3980, "cityhall_lan", "cityhalltow2" },
+	{ 3980, "cityhall_lan", "citywall1" },
+	{ 3980, "cityhall_lan", "citywall2" },
+	{ 3980, "cityhall_lan", "citywall3" },
+	{ 3980, "cityhall_lan", "citywall4" },
+	{ 3980, "cityhall_lan", "citywall5" },
+	{ 3980, "cityhall_lan", "citywin1" },
+	{ 3980, "cityhall_lan", "LAcityhwal1" },
+	{ 3980, "cityhall_lan", "LAcityhwin1" },
+	{ 3980, "cityhall_lan", "LAcityhwin2" },
+	{ 3980, "cityhall_lan", "man_cellarfloor128" },
+	{ 3980, "cityhall_lan", "sl_LAbedingsoil" },
+	{ 10377, "cityhall_sfs", "banding4_64HV" },
+	{ 10377, "cityhall_sfs", "ws_artgallery" },
+	{ 10377, "cityhall_sfs", "ws_artgallery3" },
+	{ 10377, "cityhall_sfs", "ws_bigblackdoor" },
+	{ 10377, "cityhall_sfs", "ws_cityhall1" },
+	{ 10377, "cityhall_sfs", "ws_cityhall2" },
+	{ 10377, "cityhall_sfs", "ws_cityhall3" },
+	{ 10377, "cityhall_sfs", "ws_cityhall4" },
+	{ 10377, "cityhall_sfs", "ws_cityhall5" },
+	{ 10377, "cityhall_sfs", "ws_cityhall6" },
+	{ 10377, "cityhall_sfs", "ws_cityhall7" },
+	{ 10377, "cityhall_sfs", "ws_cityhall8" },
+	{ 10377, "cityhall_sfs", "ws_cityhall9" },
+	{ 10377, "cityhall_sfs", "ws_concretenew_step" },
+	{ 10377, "cityhall_sfs", "ws_copart1" },
+	{ 10377, "cityhall_sfs", "ws_copart2" },
+	{ 10377, "cityhall_sfs", "ws_copart3" },
+	{ 10377, "cityhall_sfs", "ws_oldoffice2" },
+	{ 10377, "cityhall_sfs", "ws_oldoffice4" },
+	{ 10947, "cityhall_sfse", "ws_oldoffice5" },
+	{ 10947, "cityhall_sfse", "ws_oldoffice6" },
+	{ 10947, "cityhall_sfse", "ws_oldoffice7" },
+	{ 4003, "cityhall_tr_lan", "foliage256" },
+	{ 4003, "cityhall_tr_lan", "mc_flags1" },
+	{ 4003, "cityhall_tr_lan", "planta256" },
+	{ 4003, "cityhall_tr_lan", "sl_griddyfence_sml" },
+	{ 3979, "civic01_lan", "airportwall_256128" },
+	{ 3979, "civic01_lan", "bonavenlif_LAn" },
+	{ 3979, "civic01_lan", "crazy paving" },
+	{ 3979, "civic01_lan", "nt_bonav1" },
+	{ 3979, "civic01_lan", "nt_bonav1_refl" },
+	{ 3979, "civic01_lan", "parking1plain" },
+	{ 3979, "civic01_lan", "sl_concretewall1" },
+	{ 3979, "civic01_lan", "sl_dwntwndr1" },
+	{ 3979, "civic01_lan", "sl_dwntwnshpfrnt1" },
+	{ 3979, "civic01_lan", "sl_flagstone1" },
+	{ 3979, "civic01_lan", "sl_laexporail" },
+	{ 3979, "civic01_lan", "sl_laglasswall1" },
+	{ 3979, "civic01_lan", "sl_laglasswall2" },
+	{ 3979, "civic01_lan", "sl_laoffblok2wall1" },
+	{ 14674, "civic02cj", "ab_hosWallUpr" },
+	{ 14674, "civic02cj", "hotcarp01_LA" },
+	{ 14674, "civic02cj", "hotelarch1_LAn" },
+	{ 14674, "civic02cj", "kb_balcony_ferns" },
+	{ 14674, "civic02cj", "sl_hoteldr1" },
+	{ 14674, "civic02cj", "sl_hotelwall1" },
+	{ 14674, "civic02cj", "sl_hotelwallplain1" },
+	{ 4001, "civic03_lan", "bailbonds1_LAn" },
+	{ 4001, "civic03_lan", "bailbonds2_LAn" },
+	{ 4001, "civic03_lan", "downtshop2_LAn" },
+	{ 4001, "civic03_lan", "downtshop5_LAn" },
+	{ 4001, "civic03_lan", "downtshop6_LAn" },
+	{ 4001, "civic03_lan", "downtsign2_LA" },
+	{ 4001, "civic03_lan", "downtsign8_LA" },
+	{ 4001, "civic03_lan", "downtwin10" },
+	{ 4001, "civic03_lan", "downtwin11" },
+	{ 4001, "civic03_lan", "downtwin2" },
+	{ 4001, "civic03_lan", "downtwin2b" },
+	{ 4001, "civic03_lan", "downtwin6" },
+	{ 4001, "civic03_lan", "gymshop2_LAe" },
+	{ 4001, "civic03_lan", "pediments1" },
+	{ 4001, "civic03_lan", "sidelatino1_LAe" },
+	{ 4001, "civic03_lan", "sl_shopshttr1" },
+	{ 4001, "civic03_lan", "twintWall2_LAn" },
+	{ 4001, "civic03_lan", "ws_rottenwall" },
+	{ 3998, "civic04_lan", "alleydoor6" },
+	{ 3998, "civic04_lan", "hosdoor01_law" },
+	{ 3998, "civic04_lan", "officblokA2_LAn" },
+	{ 3998, "civic04_lan", "sl_crthoosedg1" },
+	{ 3998, "civic04_lan", "sl_crthooswall1" },
+	{ 3998, "civic04_lan", "sl_crthooswall2" },
+	{ 3998, "civic04_lan", "sl_dtwn1win1" },
+	{ 3998, "civic04_lan", "sl_dtwn1win2" },
+	{ 3998, "civic04_lan", "sl_prisongate1" },
+	{ 3998, "civic04_lan", "twintconc_LAn" },
+	{ 3998, "civic04_lan", "twintWall1_LAn" },
+	{ 3998, "civic04_lan", "twintWin1_LAn" },
+	{ 3998, "civic04_lan", "twintWin2_LAn" },
+	{ 3988, "civic06_lan", "awningsides1" },
+	{ 3988, "civic06_lan", "Bow_stained_wall" },
+	{ 3988, "civic06_lan", "casinobulb2_128" },
+	{ 3988, "civic06_lan", "discware1_LAe2" },
+	{ 3988, "civic06_lan", "downtshop4_LAn" },
+	{ 3988, "civic06_lan", "downtsign1_LA" },
+	{ 3988, "civic06_lan", "downtsign4_LA" },
+	{ 3988, "civic06_lan", "downtsign5_LA" },
+	{ 3988, "civic06_lan", "downtsign6_LA" },
+	{ 3988, "civic06_lan", "downtsign7_LA" },
+	{ 3988, "civic06_lan", "downtwin3" },
+	{ 3988, "civic06_lan", "downtwin5" },
+	{ 3988, "civic06_lan", "downtwin6det" },
+	{ 3988, "civic06_lan", "downtwin7" },
+	{ 3988, "civic06_lan", "downtwin8" },
+	{ 3988, "civic06_lan", "downtwin9" },
+	{ 3988, "civic06_lan", "LAcityhwal2" },
+	{ 3988, "civic06_lan", "pediments2" },
+	{ 3988, "civic06_lan", "shopawning1_LAn" },
+	{ 3988, "civic06_lan", "tradecentre1" },
+	{ 4004, "civic07_lan", "badmarb1_LAn" },
+	{ 4004, "civic07_lan", "column1_LAn" },
+	{ 4004, "civic07_lan", "downtshop10_LAn" },
+	{ 4004, "civic07_lan", "downtshop8_LAn" },
+	{ 4004, "civic07_lan", "downtshop9_LAn" },
+	{ 4004, "civic07_lan", "downtsign10_LA" },
+	{ 4004, "civic07_lan", "downtsign11_LA" },
+	{ 4004, "civic07_lan", "downtsign9_LA" },
+	{ 4004, "civic07_lan", "downtwin12" },
+	{ 4004, "civic07_lan", "downtwin14" },
+	{ 4004, "civic07_lan", "downtwin14det" },
+	{ 4004, "civic07_lan", "downtwin15" },
+	{ 4004, "civic07_lan", "downtwin9det" },
+	{ 4004, "civic07_lan", "hollywin02_LAw" },
+	{ 4004, "civic07_lan", "odddoor1_LAn" },
+	{ 4004, "civic07_lan", "oldbrwall1_LA" },
+	{ 4004, "civic07_lan", "oldbrwall2_LA" },
+	{ 4004, "civic07_lan", "restrauntfront1_256" },
+	{ 4004, "civic07_lan", "sf_windos_10" },
+	{ 4004, "civic07_lan", "sl_dwntwncanpy1" },
+	{ 4004, "civic07_lan", "sl_rotnbrik" },
+	{ 4569, "civic1_lan2", "posh_eagle10_sfe" },
+	{ 4569, "civic1_lan2", "posh_eagle11_sfe" },
+	{ 4569, "civic1_lan2", "posh_eagle12_sfe" },
+	{ 4569, "civic1_lan2", "posh_eagle13_sfe" },
+	{ 4569, "civic1_lan2", "posh_eagle14_sfe" },
+	{ 4569, "civic1_lan2", "posh_eagle1_sfe" },
+	{ 4569, "civic1_lan2", "posh_eagle2_sfe" },
+	{ 4569, "civic1_lan2", "posh_eagle4_sfe" },
+	{ 3776, "ci_studio", "aircon" },
+	{ 3776, "ci_studio", "bdoor" },
+	{ 3776, "ci_studio", "cdoor" },
+	{ 3776, "ci_studio", "stageside1" },
+	{ 3776, "ci_studio", "studioroof" },
+	{ 5706, "ci_studio5", "astagesign" },
+	{ 5706, "ci_studio5", "Bow_sidewalk" },
+	{ 5706, "ci_studio5", "ci_entrwind1" },
+	{ 5706, "ci_studio5", "corugwall1" },
+	{ 5706, "ci_studio5", "rustytank" },
+	{ 5706, "ci_studio5", "studcov01_law" },
+	{ 5706, "ci_studio5", "studiowall1" },
+	{ 5706, "ci_studio5", "studiowall3_law" },
+	{ 5706, "ci_studio5", "studoor01_law" },
+	{ 5706, "ci_studio5", "tw@t_wall1" },
+	{ 1738, "cjtemp", "CJ_bed1" },
+	{ 1738, "cjtemp", "CJ_BED_BASE" },
+	{ 1738, "cjtemp", "CJ_MAT1" },
+	{ 1738, "cjtemp", "cj_Mattress2" },
+	{ 1738, "cjtemp", "cj_Mattress5" },
+	{ 1738, "cjtemp", "cj_radiatorOLD" },
+	{ 1738, "cjtemp", "CJ_SWEETS" },
+	{ 3967, "cj_airprt", "bigbrick" },
+	{ 3967, "cj_airprt", "ceiling_256" },
+	{ 3967, "cj_airprt", "CJ_BLACK_RUB2" },
+	{ 3967, "cj_airprt", "CJ_G_CHROME" },
+	{ 3967, "cj_airprt", "cj_juank_1" },
+	{ 3967, "cj_airprt", "CJ_RUBBER" },
+	{ 3967, "cj_airprt", "CJ_SHELF_WHITE" },
+	{ 3967, "cj_airprt", "CJ_tubeside" },
+	{ 3967, "cj_airprt", "dts_elevator_carpet2" },
+	{ 3967, "cj_airprt", "new road" },
+	{ 3967, "cj_airprt", "Road_blank256HV" },
+	{ 3967, "cj_airprt", "Slabs" },
+	{ 1736, "cj_ammo", "CJ_Black_metal" },
+	{ 1736, "cj_ammo", "CJ_BULLETBOX1" },
+	{ 1736, "cj_ammo", "CJ_CANVAS2" },
+	{ 1736, "cj_ammo", "CJ_Deer1" },
+	{ 1736, "cj_ammo", "CJ_GENERATOR3" },
+	{ 1736, "cj_ammo", "CJ_LIGHTWOOD(E)" },
+	{ 1736, "cj_ammo", "CJ_mantarget" },
+	{ 1736, "cj_ammo", "CJ_OIL_DRUM_L0" },
+	{ 1736, "cj_ammo", "cj_pail" },
+	{ 1736, "cj_ammo", "CJ_SHEET2HOLES" },
+	{ 1736, "cj_ammo", "CJ_SLATEDWOOD2" },
+	{ 1736, "cj_ammo", "CJ_SPEAKER_c" },
+	{ 1736, "cj_ammo", "CJ_WHEEL1" },
+	{ 1736, "cj_ammo", "flametin" },
+	{ 1736, "cj_ammo", "flametin2" },
+	{ 1736, "cj_ammo", "Star aluminuim" },
+	{ 2059, "cj_ammo2", "cj_don_post_1" },
+	{ 2059, "cj_ammo2", "CJ_gunbook1" },
+	{ 2059, "cj_ammo2", "CJ_gunbook2" },
+	{ 2059, "cj_ammo2", "cj_rubbish2" },
+	{ 2068, "cj_ammo_net", "CJ_cammonet" },
+	{ 2047, "cj_ammo_posters", "CJ_Coltposter" },
+	{ 2047, "cj_ammo_posters", "cj_flag1" },
+	{ 2047, "cj_ammo_posters", "cj_flag2" },
+	{ 2047, "cj_ammo_posters", "CJ_TARGET1" },
+	{ 2047, "cj_ammo_posters", "CJ_TARGET2" },
+	{ 2047, "cj_ammo_posters", "CJ_TARGET3" },
+	{ 18034, "cj_ammun_extra", "CJ_BULLETBOX2" },
+	{ 18034, "cj_ammun_extra", "CJ_BULLETBOX2b" },
+	{ 18034, "cj_ammun_extra", "CJ_BULLETBOX2c" },
+	{ 18034, "cj_ammun_extra", "CJ_BULLETBOX3" },
+	{ 18034, "cj_ammun_extra", "CJ_BULLETBOXB" },
+	{ 18034, "cj_ammun_extra", "CJ_BULLETBOXB2" },
+	{ 18034, "cj_ammun_extra", "CJ_GRIZ" },
+	{ 18034, "cj_ammun_extra", "CJ_NAIL_AMMO" },
+	{ 18034, "cj_ammun_extra", "CJ_TAR1" },
+	{ 18034, "cj_ammun_extra", "mp_gun_box" },
+	{ 18034, "cj_ammun_extra", "mp_gun_neon" },
+	{ 2783, "cj_bandit", "slot6" },
+	{ 2783, "cj_bandit", "slot_bit3" },
+	{ 2655, "cj_banner", "CJ_ERIS1" },
+	{ 2655, "cj_banner", "CJ_HEAT1" },
+	{ 2655, "cj_banner", "CJ_HEAT2" },
+	{ 2655, "cj_banner", "CJ_MERC_LOGO" },
+	{ 2655, "cj_banner", "CJ_PRO_2" },
+	{ 2655, "cj_banner", "CJ_SUBURBAN_1" },
+	{ 2692, "cj_banner2", "BASE5_1" },
+	{ 2692, "cj_banner2", "CJ_CARDBOARD" },
+	{ 2692, "cj_banner2", "CJ_WHEEL_CHAIR1" },
+	{ 2719, "cj_banner3", "CJ_BINC_1" },
+	{ 2719, "cj_banner3", "CJ_BINC_2" },
+	{ 2719, "cj_banner3", "CJ_BINC_3" },
+	{ 1455, "cj_bar", "CJ_BAR_BOTTLE1" },
+	{ 1455, "cj_bar", "CJ_BAR_TAP1" },
+	{ 1455, "cj_bar", "CJ_BAR_TAP2" },
+	{ 1455, "cj_bar", "CJ_B_TOWEL" },
+	{ 1455, "cj_bar", "cj_b_tray" },
+	{ 1455, "cj_bar", "CJ_old_pish" },
+	{ 1455, "cj_bar", "CJ_SK_Bar" },
+	{ 1455, "cj_bar", "CJ_SK_DIET_Bar" },
+	{ 18028, "cj_bar2", "bbar_stuff2" },
+	{ 18028, "cj_bar2", "CJ_nastybar_D" },
+	{ 18028, "cj_bar2", "CJ_nastybar_D2" },
+	{ 18028, "cj_bar2", "CJ_nastybar_D3" },
+	{ 18028, "cj_bar2", "CJ_nastybar_D4" },
+	{ 18028, "cj_bar2", "CJ_nastybar_D5" },
+	{ 18028, "cj_bar2", "CJ_nastybar_D6" },
+	{ 18028, "cj_bar2", "GB_nastybar01" },
+	{ 18028, "cj_bar2", "GB_nastybar02" },
+	{ 18028, "cj_bar2", "GB_nastybar04" },
+	{ 18028, "cj_bar2", "GB_nastybar05" },
+	{ 18028, "cj_bar2", "GB_nastybar06" },
+	{ 18028, "cj_bar2", "GB_nastybar07" },
+	{ 18028, "cj_bar2", "GB_nastybar08" },
+	{ 18028, "cj_bar2", "GB_nastybar09" },
+	{ 18028, "cj_bar2", "GB_nastybar10" },
+	{ 18028, "cj_bar2", "GB_nastybar13" },
+	{ 18028, "cj_bar2", "GB_nastybar15" },
+	{ 18028, "cj_bar2", "GB_nastybar17" },
+	{ 18081, "cj_barb", "ab_drawer_unit2" },
+	{ 18081, "cj_barb", "ab_leather_strips" },
+	{ 18081, "cj_barb", "ab_marble_checks" },
+	{ 18081, "cj_barb", "ab_panel_woodgrime" },
+	{ 18081, "cj_barb", "ab_sink_barber" },
+	{ 18081, "cj_barb", "ab_window_plastic" },
+	{ 18081, "cj_barb", "barberschr1" },
+	{ 18081, "cj_barb", "barberschr2" },
+	{ 18081, "cj_barb", "barberschr3" },
+	{ 18081, "cj_barb", "barberschr4" },
+	{ 18081, "cj_barb", "barberschr5" },
+	{ 18081, "cj_barb", "barberschr6" },
+	{ 18081, "cj_barb", "barberschr7b" },
+	{ 18081, "cj_barb", "barberspic1" },
+	{ 18081, "cj_barb", "barberspic2" },
+	{ 18081, "cj_barb", "barberspic3" },
+	{ 18081, "cj_barb", "CJ_TILES_5" },
+	{ 18081, "cj_barb", "cj_white_wall" },
+	{ 18081, "cj_barb", "whiteceil_int" },
+	{ 18027, "cj_barb2", "BLOCK2low" },
+	{ 18027, "cj_barb2", "CJ_BARB_WIN_1" },
+	{ 18027, "cj_barb2", "cj_socket" },
+	{ 18027, "cj_barb2", "interiordoor1_256" },
+	{ 18027, "cj_barb2", "tile_test3" },
+	{ 66, "cj_barr_set_1", "banding_blue_64HV" },
+	{ 66, "cj_barr_set_1", "Stop2_64" },
+	{ 2691, "cj_base5", "base5_2" },
+	{ 2691, "cj_base5", "base5_6" },
+	{ 2691, "cj_base5", "base5_8" },
+	{ 2514, "cj_bathroom", "CJ_CANVAS" },
+	{ 2514, "cj_bathroom", "CJ_PILLOWCASE" },
+	{ 2514, "cj_bathroom", "cj_toilet" },
+	{ 1700, "cj_beds", "bed_test" },
+	{ 1700, "cj_beds", "CJ_MATRESS2" },
+	{ 1700, "cj_beds", "kbedhead" },
+	{ 1700, "cj_beds", "kbedside" },
+	{ 1700, "cj_beds", "kb_sheet_pilay2" },
+	{ 2729, "cj_binc_sign", "BINC_hooded" },
+	{ 2729, "cj_binc_sign", "BINC_pshirts" },
+	{ 2729, "cj_binc_sign", "BINC_tshirt" },
+	{ 1343, "cj_bins", "Miamibin" },
+	{ 1344, "cj_bins2", "CJ_RUBBISH1" },
+	{ 2659, "cj_bobo", "cj_bobo" },
+	{ 2659, "cj_bobo", "CJ_BOBO_BAN" },
+	{ 2430, "cj_burg_sign", "CJ_BS_BAG" },
+	{ 2430, "cj_burg_sign", "cj_bs_cup" },
+	{ 2430, "cj_burg_sign", "CJ_BS_MENU1" },
+	{ 2430, "cj_burg_sign", "CJ_BS_MENU2" },
+	{ 2430, "cj_burg_sign", "CJ_BS_MENU3" },
+	{ 2430, "cj_burg_sign", "CJ_BS_MENU4" },
+	{ 2765, "cj_cb_sign", "CJ_CB_POST1" },
+	{ 2765, "cj_cb_sign", "CJ_PIZZA_MENU2" },
+	{ 958, "cj_chip_maker", "CJ_CHIP_M" },
+	{ 958, "cj_chip_maker", "CJ_Y_GENERATORDETAIL" },
+	{ 2669, "cj_chris", "Bow_Fence_Metal" },
+	{ 2669, "cj_chris", "CJ_Floral" },
+	{ 2669, "cj_chris", "CJ_Grate" },
+	{ 2669, "cj_chris", "cj_metalplate2" },
+	{ 2669, "cj_chris", "CJ_plating3" },
+	{ 2669, "cj_chris", "Gen_Chain" },
+	{ 2681, "cj_coin_op", "CJ_COINOP1" },
+	{ 2681, "cj_coin_op", "CJ_COINOP2" },
+	{ 2681, "cj_coin_op", "CJ_COINOP3" },
+	{ 2640, "cj_coin_op_2", "CJ_POKERSCREEN" },
+	{ 2640, "cj_coin_op_2", "CJ_POKERSCREEN2" },
+	{ 2640, "cj_coin_op_2", "CJ_TV1" },
+	{ 1733, "cj_commercial", "CJ_DRINKS_CHOICE" },
+	{ 1733, "cj_commercial", "CJ_SPRUNK_FRONT" },
+	{ 1733, "cj_commercial", "CJ_S_VENDOR" },
+	{ 2941, "cj_commerciax", "Gen_Till" },
+	{ 960, "cj_crate_will", "CJ_FLIGHT_CASE" },
+	{ 960, "cj_crate_will", "CJ_FLIGHT_CASE2" },
+	{ 936, "cj_dfext", "ws_cf_lamp" },
+	{ 18102, "cj_dl2", "CJ_DISCO(L1)64" },
+	{ 18102, "cj_dl2", "CJ_DISCO(L2)64" },
+	{ 18102, "cj_dl2", "CJ_DISCO(L3)64" },
+	{ 18102, "cj_dl2", "CJ_DISCO(L4)64" },
+	{ 2432, "cj_don_sign", "cj_don_post_2" },
+	{ 2432, "cj_don_sign", "cj_don_post_3" },
+	{ 2879, "cj_ds_door", "CJ_DS_DOOR_256_" },
+	{ 1349, "cj_dyn_prop", "CJ_AIRPLOGO" },
+	{ 1349, "cj_dyn_prop", "CJ_STROLLY" },
+	{ 1718, "cj_electrical", "CJ_MONITER1" },
+	{ 1718, "cj_electrical", "cj_video3(TOP)" },
+	{ 1718, "cj_electrical", "CJ_VIDEOFRONTS" },
+	{ 1718, "cj_electrical", "spbx_big" },
+	{ 1718, "cj_electrical", "spbx_big2" },
+	{ 18031, "cj_exp", "chinosbiege" },
+	{ 18031, "cj_exp", "chinosblue" },
+	{ 18031, "cj_exp", "CJ_DS_WINDOW" },
+	{ 18031, "cj_exp", "mp_cloth_ds3" },
+	{ 18031, "cj_exp", "mp_cloth_ds4" },
+	{ 18031, "cj_exp", "mp_cloth_wall" },
+	{ 18031, "cj_exp", "mp_furn_floor" },
+	{ 1370, "cj_exp_props", "CJ_GAS_CAN" },
+	{ 955, "cj_ext_vend", "CJ_SPRUNK_DIRTY" },
+	{ 2415, "cj_ff", "CJ_cooker4" },
+	{ 2415, "cj_ff", "CJ_KITCHEN_DETAIL" },
+	{ 2420, "cj_ff_acc1", "CJ_Bbq" },
+	{ 2420, "cj_ff_acc1", "CJ_BS_MENU4s" },
+	{ 2420, "cj_ff_acc1", "CJ_MICROPANEL" },
+	{ 2420, "cj_ff_acc1", "CJ_OPEN" },
+	{ 2420, "cj_ff_acc1", "CJ_TILL1" },
+	{ 2420, "cj_ff_acc1", "pepperonip" },
+	{ 2718, "cj_ff_acc2", "CJ_FLY_TUBE" },
+	{ 2718, "cj_ff_acc2", "GRATE" },
+	{ 2423, "cj_ff_counters", "CJ_COUNTER2" },
+	{ 2423, "cj_ff_counters", "CJ_COUNTER_TILES" },
+	{ 2423, "cj_ff_counters", "CJ_Laminate1" },
+	{ 2423, "cj_ff_counters", "CJ_TILES_3" },
+	{ 2423, "cj_ff_counters", "CJ_worktop" },
+	{ 2423, "cj_ff_counters", "shop_floor1" },
+	{ 1730, "cj_furniture", "CJ-COUCHL2" },
+	{ 1730, "cj_furniture", "CJ_books" },
+	{ 1730, "cj_furniture", "CJ_WOOD5" },
+	{ 2028, "cj_games", "CJ_CONSOLETOP" },
+	{ 2028, "cj_games", "cj_console_cont1" },
+	{ 2028, "cj_games", "cj_console_cont2" },
+	{ 2028, "cj_games", "CJ_speaker4" },
+	{ 2875, "cj_gash", "CJ_ZIP_3" },
+	{ 2749, "cj_hair", "cj_spec" },
+	{ 2749, "cj_hair", "HAIR_STUFF" },
+	{ 1809, "cj_hi_fi", "CJ_HI_FI" },
+	{ 1809, "cj_hi_fi", "CJ_HI_FI_1" },
+	{ 1809, "cj_hi_fi", "CJ_SPEAKER1" },
+	{ 1809, "cj_hi_fi", "CJ_speaker_6" },
+	{ 1809, "cj_hi_fi", "cj_speaker_s" },
+	{ 2225, "cj_hi_fi2", "CJ_SPEAKER2" },
+	{ 2225, "cj_hi_fi2", "CJ_SPEAKER3" },
+	{ 2570, "cj_hotel", "nt_phone1" },
+	{ 2570, "cj_hotel", "nt_phone2" },
+	{ 2575, "cj_hotel_poor", "CJ_mattress" },
+	{ 2562, "cj_hotel_sw", "CJ-COUCHL1" },
+	{ 2098, "cj_int", "CJ_CHINA_SCRIPT" },
+	{ 2098, "cj_int", "CJ_GREEN_WOOD" },
+	{ 2098, "cj_int", "CJ_RED_WOOD" },
+	{ 2425, "cj_jucie", "CJ_SPRUNK_F" },
+	{ 2425, "cj_jucie", "CJ_SPRUNK_FRONT2" },
+	{ 2127, "cj_kitchen", "CJ_RED" },
+	{ 2127, "cj_kitchen", "FORMICA2" },
+	{ 2127, "cj_kitchen", "marble2" },
+	{ 1731, "cj_lighting", "CJ_BASKET" },
+	{ 1731, "cj_lighting", "CJ_FILLIMENT" },
+	{ 1731, "cj_lighting", "CJ_lightshade" },
+	{ 1731, "cj_lighting", "cj_plantpot" },
+	{ 1731, "cj_lighting", "CJ_PLANT_POT" },
+	{ 1731, "cj_lighting", "CJ_WICKER1" },
+	{ 2803, "cj_meaty", "CJ_Canvas3" },
+	{ 2803, "cj_meaty", "CJ_FLESH_1" },
+	{ 2803, "cj_meaty", "CJ_FLESH_2" },
+	{ 1701, "cj_med_beds", "CJ_BROWN_WOOL" },
+	{ 1701, "cj_med_beds", "CJ_DUVET1" },
+	{ 1701, "cj_med_beds", "CJ_LINEN1" },
+	{ 1701, "cj_med_beds", "kb_bed_final2" },
+	{ 1550, "cj_money_bags", "CJ_KIT_BAG" },
+	{ 1550, "cj_money_bags", "money_128" },
+	{ 1570, "cj_noodle_1", "CJ_Canvas2" },
+	{ 1371, "cj_novelty_bins", "CJ_HIPPO" },
+	{ 1714, "cj_office", "beige_64" },
+	{ 1714, "cj_office", "BLUE_FABRIC" },
+	{ 1714, "cj_office", "chromepipe2_32hv" },
+	{ 1714, "cj_office", "cj_binders" },
+	{ 1714, "cj_office", "CJ_chiller" },
+	{ 1714, "cj_office", "CJ_CUSHION2" },
+	{ 1714, "cj_office", "CJ_DESK" },
+	{ 1714, "cj_office", "CJ_FILE" },
+	{ 1714, "cj_office", "CJ_photocopier" },
+	{ 1714, "cj_office", "CJ_PLASTIC" },
+	{ 1714, "cj_office", "cl_highbak" },
+	{ 1714, "cj_office", "est_chair" },
+	{ 1714, "cj_office", "filing_cab_mtl" },
+	{ 1714, "cj_office", "la_kitch1" },
+	{ 1714, "cj_office", "la_kitch2" },
+	{ 1714, "cj_office", "la_kitch3" },
+	{ 1714, "cj_office", "of_key_256" },
+	{ 1714, "cj_office", "of_monitor_256" },
+	{ 1714, "cj_office", "redFabric" },
+	{ 1714, "cj_office", "white32" },
+	{ 2065, "cj_off_new", "CJ_FILLING2" },
+	{ 2065, "cj_off_new", "filling" },
+	{ 2065, "cj_off_new", "filling3" },
+	{ 2645, "cj_piz_sign", "CJ_PIZZA_MEN1" },
+	{ 2645, "cj_piz_sign", "CJ_PIZZA_MEN2" },
+	{ 2645, "cj_piz_sign", "CJ_PIZZA_MEN3" },
+	{ 2645, "cj_piz_sign", "CJ_PIZZA_MENU1" },
+	{ 1360, "cj_plant_props", "Bucket_bump" },
+	{ 1360, "cj_plant_props", "CJ_PLANT" },
+	{ 2876, "cj_pro", "CJ_PRO_DOOR_256_" },
+	{ 2347, "cj_reels", "cj_wheel_69256" },
+	{ 2347, "cj_reels", "cj_wheel_B1256" },
+	{ 2347, "cj_reels", "cj_wheel_B2256" },
+	{ 2347, "cj_reels", "cj_wheel_Bell256" },
+	{ 2347, "cj_reels", "cj_wheel_Cherry256" },
+	{ 2347, "cj_reels", "cj_wheel_Grape256" },
+	{ 1716, "cj_seating", "bras2_base" },
+	{ 1716, "cj_seating", "cj_cushion1" },
+	{ 1716, "cj_seating", "CJ_RED_FABRIC" },
+	{ 1716, "cj_seating", "CJ_SHINYWOOD" },
+	{ 2577, "cj_sex", "CJ_PAINTING9" },
+	{ 2577, "cj_sex", "CJ_PORNO_VIDS" },
+	{ 2577, "cj_sex", "CJ_PORNO_VIDS2" },
+	{ 2577, "cj_sex", "CJ_PORNO_VIDS3" },
+	{ 2577, "cj_sex", "CJ_PORNO_VIDS4" },
+	{ 2577, "cj_sex", "CJ_PORN_SIGNS" },
+	{ 2577, "cj_sex", "CJ_PORN_SIGNS2" },
+	{ 2577, "cj_sex", "CJ_videos" },
+	{ 2577, "cj_sex", "gun_dildo1" },
+	{ 2577, "cj_sex", "gun_dildo2" },
+	{ 2577, "cj_sex", "gun_dildo3" },
+	{ 2577, "cj_sex", "gun_dildo4" },
+	{ 1746, "cj_sofa", "CJ_FAB1" },
+	{ 1746, "cj_sofa", "CJ_FAB2" },
+	{ 1746, "cj_sofa", "cj_fab3" },
+	{ 1746, "cj_sofa", "CJ_FAB4" },
+	{ 1746, "cj_sofa", "CJ_WOOD_RUN" },
+	{ 2541, "cj_ss_1", "CJ_7_11_edge" },
+	{ 2541, "cj_ss_1", "CJ_BBQ_BAG" },
+	{ 2541, "cj_ss_1", "CJ_CEREAL" },
+	{ 2541, "cj_ss_1", "cj_juice" },
+	{ 2541, "cj_ss_1", "cj_juice2" },
+	{ 2541, "cj_ss_1", "cj_juice_can" },
+	{ 2541, "cj_ss_1", "CJ_LUBE_1" },
+	{ 2541, "cj_ss_1", "GB_foodwrap01" },
+	{ 2538, "cj_ss_2", "CJ_ICECREAM" },
+	{ 2538, "cj_ss_2", "CJ_milk" },
+	{ 2538, "cj_ss_2", "CJ_milk2" },
+	{ 2538, "cj_ss_2", "CJ_MILK_BOTTLE" },
+	{ 2538, "cj_ss_2", "pizzalid" },
+	{ 2543, "cj_ss_3", "CJ_DOG_FOOD2" },
+	{ 2543, "cj_ss_3", "CJ_DOOG_FOOD" },
+	{ 2535, "cj_ss_4", "CJ_FISHY" },
+	{ 1348, "cj_street_props", "CJ_o2Tank" },
+	{ 1795, "cj_s_beds", "CJ_MATRESS3" },
+	{ 1737, "cj_tables", "FORMICA1" },
+	{ 1350, "cj_traffic", "CJ_sign6" },
+	{ 1717, "cj_tv", "CJ_STEEL" },
+	{ 1717, "cj_tv", "CJ_TV2" },
+	{ 1717, "cj_tv", "green_glass_64" },
+	{ 1717, "cj_tv", "tv_1" },
+	{ 2624, "cj_urb", "cj_bricks" },
+	{ 2624, "cj_urb", "CJ_PRO_1" },
+	{ 2624, "cj_urb", "cj_sport_counter1" },
+	{ 2624, "cj_urb", "counter2" },
+	{ 2878, "cj_vic", "CJ_VICT_DOOR" },
+	{ 1782, "cj_video", "CJ_VIDEO5" },
+	{ 2732, "cj_zip_sign", "CJ_ZIP_1" },
+	{ 2732, "cj_zip_sign", "CJ_ZIP_2" },
+	{ 2732, "cj_zip_sign", "CJ_ZIP_4" },
+	{ 2381, "cloth_trackies", "trackTr" },
+	{ 2381, "cloth_trackies", "trackTrblue" },
+	{ 2381, "cloth_trackies", "tracktrgang" },
+	{ 2381, "cloth_trackies", "trackTrpro" },
+	{ 2374, "cloth_track_t", "shirtshortblu" },
+	{ 2374, "cloth_track_t", "sweatrstar" },
+	{ 2374, "cloth_track_t", "trackytop1pro" },
+	{ 2374, "cloth_track_t", "trackytop2eris" },
+	{ 2374, "cloth_track_t", "tshirterisyell" },
+	{ 10606, "cluckbell_sfs", "roof04L256" },
+	{ 10606, "cluckbell_sfs", "tgogg4_256" },
+	{ 10606, "cluckbell_sfs", "vgncarwash3_256" },
+	{ 10606, "cluckbell_sfs", "vgndwntwnrf1_256" },
+	{ 10606, "cluckbell_sfs", "ws_nicepave" },
+	{ 10606, "cluckbell_sfs", "ws_reinforcedbutwonky_small" },
+	{ 3093, "cntdrrkx", "sjmbigold4" },
+	{ 3093, "cntdrrkx", "sjmbigold5" },
+	{ 11550, "cn_nwbrigstuff", "blendrock2grgrass" },
+	{ 11550, "cn_nwbrigstuff", "dam_genbeam" },
+	{ 11550, "cn_nwbrigstuff", "desbar" },
+	{ 11550, "cn_nwbrigstuff", "des_facmetal" },
+	{ 11550, "cn_nwbrigstuff", "rocktbrn128blndlit" },
+	{ 11550, "cn_nwbrigstuff", "Tar_1linefreewy" },
+	{ 11558, "cn_substation", "des_pylon2" },
+	{ 9902, "coastground", "coasty_bit4_sfe" },
+	{ 9902, "coastground", "coasty_bit_sfe" },
+	{ 9902, "coastground", "coasty_fencet_sfe" },
+	{ 9902, "coastground", "pierbuild_btm2" },
+	{ 9902, "coastground", "pierbuild_btm3" },
+	{ 9902, "coastground", "pierbuild_roof1" },
+	{ 9902, "coastground", "pierbuild_top1" },
+	{ 9902, "coastground", "pierbuild_top2" },
+	{ 17562, "coast_apts", "apartmentwin5_256" },
+	{ 17562, "coast_apts", "Concrete_rough_256" },
+	{ 17562, "coast_apts", "forlease_law" },
+	{ 17562, "coast_apts", "highshopwall1256" },
+	{ 17562, "coast_apts", "otb_floor1" },
+	{ 17562, "coast_apts", "pave_dirty" },
+	{ 17562, "coast_apts", "scumtiles1_LAe" },
+	{ 17562, "coast_apts", "sjmhoodoor1" },
+	{ 17562, "coast_apts", "sjmhoodwin" },
+	{ 17562, "coast_apts", "skategrnd2" },
+	{ 17562, "coast_apts", "sl_concslabgrey_64" },
+	{ 17562, "coast_apts", "snpdhus4" },
+	{ 17562, "coast_apts", "stonewalls1" },
+	{ 17562, "coast_apts", "sunpillar01_law" },
+	{ 17562, "coast_apts", "sunsetmall03b_law" },
+	{ 17562, "coast_apts", "vendoor01_law" },
+	{ 17562, "coast_apts", "ws_garagedoor2_yello" },
+	{ 17562, "coast_apts", "ws_garagedoor4_peach" },
+	{ 17562, "coast_apts", "yardgrass1" },
+	{ 5133, "coast_las2", "cos_hiwayout_256" },
+	{ 5133, "coast_las2", "greyground256sand" },
+	{ 12846, "coe_offtrackshop", "des_pylon1" },
+	{ 12846, "coe_offtrackshop", "des_signframe" },
+	{ 12846, "coe_offtrackshop", "otb_bigsignf" },
+	{ 3063, "col_wall1x", "ab_wood1" },
+	{ 3063, "col_wall1x", "motel_wall4" },
+	{ 3063, "col_wall1x", "mp_burn_wall1" },
+	{ 3063, "col_wall1x", "mp_burn_wall4" },
+	{ 3063, "col_wall1x", "mp_diner_ceilingdirt" },
+	{ 3098, "col_wall2x", "mp_burn_wall2" },
+	{ 3097, "col_wall3x", "kitchen-wall1" },
+	{ 2950, "col_wallx", "gangwall2" },
+	{ 3698, "comedbarrio1_la", "compdoor1_LAe" },
+	{ 3698, "comedbarrio1_la", "compdoor5_LAe" },
+	{ 3698, "comedbarrio1_la", "comptwall18" },
+	{ 3698, "comedbarrio1_la", "comptwall9" },
+	{ 3698, "comedbarrio1_la", "greenwall2" },
+	{ 3555, "comedhos1_la", "Bow_dlct_plstrb_gen" },
+	{ 3555, "comedhos1_la", "Bow_dlct_plstr_cnrb" },
+	{ 3555, "comedhos1_la", "Bow_dryclean_bricks" },
+	{ 3555, "comedhos1_la", "Bow_dryclean_wall_upr_crk" },
+	{ 3555, "comedhos1_la", "Bow_dryclean_wall_upr_crnr" },
+	{ 3555, "comedhos1_la", "comptdoor1" },
+	{ 3555, "comedhos1_la", "comptroof1" },
+	{ 3555, "comedhos1_la", "comptroof2" },
+	{ 3555, "comedhos1_la", "comptroof3" },
+	{ 3555, "comedhos1_la", "comptwall2" },
+	{ 3555, "comedhos1_la", "comptwall4" },
+	{ 3555, "comedhos1_la", "comptwall6" },
+	{ 3555, "comedhos1_la", "comptwindo1" },
+	{ 3555, "comedhos1_la", "comptwindo3" },
+	{ 3555, "comedhos1_la", "dock1" },
+	{ 3584, "comedprj1_la", "waljundirt1" },
+	{ 3584, "comedprj1_la", "walljunkdet1" },
+	{ 3584, "comedprj1_la", "whiwind1" },
+	{ 3583, "compapartb_la", "compcouwall3" },
+	{ 3583, "compapartb_la", "comphosdet1" },
+	{ 3580, "compapart_la", "awniningsides1" },
+	{ 3580, "compapart_la", "comptwall11" },
+	{ 3580, "compapart_la", "crencoudet1" },
+	{ 3580, "compapart_la", "gableends1" },
+	{ 3580, "compapart_la", "tancolum1" },
+	{ 17862, "compomark_lae2", "beachwall3_256" },
+	{ 17862, "compomark_lae2", "beachwall4_256" },
+	{ 17862, "compomark_lae2", "grassdirtblend" },
+	{ 17862, "compomark_lae2", "grasstype7" },
+	{ 17862, "compomark_lae2", "lasbadwaz3" },
+	{ 17862, "compomark_lae2", "lasbadwaz4" },
+	{ 17862, "compomark_lae2", "lasbadwaz6" },
+	{ 17862, "compomark_lae2", "lasbadwaz9" },
+	{ 17862, "compomark_lae2", "lasbadwaz9a" },
+	{ 17862, "compomark_lae2", "sanpshop2" },
+	{ 17862, "compomark_lae2", "sanpshop6" },
+	{ 17862, "compomark_lae2", "sanpshop6z" },
+	{ 17862, "compomark_lae2", "snpedmat92" },
+	{ 3630, "compthotrans_la", "nbarlid" },
+	{ 3630, "compthotrans_la", "sanpedock993" },
+	{ 3630, "compthotrans_la", "sanpedock994" },
+	{ 3630, "compthotrans_la", "sjmlawarplt" },
+	{ 3630, "compthotrans_la", "sjmlawarplt3" },
+	{ 3241, "conhooses", "des_adobedoor1" },
+	{ 3241, "conhooses", "des_door1" },
+	{ 3241, "conhooses", "des_dustconc" },
+	{ 3241, "conhooses", "des_greyboards" },
+	{ 3241, "conhooses", "des_greyslats" },
+	{ 3241, "conhooses", "des_hooswin1" },
+	{ 3241, "conhooses", "des_hooswinwee1" },
+	{ 3241, "conhooses", "des_whitewin1" },
+	{ 3241, "conhooses", "des_woodfence1" },
+	{ 3241, "conhooses", "sanruf" },
+	{ 3241, "conhooses", "trail_door" },
+	{ 3241, "conhooses", "trail_wall1" },
+	{ 3241, "conhooses", "trail_wall2" },
+	{ 3241, "conhooses", "trail_wheel" },
+	{ 3241, "conhooses", "trail_win2" },
+	{ 3241, "conhooses", "ws_corr_metal1" },
+	{ 17566, "contachou1_lae2", "4winscurt_law" },
+	{ 17566, "contachou1_lae2", "compdet1" },
+	{ 17566, "contachou1_lae2", "comptwall26" },
+	{ 17566, "contachou1_lae2", "comptwall27" },
+	{ 17566, "contachou1_lae2", "gangwin1_LAe" },
+	{ 17566, "contachou1_lae2", "gangwin5_LAe" },
+	{ 17566, "contachou1_lae2", "mp_apt1_woodpanel" },
+	{ 17566, "contachou1_lae2", "pierplanks02_128" },
+	{ 17566, "contachou1_lae2", "shingles5" },
+	{ 17566, "contachou1_lae2", "shingles6" },
+	{ 17566, "contachou1_lae2", "weelecbox" },
+	{ 17566, "contachou1_lae2", "woodwarewall1" },
+	{ 17566, "contachou1_lae2", "ws_peeling2" },
+	{ 6000, "con_drivein", "Desrtmetal" },
+	{ 6000, "con_drivein", "drvin_back" },
+	{ 6000, "con_drivein", "drvin_door1" },
+	{ 6000, "con_drivein", "drvin_door2" },
+	{ 6000, "con_drivein", "drvin_front" },
+	{ 6000, "con_drivein", "drvin_panel" },
+	{ 6000, "con_drivein", "drvin_screen" },
+	{ 6000, "con_drivein", "drvin_sign1" },
+	{ 6000, "con_drivein", "drvin_sign2" },
+	{ 6000, "con_drivein", "drvin_stuct" },
+	{ 6000, "con_drivein", "drvin_stuct2" },
+	{ 6000, "con_drivein", "drvin_wind1" },
+	{ 6000, "con_drivein", "drvin_wind2" },
+	{ 11420, "con_stuff", "quarry_ground1" },
+	{ 17934, "coochieghous", "comptwall16" },
+	{ 17934, "coochieghous", "sanpednhus1r" },
+	{ 1977, "cooler1", "kb_cooler2" },
+	{ 1977, "cooler1", "kb_vend1" },
+	{ 1977, "cooler1", "kb_vend2" },
+	{ 1977, "cooler1", "koen_win" },
+	{ 1977, "cooler1", "shelf_stuff1" },
+	{ 10028, "copshop_sfe", "dt_cops_US_flag" },
+	{ 10028, "copshop_sfe", "dt_fire_escape_shit_texture" },
+	{ 10028, "copshop_sfe", "dt_scyscrap_door2" },
+	{ 11395, "corvinsign_sfse", "rustb256128" },
+	{ 11395, "corvinsign_sfse", "shutters" },
+	{ 12844, "cos_liquorstore", "b_wtilesreflect" },
+	{ 12844, "cos_liquorstore", "cos_beercab" },
+	{ 12844, "cos_liquorstore", "cos_berboxes" },
+	{ 12844, "cos_liquorstore", "cos_liqbots" },
+	{ 12844, "cos_liquorstore", "cos_liqcounter" },
+	{ 12844, "cos_liquorstore", "ham_radio" },
+	{ 12844, "cos_liquorstore", "ws_cleanblock" },
+	{ 12841, "cos_pizzaplace", "roughmotwall1" },
+	{ 12841, "cos_pizzaplace", "shutter_64" },
+	{ 6487, "councl_law2", "711shop1" },
+	{ 6487, "councl_law2", "asanpdshpsh1a" },
+	{ 6487, "councl_law2", "grassdeep256" },
+	{ 6487, "councl_law2", "Grass_lawn_128HV" },
+	{ 6487, "councl_law2", "lanlabra1_M" },
+	{ 6487, "councl_law2", "rodeo3sjm" },
+	{ 6487, "councl_law2", "rodeo4sjm" },
+	{ 6487, "councl_law2", "rodeo5sjm" },
+	{ 6487, "councl_law2", "rodwall11_LAw2" },
+	{ 6487, "councl_law2", "rodwall12_LAw2" },
+	{ 6487, "councl_law2", "stonewall2_la" },
+	{ 6487, "councl_law2", "tarmacplain2_bank" },
+	{ 6487, "councl_law2", "tenniscourt1_256" },
+	{ 6487, "councl_law2", "tennisnet_64" },
+	{ 12909, "counte_b2", "sw_barnwood3" },
+	{ 12909, "counte_b2", "sw_fence03" },
+	{ 12909, "counte_b2", "sw_watower01" },
+	{ 3178, "counthousmisc", "corrugated5_64HV" },
+	{ 3178, "counthousmisc", "shackdoor01" },
+	{ 3178, "counthousmisc", "shackwall01" },
+	{ 3178, "counthousmisc", "shackwall02" },
+	{ 3178, "counthousmisc", "shackwall03" },
+	{ 3178, "counthousmisc", "shackwood01" },
+	{ 10399, "countryclbgnd_sfs", "road2_256" },
+	{ 10399, "countryclbgnd_sfs", "ws_tantiles1btm" },
+	{ 10396, "countryclbtnis_sfs", "golf_lamp1" },
+	{ 10396, "countryclbtnis_sfs", "golf_pylon" },
+	{ 10396, "countryclbtnis_sfs", "Grass_path_128HV" },
+	{ 10396, "countryclbtnis_sfs", "monobloc_16" },
+	{ 10396, "countryclbtnis_sfs", "pinkpave" },
+	{ 10398, "countryclub_sfs", "ferry_build4" },
+	{ 10398, "countryclub_sfs", "hc_brickwall1" },
+	{ 10398, "countryclub_sfs", "hc_brickwall2" },
+	{ 10398, "countryclub_sfs", "hc_roofslates" },
+	{ 10398, "countryclub_sfs", "hc_wall1" },
+	{ 10398, "countryclub_sfs", "hc_wall2" },
+	{ 10398, "countryclub_sfs", "hc_whitewall1" },
+	{ 10398, "countryclub_sfs", "hc_windos1" },
+	{ 10398, "countryclub_sfs", "hc_windos2" },
+	{ 17003, "countrys", "rustc256128" },
+	{ 17003, "countrys", "topbitwall256" },
+	{ 17004, "countrys_pch", "des_dam_conc" },
+	{ 3221, "country_breakable", "banding7_64HV" },
+	{ 3221, "country_breakable", "BroWFence" },
+	{ 3221, "country_breakable", "drvin_cable" },
+	{ 3221, "country_breakable", "drvin_spkr" },
+	{ 10987, "coveredpath_sfs", "ws_sheetwood" },
+	{ 11013, "crackdrive_sfse", "ws_asphalt2" },
+	{ 11013, "crackdrive_sfse", "ws_carskidmarks" },
+	{ 11088, "crackfactdem_sfs", "ws_altz_wall7burn" },
+	{ 11088, "crackfactdem_sfs", "ws_altz_wall7_top_burn" },
+	{ 11088, "crackfactdem_sfs", "ws_dampdoubledoor" },
+	{ 11010, "crackfact_sfse", "ws_emptywarehouse" },
+	{ 11010, "crackfact_sfse", "ws_fuckedwin2" },
+	{ 11085, "crack_intkb", "dt_ammu_flr5" },
+	{ 11085, "crack_intkb", "ws_metalrafter1" },
+	{ 1279, "craigpackage", "drugs" },
+	{ 1381, "cranes_dyn2", "ws_dudelogo" },
+	{ 1381, "cranes_dyn2", "ws_finalbuild" },
+	{ 1381, "cranes_dyn2", "ws_oldpaintedyello_b" },
+	{ 1381, "cranes_dyn2", "ws_sheetsteel" },
+	{ 1376, "cranes_dyn2_cj", "freighttexpage" },
+	{ 1376, "cranes_dyn2_cj", "ws_cablehang" },
+	{ 1376, "cranes_dyn2_cj", "ws_oldpaintedblue" },
+	{ 2924, "crash3doorx", "villagreen128256" },
+	{ 916, "crates_n_stuffext", "CJ_CABLEWRAP" },
+	{ 14477, "crlsbits", "CJ_PLANTPOT" },
+	{ 14477, "crlsbits", "kb_lightshade" },
+	{ 14477, "crlsbits", "lightbulb" },
+	{ 14477, "crlsbits", "newtreeleavesb128" },
+	{ 13625, "crowds", "ahsjmlabeam" },
+	{ 13625, "crowds", "ahsjmpostbarx" },
+	{ 13625, "crowds", "ahstandside" },
+	{ 13625, "crowds", "crowd" },
+	{ 4595, "crparkgm_lan2", "gm_LAcarpark1" },
+	{ 4595, "crparkgm_lan2", "gm_LAcarpark2" },
+	{ 4595, "crparkgm_lan2", "gm_LAcarparkmuckt" },
+	{ 4595, "crparkgm_lan2", "parking01_law" },
+	{ 4595, "crparkgm_lan2", "pavetilealley256128" },
+	{ 4595, "crparkgm_lan2", "paystation" },
+	{ 4595, "crparkgm_lan2", "sl_cparkbarrier1" },
+	{ 4595, "crparkgm_lan2", "sl_dtcparklines1" },
+	{ 3013, "cr_boxes", "ammo_bx" },
+	{ 3013, "cr_boxes", "guns_wood" },
+	{ 2979, "cr_slotsx", "slot5_ind" },
+	{ 2979, "cr_slotsx", "slot_fr_1" },
+	{ 2979, "cr_slotsx", "slot_fr_2" },
+	{ 2979, "cr_slotsx", "slot_fr_3" },
+	{ 2979, "cr_slotsx", "slot_fr_4" },
+	{ 2979, "cr_slotsx", "slot_fr_5" },
+	{ 2979, "cr_slotsx", "slot_fr_6" },
+	{ 2979, "cr_slotsx", "slot_fr_7" },
+	{ 2979, "cr_slotsx", "slot_fr_8" },
+	{ 2979, "cr_slotsx", "slot_fr_9" },
+	{ 8481, "csrsfence01", "ceasergate01_256" },
+	{ 8481, "csrsfence01", "ceaserwall03_256" },
+	{ 8481, "csrsfence01", "ceaserwall06_128" },
+	{ 8481, "csrsfence01", "ceaserwall08_256" },
+	{ 8481, "csrsfence01", "sign_Caligulas" },
+	{ 8480, "csrspalace01", "black32" },
+	{ 8480, "csrspalace01", "ceasersledge01_128" },
+	{ 8480, "csrspalace01", "ceasersledge03_128" },
+	{ 8480, "csrspalace01", "ceasersledge04_128" },
+	{ 8480, "csrspalace01", "ceaserwall04night_256" },
+	{ 8480, "csrspalace01", "ceaserwall04_256" },
+	{ 8480, "csrspalace01", "ceaserwall05_256" },
+	{ 8480, "csrspalace01", "ceaserwall07_256" },
+	{ 8480, "csrspalace01", "ceaserwall09_128" },
+	{ 8480, "csrspalace01", "ceaserwindow01_128" },
+	{ 8480, "csrspalace01", "vgspawnroof02_128" },
+	{ 8482, "csrspalace02", "casinolightsyel_128" },
+	{ 8482, "csrspalace02", "ceasertile01_128" },
+	{ 8482, "csrspalace02", "ceaserwall10_128" },
+	{ 8482, "csrspalace02", "ceaserwall11_128" },
+	{ 8482, "csrspalace02", "marble01_128" },
+	{ 18231, "cs_coast", "cunt_botrock" },
+	{ 18231, "cs_coast", "cunt_toprock" },
+	{ 18231, "cs_coast", "des_dirt2blend" },
+	{ 18231, "cs_coast", "des_dirt2grgrass" },
+	{ 18231, "cs_coast", "des_dirt2trackr" },
+	{ 18231, "cs_coast", "grasstype4" },
+	{ 18231, "cs_coast", "grasstype4_mudblend" },
+	{ 18231, "cs_coast", "rocktq128" },
+	{ 18231, "cs_coast", "rocktq128_grass4blend" },
+	{ 18449, "cs_ebridge", "stormdrain4_nt" },
+	{ 18314, "cs_forest", "cuntbrncliffbtmbmp" },
+	{ 18314, "cs_forest", "cuntbrnclifftop" },
+	{ 18314, "cs_forest", "cw2_mountdirtscree" },
+	{ 18314, "cs_forest", "cw2_mountroad" },
+	{ 18314, "cs_forest", "forestfloor256mudblend" },
+	{ 18314, "cs_forest", "forestfloor256_blenddirt" },
+	{ 18314, "cs_forest", "forestfloorblendb" },
+	{ 18314, "cs_forest", "forestfloorblendded" },
+	{ 18314, "cs_forest", "grasstype4_forestblend" },
+	{ 18314, "cs_forest", "rocktq128_forestblend" },
+	{ 18451, "cs_misc", "car1_128" },
+	{ 18451, "cs_misc", "car2_128" },
+	{ 18293, "cs_mountain", "ffbranch_mountdirt" },
+	{ 18447, "cs_mountaindetail", "cs_rockdetail" },
+	{ 18368, "cs_mountaintop", "dam_statbase" },
+	{ 18368, "cs_mountaintop", "des_flatlogs" },
+	{ 18368, "cs_mountaintop", "des_woodrails" },
+	{ 18368, "cs_mountaintop", "sw_flag01" },
+	{ 18369, "cs_roads", "pavebsand256grassblended" },
+	{ 18369, "cs_roads", "Tar_freewyright" },
+	{ 3119, "cs_ry_props", "GB_magazine01" },
+	{ 3119, "cs_ry_props", "GB_magazine04" },
+	{ 3119, "cs_ry_props", "GB_magazine07" },
+	{ 3119, "cs_ry_props", "lightgrey" },
+	{ 3119, "cs_ry_props", "WhiskyBottle" },
+	{ 18364, "cs_scrapyard", "Was_scrpyd_bale_exh" },
+	{ 18561, "cs_wbridge", "des_byframe1" },
+	{ 5069, "ctscene_las", "cleargraf02_LA" },
+	{ 5069, "ctscene_las", "ruffroadlas" },
+	{ 3038, "ct_kanx", "ct_lantern" },
+	{ 3038, "ct_kanx", "ct_rope" },
+	{ 3038, "ct_kanx", "ct_tastle" },
+	{ 3039, "ct_salx", "ct_stall1" },
+	{ 3039, "ct_salx", "ct_stall_stuff1" },
+	{ 3039, "ct_salx", "ct_umbrela" },
+	{ 3040, "ct_stabx", "ct_boxes" },
+	{ 3040, "ct_stabx", "ct_fruit" },
+	{ 3042, "ct_ventx", "liftdoorsac128" },
+	{ 6522, "cuntclub_law2", "countclu01_LAw2" },
+	{ 6522, "cuntclub_law2", "countclu02_LAw2" },
+	{ 6522, "cuntclub_law2", "helipad_grey1" },
+	{ 6522, "cuntclub_law2", "marinadoor1_256" },
+	{ 6522, "cuntclub_law2", "marinawindow1_256" },
+	{ 6522, "cuntclub_law2", "vgschapelwall01_128" },
+	{ 15040, "cuntcuts", "AH_pinkcurtain" },
+	{ 15040, "cuntcuts", "chrome_tube4" },
+	{ 15040, "cuntcuts", "CsCrackpipe01" },
+	{ 15040, "cuntcuts", "csnewspaper" },
+	{ 15040, "cuntcuts", "csnewspaper02" },
+	{ 15040, "cuntcuts", "cszerocupboard" },
+	{ 15040, "cuntcuts", "GB_canvas06" },
+	{ 15040, "cuntcuts", "GB_canvas15" },
+	{ 15040, "cuntcuts", "GB_canvas17" },
+	{ 15040, "cuntcuts", "GB_canvas18" },
+	{ 15040, "cuntcuts", "GB_mike01" },
+	{ 15040, "cuntcuts", "GB_novels06" },
+	{ 15040, "cuntcuts", "GB_pendantlmp01" },
+	{ 15040, "cuntcuts", "GB_phone01" },
+	{ 15040, "cuntcuts", "GB_phone02" },
+	{ 15040, "cuntcuts", "GB_swingbin01" },
+	{ 15040, "cuntcuts", "GB_tile01" },
+	{ 15040, "cuntcuts", "GB_towel02" },
+	{ 15040, "cuntcuts", "newspaper1" },
+	{ 15040, "cuntcuts", "piratesign01_128" },
+	{ 15040, "cuntcuts", "ws_chipboard" },
+	{ 13686, "cunte1_lahills", "desmudtrail2" },
+	{ 13699, "cunte2_lahills", "bevgate01_law" },
+	{ 13699, "cunte2_lahills", "laposhfence3" },
+	{ 12809, "cunteroads1", "des_1line256" },
+	{ 12809, "cunteroads1", "des_1linetar" },
+	{ 12802, "cunteroads2", "roadnew4_512" },
+	{ 12802, "cunteroads2", "sw_gasground" },
+	{ 12802, "cunteroads2", "sw_gasground2" },
+	{ 12877, "cunteroads3", "cos_hiwayins_256" },
+	{ 12800, "cunteroads5", "concreteblock_256" },
+	{ 12800, "cunteroads5", "hiwayinside5_256" },
+	{ 12800, "cunteroads5", "hiwayoutside_256" },
+	{ 13077, "cunte_bar1", "alleydoor4" },
+	{ 13077, "cunte_bar1", "alleydoorb256" },
+	{ 13077, "cunte_bar1", "amity_law" },
+	{ 13077, "cunte_bar1", "black16" },
+	{ 13077, "cunte_bar1", "newall4-2" },
+	{ 12850, "cunte_block1", "ablusrip" },
+	{ 12850, "cunte_block1", "awhitest2" },
+	{ 12850, "cunte_block1", "des_indsign1" },
+	{ 12850, "cunte_block1", "lightwall256" },
+	{ 12850, "cunte_block1", "shoptopa128" },
+	{ 12850, "cunte_block1", "shph3r1hi" },
+	{ 12850, "cunte_block1", "sjmbrwn3" },
+	{ 12850, "cunte_block1", "sjmbwall2" },
+	{ 12850, "cunte_block1", "sjmhot4" },
+	{ 12850, "cunte_block1", "sw_door10" },
+	{ 12850, "cunte_block1", "sw_hardware01" },
+	{ 12850, "cunte_block1", "sw_hardware02" },
+	{ 12850, "cunte_block1", "sw_miller" },
+	{ 12850, "cunte_block1", "sw_signs01" },
+	{ 12850, "cunte_block1", "sw_window02" },
+	{ 12850, "cunte_block1", "ws_ornatewall1" },
+	{ 12850, "cunte_block1", "ws_redbrickold" },
+	{ 13131, "cunte_blockammo", "decoacwallbtm21_256" },
+	{ 13131, "cunte_blockammo", "dt_ammu_sign1" },
+	{ 13131, "cunte_blockammo", "dt_ammu_sign2" },
+	{ 13131, "cunte_blockammo", "dt_ammu_wall2" },
+	{ 13131, "cunte_blockammo", "mp_bluemetaldoor_256" },
+	{ 13131, "cunte_blockammo", "mp_gun_targets" },
+	{ 13131, "cunte_blockammo", "newall10" },
+	{ 13131, "cunte_blockammo", "sw_door15" },
+	{ 13131, "cunte_blockammo", "sw_locals" },
+	{ 13131, "cunte_blockammo", "wallwindblank_256" },
+	{ 13131, "cunte_blockammo", "ws_patchygravel" },
+	{ 12855, "cunte_cop", "des_thrails" },
+	{ 12855, "cunte_cop", "sjmfrateblu2" },
+	{ 12855, "cunte_cop", "sjmgrund2b" },
+	{ 12855, "cunte_cop", "sw_bars" },
+	{ 12855, "cunte_cop", "sw_brick05" },
+	{ 12855, "cunte_cop", "sw_brick05b" },
+	{ 12855, "cunte_cop", "sw_copdoor1" },
+	{ 12855, "cunte_cop", "sw_copgrass01" },
+	{ 12855, "cunte_cop", "sw_path1" },
+	{ 12855, "cunte_cop", "sw_PD" },
+	{ 12855, "cunte_cop", "sw_PDground" },
+	{ 12855, "cunte_cop", "sw_shutters1" },
+	{ 12855, "cunte_cop", "sw_wall01" },
+	{ 12855, "cunte_cop", "sw_wind01" },
+	{ 12855, "cunte_cop", "ws_bigstones" },
+	{ 12853, "cunte_gas01", "aroofbit93" },
+	{ 12853, "cunte_gas01", "downtsign13_LA" },
+	{ 12853, "cunte_gas01", "postcards_law" },
+	{ 12853, "cunte_gas01", "starspangban1_256" },
+	{ 12853, "cunte_gas01", "sw_floor1" },
+	{ 12853, "cunte_gas01", "sw_garagewin" },
+	{ 12853, "cunte_gas01", "sw_gasshelves" },
+	{ 12853, "cunte_gas01", "sw_gasso" },
+	{ 12853, "cunte_gas01", "sw_gasso2" },
+	{ 12853, "cunte_gas01", "sw_gasstation1" },
+	{ 3306, "cunte_house1", "darkplanks1" },
+	{ 3306, "cunte_house1", "des_ntwnwall1" },
+	{ 3306, "cunte_house1", "garargeb2" },
+	{ 3306, "cunte_house1", "pinkfence_law" },
+	{ 3306, "cunte_house1", "sw_patiodoors" },
+	{ 3306, "cunte_house1", "tilered" },
+	{ 3306, "cunte_house1", "woodwalllight2256" },
+	{ 3306, "cunte_house1", "ws_boxhouse_wins6" },
+	{ 12843, "cunte_lik", "crencouwall1" },
+	{ 12843, "cunte_lik", "des_rosigns1" },
+	{ 12843, "cunte_lik", "LAstripmall1" },
+	{ 12848, "cunte_town1", "lhav_shops5new" },
+	{ 12848, "cunte_town1", "newall9-1" },
+	{ 12848, "cunte_town1", "pinkshop" },
+	{ 12848, "cunte_town1", "rufwallb256hi" },
+	{ 12848, "cunte_town1", "sjmbhus1" },
+	{ 12848, "cunte_town1", "sprunk_temp" },
+	{ 12848, "cunte_town1", "sw_bakers01" },
+	{ 12848, "cunte_town1", "sw_bakers02" },
+	{ 12848, "cunte_town1", "sw_lickter" },
+	{ 12848, "cunte_town1", "wall256hi" },
+	{ 12848, "cunte_town1", "ws_doubledoor3" },
+	{ 13096, "cunte_wires", "inwindow1shdw" },
+	{ 13096, "cunte_wires", "sw_skids_a" },
+	{ 13096, "cunte_wires", "telewireslong2" },
+	{ 17025, "cuntrock", "cliffmid1" },
+	{ 17025, "cuntrock", "rock_country128" },
+	{ 18225, "cuntrockcs_t", "cliffmid4" },
+	{ 18552, "cunts_gunclub", "ws_corr_1_tan" },
+	{ 17036, "cuntwbt", "bluemetal05" },
+	{ 17036, "cuntwbt", "carparkdoor1_256" },
+	{ 17036, "cuntwbt", "corugwall2-1" },
+	{ 17036, "cuntwbt", "des_woodslats1" },
+	{ 17036, "cuntwbt", "des_woodslats2" },
+	{ 18234, "cuntwbtxcs_t", "des_cornices" },
+	{ 18234, "cuntwbtxcs_t", "des_door2" },
+	{ 18234, "cuntwbtxcs_t", "des_thfdoor" },
+	{ 18234, "cuntwbtxcs_t", "mp_pinemedical" },
+	{ 18234, "cuntwbtxcs_t", "offwhitebrix" },
+	{ 18237, "cuntwbtzzcs_t", "corugwallnew6_128" },
+	{ 18237, "cuntwbtzzcs_t", "des_dinerwall" },
+	{ 18237, "cuntwbtzzcs_t", "metaldoor01_256" },
+	{ 17049, "cuntwf", "hay" },
+	{ 17049, "cuntwf", "sw_vane01" },
+	{ 17049, "cuntwf", "sw_walltile" },
+	{ 17049, "cuntwf", "ws_corrugated3" },
+	{ 17079, "cuntwland", "forestfloor4" },
+	{ 17079, "cuntwland", "forest_rocks" },
+	{ 17079, "cuntwland", "grass10dirt" },
+	{ 17079, "cuntwland", "grass10forest" },
+	{ 17079, "cuntwland", "grassshort2long256" },
+	{ 17079, "cuntwland", "grasstype3dirt" },
+	{ 17079, "cuntwland", "grasstype4-3" },
+	{ 17079, "cuntwland", "grasstype4_staw" },
+	{ 17079, "cuntwland", "grasstype5" },
+	{ 17079, "cuntwland", "grasstype5_4" },
+	{ 17079, "cuntwland", "roadblendcunt" },
+	{ 17079, "cuntwland", "rocktq128blender" },
+	{ 17079, "cuntwland", "rocktq128_dirt" },
+	{ 17079, "cuntwland", "stones256" },
+	{ 17079, "cuntwland", "ws_freeway4" },
+	{ 17079, "cuntwland", "ws_sub_pen_conc2" },
+	{ 17079, "cuntwland", "ws_tunnelwall1" },
+	{ 17079, "cuntwland", "ws_tunnelwall2" },
+	{ 17092, "cuntwlandcarparks", "sw_sandgrass4" },
+	{ 17081, "cuntwlandcent", "grass10des_dirt2" },
+	{ 17081, "cuntwlandcent", "grass10_grassdeep1" },
+	{ 17081, "cuntwlandcent", "grass10_stones256" },
+	{ 17081, "cuntwlandcent", "grassdeep1" },
+	{ 17081, "cuntwlandcent", "grasstype510" },
+	{ 17081, "cuntwlandcent", "grasstype510_10" },
+	{ 17081, "cuntwlandcent", "RAIL_stones256" },
+	{ 17081, "cuntwlandcent", "rocktq128_forestblend2" },
+	{ 17081, "cuntwlandcent", "sw_dirt01_forestblend" },
+	{ 17081, "cuntwlandcent", "ws_traingravel" },
+	{ 17101, "cuntwlandse", "cw2_weeroad1" },
+	{ 17101, "cuntwlandse", "des_crackeddirt1" },
+	{ 17101, "cuntwlandse", "grass4dirtytrans" },
+	{ 17101, "cuntwlandse", "grassgrnbrnx256" },
+	{ 17101, "cuntwlandse", "grasstype5_dirt" },
+	{ 17101, "cuntwlandse", "newcrop3" },
+	{ 17075, "cuntwlandwest", "cw2_mounttrailblank" },
+	{ 17075, "cuntwlandwest", "desertstones256forestmix" },
+	{ 17075, "cuntwlandwest", "des_dirtgrassmixb" },
+	{ 17075, "cuntwlandwest", "des_dirtgrassmixbmp" },
+	{ 17075, "cuntwlandwest", "des_dirtgrassmixc" },
+	{ 17075, "cuntwlandwest", "des_dirtgrassmix_grass4" },
+	{ 17075, "cuntwlandwest", "forestfloor3_forest" },
+	{ 17075, "cuntwlandwest", "forestfloor_sones256" },
+	{ 17075, "cuntwlandwest", "grasstype10_4blend" },
+	{ 17075, "cuntwlandwest", "grasstype4blndtodirt" },
+	{ 17075, "cuntwlandwest", "mountainskree_stones256" },
+	{ 18239, "cuntwrestcs_t", "des_metalwinwee" },
+	{ 18239, "cuntwrestcs_t", "mp_Jrest" },
+	{ 18239, "cuntwrestcs_t", "shopdoor02_law" },
+	{ 17146, "cuntwroad", "Tar_1line256HVblend2" },
+	{ 17146, "cuntwroad", "Tar_1line256HVblenddrtdot" },
+	{ 17146, "cuntwroad", "Tar_1line256HVgtravel" },
+	{ 17146, "cuntwroad", "Tar_1line256HVlightsand" },
+	{ 17146, "cuntwroad", "Tar_blenddrtwhiteline" },
+	{ 17146, "cuntwroad", "Tar_lineslipway" },
+	{ 17146, "cuntwroad", "ws_drain_small" },
+	{ 18233, "cuntwshopscs_t", "des_adobedoor3" },
+	{ 18233, "cuntwshopscs_t", "des_baitshop" },
+	{ 18233, "cuntwshopscs_t", "des_baitsign" },
+	{ 18233, "cuntwshopscs_t", "des_ntwnwin2" },
+	{ 18233, "cuntwshopscs_t", "des_ntwnwin5" },
+	{ 18233, "cuntwshopscs_t", "des_oldtinroof" },
+	{ 18233, "cuntwshopscs_t", "des_shopsigns1" },
+	{ 18233, "cuntwshopscs_t", "orange1" },
+	{ 18233, "cuntwshopscs_t", "snpdwhit3" },
+	{ 18233, "cuntwshopscs_t", "vgngewall1_256" },
+	{ 2958, "cut_beer", "bottles_kb1" },
+	{ 18264, "cw2_cinemablockcs_t", "corporate2" },
+	{ 18264, "cw2_cinemablockcs_t", "cw_movieboard" },
+	{ 18264, "cw2_cinemablockcs_t", "GB_good men" },
+	{ 18264, "cw2_cinemablockcs_t", "GB_Last of Mullets" },
+	{ 18264, "cw2_cinemablockcs_t", "LAglaswall1" },
+	{ 18264, "cw2_cinemablockcs_t", "newall9" },
+	{ 18264, "cw2_cinemablockcs_t", "pcut_band_law" },
+	{ 18264, "cw2_cinemablockcs_t", "sw_storewin03" },
+	{ 17067, "cw2_logcabins", "cw2_logwall" },
+	{ 17067, "cw2_logcabins", "sw_cabinroof" },
+	{ 17067, "cw2_logcabins", "trail_win3" },
+	{ 17067, "cw2_logcabins", "wilsd_05_la" },
+	{ 18261, "cw2_photoblockcs_t", "cw_loansign" },
+	{ 18261, "cw2_photoblockcs_t", "sw_wallbrick_04" },
+	{ 17064, "cw2_storesnstuff", "comptdoor4" },
+	{ 17064, "cw2_storesnstuff", "des_garagedoor1" },
+	{ 17064, "cw2_storesnstuff", "LAtranswall1" },
+	{ 17012, "cwestfac", "vgnwrehse2_256" },
+	{ 17012, "cwestfac", "vgnwrehse3_256" },
+	{ 17012, "cwestfac", "vgnwrehse4_256" },
+	{ 17012, "cwestfac", "vnghse6_128" },
+	{ 17324, "cwsbarn", "des_bullboards" },
+	{ 17324, "cwsbarn", "des_ranchwall2" },
+	{ 17324, "cwsbarn", "des_redslats" },
+	{ 18216, "cw_changemecs_t", "plasfence1_256" },
+	{ 18216, "cw_changemecs_t", "plasfence2_256" },
+	{ 18250, "cw_junkbuildcs_t", "Was_graffiti" },
+	{ 18250, "cw_junkbuildcs_t", "Was_scrpyd_baler_locker" },
+	{ 18250, "cw_junkbuildcs_t", "Was_scrpyd_baler_wallgrime" },
+	{ 18250, "cw_junkbuildcs_t", "Was_scrpyd_bodywk_edge" },
+	{ 18250, "cw_junkbuildcs_t", "Was_scrpyd_fence_wd_stain" },
+	{ 18250, "cw_junkbuildcs_t", "Was_scrpyd_hngr_jsts" },
+	{ 18250, "cw_junkbuildcs_t", "Was_scrpyd_rustmetal" },
+	{ 18250, "cw_junkbuildcs_t", "Was_scrpyd_shack" },
+	{ 18250, "cw_junkbuildcs_t", "Was_scrpyd_shack_wall" },
+	{ 18250, "cw_junkbuildcs_t", "Was_scrpyd_shack_win" },
+	{ 18250, "cw_junkbuildcs_t", "Was_scrpyd_sign_alv" },
+	{ 18250, "cw_junkbuildcs_t", "Was_scrpyd_switch" },
+	{ 18250, "cw_junkbuildcs_t", "Was_scrpyd_wall_crgated" },
+	{ 18246, "cw_junkyard2cs_t", "Was_scrpyd_carbits" },
+	{ 18246, "cw_junkyard2cs_t", "Was_scrpyd_carhood" },
+	{ 18246, "cw_junkyard2cs_t", "Was_scrpyd_cyl_head" },
+	{ 18246, "cw_junkyard2cs_t", "Was_scrpyd_door_dbl_grey" },
+	{ 18246, "cw_junkyard2cs_t", "Was_scrpyd_engine" },
+	{ 18246, "cw_junkyard2cs_t", "Was_scrpyd_tires" },
+	{ 18246, "cw_junkyard2cs_t", "Was_scrpyd_trailer" },
+	{ 18246, "cw_junkyard2cs_t", "Was_scrpyd_trailer_door" },
+	{ 18246, "cw_junkyard2cs_t", "Was_scrpyd_trailer_edge" },
+	{ 18246, "cw_junkyard2cs_t", "Was_scrpyd_trailer_front" },
+	{ 18246, "cw_junkyard2cs_t", "Was_scrpyd_trailer_hatch" },
+	{ 18246, "cw_junkyard2cs_t", "Was_scrpyd_trailer_join" },
+	{ 18246, "cw_junkyard2cs_t", "Was_scrpyd_trailer_stripe" },
+	{ 18246, "cw_junkyard2cs_t", "Was_scrpyd_trailer_win_side" },
+	{ 18249, "cw_junkyardccs_t", "Was_scrpyd_shredder_side" },
+	{ 18249, "cw_junkyardccs_t", "Was_scrpyd_trk_contnr_sd" },
+	{ 18247, "cw_junkyarddigcs_t", "Was_scrpyd_axle_end" },
+	{ 18247, "cw_junkyarddigcs_t", "Was_scrpyd_crane" },
+	{ 18247, "cw_junkyarddigcs_t", "Was_scrpyd_crane_back" },
+	{ 18247, "cw_junkyarddigcs_t", "Was_scrpyd_crane_cab" },
+	{ 18247, "cw_junkyarddigcs_t", "Was_scrpyd_crane_hyd" },
+	{ 18247, "cw_junkyarddigcs_t", "Was_scrpyd_step" },
+	{ 18245, "cw_junkyardmachin", "Was_scrpyd_baler_decking" },
+	{ 18245, "cw_junkyardmachin", "Was_scrpyd_baler_gen" },
+	{ 18245, "cw_junkyardmachin", "Was_scrpyd_baler_gen_ed" },
+	{ 18245, "cw_junkyardmachin", "Was_scrpyd_baler_gen_rvt" },
+	{ 18245, "cw_junkyardmachin", "Was_scrpyd_baler_locker_edge" },
+	{ 18245, "cw_junkyardmachin", "Was_scrpyd_baler_pipes" },
+	{ 18245, "cw_junkyardmachin", "Was_scrpyd_baler_pit_dbris" },
+	{ 18245, "cw_junkyardmachin", "Was_scrpyd_baler_stepfront" },
+	{ 18245, "cw_junkyardmachin", "Was_scrpyd_light_yellow" },
+	{ 18245, "cw_junkyardmachin", "Was_scrpyd_wall_grn" },
+	{ 18245, "cw_junkyardmachin", "Was_scrpyd_wall_grn_skirt" },
+	{ 17041, "cw_motel1", "des_motelsigns1" },
+	{ 17041, "cw_motel1", "des_motelsigns3" },
+	{ 17041, "cw_motel1", "des_motelwall4" },
+	{ 17041, "cw_motel1", "des_motelwall5" },
+	{ 18242, "cw_motel2cs_t", "des_motelsigns2" },
+	{ 18242, "cw_motel2cs_t", "des_motelwall1" },
+	{ 18242, "cw_motel2cs_t", "des_motelwall2" },
+	{ 18242, "cw_motel2cs_t", "des_motelwall3" },
+	{ 18201, "cw_roofbitcs_t", "aroofbit1" },
+	{ 18201, "cw_roofbitcs_t", "aroofbit2" },
+	{ 18201, "cw_roofbitcs_t", "aroofbit3" },
+	{ 18201, "cw_roofbitcs_t", "aroofbit4" },
+	{ 18201, "cw_roofbitcs_t", "aroofbit5" },
+	{ 18201, "cw_roofbitcs_t", "aroofbit6" },
+	{ 18201, "cw_roofbitcs_t", "aroofbit7" },
+	{ 18201, "cw_roofbitcs_t", "aroofbit8" },
+	{ 18201, "cw_roofbitcs_t", "aroofbit9" },
+	{ 18201, "cw_roofbitcs_t", "aroofbit91" },
+	{ 18201, "cw_roofbitcs_t", "aroofbit92" },
+	{ 18241, "cw_tempstuffcs_t", "bluemetal03" },
+	{ 18241, "cw_tempstuffcs_t", "des_metaldoor1" },
+	{ 18241, "cw_tempstuffcs_t", "roof11new" },
+	{ 18232, "cw_truckstopcs_t", "des_adobewall3" },
+	{ 18232, "cw_truckstopcs_t", "des_roswin3" },
+	{ 18232, "cw_truckstopcs_t", "des_wigwamdoor" },
+	{ 18232, "cw_truckstopcs_t", "dinerwel" },
+	{ 18232, "cw_truckstopcs_t", "wlinebits_law" },
+	{ 18232, "cw_truckstopcs_t", "ws_xenon_old_dirty" },
+	{ 3193, "cxref_desert", "BIG_COCK" },
+	{ 3193, "cxref_desert", "Bow_Roofvent" },
+	{ 3193, "cxref_desert", "des_bywall1" },
+	{ 3193, "cxref_desert", "des_rustpanel" },
+	{ 3193, "cxref_desert", "des_wigwam" },
+	{ 3193, "cxref_desert", "drvin_metal" },
+	{ 3193, "cxref_desert", "grilldoors1nt" },
+	{ 3193, "cxref_desert", "pierplanks_128" },
+	{ 3193, "cxref_desert", "swall3256" },
+	{ 3193, "cxref_desert", "sw_barnfence01" },
+	{ 3193, "cxref_desert", "sw_cabwin01" },
+	{ 3193, "cxref_desert", "sw_woodslat01" },
+	{ 3336, "cxref_freeway", "mp_aldeasign" },
+	{ 3336, "cxref_freeway", "roadsback01_LA" },
+	{ 3246, "cxref_oldwest", "des_ntwndoor2" },
+	{ 3246, "cxref_oldwest", "des_ntwnwin3" },
+	{ 3246, "cxref_oldwest", "des_ntwnwin6" },
+	{ 3187, "cxref_quarrytest", "gs_barge1" },
+	{ 3187, "cxref_quarrytest", "gs_barge2" },
+	{ 3187, "cxref_quarrytest", "gs_door1" },
+	{ 3187, "cxref_quarrytest", "gs_iron1" },
+	{ 3187, "cxref_quarrytest", "gs_iron2" },
+	{ 3187, "cxref_quarrytest", "gs_sign1" },
+	{ 3187, "cxref_quarrytest", "gs_wind1" },
+	{ 3187, "cxref_quarrytest", "gs_wood1" },
+	{ 3187, "cxref_quarrytest", "gs_wood2" },
+	{ 3355, "cxref_savhus", "des_brick1" },
+	{ 3355, "cxref_savhus", "des_bywall2" },
+	{ 3355, "cxref_savhus", "sw_wind07" },
+	{ 3286, "cxrf_indstuff", "des_bytower1" },
+	{ 3292, "cxrf_payspray", "Alumox64b" },
+	{ 3292, "cxrf_payspray", "compressor" },
+	{ 3292, "cxrf_payspray", "newindow4" },
+	{ 3292, "cxrf_payspray", "panel2_64a" },
+	{ 3292, "cxrf_payspray", "sf_spray1" },
+	{ 3292, "cxrf_payspray", "sf_spraydoor1" },
+	{ 3292, "cxrf_payspray", "walldirtynewa256" },
+	{ 3292, "cxrf_payspray", "wallwasdrk128" },
+	{ 3292, "cxrf_payspray", "welder" },
+	{ 16338, "dam_genroom", "dam_genpanel" },
+	{ 16338, "dam_genroom", "dam_genrail" },
+	{ 16338, "dam_genroom", "dam_genwin" },
+	{ 16338, "dam_genroom", "dam_terazzoedge" },
+	{ 16338, "dam_genroom", "dam_turbine" },
+	{ 16338, "dam_genroom", "des_dam_wall" },
+	{ 16338, "dam_genroom", "ws_drain" },
+	{ 1556, "dave_door_2a", "casinodoor1_128" },
+	{ 1557, "dave_door_2b", "miragedoor1_256" },
+	{ 1555, "dave_door_2c", "vgnhsedor1_256" },
+	{ 3092, "deadcopx", "ropes01" },
+	{ 3092, "deadcopx", "tied_cop" },
+	{ 2905, "dead_mantxd", "billyblood" },
+	{ 3866, "dem1_sfxrf", "ws_blistered1" },
+	{ 3866, "dem1_sfxrf", "ws_demolishwall2" },
+	{ 3866, "dem1_sfxrf", "ws_demolishwall3small" },
+	{ 3866, "dem1_sfxrf", "ws_demolishwins1" },
+	{ 3866, "dem1_sfxrf", "ws_flooredge" },
+	{ 3866, "dem1_sfxrf", "ws_oldoffice3" },
+	{ 3866, "dem1_sfxrf", "ws_walledge" },
+	{ 3887, "dem4_sfxrf", "ws_apartmenttan1" },
+	{ 3887, "dem4_sfxrf", "ws_blistered1smoked" },
+	{ 3887, "dem4_sfxrf", "ws_classyshop2" },
+	{ 3887, "dem4_sfxrf", "ws_demolishwall4_small" },
+	{ 3887, "dem4_sfxrf", "ws_peeling_ceiling2_smoked" },
+	{ 10984, "demolished1_sfse", "ws_rubble1b" },
+	{ 16175, "des2vegas_join", "des_redrockbot" },
+	{ 16175, "des2vegas_join", "des_redrockmid" },
+	{ 16175, "des2vegas_join", "des_rocky1" },
+	{ 16175, "des2vegas_join", "des_scrub1_dirt1" },
+	{ 16175, "des2vegas_join", "rocktbrn_dirt2" },
+	{ 16175, "des2vegas_join", "vgs_rockbot1a" },
+	{ 16175, "des2vegas_join", "vgs_rockmid1a" },
+	{ 16110, "desert", "des_redrock1" },
+	{ 16110, "desert", "des_redrock2" },
+	{ 11488, "desertdam", "dam_statue" },
+	{ 3330, "desertmisc", "des_radiomast" },
+	{ 16013, "desn2_alphabits", "des_powerlines" },
+	{ 16395, "desn2_minestuff", "cw2_mountboards1" },
+	{ 16398, "desn2_peckers", "des_cock1" },
+	{ 16398, "desn2_peckers", "des_cockbit" },
+	{ 16398, "desn2_peckers", "des_cockdanglybit2" },
+	{ 16398, "desn2_peckers", "des_cockhead" },
+	{ 16398, "desn2_peckers", "pierwall06_law" },
+	{ 16398, "desn2_peckers", "tarp_law" },
+	{ 16398, "desn2_peckers", "vgs_shopwall02_128" },
+	{ 16388, "desn2_stud", "decorated" },
+	{ 16388, "desn2_stud", "des_spreadsig" },
+	{ 16388, "desn2_stud", "simplewall256" },
+	{ 16360, "desn2_truckstop", "sw_wind17" },
+	{ 16360, "desn2_truckstop", "ws_xenon_1" },
+	{ 11549, "desn_decocafe", "mp_Jdiner" },
+	{ 11549, "desn_decocafe", "wallwhtwind256" },
+	{ 11549, "desn_decocafe", "wallwind256" },
+	{ 11431, "desn_teepee", "des_tepesign" },
+	{ 11464, "desn_trainstuff", "alleydoor1" },
+	{ 11464, "desn_trainstuff", "ws_goldengate5" },
+	{ 11464, "desn_trainstuff", "ws_tunnelwall2smoked" },
+	{ 11545, "desn_truckstop", "ws_xenon_2" },
+	{ 11545, "desn_truckstop", "ws_xenon_3" },
+	{ 13598, "destructo", "exploder1" },
+	{ 13598, "destructo", "knifeAfterDark" },
+	{ 13598, "destructo", "pendantlight_128" },
+	{ 13598, "destructo", "redband_64" },
+	{ 13598, "destructo", "sjmfnce" },
+	{ 13598, "destructo", "sunshinebillboard" },
+	{ 13598, "destructo", "vsrbanner" },
+	{ 16407, "des_airfieldhus", "burglry_wall1" },
+	{ 16407, "des_airfieldhus", "grge_corug1" },
+	{ 16407, "des_airfieldhus", "kb_flykiller1" },
+	{ 16407, "des_airfieldhus", "plane_cable" },
+	{ 16407, "des_airfieldhus", "plane_photos1" },
+	{ 16407, "des_airfieldhus", "quar_cranerail" },
+	{ 16137, "des_bigearstuff", "dirtyledge_law" },
+	{ 3303, "des_bighus", "sw_wind09" },
+	{ 16098, "des_boneyard", "roucghstone" },
+	{ 16098, "des_boneyard", "roucghstonebrt" },
+	{ 16098, "des_boneyard", "Was_meshfence" },
+	{ 3278, "des_breakwin1", "des_warewin" },
+	{ 16326, "des_byoffice", "des_bywin1" },
+	{ 16326, "des_byoffice", "plainwoodenfence1_256" },
+	{ 16377, "des_byofficeint", "blak_1" },
+	{ 16377, "des_byofficeint", "hectics_text" },
+	{ 16377, "des_byofficeint", "ufo_pics2" },
+	{ 16377, "des_byofficeint", "water_cool1" },
+	{ 16377, "des_byofficeint", "water_cool2" },
+	{ 16102, "des_cen", "desert_1line256" },
+	{ 16102, "des_cen", "desert_1linetar" },
+	{ 16102, "des_cen", "desstones_dirt1" },
+	{ 16102, "des_cen", "des_dirttrackl" },
+	{ 16102, "des_cen", "des_geyser" },
+	{ 16102, "des_cen", "des_ripplsand" },
+	{ 16102, "des_cen", "des_rocky1_dirt1" },
+	{ 16102, "des_cen", "des_scrub1" },
+	{ 16102, "des_cen", "sandgrnd128" },
+	{ 11425, "des_clifftown", "des_adobedoor2" },
+	{ 11425, "des_clifftown", "des_adobewall1" },
+	{ 11425, "des_clifftown", "des_adobewin1" },
+	{ 11425, "des_clifftown", "des_adobewin2" },
+	{ 11425, "des_clifftown", "des_adobewin3" },
+	{ 11425, "des_clifftown", "des_cemgates" },
+	{ 11425, "des_clifftown", "des_damcamper" },
+	{ 11425, "des_clifftown", "des_shfront1" },
+	{ 11425, "des_clifftown", "des_shopwin1" },
+	{ 11425, "des_clifftown", "ros_thwin1" },
+	{ 16132, "des_cn2_dam", "des_dam_detail1" },
+	{ 16132, "des_cn2_dam", "des_dam_wins" },
+	{ 16364, "des_damquay", "des_creamshopdoor" },
+	{ 16364, "des_damquay", "pierdoor01_law" },
+	{ 16364, "des_damquay", "sw_dinewin" },
+	{ 11499, "des_dinerw", "gate1_LAe" },
+	{ 16271, "des_factory", "corr_2_plaintiledblue" },
+	{ 16271, "des_factory", "des_facwin" },
+	{ 16271, "des_factory", "dish_cylinder_a" },
+	{ 16271, "des_factory", "sm_quarry_conv_belt_empty" },
+	{ 16271, "des_factory", "sm_quarry_crusher1" },
+	{ 16021, "des_geyser", "des_geywin1" },
+	{ 16021, "des_geyser", "sjmbigold1" },
+	{ 16387, "des_gunclub", "woodenpanels256" },
+	{ 16008, "des_n", "des_1lineend" },
+	{ 16008, "des_n", "des_roadedge1" },
+	{ 16008, "des_n", "drvin_ground1" },
+	{ 16008, "des_n", "greycrossing" },
+	{ 16008, "des_n", "motocross_256" },
+	{ 16008, "des_n", "pavebsandend" },
+	{ 16037, "des_nbridge", "girder2_red_64HV" },
+	{ 16103, "des_ne", "des_dirt2stones" },
+	{ 16103, "des_ne", "des_dirtgravel" },
+	{ 16103, "des_ne", "des_dirttrackx" },
+	{ 16103, "des_ne", "des_oldrunway" },
+	{ 16103, "des_ne", "des_oldrunwayblend" },
+	{ 16103, "des_ne", "des_panelconc" },
+	{ 16103, "des_ne", "des_yelrock" },
+	{ 16103, "des_ne", "Tar_venturasjoin" },
+	{ 16103, "des_ne", "venturas_fwend" },
+	{ 16103, "des_ne", "vgs_rockwall01_128" },
+	{ 16010, "des_nstuff", "des_metalwinbig" },
+	{ 16011, "des_ntown", "des_creamshopwin" },
+	{ 16011, "des_ntown", "des_ntwndoor1" },
+	{ 16011, "des_ntown", "des_ntwndoor3" },
+	{ 16011, "des_ntown", "des_ntwnskirt1" },
+	{ 16011, "des_ntown", "des_ntwnwin4" },
+	{ 11429, "des_nw", "des_grass2dirt1" },
+	{ 11429, "des_nw", "des_grass2scrub" },
+	{ 11429, "des_nw", "des_roadedge2" },
+	{ 11506, "des_nw2", "cuntroad01_law" },
+	{ 11506, "des_nw2", "des_dirt2gygrass" },
+	{ 11496, "des_nwstuff", "brdwalkwater_la" },
+	{ 11450, "des_nwtown", "des_greendoor" },
+	{ 11450, "des_nwtown", "des_greenwin" },
+	{ 11450, "des_nwtown", "des_hotelsigns" },
+	{ 11450, "des_nwtown", "des_nwmed" },
+	{ 11450, "des_nwtown", "des_nwwatower" },
+	{ 11450, "des_nwtown", "des_woodshopdoor1" },
+	{ 11450, "des_nwtown", "des_woodshopwin1" },
+	{ 11450, "des_nwtown", "gymtop1b_LAe" },
+	{ 11450, "des_nwtown", "gymtop1c_LAe" },
+	{ 11450, "des_nwtown", "gymtop1_LAe" },
+	{ 11450, "des_nwtown", "mp_cnbarbers" },
+	{ 11451, "des_nwtownpolice", "des_sheriffsign" },
+	{ 11449, "des_nwtownw", "des_loungesign" },
+	{ 11449, "des_nwtownw", "des_rosmot1" },
+	{ 16087, "des_oilfield", "des_reftower2" },
+	{ 16055, "des_quarry", "desertgravel256" },
+	{ 16055, "des_quarry", "desgrns256" },
+	{ 16055, "des_quarry", "des_quarryrd" },
+	{ 16055, "des_quarry", "des_quarryrdl" },
+	{ 16055, "des_quarry", "des_quarryrdr" },
+	{ 16055, "des_quarry", "des_rockyfill" },
+	{ 16055, "des_quarry", "lasdkcrtgr1111" },
+	{ 16055, "des_quarry", "lasdkcrtgr1ssss" },
+	{ 16071, "des_quarrybelts", "sjmlawarwall5" },
+	{ 16071, "des_quarrybelts", "sm_quarry_belt_bad" },
+	{ 16071, "des_quarrybelts", "sm_quarry_conv_belt" },
+	{ 16071, "des_quarrybelts", "sm_quarry_crusher2" },
+	{ 16071, "des_quarrybelts", "sm_quarry_handrail" },
+	{ 16076, "des_quarrybits", "redvertical_64HV" },
+	{ 16076, "des_quarrybits", "sm_crusher_rollers" },
+	{ 16076, "des_quarrybits", "sm_quarry_Rusty" },
+	{ 16328, "des_quarrycrane", "ws_cranehook" },
+	{ 11490, "des_ranch", "des_logwall" },
+	{ 11490, "des_ranch", "des_ranchwin" },
+	{ 11490, "des_ranch", "des_trellis" },
+	{ 11490, "des_ranch", "newindow11128" },
+	{ 16213, "des_s", "des_pave_trackstart" },
+	{ 16109, "des_se1", "Tar_2line128" },
+	{ 16232, "des_se2", "des_dirt2dedgrass" },
+	{ 16234, "des_se3", "grasstype5_desdirt" },
+	{ 11469, "des_steakhouse", "des_bull" },
+	{ 11469, "des_steakhouse", "des_bullheid" },
+	{ 11469, "des_steakhouse", "des_bullsign" },
+	{ 16006, "des_stownmain1", "des_roswin4" },
+	{ 16006, "des_stownmain1", "des_thwin2" },
+	{ 16005, "des_stownmain2", "des_roswin2" },
+	{ 16005, "des_stownmain2", "sw_door19" },
+	{ 16385, "des_stownmain3", "newall11-1" },
+	{ 16067, "des_stownmots1", "des_bowlingsig" },
+	{ 16067, "des_stownmots1", "des_rosigns2" },
+	{ 16067, "des_stownmots1", "kb_diner_2b" },
+	{ 16067, "des_stownmots1", "LAtranswall2" },
+	{ 16069, "des_stownstrip1", "sw_metalgate1" },
+	{ 16064, "des_stownstrip2", "kingothering" },
+	{ 16064, "des_stownstrip2", "yellowall_LA" },
+	{ 16434, "des_stwnsigns1", "des_banksign" },
+	{ 11430, "des_sw", "pav_brngrass" },
+	{ 11430, "des_sw", "Tar_1line256HVtodirt" },
+	{ 16136, "des_telescopestuff", "carparkdoor3_256" },
+	{ 16136, "des_telescopestuff", "dish_holemetal_t" },
+	{ 16136, "des_telescopestuff", "dish_panel_B" },
+	{ 16136, "des_telescopestuff", "dish_panel_c" },
+	{ 16136, "des_telescopestuff", "dish_roundbit_b" },
+	{ 16136, "des_telescopestuff", "dish_strut_t" },
+	{ 16136, "des_telescopestuff", "poshentrance2_256" },
+	{ 16136, "des_telescopestuff", "stoneclad1" },
+	{ 16136, "des_telescopestuff", "ws_palebrickwall1" },
+	{ 16023, "des_trainstuff", "metpat64shadow" },
+	{ 16023, "des_trainstuff", "railxing3" },
+	{ 16023, "des_trainstuff", "ws_stoneblock" },
+	{ 16060, "des_trees", "Newtreed256" },
+	{ 16060, "des_trees", "sm_bark_light" },
+	{ 16060, "des_trees", "veg_bevtreebase" },
+	{ 16146, "des_ufoinn", "clukpost1_LAe2" },
+	{ 16146, "des_ufoinn", "des_probesign" },
+	{ 16146, "des_ufoinn", "electricbox256" },
+	{ 11484, "des_wdam", "dam_panel" },
+	{ 11471, "des_wtownmain", "orange2" },
+	{ 3426, "des_xoilfield", "oilband_64" },
+	{ 1559, "diamond", "CJ_W_GRAD" },
+	{ 1970, "dinerseat1", "diner_seat1" },
+	{ 1970, "dinerseat1", "diner_tbl1" },
+	{ 1968, "dinerseat2", "diner_tbl2" },
+	{ 1968, "dinerseat2", "donut_seat1" },
+	{ 3595, "dingbat01_la", "bambowal1_LA" },
+	{ 3595, "dingbat01_la", "comptwall20" },
+	{ 3595, "dingbat01_la", "dingwin01_LA" },
+	{ 3595, "dingbat01_la", "dingwin02_LA" },
+	{ 3595, "dingbat01_la", "dingwin03_LA" },
+	{ 3595, "dingbat01_la", "LApinkwall1" },
+	{ 3595, "dingbat01_la", "mosaic1_LAwn" },
+	{ 13633, "dirtouter", "ahbobo_1" },
+	{ 13633, "dirtouter", "AH_heat" },
+	{ 13633, "dirtouter", "AH_homiessharp" },
+	{ 13662, "dirtrack", "AH_chevron" },
+	{ 13662, "dirtrack", "ah_ramp" },
+	{ 13662, "dirtrack", "bplasticsack" },
+	{ 13662, "dirtrack", "plasticsack" },
+	{ 13631, "dirtstad", "andymonkey" },
+	{ 1972, "display1", "kb_display1" },
+	{ 5154, "dkcargoshp_las2", "alarm_64" },
+	{ 5154, "dkcargoshp_las2", "bandingblue_64" },
+	{ 5154, "dkcargoshp_las2", "boatrailing_128" },
+	{ 5154, "dkcargoshp_las2", "boatside2_256" },
+	{ 5154, "dkcargoshp_las2", "cargodoor_128" },
+	{ 5154, "dkcargoshp_las2", "Diamondp64" },
+	{ 5154, "dkcargoshp_las2", "green_64" },
+	{ 5154, "dkcargoshp_las2", "jettyfloor02" },
+	{ 5154, "dkcargoshp_las2", "mp_cellwalla_256" },
+	{ 5154, "dkcargoshp_las2", "mp_cellwall_256" },
+	{ 5154, "dkcargoshp_las2", "wallbluetinge256" },
+	{ 12932, "dk_midbuilds", "healthcen02_256" },
+	{ 13744, "docg01alfa_lahills", "Helipad_H" },
+	{ 13744, "docg01alfa_lahills", "plaster256i" },
+	{ 13724, "docg01_lahills", "ab_tile2" },
+	{ 13724, "docg01_lahills", "Bow_sub_decortop" },
+	{ 13724, "docg01_lahills", "chr_flags_256" },
+	{ 13724, "docg01_lahills", "glassblock4_law" },
+	{ 13724, "docg01_lahills", "marbletile8b" },
+	{ 13724, "docg01_lahills", "ston10S" },
+	{ 13724, "docg01_lahills", "sw_mansionwin" },
+	{ 3621, "dockcargo1_las", "dt_ceiling1" },
+	{ 3621, "dockcargo1_las", "lasdkcrtgr1" },
+	{ 3621, "dockcargo1_las", "lasdkcrtgr11" },
+	{ 3621, "dockcargo1_las", "lasdkcrtgr111" },
+	{ 3621, "dockcargo1_las", "lasdkcrtgr1s" },
+	{ 3621, "dockcargo1_las", "lasdkcrtgr1ss" },
+	{ 3621, "dockcargo1_las", "lasdkcrtgr1sss" },
+	{ 3621, "dockcargo1_las", "meshwiny" },
+	{ 3621, "dockcargo1_las", "sanpedock1" },
+	{ 3621, "dockcargo1_las", "sanpedock2" },
+	{ 3621, "dockcargo1_las", "sjmpostback" },
+	{ 3564, "dockcargo2_las", "lastran1" },
+	{ 3564, "dockcargo2_las", "lastran2" },
+	{ 3564, "dockcargo2_las", "lastran3" },
+	{ 3564, "dockcargo2_las", "lastran4" },
+	{ 3564, "dockcargo2_las", "lastran6" },
+	{ 3564, "dockcargo2_las", "lastran7" },
+	{ 3564, "dockcargo2_las", "lastran8" },
+	{ 3564, "dockcargo2_las", "lastrk1" },
+	{ 3564, "dockcargo2_las", "lastrk1aa" },
+	{ 3564, "dockcargo2_las", "lastrk1bb" },
+	{ 3564, "dockcargo2_las", "lastrk2" },
+	{ 3564, "dockcargo2_las", "lastrk3" },
+	{ 3564, "dockcargo2_las", "lastrk5" },
+	{ 3564, "dockcargo2_las", "lastrk7" },
+	{ 3564, "dockcargo2_las", "steelgirder_64V" },
+	{ 1278, "docklight", "aascaff" },
+	{ 10852, "dockroad_sfse", "dt_bmx_grass" },
+	{ 10852, "dockroad_sfse", "sf_junction3" },
+	{ 10842, "docks2refl_sfse", "support_256" },
+	{ 10842, "docks2refl_sfse", "ws_corr_2_blu" },
+	{ 10842, "docks2refl_sfse", "ws_drydockdoors" },
+	{ 10842, "docks2refl_sfse", "ws_sub_pen_conc3" },
+	{ 10842, "docks2refl_sfse", "ws_sub_pen_conc4" },
+	{ 5108, "docks2_las2", "concroadslab_256" },
+	{ 5108, "docks2_las2", "dukbrid1_LAS" },
+	{ 5108, "docks2_las2", "LASLACMA1" },
+	{ 5108, "docks2_las2", "sjmndukwal1" },
+	{ 5108, "docks2_las2", "sjmndukwal2" },
+	{ 10769, "docks2_sfse", "ws_navystation" },
+	{ 10769, "docks2_sfse", "ws_traxonconcdirty" },
+	{ 5109, "docks_las2", "adockfn3" },
+	{ 5109, "docks_las2", "dukbridmet1_LAS" },
+	{ 5109, "docks_las2", "meetwalv1" },
+	{ 5109, "docks_las2", "sjmndukwal3" },
+	{ 14488, "dogsgym", "AH_bgmartiles" },
+	{ 14488, "dogsgym", "ah_grnplstr" },
+	{ 14488, "dogsgym", "AH_halfcourt" },
+	{ 14488, "dogsgym", "AH_stolewindow" },
+	{ 14488, "dogsgym", "ah_yelplnks" },
+	{ 1607, "dolphin", "dolphin" },
+	{ 9614, "donut_sfw", "donut1_sfw" },
+	{ 9614, "donut_sfw", "donut2_sfw" },
+	{ 9614, "donut_sfw", "donut3_sfw" },
+	{ 9614, "donut_sfw", "grass128hv_blend_" },
+	{ 9614, "donut_sfw", "tuff_nut2" },
+	{ 9614, "donut_sfw", "TUFF_nut3" },
+	{ 9614, "donut_sfw", "ws_alley2_128_dirt" },
+	{ 2221, "donut_tray", "bagel_rb" },
+	{ 2221, "donut_tray", "coffeetop_rb" },
+	{ 2221, "donut_tray", "cupside_rb" },
+	{ 2221, "donut_tray", "donut2_rb" },
+	{ 2221, "donut_tray", "donut3_rb" },
+	{ 2221, "donut_tray", "muffbot_rb" },
+	{ 2221, "donut_tray", "mufftop_rb" },
+	{ 2221, "donut_tray", "rustycoffeerap_rb" },
+	{ 2221, "donut_tray", "rustynap_rb" },
+	{ 2221, "donut_tray", "rustyside_rb" },
+	{ 4877, "downtown1_las", "ablndwall1_LAE" },
+	{ 4877, "downtown1_las", "GB_nastybar14" },
+	{ 4877, "downtown1_las", "hotdoor01_law" },
+	{ 4880, "downtown3_las", "downtshop1_LAn" },
+	{ 4880, "downtown3_las", "downtshop3_LAn" },
+	{ 4880, "downtown3_las", "gz_lawbuilda_3" },
+	{ 4880, "downtown3_las", "gz_lawbuilda_4" },
+	{ 4880, "downtown3_las", "gz_lawbuilda_5" },
+	{ 4887, "downtown_las", "decogranite_la" },
+	{ 4887, "downtown_las", "holpac02_law" },
+	{ 4887, "downtown_las", "nwdwntwn1_LAS" },
+	{ 4887, "downtown_las", "nwdwntwn2_LAS" },
+	{ 4887, "downtown_las", "nwdwntwn5_LAS" },
+	{ 4887, "downtown_las", "pershing1_LAn" },
+	{ 4887, "downtown_las", "snpdrlwar1" },
+	{ 4887, "downtown_las", "snpedwar4" },
+	{ 4887, "downtown_las", "ws_glassnbrassdoor" },
+	{ 11014, "drivingschool_sfse", "ws_turningtricks1_small" },
+	{ 13654, "drkpoly", "asandockw4" },
+	{ 14420, "dr_gsbits", "ah_corn1" },
+	{ 14420, "dr_gsbits", "mp_apt1_frame1" },
+	{ 14420, "dr_gsbits", "mp_apt1_frame2" },
+	{ 14420, "dr_gsbits", "mp_apt1_frame3" },
+	{ 14420, "dr_gsbits", "mp_apt1_frame4" },
+	{ 14420, "dr_gsbits", "mp_apt1_pic1" },
+	{ 14420, "dr_gsbits", "mp_apt1_pic2" },
+	{ 14420, "dr_gsbits", "mp_apt1_pic3" },
+	{ 14420, "dr_gsbits", "mp_apt1_pic4" },
+	{ 14420, "dr_gsbits", "mp_apt1_pic5" },
+	{ 14420, "dr_gsbits", "mp_apt1_pic6" },
+	{ 14420, "dr_gsbits", "mp_apt1_pic7" },
+	{ 14420, "dr_gsbits", "mp_apt1_pic8" },
+	{ 14420, "dr_gsbits", "mp_gs_border" },
+	{ 14420, "dr_gsbits", "mp_gs_carpet" },
+	{ 14420, "dr_gsbits", "mp_gs_libwall" },
+	{ 14420, "dr_gsbits", "mp_gs_rose" },
+	{ 14420, "dr_gsbits", "mp_shop_window" },
+	{ 14391, "dr_gsmix", "auto_tune2" },
+	{ 14391, "dr_gsmix", "chromecabinet01side_128" },
+	{ 14391, "dr_gsmix", "chromecabinet01_128" },
+	{ 14391, "dr_gsmix", "knobs01" },
+	{ 14391, "dr_gsmix", "mixingdesk01" },
+	{ 14391, "dr_gsmix", "mixingdesk02" },
+	{ 14391, "dr_gsmix", "mixingdesk03" },
+	{ 14391, "dr_gsmix", "mixingdesk05" },
+	{ 14391, "dr_gsmix", "mixingdesk07" },
+	{ 14391, "dr_gsmix", "mixingdesk09" },
+	{ 14391, "dr_gsmix", "phones_64" },
+	{ 14391, "dr_gsmix", "reel01" },
+	{ 14391, "dr_gsmix", "speaker04" },
+	{ 14391, "dr_gsmix", "speaker05" },
+	{ 14391, "dr_gsmix", "studiomonitor01" },
+	{ 14391, "dr_gsmix", "white_128" },
+	{ 14387, "dr_gsnew", "ab_Fireplace" },
+	{ 14387, "dr_gsnew", "ab_wood_pot" },
+	{ 14387, "dr_gsnew", "AH_flroortile12" },
+	{ 14387, "dr_gsnew", "cd_tex1" },
+	{ 14387, "dr_gsnew", "cd_tex2" },
+	{ 14387, "dr_gsnew", "la_flair1" },
+	{ 14387, "dr_gsnew", "mp_cloth_subwall" },
+	{ 14387, "dr_gsnew", "mp_flowerbush" },
+	{ 14387, "dr_gsnew", "mp_gs_border1" },
+	{ 14387, "dr_gsnew", "mp_gs_flowerwall" },
+	{ 14387, "dr_gsnew", "mp_gs_kitchfloor" },
+	{ 14387, "dr_gsnew", "mp_gs_kitchwall" },
+	{ 14387, "dr_gsnew", "mp_gs_mud" },
+	{ 14387, "dr_gsnew", "mp_gs_pooltiles" },
+	{ 14387, "dr_gsnew", "mp_gs_wall" },
+	{ 14387, "dr_gsnew", "mp_gs_wall1" },
+	{ 14387, "dr_gsnew", "mp_gs_wood" },
+	{ 14387, "dr_gsnew", "mp_marble" },
+	{ 14387, "dr_gsnew", "mp_stonefloor" },
+	{ 14392, "dr_gsstudio", "amp01" },
+	{ 14392, "dr_gsstudio", "amp02" },
+	{ 14392, "dr_gsstudio", "amp03" },
+	{ 14392, "dr_gsstudio", "amp04" },
+	{ 14392, "dr_gsstudio", "amp05" },
+	{ 14392, "dr_gsstudio", "bcwarlock_256" },
+	{ 14392, "dr_gsstudio", "cymbal_128" },
+	{ 14392, "dr_gsstudio", "drmstnd1_256" },
+	{ 14392, "dr_gsstudio", "drumsideblue128" },
+	{ 14392, "dr_gsstudio", "flyingv_256" },
+	{ 14392, "dr_gsstudio", "golddisc_128" },
+	{ 14392, "dr_gsstudio", "la_flair2" },
+	{ 14392, "dr_gsstudio", "lesbass2_128" },
+	{ 14392, "dr_gsstudio", "monitors_128" },
+	{ 14392, "dr_gsstudio", "rec_mix2" },
+	{ 14392, "dr_gsstudio", "rec_mix5" },
+	{ 14392, "dr_gsstudio", "rec_mix5b" },
+	{ 14392, "dr_gsstudio", "rec_mix5c" },
+	{ 14392, "dr_gsstudio", "speaker07" },
+	{ 14392, "dr_gsstudio", "stagemic_128" },
+	{ 14392, "dr_gsstudio", "studiopanel02" },
+	{ 14392, "dr_gsstudio", "woodcabinet01_128" },
+	{ 2727, "ds_sign", "CJ_DS_light" },
+	{ 4682, "dtbuil1_lan2", "arsebottom" },
+	{ 4682, "dtbuil1_lan2", "barbershop_256" },
+	{ 4682, "dtbuil1_lan2", "coinlaundry1_256" },
+	{ 4682, "dtbuil1_lan2", "greenshop256hi" },
+	{ 4682, "dtbuil1_lan2", "greenshoptop1_256" },
+	{ 4682, "dtbuil1_lan2", "grocer1_kb256" },
+	{ 4682, "dtbuil1_lan2", "jewel03_128" },
+	{ 4682, "dtbuil1_lan2", "jewlers1_256" },
+	{ 4682, "dtbuil1_lan2", "LAInside_Tracksign1" },
+	{ 4682, "dtbuil1_lan2", "LAInside_Tracksign2" },
+	{ 4682, "dtbuil1_lan2", "lascourtsc2" },
+	{ 4682, "dtbuil1_lan2", "laspedhus2" },
+	{ 4682, "dtbuil1_lan2", "laspedhus3" },
+	{ 4682, "dtbuil1_lan2", "laspedhus7" },
+	{ 4682, "dtbuil1_lan2", "sl_shopwall1" },
+	{ 1942, "dum1", "weight4" },
+	{ 1654, "dynamite", "blueflt64" },
+	{ 1654, "dynamite", "clock64" },
+	{ 1654, "dynamite", "redcan" },
+	{ 1217, "dynbarrels", "hotcoals_64HV" },
+	{ 1217, "dynbarrels", "redallu" },
+	{ 1227, "dynbuket", "Metal4_256" },
+	{ 1237, "dyncones", "Cone02_64" },
+	{ 1211, "dynhydrent", "firehydrant_yell" },
+	{ 1208, "dynjunk", "junk_tv2" },
+	{ 1208, "dynjunk", "junk_washer1" },
+	{ 1293, "dynnewstnd2", "news_128" },
+	{ 2925, "dyno_box", "dyno_crate" },
+	{ 1216, "dynphn", "phoneboxmiami" },
+	{ 1258, "dynpostbx", "mailbox2_64" },
+	{ 1258, "dynpostbx", "postbox" },
+	{ 1258, "dynpostbx", "white64" },
+	{ 1236, "dynrecycle", "bincover_64HV" },
+	{ 1236, "dynrecycle", "recycle01_64" },
+	{ 1315, "dyntraffic", "Alumox64e" },
+	{ 1315, "dyntraffic", "trafficlight_64" },
+	{ 1575, "dyn_drugs", "drugs1" },
+	{ 1575, "dyn_drugs", "drugs2" },
+	{ 1575, "dyn_drugs", "drugs3" },
+	{ 1575, "dyn_drugs", "drugs4" },
+	{ 1575, "dyn_drugs", "drugs5" },
+	{ 1575, "dyn_drugs", "drugs6" },
+	{ 1508, "dyn_garage", "CJ_metalDOOR1" },
+	{ 1581, "dyn_keycard", "keycard" },
+	{ 1488, "dyn_objects", "CJ_bottle3" },
+	{ 1574, "dyn_trash", "binend" },
+	{ 1574, "dyn_trash", "trash" },
+	{ 1552, "dyn_vegas", "vgnfence1_256" },
+	{ 17550, "eastbeach09_lae2", "Sprunksign1_LAe2" },
+	{ 17550, "eastbeach09_lae2", "sprunkwall1_LAe2" },
+	{ 17550, "eastbeach09_lae2", "sprunkwall2_LAe2" },
+	{ 17550, "eastbeach09_lae2", "sprunkwall3_LAe2" },
+	{ 17550, "eastbeach09_lae2", "sprunkwall4_LAe2" },
+	{ 17541, "eastbeach2a_lae2", "airportwind02" },
+	{ 17541, "eastbeach2a_lae2", "craproad5_LAe" },
+	{ 17541, "eastbeach2a_lae2", "downtwin17" },
+	{ 17541, "eastbeach2a_lae2", "gangshop5_LAe" },
+	{ 17541, "eastbeach2a_lae2", "gangsign1_LAe" },
+	{ 17541, "eastbeach2a_lae2", "hedge1" },
+	{ 17541, "eastbeach2a_lae2", "lights_64HV" },
+	{ 17541, "eastbeach2a_lae2", "sfe_nicearch6" },
+	{ 17541, "eastbeach2a_lae2", "towaway" },
+	{ 17555, "eastbeach3c_lae2", "compfence3_LAe" },
+	{ 17555, "eastbeach3c_lae2", "compnews3lae" },
+	{ 17555, "eastbeach3c_lae2", "decobuild2d_LAn" },
+	{ 17555, "eastbeach3c_lae2", "deisel_2sfs" },
+	{ 17555, "eastbeach3c_lae2", "eastwall1_LAe2" },
+	{ 17555, "eastbeach3c_lae2", "gradient128" },
+	{ 17555, "eastbeach3c_lae2", "LASLACMA992" },
+	{ 17555, "eastbeach3c_lae2", "lastat1" },
+	{ 17555, "eastbeach3c_lae2", "metpull_law" },
+	{ 17555, "eastbeach3c_lae2", "vgs_shpfrnt03_128" },
+	{ 17555, "eastbeach3c_lae2", "yelowmankypatio_lae2" },
+	{ 17555, "eastbeach3c_lae2", "yelowmankywall_lae2" },
+	{ 17555, "eastbeach3c_lae2", "yelowmankywin_lae2" },
+	{ 17547, "eastbeach4a_lae2", "aptsforrent_lae2" },
+	{ 17547, "eastbeach4a_lae2", "bluestucco1" },
+	{ 17547, "eastbeach4a_lae2", "dryhedge_128" },
+	{ 17547, "eastbeach4a_lae2", "greywallb256" },
+	{ 17547, "eastbeach4a_lae2", "LAdtbuilding3" },
+	{ 17547, "eastbeach4a_lae2", "LAdtbuilding5" },
+	{ 17547, "eastbeach4a_lae2", "lastaco6" },
+	{ 17547, "eastbeach4a_lae2", "ltgreenwallc1" },
+	{ 17547, "eastbeach4a_lae2", "policeha02_128" },
+	{ 17547, "eastbeach4a_lae2", "sand256" },
+	{ 17547, "eastbeach4a_lae2", "snpedwen2" },
+	{ 17533, "eastbeach7_lae2", "apartmentwin2blank_256" },
+	{ 17533, "eastbeach7_lae2", "apartmentwin2_256" },
+	{ 17533, "eastbeach7_lae2", "apartmentwin3_256" },
+	{ 17533, "eastbeach7_lae2", "bluewin1" },
+	{ 17533, "eastbeach7_lae2", "shopwindowlow2_256" },
+	{ 17549, "eastbeach8_lae2", "beachshop1_LAe2" },
+	{ 17549, "eastbeach8_lae2", "beachshop2_LAe2" },
+	{ 17549, "eastbeach8_lae2", "beachsigns1_LAe2" },
+	{ 13710, "easthills_lahills", "sjmoran4" },
+	{ 17542, "eastls1b_lae2", "bricksign1_LAe" },
+	{ 17542, "eastls1b_lae2", "comptwall25" },
+	{ 17542, "eastls1b_lae2", "comptwall3" },
+	{ 17542, "eastls1b_lae2", "gangshop3_LAe" },
+	{ 17542, "eastls1b_lae2", "gangshop4_LAe" },
+	{ 17542, "eastls1b_lae2", "gangshop7_LAe" },
+	{ 17542, "eastls1b_lae2", "gangshTop1_LAe" },
+	{ 17542, "eastls1b_lae2", "papershop_law" },
+	{ 17542, "eastls1b_lae2", "tanstucco1_LA" },
+	{ 17542, "eastls1b_lae2", "vendr01_law" },
+	{ 17526, "eastls1_lae2", "alleywall1" },
+	{ 17526, "eastls1_lae2", "alleywall4" },
+	{ 17526, "eastls1_lae2", "alleywall5" },
+	{ 17526, "eastls1_lae2", "comptsign1_LAe" },
+	{ 17526, "eastls1_lae2", "comptsign2_LAe" },
+	{ 17526, "eastls1_lae2", "comptsign3_LAe" },
+	{ 17526, "eastls1_lae2", "gangshop6_LAe" },
+	{ 17526, "eastls1_lae2", "sanpshop3" },
+	{ 17526, "eastls1_lae2", "spanshop2_LAe" },
+	{ 17526, "eastls1_lae2", "swapmall1" },
+	{ 17552, "eastls3_lae2", "motel_wall1" },
+	{ 17552, "eastls3_lae2", "venwins01_law" },
+	{ 17537, "eastls4_lae2", "alley256" },
+	{ 17537, "eastls4_lae2", "autosign_lae2" },
+	{ 17537, "eastls4_lae2", "backalley3_LAe" },
+	{ 17537, "eastls4_lae2", "carwash_sign2" },
+	{ 17537, "eastls4_lae2", "cinboard_law" },
+	{ 17537, "eastls4_lae2", "clothes2_256" },
+	{ 17537, "eastls4_lae2", "compcourtrail2" },
+	{ 17537, "eastls4_lae2", "compdoor6_LAe" },
+	{ 17537, "eastls4_lae2", "comptwall13Bot" },
+	{ 17537, "eastls4_lae2", "cwashbboard" },
+	{ 17537, "eastls4_lae2", "ja_marketsgnlae2" },
+	{ 17537, "eastls4_lae2", "marksgn_lae2" },
+	{ 17537, "eastls4_lae2", "momapapa" },
+	{ 17537, "eastls4_lae2", "mural04_LA" },
+	{ 17537, "eastls4_lae2", "sjmhicut2las" },
+	{ 17537, "eastls4_lae2", "spanishwin1_LAe" },
+	{ 17537, "eastls4_lae2", "stripsign_lae2" },
+	{ 17537, "eastls4_lae2", "sun_plasterwall" },
+	{ 17537, "eastls4_lae2", "venblock01c" },
+	{ 17848, "eastlstr2_lae2", "antenna1" },
+	{ 17848, "eastlstr2_lae2", "deadpalm01" },
+	{ 17848, "eastlstr2_lae2", "dead_agave" },
+	{ 17848, "eastlstr2_lae2", "dead_fuzzy" },
+	{ 17504, "eastlstr_lae2", "brokesign1" },
+	{ 17504, "eastlstr_lae2", "compfence4_LAe" },
+	{ 17504, "eastlstr_lae2", "comptfurnitsign1" },
+	{ 17504, "eastlstr_lae2", "comptfurnitsign2" },
+	{ 17504, "eastlstr_lae2", "comptfurnitsign3" },
+	{ 17504, "eastlstr_lae2", "mural07_LA" },
+	{ 17504, "eastlstr_lae2", "scrapmet1_LAe" },
+	{ 5392, "eastshops1_lae", "blueshop2_LAe" },
+	{ 5392, "eastshops1_lae", "gardenshop1LAe" },
+	{ 5392, "eastshops1_lae", "glasprinshop1LAe" },
+	{ 5392, "eastshops1_lae", "petbarshop1LAe" },
+	{ 5392, "eastshops1_lae", "roof12L" },
+	{ 5392, "eastshops1_lae", "shopdoors1_LAe" },
+	{ 5392, "eastshops1_lae", "woodwaresign1" },
+	{ 17553, "ebeachcineblok", "3winstone_law" },
+	{ 17553, "ebeachcineblok", "downtwin21" },
+	{ 17553, "ebeachcineblok", "forlease_lae2" },
+	{ 17553, "ebeachcineblok", "ja_santosinvsgn_lae2" },
+	{ 17553, "ebeachcineblok", "pizzatop_128" },
+	{ 969, "electricgate", "airport1_64" },
+	{ 969, "electricgate", "airport2_64" },
+	{ 969, "electricgate", "banding6_64HV" },
+	{ 969, "electricgate", "binwheel64" },
+	{ 969, "electricgate", "KeepOut_64" },
+	{ 969, "electricgate", "notice01" },
+	{ 3272, "ele_substation", "cabin2" },
+	{ 3272, "ele_substation", "des_substa_bit1" },
+	{ 3272, "ele_substation", "des_substa_bit2" },
+	{ 3272, "ele_substation", "lasjmpow1" },
+	{ 3272, "ele_substation", "lasjmpow2" },
+	{ 3272, "ele_substation", "lasjmpow6" },
+	{ 3272, "ele_substation", "lasjmpow8" },
+	{ 3272, "ele_substation", "lasjmpow92" },
+	{ 14530, "estate2", "ab_dsWhiteboard" },
+	{ 14530, "estate2", "ab_SFmap" },
+	{ 14530, "estate2", "Auto_feltzer" },
+	{ 14530, "estate2", "Auto_hustler" },
+	{ 14530, "estate2", "Auto_monstera" },
+	{ 14530, "estate2", "Auto_Slamvan2" },
+	{ 14530, "estate2", "Auto_windsor" },
+	{ 14530, "estate2", "firextingtemp" },
+	{ 14530, "estate2", "man_parquet" },
+	{ 14530, "estate2", "mp_bobbie_carpet" },
+	{ 1963, "estateprops", "blu_cyl_32" },
+	{ 1963, "estateprops", "bnk_ppr_64" },
+	{ 1963, "estateprops", "bnk_shdo3a" },
+	{ 1963, "estateprops", "grn_cyl_32" },
+	{ 1963, "estateprops", "red_cyl_32" },
+	{ 8498, "excalibur", "excalibur01" },
+	{ 8498, "excalibur", "excalibur02_64" },
+	{ 8498, "excalibur", "excalibur03_64" },
+	{ 8498, "excalibur", "excalibur04_64" },
+	{ 8498, "excalibur", "excalibur05_64" },
+	{ 8498, "excalibur", "excalibur06" },
+	{ 8498, "excalibur", "excalibur07_64" },
+	{ 8498, "excalibur", "excalibur08_64" },
+	{ 8498, "excalibur", "excaliburledge01" },
+	{ 8498, "excalibur", "excaliburwall01_128" },
+	{ 8498, "excalibur", "excaliburwall02_128" },
+	{ 8498, "excalibur", "excaliburwall03_128" },
+	{ 8498, "excalibur", "excaliburwall04_64" },
+	{ 8498, "excalibur", "excaliburwall05_128" },
+	{ 8498, "excalibur", "excaliburwall06_64" },
+	{ 8498, "excalibur", "excaliburwall07" },
+	{ 8498, "excalibur", "excaliburwall08" },
+	{ 8498, "excalibur", "excaliburwall09" },
+	{ 8498, "excalibur", "excaliburwndw01_128" },
+	{ 8498, "excalibur", "vegaspavement2_256" },
+	{ 8498, "excalibur", "vegasroad1_256" },
+	{ 8620, "excalibursign", "excalibursign01_64" },
+	{ 8620, "excalibursign", "excalibursign02" },
+	{ 8620, "excalibursign", "excaliburwall10_128" },
+	{ 8620, "excalibursign", "exclbrsword" },
+	{ 8620, "excalibursign", "imperial05_128" },
+	{ 8620, "excalibursign", "vgsclubwall05_128" },
+	{ 3525, "excaliburtorch", "northwood3_128" },
+	{ 3525, "excaliburtorch", "sw_cabinwall01" },
+	{ 3525, "excaliburtorch", "tislndshpillar01_128" },
+	{ 8515, "exclibrland", "Bow_grass_gryard" },
+	{ 2600, "external", "CJ_LAMPPOST3" },
+	{ 2600, "external", "CJ_LAMPPOST4" },
+	{ 2600, "external", "CJ_LENS" },
+	{ 918, "externalext", "CJ_OIL_DRUM" },
+	{ 1495, "ext_doors2", "CJ_SCOR_DOOR" },
+	{ 1495, "ext_doors2", "CJ_WOODDOOR4" },
+	{ 1495, "ext_doors2", "flat_door01" },
+	{ 1498, "ext_doors_old", "CJ_DOOR6" },
+	{ 12814, "factorycunte", "dirtgrn128" },
+	{ 12814, "factorycunte", "hi_nopark1_256128" },
+	{ 12814, "factorycunte", "inddoor1" },
+	{ 12814, "factorycunte", "newall3_16c128" },
+	{ 17001, "factorycuntw", "frate_doors64128" },
+	{ 17001, "factorycuntw", "ladder64" },
+	{ 11244, "factorynewsfse", "ws_oldwarehouse10" },
+	{ 10775, "factory_sfse", "ws_oldwarehouse8" },
+	{ 10775, "factory_sfse", "ws_solarin" },
+	{ 1657, "fanani", "man_clnfn_blde" },
+	{ 1657, "fanani", "man_sdrm_cfanbdy" },
+	{ 17005, "farmhouse", "examwind1_LAe" },
+	{ 17005, "farmhouse", "gz_vic3d" },
+	{ 17005, "farmhouse", "sjmbigold2" },
+	{ 17005, "farmhouse", "sjmbigold6" },
+	{ 17005, "farmhouse", "ws_cheapodoor2" },
+	{ 3425, "farmstuff", "gs_wind2" },
+	{ 8547, "fctrygrnd01", "vgsclubpllr01_64" },
+	{ 10610, "fedmint_sfs", "ws_fedmint" },
+	{ 10610, "fedmint_sfs", "ws_fed_mint_win1" },
+	{ 10610, "fedmint_sfs", "ws_fed_mint_win2" },
+	{ 10610, "fedmint_sfs", "ws_rollerdoor_blue" },
+	{ 10610, "fedmint_sfs", "ws_security_door" },
+	{ 970, "fences", "NoParking_64" },
+	{ 970, "fences", "slab256" },
+	{ 970, "fences", "wirefence" },
+	{ 9901, "ferry_building", "ferry_build1" },
+	{ 9901, "ferry_building", "ferry_build10" },
+	{ 9901, "ferry_building", "ferry_build11" },
+	{ 9901, "ferry_building", "ferry_build12" },
+	{ 9901, "ferry_building", "ferry_build13" },
+	{ 9901, "ferry_building", "ferry_build2" },
+	{ 9901, "ferry_building", "ferry_build3" },
+	{ 9901, "ferry_building", "ferry_build5" },
+	{ 9901, "ferry_building", "ferry_build6" },
+	{ 9901, "ferry_building", "ferry_build76" },
+	{ 9901, "ferry_building", "ferry_build8" },
+	{ 9901, "ferry_building", "ferry_build9" },
+	{ 9901, "ferry_building", "skylight_windows" },
+	{ 4020, "fighot", "lasbevcit99xxx" },
+	{ 4020, "fighot", "Parking2_LAe2" },
+	{ 4020, "fighot", "sl_lavicdtcnr" },
+	{ 4020, "fighot", "sl_lavicdtdecor1" },
+	{ 4020, "fighot", "sl_lavicdtwin" },
+	{ 4020, "fighot", "sl_lavicdtwin2" },
+	{ 4020, "fighot", "sl_lavicdtwin3" },
+	{ 5705, "filmstud", "golf_heavygrass" },
+	{ 5705, "filmstud", "venicewin02" },
+	{ 5705, "filmstud", "venwall_la" },
+	{ 5705, "filmstud", "Victim_bboard" },
+	{ 11008, "firehouse_sfse", "halldoor01_law" },
+	{ 11008, "firehouse_sfse", "SFPD" },
+	{ 11008, "firehouse_sfse", "SFSE_WRHSE_WNDW" },
+	{ 11008, "firehouse_sfse", "ws_usflagcrumpled" },
+	{ 2961, "fire_brx", "fire_break" },
+	{ 1599, "fish1", "fish2" },
+	{ 1600, "fish2", "fish3" },
+	{ 1601, "fish3", "fish1" },
+	{ 9910, "fishwarf", "gz_vic3b" },
+	{ 9910, "fishwarf", "michelle_car4" },
+	{ 9910, "fishwarf", "rooftop_gz2" },
+	{ 9910, "fishwarf", "sfe_nicearch5" },
+	{ 9910, "fishwarf", "sf_backaley3" },
+	{ 9910, "fishwarf", "sf_windos_10wall" },
+	{ 9910, "fishwarf", "sw_realty" },
+	{ 8488, "flamingo1", "casinolights4_128" },
+	{ 8488, "flamingo1", "flmngo01_256" },
+	{ 8488, "flamingo1", "flmngo04_256" },
+	{ 8488, "flamingo1", "flmngo05_256" },
+	{ 8488, "flamingo1", "flmngo06_128" },
+	{ 8488, "flamingo1", "flmngo07_128" },
+	{ 8488, "flamingo1", "flmngo08" },
+	{ 8488, "flamingo1", "flmngo09" },
+	{ 8488, "flamingo1", "flmngo10_128" },
+	{ 8488, "flamingo1", "flmngoledge" },
+	{ 8844, "flmngoland", "la_tilered" },
+	{ 8844, "flmngoland", "newhedgea" },
+	{ 8844, "flmngoland", "vgschurchwall05_128" },
+	{ 1340, "foodkarts", "cardbrdplain64" },
+	{ 1340, "foodkarts", "chillidog_sign" },
+	{ 1340, "foodkarts", "dogcart01" },
+	{ 1340, "foodkarts", "dogcart02" },
+	{ 1340, "foodkarts", "dogcart03" },
+	{ 1340, "foodkarts", "dogcart04" },
+	{ 1340, "foodkarts", "dogcart05" },
+	{ 1340, "foodkarts", "dogcart06" },
+	{ 1340, "foodkarts", "gashob" },
+	{ 1340, "foodkarts", "iceyside" },
+	{ 1340, "foodkarts", "iceysign" },
+	{ 1340, "foodkarts", "noodbox" },
+	{ 1340, "foodkarts", "noodcart" },
+	{ 1340, "foodkarts", "noodex" },
+	{ 1340, "foodkarts", "noodex2" },
+	{ 1340, "foodkarts", "noodles_32" },
+	{ 5762, "foodlawn", "foodmartla2" },
+	{ 9582, "fort_sfw", "club_roofwin_sfw" },
+	{ 9582, "fort_sfw", "fortclub_1" },
+	{ 9582, "fort_sfw", "fortclub_10" },
+	{ 9582, "fort_sfw", "fortclub_11" },
+	{ 9582, "fort_sfw", "fortclub_2" },
+	{ 9582, "fort_sfw", "fortclub_5" },
+	{ 9582, "fort_sfw", "fortclub_6" },
+	{ 9582, "fort_sfw", "fortclub_7" },
+	{ 9582, "fort_sfw", "fortclub_8" },
+	{ 9582, "fort_sfw", "fortclub_9" },
+	{ 9582, "fort_sfw", "fortclub_extrabits" },
+	{ 9582, "fort_sfw", "mallfloor2" },
+	{ 11413, "fosterflowers", "starflower1" },
+	{ 11413, "fosterflowers", "starflower3" },
+	{ 10940, "fosterroads_sfse", "ws_freeway3" },
+	{ 9833, "fountain_sfw", "fountain_sfw" },
+	{ 10489, "freeway2_sfs", "ws_freeway2" },
+	{ 10489, "freeway2_sfs", "ws_freeway3blend" },
+	{ 11135, "freeways2_sfse", "dt_road2grasstype4" },
+	{ 10857, "freeways3_sfse", "ws_bridgepavement" },
+	{ 10857, "freeways3_sfse", "ws_freeway1" },
+	{ 4809, "freeway_las", "metal_stair_64H" },
+	{ 4809, "freeway_las", "obhilltex1" },
+	{ 4809, "freeway_las", "pavemiddirt_law" },
+	{ 4809, "freeway_las", "whitetile_plain_hi" },
+	{ 2963, "freezrx", "freeze_door" },
+	{ 3474, "freightcrane", "bluecab1_256" },
+	{ 3474, "freightcrane", "bluecab2_256" },
+	{ 3474, "freightcrane", "bluecab3_256" },
+	{ 3474, "freightcrane", "bluecab4_256" },
+	{ 3474, "freightcrane", "junk_tyre" },
+	{ 3474, "freightcrane", "metalwheel1_256" },
+	{ 3474, "freightcrane", "oldpaintyelend_256" },
+	{ 3474, "freightcrane", "yellowcabchev_256" },
+	{ 10230, "freight_sfe", "freighterhull3" },
+	{ 10230, "freight_sfe", "freighterhull4" },
+	{ 10230, "freight_sfe", "tyre_ship_sfe" },
+	{ 10140, "frieghter2sfe", "sfMAST2" },
+	{ 10140, "frieghter2sfe", "sf_shipbulklight" },
+	{ 10140, "frieghter2sfe", "sf_ship_ceiling" },
+	{ 10140, "frieghter2sfe", "sf_ship_generic17" },
+	{ 10140, "frieghter2sfe", "sf_ship_generic26" },
+	{ 10140, "frieghter2sfe", "sf_ship_generic6" },
+	{ 10140, "frieghter2sfe", "sf_ship_gratet" },
+	{ 10140, "frieghter2sfe", "sf_ship_interior" },
+	{ 10140, "frieghter2sfe", "sf_ship_pipes" },
+	{ 10140, "frieghter2sfe", "sf_ship_steps" },
+	{ 17503, "furniture_lae2", "ammu_airvent" },
+	{ 17503, "furniture_lae2", "brckwht128" },
+	{ 17503, "furniture_lae2", "clukmenu1_LAe2" },
+	{ 17503, "furniture_lae2", "comptwall19" },
+	{ 17503, "furniture_lae2", "craproad6_LAe" },
+	{ 17503, "furniture_lae2", "furndetail1_LAe" },
+	{ 17503, "furniture_lae2", "inwindow4" },
+	{ 17503, "furniture_lae2", "LAmexfood1" },
+	{ 17503, "furniture_lae2", "strpclb4_LAe" },
+	{ 17503, "furniture_lae2", "totem64" },
+	{ 1824, "gamingtble", "craps-layout" },
+	{ 1824, "gamingtble", "crapside_128" },
+	{ 17700, "gangblok1_lae2", "GB_doorpur01" },
+	{ 17700, "gangblok1_lae2", "gz_vic3c" },
+	{ 17700, "gangblok1_lae2", "mural01_LA" },
+	{ 17700, "gangblok1_lae2", "pigpen1_LAe" },
+	{ 17700, "gangblok1_lae2", "sanpshop4z" },
+	{ 17700, "gangblok1_lae2", "strpclb1_LAe" },
+	{ 17700, "gangblok1_lae2", "strpclb2_LAe" },
+	{ 17700, "gangblok1_lae2", "strpclb3_LAe" },
+	{ 17700, "gangblok1_lae2", "tacostand1_LAe" },
+	{ 17700, "gangblok1_lae2", "warehouse2" },
+	{ 14443, "ganghoos", "ab_wall3" },
+	{ 14443, "ganghoos", "ab_wallPanel" },
+	{ 14443, "ganghoos", "ah_BADCEIL" },
+	{ 14443, "ganghoos", "AH_bathwalls" },
+	{ 14443, "ganghoos", "ah_CRAKPLNK" },
+	{ 14443, "ganghoos", "ah_curtains1" },
+	{ 14443, "ganghoos", "AH_filthtiles" },
+	{ 14443, "ganghoos", "AH_filthtiles2" },
+	{ 14443, "ganghoos", "ah_FLKWIN" },
+	{ 14443, "ganghoos", "ah_mikebindsarse" },
+	{ 14443, "ganghoos", "AH_oldwdpan" },
+	{ 14443, "ganghoos", "AH_pelmet" },
+	{ 14443, "ganghoos", "AH_walltile3" },
+	{ 14443, "ganghoos", "ah_yelbadwall" },
+	{ 14443, "ganghoos", "motel_bathfloor" },
+	{ 14443, "ganghoos", "mp_burn_carpet" },
+	{ 14443, "ganghoos", "mp_burn_carpet1" },
+	{ 14443, "ganghoos", "mp_burn_carpet2" },
+	{ 14443, "ganghoos", "mp_burn_carpet3" },
+	{ 14443, "ganghoos", "mp_burn_wall3" },
+	{ 3646, "ganghouse1_lax", "aanewd" },
+	{ 3646, "ganghouse1_lax", "comptroof4" },
+	{ 3646, "ganghouse1_lax", "comptwall14" },
+	{ 3646, "ganghouse1_lax", "comptwall7" },
+	{ 3646, "ganghouse1_lax", "grille1_LA" },
+	{ 3646, "ganghouse1_lax", "snpdhus2" },
+	{ 17515, "ganton01_lae2", "comptsign7_LAe" },
+	{ 17515, "ganton01_lae2", "yelloplaster1" },
+	{ 17577, "ganton02_lae2", "century02_LA" },
+	{ 17577, "ganton02_lae2", "greenbot1_LAe2" },
+	{ 17577, "ganton02_lae2", "greenbot2_LAe2" },
+	{ 5774, "garag3_lawn", "bigblue3" },
+	{ 5774, "garag3_lawn", "orngpartwall1_256" },
+	{ 5774, "garag3_lawn", "sprysig1" },
+	{ 9625, "garage_sfw", "garage1b_sfw" },
+	{ 9625, "garage_sfw", "garage2b_sfw" },
+	{ 9625, "garage_sfw", "garage3b_sfw" },
+	{ 9625, "garage_sfw", "garage_win_sfw" },
+	{ 9625, "garage_sfw", "toll_SFw4" },
+	{ 10629, "gardencentre_sfs", "ws_uphill" },
+	{ 1672, "gasgren", "gun_teargas_2" },
+	{ 985, "gategen", "trespasign1_256" },
+	{ 10713, "gayclub_sfs", "CJ_GEN_GLASS2" },
+	{ 10713, "gayclub_sfs", "CJ_PIZZA_DOOR" },
+	{ 10713, "gayclub_sfs", "ws_gaydar" },
+	{ 10713, "gayclub_sfs", "ws_plasterwall1" },
+	{ 3853, "gay_xref", "metatelepole1" },
+	{ 3853, "gay_xref", "teleconect2" },
+	{ 3853, "gay_xref", "ws_gayflag1" },
+	{ 3853, "gay_xref", "ws_gayflag2" },
+	{ 6102, "gazlaw1", "Bow_bar_entrance_door" },
+	{ 6102, "gazlaw1", "lawshop2" },
+	{ 6102, "gazlaw1", "lawshop3" },
+	{ 6102, "gazlaw1", "lawshopwall1" },
+	{ 6102, "gazlaw1", "lawshopwall1b" },
+	{ 6102, "gazlaw1", "lawshopwall2" },
+	{ 6102, "gazlaw1", "lawshopwall2b" },
+	{ 6102, "gazlaw1", "lawshopwall3" },
+	{ 6102, "gazlaw1", "lawshopwall3b" },
+	{ 6102, "gazlaw1", "lawshopwall4b" },
+	{ 6102, "gazlaw1", "lawshopwall4c" },
+	{ 6102, "gazlaw1", "law_gazgrn1" },
+	{ 6102, "gazlaw1", "law_gazgrn4" },
+	{ 6102, "gazlaw1", "law_gazgrn7" },
+	{ 6102, "gazlaw1", "law_gazwhite1" },
+	{ 6102, "gazlaw1", "law_gazwhite2" },
+	{ 6102, "gazlaw1", "law_gazwhite4" },
+	{ 6102, "gazlaw1", "law_gazwhite5" },
+	{ 6102, "gazlaw1", "law_gazwhitefloor" },
+	{ 6102, "gazlaw1", "law_gazwhitestep" },
+	{ 6102, "gazlaw1", "pawn_door01" },
+	{ 6104, "gazlaw2", "gm_labuld4_a" },
+	{ 6104, "gazlaw2", "gm_labuld4_b" },
+	{ 6104, "gazlaw2", "gm_labuld4_d" },
+	{ 6104, "gazlaw2", "gm_labuld4_e" },
+	{ 6104, "gazlaw2", "gm_labuld4_f" },
+	{ 6104, "gazlaw2", "lawshop1" },
+	{ 6104, "gazlaw2", "law_gazbrn1" },
+	{ 6104, "gazlaw2", "sw_storewin05" },
+	{ 6104, "gazlaw2", "sw_wind19" },
+	{ 6157, "gazlaw3", "churchdoor1_LAn" },
+	{ 6157, "gazlaw3", "lawbanding1" },
+	{ 6157, "gazlaw3", "law_archthing1" },
+	{ 6157, "gazlaw3", "law_archthing2" },
+	{ 6157, "gazlaw3", "law_archthing3" },
+	{ 6157, "gazlaw3", "law_archthing4" },
+	{ 6157, "gazlaw3", "law_archthing5" },
+	{ 6157, "gazlaw3", "law_archthing6" },
+	{ 6157, "gazlaw3", "law_archthing7" },
+	{ 6157, "gazlaw3", "mono3_sfe" },
+	{ 6157, "gazlaw3", "mono4_sfe" },
+	{ 6157, "gazlaw3", "pier69_planter" },
+	{ 6157, "gazlaw3", "sfe_bigbuild3" },
+	{ 6157, "gazlaw3", "swintops01c_law" },
+	{ 6157, "gazlaw3", "swintops01d_law" },
+	{ 6157, "gazlaw3", "swintops01_law" },
+	{ 9300, "gazsfn1", "fillerbase01_law" },
+	{ 9300, "gazsfn1", "fillerbase02_law" },
+	{ 9300, "gazsfn1", "fillerbase_law" },
+	{ 9300, "gazsfn1", "fillerdoor_law" },
+	{ 9300, "gazsfn1", "law_gazcoast1" },
+	{ 9300, "gazsfn1", "law_gazcoast2" },
+	{ 9301, "gazsfn2", "Bow_Smear_Cement" },
+	{ 9301, "gazsfn2", "law_gazgrn2" },
+	{ 9278, "gazsfnlite", "cst_bollard_sfw" },
+	{ 9278, "gazsfnlite", "fusebox1_128" },
+	{ 9278, "gazsfnlite", "sfxref_flagpole" },
+	{ 9278, "gazsfnlite", "sfxref_lite2c" },
+	{ 2817, "gb_bedrmrugs01", "GB_livingrug03" },
+	{ 2817, "gb_bedrmrugs01", "GB_rugbedroom01" },
+	{ 2817, "gb_bedrmrugs01", "GB_rugbedroom02" },
+	{ 2817, "gb_bedrmrugs01", "GB_rugbedroom03" },
+	{ 2819, "gb_bedroomclths01", "GB_clothesbed01" },
+	{ 2819, "gb_bedroomclths01", "GB_clothesbed02" },
+	{ 2819, "gb_bedroomclths01", "GB_clothesbed03" },
+	{ 2819, "gb_bedroomclths01", "GB_clothesbed04" },
+	{ 2819, "gb_bedroomclths01", "GB_clothesbed05" },
+	{ 2813, "gb_books01", "GB_magazine02" },
+	{ 2813, "gb_books01", "GB_magazine05" },
+	{ 2813, "gb_books01", "GB_magazine06" },
+	{ 2813, "gb_books01", "GB_novels01" },
+	{ 2813, "gb_books01", "GB_novels02" },
+	{ 2813, "gb_books01", "GB_novels03" },
+	{ 2813, "gb_books01", "GB_novels04" },
+	{ 2813, "gb_books01", "GB_novels05" },
+	{ 2813, "gb_books01", "GB_novels07" },
+	{ 2813, "gb_books01", "GB_novels08" },
+	{ 2813, "gb_books01", "GB_novels09" },
+	{ 2813, "gb_books01", "GB_novels10" },
+	{ 2813, "gb_books01", "GB_novels11" },
+	{ 2813, "gb_books01", "GB_novels12" },
+	{ 2822, "gb_cleancrock01", "cj_plate" },
+	{ 2822, "gb_cleancrock01", "cj_plate2" },
+	{ 2822, "gb_cleancrock01", "GB_plateclean01" },
+	{ 2812, "gb_dirtycrock01", "GB_bowldirty01" },
+	{ 2812, "gb_dirtycrock01", "GB_mug01" },
+	{ 2812, "gb_dirtycrock01", "GB_platedirty01" },
+	{ 2812, "gb_dirtycrock01", "GB_platedirty02" },
+	{ 2812, "gb_dirtycrock01", "GB_platedirty03" },
+	{ 2821, "gb_foodwrap01", "cj_napkin" },
+	{ 2821, "gb_foodwrap01", "GB_foodwrap02" },
+	{ 2821, "gb_foodwrap01", "GB_foodwrap03" },
+	{ 2821, "gb_foodwrap01", "GB_foodwrap04" },
+	{ 2821, "gb_foodwrap01", "midgrey64" },
+	{ 2821, "gb_foodwrap01", "sm_marble" },
+	{ 2823, "gb_kitchtake", "CJ_BS2" },
+	{ 2823, "gb_kitchtake", "deep_red64" },
+	{ 2823, "gb_kitchtake", "GB_pizzabox01" },
+	{ 2823, "gb_kitchtake", "GB_takeaway01" },
+	{ 2823, "gb_kitchtake", "GB_takeaway02" },
+	{ 2823, "gb_kitchtake", "GB_takeaway03" },
+	{ 2823, "gb_kitchtake", "GB_takeaway04" },
+	{ 2816, "gb_magazines01", "GB_magazine03" },
+	{ 2811, "gb_ornaments01", "beigehotel_128" },
+	{ 2811, "gb_ornaments01", "GB_photo01" },
+	{ 2811, "gb_ornaments01", "GB_photo02" },
+	{ 2811, "gb_ornaments01", "GB_plant02" },
+	{ 2811, "gb_ornaments01", "GB_vase01" },
+	{ 2815, "gb_rugs01", "GB_livingrug02" },
+	{ 2815, "gb_rugs01", "GB_rug01" },
+	{ 1616, "genalley", "gensecuritycam" },
+	{ 1616, "genalley", "ventgen128" },
+	{ 15034, "genhotelsave", "ab_mottleWhite" },
+	{ 15034, "genhotelsave", "AH_windows" },
+	{ 15034, "genhotelsave", "andydark2" },
+	{ 15034, "genhotelsave", "bathtile04_int" },
+	{ 15034, "genhotelsave", "bathtile05_int" },
+	{ 15034, "genhotelsave", "CJ_PAINTING8" },
+	{ 15034, "genhotelsave", "HS2_2Wall4" },
+	{ 15034, "genhotelsave", "lw_desklamp_128_256" },
+	{ 15034, "genhotelsave", "walp57S" },
+	{ 18025, "genintclothessport", "CJ_PRO_WIN" },
+	{ 18025, "genintclothessport", "mp_cloth_pcarp" },
+	{ 18025, "genintclothessport", "mp_cloth_prob" },
+	{ 18025, "genintclothessport", "mp_cloth_pwall" },
+	{ 18025, "genintclothessport", "mp_cop_sep" },
+	{ 18012, "genintgeneric", "kb_teracota_pot2_64" },
+	{ 18012, "genintgeneric", "planterbox128" },
+	{ 14770, "genintgenintint3", "brothredleth" },
+	{ 14770, "genintgenintint3", "GB_midbar03" },
+	{ 14770, "genintgenintint3", "GB_midbar04" },
+	{ 14825, "genintint2_gym", "boxgym_mainlightingmap" },
+	{ 14825, "genintint2_gym", "gym_ceiling" },
+	{ 14825, "genintint2_gym", "gym_pillar" },
+	{ 14825, "genintint2_gym", "plywood3_gym" },
+	{ 14665, "genintint711_1", "711_walltemp" },
+	{ 14665, "genintint711_1", "interiorwindowglow" },
+	{ 14665, "genintint711_1", "mp_gun_mat" },
+	{ 18018, "genintintbarb", "GB_midbar01" },
+	{ 18018, "genintintbarb", "GB_midbar07" },
+	{ 18018, "genintintbarb", "GB_midbar12" },
+	{ 18018, "genintintbarb", "Gen_Gantry_Rust" },
+	{ 18001, "genintintbarbera", "barbersfurn1" },
+	{ 18001, "genintintbarbera", "barberslight1" },
+	{ 18001, "genintintbarbera", "barberstill" },
+	{ 18001, "genintintbarbera", "barbers_junk2" },
+	{ 18001, "genintintbarbera", "barbers_junk3" },
+	{ 14776, "genintintcarint3", "ab_steelFrame" },
+	{ 14776, "genintintcarint3", "auto_tune1" },
+	{ 14776, "genintintcarint3", "auto_tune3" },
+	{ 14776, "genintintcarint3", "concretebigc256" },
+	{ 14776, "genintintcarint3", "doornvent256128" },
+	{ 14776, "genintintcarint3", "Industdoor1128" },
+	{ 14776, "genintintcarint3", "joey_shadow_texture" },
+	{ 14776, "genintintcarint3", "leccy_cables" },
+	{ 14776, "genintintcarint3", "Metal2_256128" },
+	{ 14776, "genintintcarint3", "metpat_64" },
+	{ 14776, "genintintcarint3", "porta_256128" },
+	{ 14776, "genintintcarint3", "posh1_128" },
+	{ 14776, "genintintcarint3", "smoketest1a_sfw" },
+	{ 14776, "genintintcarint3", "toolwall1" },
+	{ 14776, "genintintcarint3", "tool_store" },
+	{ 14776, "genintintcarint3", "tool_store2" },
+	{ 14776, "genintintcarint3", "tyretread_64H" },
+	{ 14776, "genintintcarint3", "yellowvertical_64HV" },
+	{ 18022, "genintintfasta", "ceilingtile1_128" },
+	{ 18022, "genintintfasta", "CJ_TILE1" },
+	{ 18022, "genintintfasta", "diner_wall5" },
+	{ 18020, "genintintfastb2", "BS_WINDOW" },
+	{ 18020, "genintintfastb2", "cj_burgerwood" },
+	{ 18020, "genintintfastb2", "CJ_BURG_WALL" },
+	{ 18020, "genintintfastb2", "ws_terratiles" },
+	{ 18023, "genintintfastc", "CJ_GREENWOOD2" },
+	{ 18023, "genintintfastc", "CJ_PIZZA_WALL" },
+	{ 18023, "genintintfastc", "dinerfloor01_128" },
+	{ 18023, "genintintfastc", "wellstackedpizza_256" },
+	{ 18021, "genintintfastd", "barbers_wall1" },
+	{ 18021, "genintintfastd", "CJ_DON_WIN" },
+	{ 18021, "genintintfastd", "tile_test3red" },
+	{ 14826, "genintintgarage2a", "car_cover4" },
+	{ 14826, "genintintgarage2a", "car_jack" },
+	{ 14826, "genintintgarage2a", "kb_tyre" },
+	{ 14826, "genintintgarage2a", "remingtonkb1" },
+	{ 14842, "genintintpolicea", "copcell_bars" },
+	{ 14842, "genintintpolicea", "copstuff" },
+	{ 14842, "genintintpolicea", "cops_chrome" },
+	{ 14842, "genintintpolicea", "cop_notice" },
+	{ 14842, "genintintpolicea", "filing_cabnu" },
+	{ 14842, "genintintpolicea", "poldesk" },
+	{ 14842, "genintintpolicea", "poldesktop" },
+	{ 14846, "genintintpoliceb", "breezewall2" },
+	{ 14846, "genintintpoliceb", "copbtm_green" },
+	{ 14846, "genintintpoliceb", "coptop_blue" },
+	{ 14846, "genintintpoliceb", "coptop_brown" },
+	{ 14846, "genintintpoliceb", "coptop_pink" },
+	{ 14846, "genintintpoliceb", "cop_bench" },
+	{ 14846, "genintintpoliceb", "cop_cellfloor" },
+	{ 14846, "genintintpoliceb", "cop_cellwall" },
+	{ 14846, "genintintpoliceb", "cop_cellwall_btm" },
+	{ 14846, "genintintpoliceb", "pol_dor_surr2" },
+	{ 14846, "genintintpoliceb", "pol_flr164" },
+	{ 14846, "genintintpoliceb", "pol_flr2" },
+	{ 14846, "genintintpoliceb", "pol_flr3" },
+	{ 14846, "genintintpoliceb", "pol_galss1a" },
+	{ 14846, "genintintpoliceb", "pol_stairs2" },
+	{ 14846, "genintintpoliceb", "p_countr" },
+	{ 14846, "genintintpoliceb", "p_door1" },
+	{ 14846, "genintintpoliceb", "p_floor2" },
+	{ 14846, "genintintpoliceb", "p_floor3" },
+	{ 14846, "genintintpoliceb", "p_floor4" },
+	{ 14666, "genintintsex", "backdoor_128" },
+	{ 14666, "genintintsex", "CJ_BLUE_DOOR" },
+	{ 14666, "genintintsex", "mp_cop_floor2" },
+	{ 14666, "genintintsex", "mp_porn_wall" },
+	{ 18029, "genintintsmallrest", "GB_restaursmll02" },
+	{ 18029, "genintintsmallrest", "GB_restaursmll03" },
+	{ 18029, "genintintsmallrest", "GB_restaursmll04" },
+	{ 18029, "genintintsmallrest", "GB_restaursmll05" },
+	{ 18029, "genintintsmallrest", "GB_restaursmll06" },
+	{ 18029, "genintintsmallrest", "GB_restaursmll07" },
+	{ 18029, "genintintsmallrest", "GB_restaursmll08" },
+	{ 18029, "genintintsmallrest", "GB_restaursmll09" },
+	{ 18029, "genintintsmallrest", "GB_restaursmll10" },
+	{ 18029, "genintintsmallrest", "GB_restaursmll11" },
+	{ 18029, "genintintsmallrest", "GB_restaursmll12" },
+	{ 18029, "genintintsmallrest", "GB_restaursmll13" },
+	{ 18029, "genintintsmallrest", "GB_restaursmll14" },
+	{ 18029, "genintintsmallrest", "GB_restaursmll15" },
+	{ 18029, "genintintsmallrest", "GB_restaursmll16b" },
+	{ 18029, "genintintsmallrest", "GB_restaursmll19" },
+	{ 18029, "genintintsmallrest", "GB_restaursmll20" },
+	{ 18029, "genintintsmallrest", "kitchensink_256" },
+	{ 2627, "genintint_gym", "bench_test1" },
+	{ 2627, "genintint_gym", "bench_test2" },
+	{ 2627, "genintint_gym", "bench_test2b" },
+	{ 2627, "genintint_gym", "chrome_tube1" },
+	{ 2627, "genintint_gym", "cycle1" },
+	{ 2627, "genintint_gym", "cycle2" },
+	{ 2627, "genintint_gym", "gym_runni" },
+	{ 2627, "genintint_gym", "weight1" },
+	{ 18009, "genintrestrest1", "adobe_wall1" },
+	{ 18009, "genintrestrest1", "rest_cob" },
+	{ 18009, "genintrestrest1", "rest_floor2_512" },
+	{ 18009, "genintrestrest1", "rest_gravel" },
+	{ 18009, "genintrestrest1", "rest_mainlightingmap" },
+	{ 18009, "genintrestrest1", "rest_wall5" },
+	{ 18010, "genintrestrest2", "ceiling_light64" },
+	{ 18010, "genintrestrest2", "kbsofa333c" },
+	{ 18010, "genintrestrest2", "kb_canopy128_2" },
+	{ 18055, "genintsmlrst_split", "GB_restaursmll01" },
+	{ 18055, "genintsmlrst_split", "GB_restaursmll16a" },
+	{ 18055, "genintsmlrst_split", "GB_restaursmll17a" },
+	{ 18055, "genintsmlrst_split", "GB_restaursmll17b" },
+	{ 18055, "genintsmlrst_split", "GB_restaursmll21" },
+	{ 18055, "genintsmlrst_split", "GB_restaursmll22" },
+	{ 18055, "genintsmlrst_split", "GB_restaursmll23" },
+	{ 14784, "genintwarehsint3", "lasjmflood2" },
+	{ 14784, "genintwarehsint3", "lastat97" },
+	{ 14784, "genintwarehsint3", "lightwallba256" },
+	{ 14784, "genintwarehsint3", "sjmdockral1" },
+	{ 14784, "genintwarehsint3", "sjmlawardra1" },
+	{ 14784, "genintwarehsint3", "sjmlawarwall2" },
+	{ 14784, "genintwarehsint3", "sjmlawarwall4" },
+	{ 14784, "genintwarehsint3", "sjmpostbar2" },
+	{ 14784, "genintwarehsint3", "snpdimwin1" },
+	{ 10751, "genroads_sfse", "sf_tramline2" },
+	{ 8508, "genshop", "shoptiles01_128" },
+	{ 8508, "genshop", "vgs_shpfrnt04_128" },
+	{ 10844, "genwhse_sfse", "slab64" },
+	{ 18045, "gen_munation", "mp_gun_floor" },
+	{ 18045, "gen_munation", "mp_gun_shutter" },
+	{ 18047, "gen_mun_counter", "mp_gun_cabinet" },
+	{ 18047, "gen_mun_counter", "mp_gun_counter" },
+	{ 18047, "gen_mun_counter", "mp_gun_metal" },
+	{ 18048, "gen_mun_xtars2", "mp_gun_man" },
+	{ 18048, "gen_mun_xtars2", "mp_gun_man2" },
+	{ 18048, "gen_mun_xtars2", "mp_gun_man3" },
+	{ 18048, "gen_mun_xtars2", "star_spang" },
+	{ 14785, "gen_offtrackint", "bluemat_32" },
+	{ 14785, "gen_offtrackint", "exitgreen_64" },
+	{ 14785, "gen_offtrackint", "otb_mural1" },
+	{ 14785, "gen_offtrackint", "otb_mural2" },
+	{ 14785, "gen_offtrackint", "otb_mural3" },
+	{ 14785, "gen_offtrackint", "otb_mural4" },
+	{ 14785, "gen_offtrackint", "otb_rooftile1" },
+	{ 14785, "gen_offtrackint", "otb_rooftile2" },
+	{ 14800, "gen_otb_bits", "ab_boxStack" },
+	{ 1686, "gen_petrol", "vgnptrpump1_256" },
+	{ 1686, "gen_petrol", "vgnptrpump2_128" },
+	{ 14853, "gen_pol_vegas", "blue_carpet_256" },
+	{ 14853, "gen_pol_vegas", "burglry_wall5b" },
+	{ 14853, "gen_pol_vegas", "grey_carpet_256" },
+	{ 14853, "gen_pol_vegas", "mp_cop_bars" },
+	{ 14853, "gen_pol_vegas", "mp_cop_chief" },
+	{ 14853, "gen_pol_vegas", "mp_cop_frame" },
+	{ 14853, "gen_pol_vegas", "mp_cop_name" },
+	{ 14853, "gen_pol_vegas", "mp_cop_panel" },
+	{ 14853, "gen_pol_vegas", "mp_cop_pinboard" },
+	{ 14853, "gen_pol_vegas", "mp_cop_signs" },
+	{ 14853, "gen_pol_vegas", "mp_cop_wall" },
+	{ 14853, "gen_pol_vegas", "mp_cop_whiteboard" },
+	{ 14853, "gen_pol_vegas", "mp_cop_wood" },
+	{ 14853, "gen_pol_vegas", "mp_gun_dirt" },
+	{ 14853, "gen_pol_vegas", "mp_police_win" },
+	{ 14853, "gen_pol_vegas", "office_wallnu1" },
+	{ 14853, "gen_pol_vegas", "pol_win_kb" },
+	{ 14859, "gf1", "CJ_MAT2DIRT" },
+	{ 14859, "gf1", "mp_apt1_pos1" },
+	{ 14859, "gf1", "mp_apt1_pos2" },
+	{ 14859, "gf1", "mp_apt1_pos3" },
+	{ 14859, "gf1", "mp_apt1_pos4" },
+	{ 14859, "gf1", "mp_cooch_carp" },
+	{ 14859, "gf1", "mp_cooch_clothes" },
+	{ 14859, "gf1", "mp_cooch_frame" },
+	{ 14859, "gf1", "mp_cooch_wall" },
+	{ 14859, "gf1", "mp_cop_ceiling" },
+	{ 14865, "gf2", "mp_bobbie_carpwhite" },
+	{ 14865, "gf2", "mp_bobbie_pennant" },
+	{ 14865, "gf2", "mp_bobbie_pompom" },
+	{ 14865, "gf2", "mp_bobbie_pompom1" },
+	{ 14865, "gf2", "mp_bobbie_pompom2" },
+	{ 14865, "gf2", "mp_bobbie_wall" },
+	{ 14865, "gf2", "mp_bobbie_wood" },
+	{ 14871, "gf3", "kickhay" },
+	{ 14871, "gf3", "TREE_STUB1" },
+	{ 14876, "gf4", "mp_diner_sawdust" },
+	{ 14876, "gf4", "mp_gimp_officewall" },
+	{ 14876, "gf4", "mp_tank_floor" },
+	{ 14881, "gf5", "mp_jail_wall" },
+	{ 14888, "gf6", "gm_millie_cock" },
+	{ 14888, "gf6", "mp_gimp_basewall" },
+	{ 14888, "gf6", "mp_gimp_sponge" },
+	{ 14888, "gf6", "mp_gimp_tilefloor" },
+	{ 14888, "gf6", "mp_millie_ring" },
+	{ 14888, "gf6", "mp_millie_swing" },
+	{ 14888, "gf6", "mp_millie_wallwhite" },
+	{ 14888, "gf6", "mp_millie_whip" },
+	{ 14888, "gf6", "mp_millie_whip1" },
+	{ 14888, "gf6", "mp_millie_whip2" },
+	{ 14888, "gf6", "mp_millie_wood" },
+	{ 14888, "gf6", "mp_millie_woodwall" },
+	{ 14888, "gf6", "mp_vicgrill" },
+	{ 9608, "ggatepark", "gantsign2_sfw" },
+	{ 9608, "ggatepark", "gantsign_sfw" },
+	{ 9608, "ggatepark", "gg_sign2_sfw" },
+	{ 9608, "ggatepark", "gg_sign_sfw" },
+	{ 9608, "ggatepark", "sfe_diner1" },
+	{ 9608, "ggatepark", "sfe_diner2" },
+	{ 9608, "ggatepark", "sfe_diner3" },
+	{ 9608, "ggatepark", "sfe_diner4" },
+	{ 9269, "ggbridge_sfn", "stonesandkb2_128" },
+	{ 9269, "ggbridge_sfn", "ws_goldengate2" },
+	{ 5407, "glenpark1x_lae", "craproad1_LAe" },
+	{ 5407, "glenpark1x_lae", "downtsign12_LA" },
+	{ 5407, "glenpark1x_lae", "hedgealphad1" },
+	{ 5407, "glenpark1x_lae", "lasclean1" },
+	{ 5407, "glenpark1x_lae", "lasjmhoodcrb" },
+	{ 5407, "glenpark1x_lae", "lasjmscruffwall1" },
+	{ 5407, "glenpark1x_lae", "mural06_LA" },
+	{ 5407, "glenpark1x_lae", "sanpedton3" },
+	{ 5407, "glenpark1x_lae", "savtop" },
+	{ 5407, "glenpark1x_lae", "savtopWN" },
+	{ 5407, "glenpark1x_lae", "scumtiles3_LAe" },
+	{ 5407, "glenpark1x_lae", "sjmhoodlawn4" },
+	{ 5407, "glenpark1x_lae", "sl_pornshopla1" },
+	{ 5407, "glenpark1x_lae", "sl_pornshopla1b" },
+	{ 5443, "glenpark1_lae", "chocolate1" },
+	{ 5443, "glenpark1_lae", "concretebig4256" },
+	{ 5443, "glenpark1_lae", "mudyforest256" },
+	{ 5443, "glenpark1_lae", "transmishop1LAe" },
+	{ 5461, "glenpark6d_lae", "downtwin21b" },
+	{ 5461, "glenpark6d_lae", "GB_truckdepot20" },
+	{ 5461, "glenpark6d_lae", "gymshops1_LAe" },
+	{ 5461, "glenpark6d_lae", "gymshops2_LAe" },
+	{ 5461, "glenpark6d_lae", "shopint1_LAe" },
+	{ 5461, "glenpark6d_lae", "shopint2_LAe" },
+	{ 5461, "glenpark6d_lae", "shutter01LA" },
+	{ 5461, "glenpark6d_lae", "tiledwall01_LA" },
+	{ 5462, "glenpark6_lae", "dirty256" },
+	{ 5462, "glenpark6_lae", "girder_red_64HV" },
+	{ 5462, "glenpark6_lae", "hillshop2_LA" },
+	{ 5462, "glenpark6_lae", "hillshop4_LA" },
+	{ 5462, "glenpark6_lae", "hwtopwin01b_law" },
+	{ 5462, "glenpark6_lae", "hwtopwin01_law" },
+	{ 5462, "glenpark6_lae", "scaffolding_vc" },
+	{ 5462, "glenpark6_lae", "wareh3_LAe" },
+	{ 5390, "glenpark7_lae", "bboardblank_law" },
+	{ 5390, "glenpark7_lae", "compfence5_LAe" },
+	{ 5390, "glenpark7_lae", "ganggraf01_LA" },
+	{ 2976, "gloopx", "alien_cont2" },
+	{ 2976, "gloopx", "alien_glass" },
+	{ 2976, "gloopx", "alien_liquid" },
+	{ 8409, "gnhotel1", "ap_tarmac" },
+	{ 8409, "gnhotel1", "carpark1_64" },
+	{ 8409, "gnhotel1", "glass_64" },
+	{ 8409, "gnhotel1", "gnhoteldoor01_128" },
+	{ 8409, "gnhotel1", "gnhoteldoor03_128" },
+	{ 8409, "gnhotel1", "gnhoteldoor04_128" },
+	{ 8409, "gnhotel1", "gnhoteldoor05_128" },
+	{ 8409, "gnhotel1", "gnhotelpanel01_64" },
+	{ 8409, "gnhotel1", "gnhotelpanel02_64" },
+	{ 8409, "gnhotel1", "gnhotelpillar01_128" },
+	{ 8409, "gnhotel1", "gnhotelstairs01_128" },
+	{ 8409, "gnhotel1", "gnhotelwall03_128" },
+	{ 8409, "gnhotel1", "gnhotelwall06_128" },
+	{ 8409, "gnhotel1", "gnhotelwall07_128" },
+	{ 8409, "gnhotel1", "gnhotelwindow01_128" },
+	{ 8409, "gnhotel1", "old_corugwal_256" },
+	{ 8409, "gnhotel1", "Plaindoorblue_128" },
+	{ 8409, "gnhotel1", "redstuff" },
+	{ 8409, "gnhotel1", "step_64HV" },
+	{ 2993, "goflagx", "GOflag" },
+	{ 3070, "gogsx", "nightvision" },
+	{ 9683, "goldengate_sfw", "bridge_egg_sfw" },
+	{ 9683, "goldengate_sfw", "ws_goldengate1" },
+	{ 9683, "goldengate_sfw", "ws_goldengate4" },
+	{ 1974, "golfball", "kb_golf" },
+	{ 10403, "golf_sfs", "golf_fairway1" },
+	{ 10403, "golf_sfs", "golf_fairway2" },
+	{ 10403, "golf_sfs", "golf_grassrock" },
+	{ 10403, "golf_sfs", "golf_gravelpath" },
+	{ 10403, "golf_sfs", "golf_greengrass" },
+	{ 10403, "golf_sfs", "rock_country128blnd" },
+	{ 4227, "graffiti_lan01", "cleargraf01_LA" },
+	{ 3261, "grasshouse", "hoophouse" },
+	{ 3261, "grasshouse", "veg_bmarijuana" },
+	{ 3261, "grasshouse", "veg_marijuana" },
+	{ 13725, "gravblok01_lahills", "dirtybeach01_law" },
+	{ 13725, "gravblok01_lahills", "hosp03_law" },
+	{ 10442, "graveyard_sfs", "ws_graveydfence" },
+	{ 10442, "graveyard_sfs", "ws_grvl_desgrassblend" },
+	{ 10442, "graveyard_sfs", "ws_memorial" },
+	{ 4810, "griffobs_las", "cornice01_la" },
+	{ 4810, "griffobs_las", "Gen_Log" },
+	{ 4810, "griffobs_las", "Gen_Log_End" },
+	{ 4810, "griffobs_las", "grifnewtex1b" },
+	{ 4810, "griffobs_las", "hllblf2_LAE" },
+	{ 4810, "griffobs_las", "lasjmslumruf" },
+	{ 4810, "griffobs_las", "sm_pinetreebit" },
+	{ 4810, "griffobs_las", "wilsd_06_la" },
+	{ 4810, "griffobs_las", "wilsd_08_la" },
+	{ 4810, "griffobs_las", "ws_neatwoodfence" },
+	{ 9919, "grnwht_sfe", "sfe_redwht1" },
+	{ 9919, "grnwht_sfe", "sfe_redwht1b" },
+	{ 9919, "grnwht_sfe", "sfe_redwht2" },
+	{ 9919, "grnwht_sfe", "sfe_redwht3" },
+	{ 9919, "grnwht_sfe", "sfe_redwht4" },
+	{ 9919, "grnwht_sfe", "sfe_wall_1" },
+	{ 9919, "grnwht_sfe", "sf_hospitaldr1" },
+	{ 9919, "grnwht_sfe", "sf_hospitaldr2" },
+	{ 9919, "grnwht_sfe", "sl_dtdoor1" },
+	{ 9919, "grnwht_sfe", "vic01_LA" },
+	{ 9919, "grnwht_sfe", "victim_sfe" },
+	{ 9919, "grnwht_sfe", "whitgrn_sfe1" },
+	{ 9919, "grnwht_sfe", "whitgrn_sfe2" },
+	{ 9919, "grnwht_sfe", "whitgrn_sfe3" },
+	{ 9919, "grnwht_sfe", "whitgrn_sfe4" },
+	{ 9919, "grnwht_sfe", "whitgrn_sfe5" },
+	{ 9919, "grnwht_sfe", "whitgrn_sfe6" },
+	{ 5111, "ground2_las2", "Grass_dirt_64HV" },
+	{ 5111, "ground2_las2", "sanpedcorn1" },
+	{ 5111, "ground2_las2", "sanpedpawn1a" },
+	{ 5111, "ground2_las2", "sjmlawarhustrim" },
+	{ 4849, "ground3_las", "backalley1_LAe" },
+	{ 4849, "ground3_las", "floorboard256128" },
+	{ 4849, "ground3_las", "hollysign05_LAw" },
+	{ 4849, "ground3_las", "lasnude1" },
+	{ 4849, "ground3_las", "lasnude2" },
+	{ 4849, "ground3_las", "lasnude7" },
+	{ 4849, "ground3_las", "lasnude9" },
+	{ 4849, "ground3_las", "lasnude9a" },
+	{ 4849, "ground3_las", "lasnude9h" },
+	{ 4849, "ground3_las", "newcut4_LAS" },
+	{ 4849, "ground3_las", "rubbish" },
+	{ 4849, "ground3_las", "sanpedowd5" },
+	{ 5122, "ground3_las2", "fossiloil_128" },
+	{ 5122, "ground3_las2", "Was_alt" },
+	{ 5122, "ground3_las2", "Was_crush" },
+	{ 5122, "ground3_las2", "Was_dier" },
+	{ 5122, "ground3_las2", "Was_engblox" },
+	{ 5122, "ground3_las2", "Was_scrpyd_tires_pile" },
+	{ 5122, "ground3_las2", "Was__mdedge" },
+	{ 4820, "ground4_las", "adet" },
+	{ 4820, "ground4_las", "ahoodnewwi2" },
+	{ 4820, "ground4_las", "compfence6_LAe" },
+	{ 4820, "ground4_las", "driveway2_128" },
+	{ 4820, "ground4_las", "driveway_128" },
+	{ 4820, "ground4_las", "hedge" },
+	{ 4820, "ground4_las", "lasjmscruffwall5" },
+	{ 4820, "ground4_las", "sanpednhus2" },
+	{ 4820, "ground4_las", "sanpedwall4" },
+	{ 4820, "ground4_las", "sjmlahus232" },
+	{ 4806, "ground5_las", "combrd1" },
+	{ 4806, "ground5_las", "labreplace" },
+	{ 4806, "ground5_las", "newcut2_LAS" },
+	{ 4806, "ground5_las", "newcut3_LAS" },
+	{ 4806, "ground5_las", "roof11L256" },
+	{ 10356, "groundbit_sfs", "ws_hextile" },
+	{ 10851, "groundbit_sfse", "ws_altz_wall6big" },
+	{ 5135, "groundb_las2", "cmpwarhus2" },
+	{ 5135, "groundb_las2", "sanpedock95" },
+	{ 5135, "groundb_las2", "sanpedock97" },
+	{ 5135, "groundb_las2", "snpedwar1" },
+	{ 5135, "groundb_las2", "snpedwar2" },
+	{ 5138, "ground_las2", "sanpedock3" },
+	{ 14406, "gs_mansion_lights", "mp_CJ_Light" },
+	{ 14406, "gs_mansion_lights", "mp_CJ_LIGHT_FITTING" },
+	{ 726, "gtatreesh", "oakbark64" },
+	{ 726, "gtatreesh", "oakleaf1" },
+	{ 726, "gtatreesh", "oakleaf2" },
+	{ 726, "gtatreesh", "pinebranch2" },
+	{ 726, "gtatreesh", "pinewood" },
+	{ 727, "gtatreesh04", "spruce1" },
+	{ 727, "gtatreesh04", "sprucebark" },
+	{ 728, "gtatreeshi", "berrybush1" },
+	{ 729, "gtatreeshi7", "cedar1" },
+	{ 731, "gtatreeshi9", "bchamae" },
+	{ 731, "gtatreeshi9", "cypress1" },
+	{ 731, "gtatreeshi9", "cypress2" },
+	{ 730, "gtatreeshifir", "bthuja1" },
+	{ 730, "gtatreeshifir", "cedar2" },
+	{ 650, "gta_cactus", "sjm cactus" },
+	{ 674, "gta_deserttrees", "sm_cactus_leaf" },
+	{ 674, "gta_deserttrees", "sm_josh_bark" },
+	{ 674, "gta_deserttrees", "sm_josh_leaf" },
+	{ 630, "gta_potplants", "greekurn" },
+	{ 630, "gta_potplants", "kb_teracota_pot64" },
+	{ 630, "gta_potplants", "yuka256" },
+	{ 858, "gta_procdesert", "sm_des_bush2" },
+	{ 858, "gta_procdesert", "sm_des_bush3" },
+	{ 817, "gta_procflowers", "gras07Si" },
+	{ 825, "gta_proc_bigbush", "veg_bush1" },
+	{ 825, "gta_proc_bigbush", "veg_bush4" },
+	{ 802, "gta_proc_bushland", "veg_bush3" },
+	{ 802, "gta_proc_bushland", "veg_bush3red" },
+	{ 801, "gta_proc_ferns", "veg_bush2" },
+	{ 801, "gta_proc_ferns", "veg_bushgrn" },
+	{ 801, "gta_proc_ferns", "veg_bushred" },
+	{ 812, "gta_proc_grassland", "oak2b" },
+	{ 804, "gta_proc_grasslanda", "veg_leaf" },
+	{ 804, "gta_proc_grasslanda", "veg_leafred" },
+	{ 806, "gta_proc_rushes", "gras03Si" },
+	{ 806, "gta_proc_rushes", "gras04Si" },
+	{ 716, "gta_tree_bevhills", "treegridtop_law" },
+	{ 716, "gta_tree_bevhills", "trunk3" },
+	{ 716, "gta_tree_bevhills", "trunk5" },
+	{ 716, "gta_tree_bevhills", "vegaspalm01_128" },
+	{ 615, "gta_tree_boak", "bark04S64" },
+	{ 615, "gta_tree_boak", "sm_redwood_bark" },
+	{ 654, "gta_tree_oldpine", "pinelo128" },
+	{ 654, "gta_tree_oldpine", "tree19Mi" },
+	{ 670, "gta_tree_pine", "sm_redwood_branch" },
+	{ 17540, "gymblok2_lae2", "gangshop1_LAe" },
+	{ 17540, "gymblok2_lae2", "roadsignbackground128" },
+	{ 2913, "gym_weights", "cheerybox01" },
+	{ 10355, "haight1_sfs", "beigeledge" },
+	{ 10355, "haight1_sfs", "drivetile_02" },
+	{ 10355, "haight1_sfs", "sl_vic_cornice1" },
+	{ 10355, "haight1_sfs", "ws_apartmentmanky1" },
+	{ 10355, "haight1_sfs", "ws_apartmentmanky2" },
+	{ 10355, "haight1_sfs", "ws_apartmentmankyb1" },
+	{ 10355, "haight1_sfs", "ws_apartmentmankyb2" },
+	{ 10355, "haight1_sfs", "ws_apartmentmankyblue1" },
+	{ 10355, "haight1_sfs", "ws_apartmentmankygreen1" },
+	{ 10355, "haight1_sfs", "ws_apartmentmankywhite1" },
+	{ 10355, "haight1_sfs", "ws_apartmentpink1" },
+	{ 10355, "haight1_sfs", "ws_apartmentpink2" },
+	{ 10355, "haight1_sfs", "ws_apartmentred1" },
+	{ 10355, "haight1_sfs", "ws_apartmentred2" },
+	{ 10355, "haight1_sfs", "ws_apartmentwhite1" },
+	{ 10355, "haight1_sfs", "ws_apartmentwhite2" },
+	{ 10355, "haight1_sfs", "ws_apartmentwhite3" },
+	{ 10355, "haight1_sfs", "ws_dom's" },
+	{ 10355, "haight1_sfs", "ws_ed_shop10" },
+	{ 10355, "haight1_sfs", "ws_ed_shop12" },
+	{ 10355, "haight1_sfs", "ws_ed_shop2" },
+	{ 10355, "haight1_sfs", "ws_ed_shop3" },
+	{ 10355, "haight1_sfs", "ws_ed_shop4" },
+	{ 10355, "haight1_sfs", "ws_hashbanner" },
+	{ 10355, "haight1_sfs", "ws_japwin" },
+	{ 10428, "hashblock1b_sfs", "gz_vic3a" },
+	{ 10428, "hashblock1b_sfs", "ws_haight2btom" },
+	{ 10428, "hashblock1b_sfs", "ws_haight2top5" },
+	{ 10430, "hashblock1z_sfs", "ws_apartmentblue1" },
+	{ 10430, "hashblock1z_sfs", "ws_apartmentmankyc1" },
+	{ 10430, "hashblock1z_sfs", "ws_ed_shop13" },
+	{ 10430, "hashblock1z_sfs", "ws_ed_shop13_door" },
+	{ 10430, "hashblock1z_sfs", "ws_haight2top4" },
+	{ 10430, "hashblock1z_sfs", "ws_haightfrontage2" },
+	{ 10429, "hashblock1_sfs", "Bow_Concrete_drip" },
+	{ 10429, "hashblock1_sfs", "ws_apartmentblue2" },
+	{ 10429, "hashblock1_sfs", "ws_haight2top6" },
+	{ 10429, "hashblock1_sfs", "ws_haight3btm" },
+	{ 10429, "hashblock1_sfs", "ws_haight4" },
+	{ 10429, "hashblock1_sfs", "ws_haighttattoo" },
+	{ 10429, "hashblock1_sfs", "ws_hippy2" },
+	{ 10429, "hashblock1_sfs", "ws_spliff" },
+	{ 10429, "hashblock1_sfs", "ws_streak_billbd" },
+	{ 10429, "hashblock1_sfs", "ws_suburbansign" },
+	{ 10434, "hashblock2b_sfs", "ws_apartmentgrn1" },
+	{ 10434, "hashblock2b_sfs", "ws_apartmentgrn2" },
+	{ 10434, "hashblock2b_sfs", "ws_emg_awning" },
+	{ 10434, "hashblock2b_sfs", "ws_haight2top" },
+	{ 10434, "hashblock2b_sfs", "ws_haightshop1alt" },
+	{ 10434, "hashblock2b_sfs", "ws_haightshop1altdoor" },
+	{ 10434, "hashblock2b_sfs", "ws_mural2" },
+	{ 10431, "hashblock2_sfs", "ws_w's_shopfront" },
+	{ 10431, "hashblock2_sfs", "ws_w's_shopfront_top" },
+	{ 10439, "hashblock3_sfs", "dt_road_to_alley" },
+	{ 10439, "hashblock3_sfs", "ws_hs_awning" },
+	{ 10439, "hashblock3_sfs", "ws_mural1" },
+	{ 10435, "hashblock4_sfs", "redshade2_64" },
+	{ 10435, "hashblock4_sfs", "ws_apartmentmint1" },
+	{ 10435, "hashblock4_sfs", "ws_apartmentmint2" },
+	{ 10435, "hashblock4_sfs", "ws_apartmentmint3" },
+	{ 10427, "hashhouses1_sfs", "ws_haight2top1" },
+	{ 10427, "hashhouses1_sfs", "ws_haight2top3" },
+	{ 10433, "hashmarket1_sfs", "woodboards2" },
+	{ 3860, "hashmarket_sfsx", "ws_tarp1" },
+	{ 3860, "hashmarket_sfsx", "ws_tarp2" },
+	{ 3860, "hashmarket_sfsx", "ws_tarp3" },
+	{ 3860, "hashmarket_sfsx", "ws_tarp4" },
+	{ 10447, "hashupass_sfs", "Bow_sub_wallGrime" },
+	{ 3878, "headstones_sfsx", "ws_wargrave" },
+	{ 3878, "headstones_sfsx", "ws_wargrave2" },
+	{ 1301, "helimagnet", "Copperoxb64" },
+	{ 981, "helixbarrier", "bridgehzrd_kb_128" },
+	{ 981, "helixbarrier", "colourboxes" },
+	{ 981, "helixbarrier", "curb_64H" },
+	{ 14514, "hexi_lite", "ab_hexi_Lite" },
+	{ 13734, "hillcliff_lahills", "cobbles_kb_256" },
+	{ 3619, "hillhouse14_la", "anwfrntbev4" },
+	{ 3619, "hillhouse14_la", "aposhus1" },
+	{ 3619, "hillhouse14_la", "aposhus2" },
+	{ 3619, "hillhouse14_la", "aposhus3" },
+	{ 3619, "hillhouse14_la", "aposhus4" },
+	{ 3600, "hillhousex13_6", "courthsewin_128" },
+	{ 3600, "hillhousex13_6", "roof01L256" },
+	{ 3608, "hillhousex2_us", "mulhuose01_law" },
+	{ 3601, "hillhousex4_5", "bevgate02_law" },
+	{ 3601, "hillhousex4_5", "inwindow1" },
+	{ 3612, "hillhousex_la10_12", "downtwin20" },
+	{ 3598, "hillhousex_la1_2", "bevdoor04_law" },
+	{ 3598, "hillhousex_la1_2", "plasterLAh" },
+	{ 3598, "hillhousex_la1_2", "shinglesLAh" },
+	{ 3598, "hillhousex_la1_2", "sunsetwin01_LA" },
+	{ 3598, "hillhousex_la1_2", "sunsetwin02_LA" },
+	{ 1851, "hi_cutdice", "dice3" },
+	{ 5718, "hobos_lawn", "carney01_LAwN" },
+	{ 5718, "hobos_lawn", "carney02_LAwN" },
+	{ 5718, "hobos_lawn", "carney03_LAwN" },
+	{ 5718, "hobos_lawn", "carney04_LAwN" },
+	{ 5718, "hobos_lawn", "Smear_CemLAwN" },
+	{ 9593, "hosbibalsfw", "2hospital1sfw" },
+	{ 9593, "hosbibalsfw", "2hospital2sfw" },
+	{ 9593, "hosbibalsfw", "2hospital3sfw" },
+	{ 9593, "hosbibalsfw", "2hospital4sfw" },
+	{ 9593, "hosbibalsfw", "2hospital5sfw" },
+	{ 9593, "hosbibalsfw", "2hospital6sfw" },
+	{ 9593, "hosbibalsfw", "2hospital7sfw" },
+	{ 9593, "hosbibalsfw", "hospital6_sfw" },
+	{ 9593, "hosbibalsfw", "hospital7_sfw" },
+	{ 9593, "hosbibalsfw", "hospital8t_sfw" },
+	{ 9593, "hosbibalsfw", "paveslab1" },
+	{ 2558, "hospital", "CJ_H_CURTAIN1" },
+	{ 3899, "hospital2", "airportdoor1" },
+	{ 3899, "hospital2", "AmbulanceParking_64" },
+	{ 3899, "hospital2", "black" },
+	{ 3899, "hospital2", "burnt_faggots64" },
+	{ 3899, "hospital2", "concretenew256" },
+	{ 3899, "hospital2", "cutscenebank128" },
+	{ 3899, "hospital2", "dustyconcrete128" },
+	{ 3899, "hospital2", "fire_exit128" },
+	{ 3899, "hospital2", "hospitalboard_128a" },
+	{ 3899, "hospital2", "HospitalCarPark_64" },
+	{ 3899, "hospital2", "ind_hospital1_128" },
+	{ 3899, "hospital2", "ind_hospital2_128" },
+	{ 3899, "hospital2", "newall15128" },
+	{ 3899, "hospital2", "notice01_128" },
+	{ 3899, "hospital2", "plainwoodoor2" },
+	{ 3899, "hospital2", "runwaylight_64" },
+	{ 3899, "hospital2", "sky33_64hv" },
+	{ 5402, "hospital_lae", "hospwin1_LAe" },
+	{ 5402, "hospital_lae", "hospwin2_LAe" },
+	{ 5402, "hospital_lae", "hospwin3_LAe" },
+	{ 5708, "hospital_lawn", "allsaints2_law copy" },
+	{ 5708, "hospital_lawn", "allsaints_law" },
+	{ 5708, "hospital_lawn", "hosp01_law" },
+	{ 5708, "hospital_lawn", "hosp03b_law" },
+	{ 5708, "hospital_lawn", "rock1b_128" },
+	{ 10412, "hotel1", "carpet_red_256" },
+	{ 10412, "hotel1", "gold128" },
+	{ 10412, "hotel1", "grasslawnfade_256" },
+	{ 10412, "hotel1", "ws_awning" },
+	{ 10412, "hotel1", "ws_hotel1" },
+	{ 10412, "hotel1", "ws_hotel2" },
+	{ 10412, "hotel1", "ws_hotel5" },
+	{ 10412, "hotel1", "ws_hotel6" },
+	{ 10412, "hotel1", "ws_hotelrail" },
+	{ 10412, "hotel1", "ws_vankhoffsign" },
+	{ 10425, "hotel2_sfs", "ws_hoteldoor1" },
+	{ 10444, "hotelbackpool_sfs", "ws_hotel7" },
+	{ 10444, "hotelbackpool_sfs", "ws_hotel7b" },
+	{ 10615, "hotelback_sfs", "ws_desgreengrass_pave" },
+	{ 3432, "hotelcanopy", "gnhotelcanopy01_64" },
+	{ 3432, "hotelcanopy", "gnhotelcanopy03_64" },
+	{ 9229, "hrbr_sfn", "alleydoor7" },
+	{ 9229, "hrbr_sfn", "dt_bridge_rail_texture" },
+	{ 11389, "hubint1_sfse", "ws_altz_wall5_BIG" },
+	{ 11389, "hubint1_sfse", "ws_altz_wall7_BIG" },
+	{ 11389, "hubint1_sfse", "ws_peeling_ceiling1_BIG" },
+	{ 11389, "hubint1_sfse", "ws_STDcalendar" },
+	{ 11390, "hubint2", "ws_greymetal_small" },
+	{ 11390, "hubint2", "ws_lightswitchgrubby" },
+	{ 11391, "hubprops2_sfse", "blackbag" },
+	{ 11391, "hubprops2_sfse", "CJ_fire" },
+	{ 17518, "hub_alpha", "clothline1_LAe" },
+	{ 17518, "hub_alpha", "macbrij1_LAe" },
+	{ 1246, "icons", "pill_32" },
+	{ 1246, "icons", "skull" },
+	{ 1274, "icons2", "yellowhi132" },
+	{ 1273, "icons3", "greengrad32" },
+	{ 1272, "icons4", "diskmetal32" },
+	{ 1272, "icons4", "heart" },
+	{ 1272, "icons4", "salogo64" },
+	{ 1239, "icons6", "lyellow32" },
+	{ 1242, "icons7", "cj_para" },
+	{ 1247, "icons9", "bribe16" },
+	{ 5418, "idlewood3_lae", "lasjmrail1" },
+	{ 5418, "idlewood3_lae", "sanpedmot1" },
+	{ 5418, "idlewood3_lae", "sanpedmot3" },
+	{ 5418, "idlewood3_lae", "sanpedmot4" },
+	{ 5418, "idlewood3_lae", "sanpedmotWIN" },
+	{ 5418, "idlewood3_lae", "sanpedton1" },
+	{ 5418, "idlewood3_lae", "sanpedton5" },
+	{ 5474, "idlewood46_lae", "downtwin29" },
+	{ 5474, "idlewood46_lae", "redresdoor" },
+	{ 5474, "idlewood46_lae", "vengardoor01_law" },
+	{ 5411, "idlewood6_detail", "eastwin02_LAe2" },
+	{ 5411, "idlewood6_detail", "holwall" },
+	{ 5411, "idlewood6_detail", "ladocksig1" },
+	{ 5411, "idlewood6_detail", "snpedwar4b" },
+	{ 5422, "idlewood6_lae", "barberpole1" },
+	{ 5422, "idlewood6_lae", "barbershop1" },
+	{ 5422, "idlewood6_lae", "concretebigc256128" },
+	{ 5422, "idlewood6_lae", "gangshop9_LAe" },
+	{ 5422, "idlewood6_lae", "las69str2" },
+	{ 5422, "idlewood6_lae", "lastat4" },
+	{ 5422, "idlewood6_lae", "liqdel1" },
+	{ 5422, "idlewood6_lae", "reeces_LAe" },
+	{ 5422, "idlewood6_lae", "sanpshop4" },
+	{ 5422, "idlewood6_lae", "sjmhicut1las" },
+	{ 5417, "idlewood6_tr", "ladocksig2" },
+	{ 5417, "idlewood6_tr", "ladocksig3" },
+	{ 14502, "immy_furn", "ab_pipe" },
+	{ 14502, "immy_furn", "mp_motel_bed" },
+	{ 14502, "immy_furn", "mp_motel_bed1" },
+	{ 14502, "immy_furn", "mp_motel_bed2" },
+	{ 14498, "imm_rooms", "venetian_blind" },
+	{ 14500, "imm_roomss", "ab_tilehex2" },
+	{ 14500, "imm_roomss", "Bow_bar_top" },
+	{ 14500, "imm_roomss", "motel_wall2" },
+	{ 14500, "imm_roomss", "mp_motel_bluew" },
+	{ 14500, "imm_roomss", "mp_motel_bluewALT" },
+	{ 14500, "imm_roomss", "mp_motel_carpet" },
+	{ 14500, "imm_roomss", "mp_motel_wallpaper" },
+	{ 14500, "imm_roomss", "mp_motel_wallpaper1" },
+	{ 2986, "imm_roomx", "kb_imvent" },
+	{ 5126, "imrancomp_las2", "sanpdconv" },
+	{ 5126, "imrancomp_las2", "sanpedock94" },
+	{ 5132, "imstuff_las2", "cardbrdirty128" },
+	{ 5132, "imstuff_las2", "sjmlawarplt2" },
+	{ 5132, "imstuff_las2", "sjmlawarshcrategen" },
+	{ 14506, "imy_motel", "ab_tile1" },
+	{ 14506, "imy_motel", "Ah_exit" },
+	{ 14506, "imy_motel", "mp_motel_numbers" },
+	{ 14506, "imy_motel", "mp_motel_pinkw" },
+	{ 14506, "imy_motel", "mp_motel_pinkwALT" },
+	{ 14506, "imy_motel", "mp_motel_roof" },
+	{ 14506, "imy_motel", "mp_motel_rooms" },
+	{ 14506, "imy_motel", "mp_motel_whitewall" },
+	{ 14506, "imy_motel", "mp_motel_whitewallALT" },
+	{ 14525, "imy_motel2", "ah_skylight" },
+	{ 14525, "imy_motel2", "mp_motel_reception" },
+	{ 2989, "imy_skylx", "skylightkb" },
+	{ 3059, "imy_smsx", "niteclb1_LAe" },
+	{ 3059, "imy_smsx", "niteclb3_LAe" },
+	{ 3091, "imy_trx", "kb_trainbarrier" },
+	{ 14515, "im_motelxtras", "wallsocketkb" },
+	{ 14516, "im_xtra", "CJ_PAINTING13" },
+	{ 3895, "inditaly", "Plaindoor_64V" },
+	{ 3895, "inditaly", "stepflat_64HV" },
+	{ 3895, "inditaly", "tenwhite128" },
+	{ 3895, "inditaly", "tenwhitebrick64" },
+	{ 3896, "indust1", "block_maindraga" },
+	{ 3896, "indust1", "concretenewb32" },
+	{ 3896, "indust1", "firewall" },
+	{ 3896, "indust1", "Grass_32" },
+	{ 3896, "indust1", "indsmallwall64" },
+	{ 3896, "indust1", "ind_tendragblka" },
+	{ 3896, "indust1", "ind_tendragblkb" },
+	{ 3896, "indust1", "LO1road_128" },
+	{ 3896, "indust1", "sandytar_64HV" },
+	{ 3896, "indust1", "tarmac_64HV" },
+	{ 3901, "indust2", "railplat01" },
+	{ 3901, "indust2", "rustybolts64" },
+	{ 3901, "indust2", "rustybolts_drk32" },
+	{ 3722, "indust2_lax", "Was_grfiti" },
+	{ 3722, "indust2_lax", "Was_sd" },
+	{ 914, "industrialext", "CJ_PANEL" },
+	{ 914, "industrialext", "CJ_Panel2" },
+	{ 914, "industrialext", "CJ_SPEC" },
+	{ 914, "industrialext", "CJ_VENT1" },
+	{ 914, "industrialext", "cj_yellowgenerator" },
+	{ 914, "industrialext", "lecybox" },
+	{ 5140, "industry3_las2", "lasclean2" },
+	{ 5140, "industry3_las2", "santall2" },
+	{ 5140, "industry3_las2", "santall5" },
+	{ 5140, "industry3_las2", "santall7" },
+	{ 5140, "industry3_las2", "santall8" },
+	{ 5140, "industry3_las2", "santall8s" },
+	{ 5140, "industry3_las2", "sjmhicut4las" },
+	{ 5140, "industry3_las2", "sjmlashopsig1" },
+	{ 5140, "industry3_las2", "sjmlashopsig2" },
+	{ 5140, "industry3_las2", "snpedshptst3" },
+	{ 3636, "indust_lax", "lasjmpow4" },
+	{ 3636, "indust_lax", "lasjmpow91" },
+	{ 3636, "indust_lax", "lasjmpow93" },
+	{ 3636, "indust_lax", "lasjmpow94" },
+	{ 3636, "indust_lax", "lasjmpow95" },
+	{ 13627, "inneroval", "loadbay64" },
+	{ 13627, "inneroval", "newgrnd1brntrk_128" },
+	{ 13624, "innertrak", "AH_dirt64b2" },
+	{ 13624, "innertrak", "AH_dirtmix_128" },
+	{ 13624, "innertrak", "dirtgrass" },
+	{ 18008, "intclothesa", "chromeffect" },
+	{ 18008, "intclothesa", "CJ_VICT_DOOR2" },
+	{ 18008, "intclothesa", "CJ_VIC_1" },
+	{ 18008, "intclothesa", "CJ_VIC_2" },
+	{ 18008, "intclothesa", "mp_cloth_vicfloor" },
+	{ 18008, "intclothesa", "mp_cloth_vicgird" },
+	{ 18008, "intclothesa", "mp_lightfitting" },
+	{ 18008, "intclothesa", "shop_rail" },
+	{ 18008, "intclothesa", "shop_rail2" },
+	{ 18008, "intclothesa", "shop_shelf11" },
+	{ 18008, "intclothesa", "shop_wall3" },
+	{ 18008, "intclothesa", "stair_treads" },
+	{ 18094, "intclothesa2", "denims" },
+	{ 18024, "intclotheshiphop", "CJ_SUBURB_WIN" },
+	{ 18024, "intclotheshiphop", "concreteCJ256" },
+	{ 18024, "intclotheshiphop", "mp_cloth_sub" },
+	{ 18024, "intclotheshiphop", "mp_cop_light" },
+	{ 18067, "intclothes_acc", "CJ_VIC_3" },
+	{ 18067, "intclothes_acc", "CJ_VIC_4" },
+	{ 18067, "intclothes_acc", "mp_cloth_vic" },
+	{ 18067, "intclothes_acc", "mp_cloth_vicrug" },
+	{ 14783, "intgarage2aint3", "canvas22" },
+	{ 14783, "intgarage2aint3", "garagewall1" },
+	{ 14783, "intgarage2aint3", "gragedoorkb2" },
+	{ 14783, "intgarage2aint3", "hotknifebody2kb" },
+	{ 14783, "intgarage2aint3", "hotknifebody3kb" },
+	{ 14660, "inttattoobits", "tatoo_chair1" },
+	{ 14660, "inttattoobits", "tatoo_chair3" },
+	{ 14660, "inttattoobits", "tat_roll1" },
+	{ 14660, "inttattoobits", "tat_spray1" },
+	{ 14660, "inttattoobits", "tat_tissue3" },
+	{ 14660, "inttattoobits", "tissues2" },
+	{ 14660, "inttattoobits", "tissues4" },
+	{ 14771, "int_brothelint3", "Bow_bar_cooler_lwr" },
+	{ 14771, "int_brothelint3", "Bow_bar_cooler_upr" },
+	{ 14771, "int_brothelint3", "Bow_bar_panelfront" },
+	{ 14771, "int_brothelint3", "carpbroth1" },
+	{ 14771, "int_brothelint3", "GB_midbar06" },
+	{ 14771, "int_brothelint3", "GB_midbar09" },
+	{ 14771, "int_brothelint3", "GB_midbar10" },
+	{ 14771, "int_brothelint3", "GB_midbar15" },
+	{ 14771, "int_brothelint3", "GB_nastybar12" },
+	{ 14771, "int_brothelint3", "sw_backdoor01" },
+	{ 14771, "int_brothelint3", "wallpbroth1" },
+	{ 14777, "int_casinoint3", "GB_midbar05" },
+	{ 14777, "int_casinoint3", "GB_midbar08" },
+	{ 14777, "int_casinoint3", "GB_midbar11" },
+	{ 14777, "int_casinoint3", "GB_midbar16" },
+	{ 18007, "int_cutbar3", "barbers_wall2" },
+	{ 18007, "int_cutbar3", "barbers_wall3" },
+	{ 1491, "int_doors", "CJ_WOODDOOR1" },
+	{ 1491, "int_doors", "CJ_WOODDOOR2" },
+	{ 1491, "int_doors", "CJ_WOODDOOR3" },
+	{ 1499, "int_doors(cj)", "CJ_DOORSURROUND" },
+	{ 14798, "int_kbsgarage3", "ab_wall_flake" },
+	{ 14661, "int_tatoo", "counter1" },
+	{ 14661, "int_tatoo", "mp_tat_power" },
+	{ 14661, "int_tatoo", "mp_tat_tats1" },
+	{ 14661, "int_tatoo", "mp_tat_tats2" },
+	{ 14661, "int_tatoo", "tattoo_frm1" },
+	{ 14661, "int_tatoo", "tattoo_wall1" },
+	{ 14661, "int_tatoo", "tat_shadoa" },
+	{ 14531, "int_zerosrca", "CJ_RC_WIN" },
+	{ 14531, "int_zerosrca", "donut_ceil" },
+	{ 14531, "int_zerosrca", "stadium_ground2" },
+	{ 14531, "int_zerosrca", "ws_ed_zeroshop" },
+	{ 5401, "jeffers4_lae", "flooringwd01_int" },
+	{ 5401, "jeffers4_lae", "newall9b_16c128" },
+	{ 5401, "jeffers4_lae", "sidewgrass1" },
+	{ 5401, "jeffers4_lae", "stainwinLAe" },
+	{ 5406, "jeffers5a_lae", "CJ_SUBURBlw_WIN" },
+	{ 5406, "jeffers5a_lae", "discwa1_LAe2" },
+	{ 5406, "jeffers5a_lae", "gangshop13_LAe" },
+	{ 5406, "jeffers5a_lae", "heat_01" },
+	{ 5406, "jeffers5a_lae", "lasuburbansgn1" },
+	{ 5406, "jeffers5a_lae", "poshentrance1_256" },
+	{ 5406, "jeffers5a_lae", "stonemall2_law" },
+	{ 5406, "jeffers5a_lae", "vgnshopwal1_256" },
+	{ 5406, "jeffers5a_lae", "vgshopwall05_64" },
+	{ 1602, "jellyfish1", "jellyfishc" },
+	{ 1603, "jellyfish2", "jellyb2" },
+	{ 3047, "jetdx", "mp_jet_roof" },
+	{ 14404, "jet_interior", "LD_747_cockpitdoor" },
+	{ 14404, "jet_interior", "LD_747_door" },
+	{ 14404, "jet_interior", "LD_747_floor" },
+	{ 14404, "jet_interior", "LD_747_skin" },
+	{ 14404, "jet_interior", "LD_747_toiletdoor" },
+	{ 14404, "jet_interior", "mp_jet_cockpit" },
+	{ 14404, "jet_interior", "mp_jet_wall" },
+	{ 3129, "jt_doorbx", "pldoor_envmap" },
+	{ 3129, "jt_doorbx", "pldoor_gen" },
+	{ 3132, "jt_doorx", "Shamalbody256" },
+	{ 3132, "jt_doorx", "trolley02" },
+	{ 2601, "juice", "sprunk2dirty2" },
+	{ 3852, "jump_sfxref", "rooftop_pipes" },
+	{ 3852, "jump_sfxref", "sfgas1" },
+	{ 849, "junkpiles", "CJgrass" },
+	{ 849, "junkpiles", "ws_oldredbrick" },
+	{ 2188, "kbblackjack", "balckjack_txt2a" },
+	{ 2188, "kbblackjack", "bj_squrea" },
+	{ 2188, "kbblackjack", "chip_tray_1" },
+	{ 2188, "kbblackjack", "chip_tray_gry" },
+	{ 2188, "kbblackjack", "deck_cards" },
+	{ 2188, "kbblackjack", "roulette_4_256" },
+	{ 2188, "kbblackjack", "roulette_6_256" },
+	{ 2188, "kbblackjack", "roulette_wood" },
+	{ 2188, "kbblackjack", "wheel_o_2b" },
+	{ 1853, "kbchips1", "indx_chip1" },
+	{ 1853, "kbchips1", "indx_chip2" },
+	{ 1853, "kbchips1", "indx_chip3" },
+	{ 1853, "kbchips1", "indx_chip4" },
+	{ 1853, "kbchips1", "indx_chip5" },
+	{ 1853, "kbchips1", "indx_chip6" },
+	{ 1706, "kbcouch1", "kbcornice_2_128" },
+	{ 1706, "kbcouch1", "kbwood_panel4_128" },
+	{ 1706, "kbcouch1", "kb_sofa555c" },
+	{ 1706, "kbcouch1", "kb_sofa555d" },
+	{ 1706, "kbcouch1", "kb_sofaside2" },
+	{ 1706, "kbcouch1", "kb_sofa_256" },
+	{ 1950, "kbeer", "bottles_kb2" },
+	{ 4892, "kbgarage_las", "aanewwin" },
+	{ 4892, "kbgarage_las", "ahoodnewdr1" },
+	{ 4892, "kbgarage_las", "canvas22sjm" },
+	{ 5341, "kbgarage_las2", "sanpedwall2" },
+	{ 1826, "kbmiscfrn1", "bank_mny_LR" },
+	{ 1826, "kbmiscfrn1", "bank_safe_LR" },
+	{ 1826, "kbmiscfrn1", "bnk_dsk_2" },
+	{ 1826, "kbmiscfrn1", "man_mny2" },
+	{ 1826, "kbmiscfrn1", "wee_blak_32" },
+	{ 1825, "kbmiscfrn1cj", "htl_tbltop2" },
+	{ 1827, "kbmiscfrn2", "chrome_sheet" },
+	{ 1827, "kbmiscfrn2", "man_mny1" },
+	{ 1827, "kbmiscfrn2", "safridge_256" },
+	{ 627, "kbplantssmz", "plantc256" },
+	{ 1978, "kbroul1", "green_beize_128" },
+	{ 1978, "kbroul1", "roulette_surf1" },
+	{ 1978, "kbroul1", "roulette_surf2" },
+	{ 1978, "kbroul1", "roulette_wood3" },
+	{ 1929, "kbroul2", "oliveash_256" },
+	{ 1929, "kbroul2", "roulet_nosa" },
+	{ 1929, "kbroul2", "roul_slotbit2" },
+	{ 1929, "kbroul2", "roul_slotbit3" },
+	{ 1929, "kbroul2", "roul_slotbit4" },
+	{ 1929, "kbroul2", "roul_slotbit5" },
+	{ 1929, "kbroul2", "roul_slotbit6" },
+	{ 1830, "kbslotmchines", "slot2" },
+	{ 1830, "kbslotmchines", "slot3" },
+	{ 1830, "kbslotmchines", "slot4" },
+	{ 1830, "kbslotmchines", "slot5" },
+	{ 1830, "kbslotmchines", "slot7" },
+	{ 1830, "kbslotmchines", "slot_bit2" },
+	{ 1948, "kbslotnu", "larg_reel1" },
+	{ 1948, "kbslotnu", "slot_black" },
+	{ 1948, "kbslotnu", "slot_chrome1" },
+	{ 1948, "kbslotnu", "slot_steel" },
+	{ 1948, "kbslotnu", "wheel_o_tbl1a" },
+	{ 1828, "kbtgr_rug", "man_tigr_rug" },
+	{ 1707, "kb_carcouch", "kb_car_couch2" },
+	{ 2957, "kb_ctdoorx", "garage_docks" },
+	{ 1839, "kb_hifi", "blak_speaker" },
+	{ 1839, "kb_hifi", "hifi_1" },
+	{ 1839, "kb_hifi", "hifi_2" },
+	{ 1702, "kb_parker", "kbsofa333e" },
+	{ 1702, "kb_parker", "kb_sofaside1" },
+	{ 2890, "kb_skip_txd", "skipY" },
+	{ 2890, "kb_skip_txd", "skip_peeling1" },
+	{ 2890, "kb_skip_txd", "skip_rubble1" },
+	{ 1895, "kb_wheel1", "roulette_4drk" },
+	{ 1895, "kb_wheel1", "wheel_o_1" },
+	{ 1895, "kb_wheel1", "wheel_o_2" },
+	{ 1895, "kb_wheel1", "wheel_o_2c" },
+	{ 1895, "kb_wheel1", "wheel_o_2d" },
+	{ 1895, "kb_wheel1", "wheel_o_2e" },
+	{ 1895, "kb_wheel1", "wheel_o_2f" },
+	{ 1895, "kb_wheel1", "wheel_o_3" },
+	{ 1895, "kb_wheel1", "white256" },
+	{ 2988, "kcomp_gx", "kmwood_gate" },
+	{ 3116, "kei_wnchx", "trilby04" },
+	{ 2886, "keypad", "nt_phone3" },
+	{ 13634, "kickarse", "law_blue1" },
+	{ 13590, "kickstart", "AH_barpanelM" },
+	{ 13590, "kickstart", "ah_bluBADWL" },
+	{ 13590, "kickstart", "AH_fitlhskirting" },
+	{ 13590, "kickstart", "ah_logend" },
+	{ 13590, "kickstart", "carlites64a" },
+	{ 13590, "kickstart", "carundera64" },
+	{ 13590, "kickstart", "Grass-base-Right" },
+	{ 13590, "kickstart", "kickGrass" },
+	{ 13590, "kickstart", "midtrack" },
+	{ 13590, "kickstart", "rock01_law" },
+	{ 13590, "kickstart", "Rocky road" },
+	{ 13590, "kickstart", "Upt_Precinct_woodLedge" },
+	{ 13590, "kickstart", "yellowrust2_64" },
+	{ 14384, "kit3hghg", "AH_greencurtain" },
+	{ 2942, "kmb_atmx", "kmb_atm" },
+	{ 2942, "kmb_atmx", "kmb_atm_dam" },
+	{ 2942, "kmb_atmx", "kmb_atm_sign" },
+	{ 2942, "kmb_atmx", "kmb_chip1" },
+	{ 2942, "kmb_atmx", "kmb_chip2" },
+	{ 2942, "kmb_atmx", "kmb_wiresC" },
+	{ 2960, "kmb_beamx", "kmb_beam" },
+	{ 2903, "kmb_chute", "chute_coords" },
+	{ 2903, "kmb_chute", "kb_lug1" },
+	{ 2903, "kmb_chute", "parachute" },
+	{ 2922, "kmb_keypadx", "keypad2" },
+	{ 2922, "kmb_keypadx", "keypad_glass" },
+	{ 2922, "kmb_keypadx", "keypad_light" },
+	{ 2949, "kmb_lockdoortxd", "locked_door" },
+	{ 2901, "kmb_marijtxd", "kmb_marijuana" },
+	{ 2894, "kmb_notebook", "kmb_notebook" },
+	{ 2891, "kmb_packet", "kmb_packet" },
+	{ 2953, "kmb_paperx", "kmb_write_code" },
+	{ 2936, "kmb_rckx", "larock256" },
+	{ 3124, "ksnipx", "ak47_all" },
+	{ 2972, "k_cratesx", "747_crate" },
+	{ 2972, "k_cratesx", "cargo1_128" },
+	{ 2972, "k_cratesx", "cargo3_128" },
+	{ 2972, "k_cratesx", "tyrecover_256128" },
+	{ 2977, "k_militbx", "military_cratee" },
+	{ 2964, "k_pool", "blue_pool_table" },
+	{ 2964, "k_pool", "poolcue" },
+	{ 2964, "k_pool", "pool_table_cloth" },
+	{ 14708, "labig1int2", "ab_mottleGrey" },
+	{ 14708, "labig1int2", "doorframew" },
+	{ 14708, "labig1int2", "GB_restaursmll32" },
+	{ 14708, "labig1int2", "GB_restaursmll38" },
+	{ 14708, "labig1int2", "GB_restaursmll52" },
+	{ 14708, "labig1int2", "GB_restaursmll53" },
+	{ 14708, "labig1int2", "HS1_2Wall5" },
+	{ 14708, "labig1int2", "HS1_wall5" },
+	{ 14708, "labig1int2", "HS2_3Wall2" },
+	{ 14708, "labig1int2", "HS2_Artex5" },
+	{ 14708, "labig1int2", "HS2_floor2" },
+	{ 14708, "labig1int2", "HS2_floor3" },
+	{ 14708, "labig1int2", "HS2_floor4" },
+	{ 14708, "labig1int2", "HS3_wall9" },
+	{ 14708, "labig1int2", "HS_art" },
+	{ 14708, "labig1int2", "HS_vase" },
+	{ 14708, "labig1int2", "HS_wood1" },
+	{ 14708, "labig1int2", "mp_apt1_ceiling" },
+	{ 14708, "labig1int2", "skirtingw" },
+	{ 14708, "labig1int2", "StudioWall" },
+	{ 14708, "labig1int2", "vgsclubdoor01_128" },
+	{ 14708, "labig1int2", "WH_skirt" },
+	{ 14706, "labig2int2", "banniswd_int" },
+	{ 14706, "labig2int2", "carpet1aw" },
+	{ 14706, "labig2int2", "flooringwd02_int" },
+	{ 14706, "labig2int2", "frenchwind2_int" },
+	{ 14706, "labig2int2", "frenchwinds_int" },
+	{ 14706, "labig2int2", "HS1_Shade2" },
+	{ 14706, "labig2int2", "HS2_2Wall1" },
+	{ 14706, "labig2int2", "HS2_3Wall6" },
+	{ 14706, "labig2int2", "HS3_wall2" },
+	{ 14706, "labig2int2", "HS3_wall5" },
+	{ 14706, "labig2int2", "HS3_wall7" },
+	{ 14706, "labig2int2", "HS_art2" },
+	{ 14706, "labig2int2", "HS_art3" },
+	{ 14706, "labig2int2", "HS_art5" },
+	{ 14706, "labig2int2", "HS_art7" },
+	{ 14706, "labig2int2", "HS_art9" },
+	{ 14706, "labig2int2", "lightswitch01_int" },
+	{ 14706, "labig2int2", "mp_apt1_kitchwallpaper" },
+	{ 14706, "labig2int2", "skirtingb" },
+	{ 14706, "labig2int2", "vegdoor1_int" },
+	{ 14706, "labig2int2", "wallpnice12" },
+	{ 14706, "labig2int2", "whitecarpet01" },
+	{ 14706, "labig2int2", "wood14S" },
+	{ 14707, "labig3int2", "aptdoor01_int" },
+	{ 14707, "labig3int2", "bathtile02_int" },
+	{ 14707, "labig3int2", "burglry_wall6" },
+	{ 14707, "labig3int2", "cactusL" },
+	{ 14707, "labig3int2", "HS2_3Carpet1" },
+	{ 14707, "labig3int2", "HS2_3Wall10" },
+	{ 14707, "labig3int2", "HS2_3Wall5" },
+	{ 14707, "labig3int2", "HS2_3Wall7" },
+	{ 14707, "labig3int2", "HS2_3Wall9" },
+	{ 14707, "labig3int2", "HS_art4" },
+	{ 14707, "labig3int2", "HS_art6" },
+	{ 14707, "labig3int2", "HS_art8" },
+	{ 14707, "labig3int2", "planPot" },
+	{ 14707, "labig3int2", "Soil" },
+	{ 14707, "labig3int2", "WH_walls" },
+	{ 15048, "labigsave", "ah_carp1" },
+	{ 15048, "labigsave", "ah_carpet2kb" },
+	{ 15048, "labigsave", "AH_carpet4kb" },
+	{ 15048, "labigsave", "ah_curwall" },
+	{ 15048, "labigsave", "AH_fancyceil" },
+	{ 15048, "labigsave", "AH_flroortile1" },
+	{ 15048, "labigsave", "AH_flroortile2" },
+	{ 15048, "labigsave", "ah_GRYSKT" },
+	{ 15048, "labigsave", "ah_pineceiling" },
+	{ 15048, "labigsave", "ah_pluskirt" },
+	{ 15048, "labigsave", "ah_posmarskirt" },
+	{ 15048, "labigsave", "ah_wallstyle1" },
+	{ 15048, "labigsave", "AH_walltile1" },
+	{ 15048, "labigsave", "ah_wpaper8" },
+	{ 1328, "labins01_la", "bin1_LAe" },
+	{ 1328, "labins01_la", "bin2_LAe" },
+	{ 1328, "labins01_la", "bins10_LAe2" },
+	{ 1328, "labins01_la", "bins1_LAe2" },
+	{ 1328, "labins01_la", "bins2_LAe2" },
+	{ 1328, "labins01_la", "bins3_LAe2" },
+	{ 1328, "labins01_la", "bins4_LAe2" },
+	{ 1328, "labins01_la", "bins5_LAe2" },
+	{ 1328, "labins01_la", "bins6_LAe2" },
+	{ 1328, "labins01_la", "bins7_LAe2" },
+	{ 1328, "labins01_la", "bins8_LAe2" },
+	{ 1328, "labins01_la", "bins9_LAe2" },
+	{ 1328, "labins01_la", "cj_bin2" },
+	{ 1328, "labins01_la", "map64" },
+	{ 8550, "laconcha", "vegaspawnwall_128" },
+	{ 8550, "laconcha", "vgnfirestat2_64" },
+	{ 8551, "laconchasign", "laconca01_128" },
+	{ 8551, "laconchasign", "laconcasign02_64" },
+	{ 17524, "lae2bigblock", "gangsign2_LAe" },
+	{ 17524, "lae2bigblock", "hillshop1_LA" },
+	{ 17524, "lae2bigblock", "hillshop3_LA" },
+	{ 17524, "lae2bigblock", "hollywin03_LAw" },
+	{ 17524, "lae2bigblock", "ja_multisign_lae2" },
+	{ 17524, "lae2bigblock", "venfood01_law" },
+	{ 17524, "lae2bigblock", "wareh1_LAe" },
+	{ 17524, "lae2bigblock", "wareh2_LAe" },
+	{ 17524, "lae2bigblock", "waresigns1_LAe" },
+	{ 17535, "lae2billboards", "billbd1_LAe" },
+	{ 17535, "lae2billboards", "SunBillB03" },
+	{ 17678, "lae2bridge", "macbrij4_LAe" },
+	{ 17678, "lae2bridge", "Newpavement" },
+	{ 17588, "lae2coast_alpha", "compcourtrail1_m" },
+	{ 17588, "lae2coast_alpha", "east_pacific" },
+	{ 17588, "lae2coast_alpha", "golden_palms" },
+	{ 17588, "lae2coast_alpha", "LAShad1" },
+	{ 17588, "lae2coast_alpha", "plainglass" },
+	{ 17925, "lae2fake_int", "burglry_wall4" },
+	{ 17925, "lae2fake_int", "carpet1kb" },
+	{ 17532, "lae2grnd", "fencebroke256" },
+	{ 17532, "lae2grnd", "redcanopything" },
+	{ 17532, "lae2grnd", "sw_door14" },
+	{ 17519, "lae2newtempbx", "asanpdshpsh1" },
+	{ 17519, "lae2newtempbx", "asanpdshpsh1c" },
+	{ 17519, "lae2newtempbx", "carlot1" },
+	{ 17519, "lae2newtempbx", "lasclean4" },
+	{ 17519, "lae2newtempbx", "lasclean5" },
+	{ 17519, "lae2newtempbx", "lasclean6" },
+	{ 17519, "lae2newtempbx", "LAskyscraper5" },
+	{ 17519, "lae2newtempbx", "lastaco1" },
+	{ 17519, "lae2newtempbx", "lastripx2" },
+	{ 17519, "lae2newtempbx", "lastripx2a" },
+	{ 17519, "lae2newtempbx", "sanpedpawn1" },
+	{ 17519, "lae2newtempbx", "sanpedpawn1d" },
+	{ 17519, "lae2newtempbx", "sanpedpawn2" },
+	{ 17519, "lae2newtempbx", "sanpedpawn2c" },
+	{ 17519, "lae2newtempbx", "santaco6" },
+	{ 17519, "lae2newtempbx", "santaco6za" },
+	{ 17519, "lae2newtempbx", "siliconvalleywins4" },
+	{ 17519, "lae2newtempbx", "sjmlashop5" },
+	{ 17519, "lae2newtempbx", "snpedpost1" },
+	{ 17519, "lae2newtempbx", "snpedpost1a" },
+	{ 17519, "lae2newtempbx", "snpedpost1b" },
+	{ 17505, "lae2roads", "craproad2_LAe" },
+	{ 17505, "lae2roads", "craproad3_LAe" },
+	{ 17505, "lae2roads", "craproad7_LAe7" },
+	{ 17505, "lae2roads", "grassdry_path_128HV" },
+	{ 17505, "lae2roads", "macbrij2_LAe" },
+	{ 17606, "lae2roadscoast", "concretedust2_256128" },
+	{ 17606, "lae2roadscoast", "LAroad_centre1" },
+	{ 17606, "lae2roadscoast", "stonewalls1_LA" },
+	{ 17606, "lae2roadscoast", "Was_scrpyd_wall_in_hngr" },
+	{ 17595, "lae2roadshub", "Grass_concpath2" },
+	{ 17595, "lae2roadshub", "sidewgrass2" },
+	{ 17595, "lae2roadshub", "sidewgrass3" },
+	{ 17595, "lae2roadshub", "sidewgrass5" },
+	{ 17595, "lae2roadshub", "sidewgrass_fuked" },
+	{ 17595, "lae2roadshub", "trainground1" },
+	{ 17595, "lae2roadshub", "trainground3" },
+	{ 17563, "lae2tempshit", "wattsstax1_LAe" },
+	{ 17563, "lae2tempshit", "wattsstax2_LAe" },
+	{ 17563, "lae2tempshit", "wattsstax3_LAe" },
+	{ 17563, "lae2tempshit", "wattsstax4_LAe" },
+	{ 5395, "laeroads", "hiwaymidlle_256" },
+	{ 5395, "laeroads", "macbrij3_LAe" },
+	{ 5391, "laeroads2s", "sl_pavebutt2" },
+	{ 5391, "laeroads2s", "sl_roadbutt1" },
+	{ 5421, "laesmokecnthus", "bballbck_kb" },
+	{ 5421, "laesmokecnthus", "greenwall4" },
+	{ 5421, "laesmokecnthus", "sl_blustainplanks" },
+	{ 3593, "lafuckar", "car3_128" },
+	{ 13675, "lahillsgrounds", "bevpool" },
+	{ 13675, "lahillsgrounds", "bevr03b_law" },
+	{ 13701, "lahillshilhs1c", "ws_garagedoor3_blue" },
+	{ 13681, "lahillshilhs1e", "veg_hedge1_256" },
+	{ 13678, "lahillslaroads", "roaddgrassblnd" },
+	{ 13678, "lahillslaroads", "Tar_1line256HVblend" },
+	{ 13706, "lahillsroadscoast", "dt_roadblend" },
+	{ 13706, "lahillsroadscoast", "kbpavementblend" },
+	{ 13706, "lahillsroadscoast", "sjmhoodlawn42B" },
+	{ 13712, "lahillstr_lawn", "kb_ivy2_128" },
+	{ 13712, "lahillstr_lawn", "mulhfenc02_LA" },
+	{ 13694, "lahillstxd1a", "glasswindow2_256" },
+	{ 13816, "lahills_safe1", "dor_slider_16_32" },
+	{ 13816, "lahills_safe1", "gry_roof" },
+	{ 13816, "lahills_safe1", "koe_girder_128_642" },
+	{ 13816, "lahills_safe1", "pool_side_128_256" },
+	{ 13816, "lahills_safe1", "pord_conc_128" },
+	{ 13816, "lahills_safe1", "white_girdr" },
+	{ 13761, "lahills_whisky", "discharger" },
+	{ 13761, "lahills_whisky", "lasviper6" },
+	{ 13761, "lahills_whisky", "lasviper7" },
+	{ 13761, "lahills_whisky", "whisk1" },
+	{ 13761, "lahills_whisky", "whisk2" },
+	{ 13761, "lahills_whisky", "whisk3" },
+	{ 13761, "lahills_whisky", "whisk4" },
+	{ 13761, "lahills_whisky", "whisk5" },
+	{ 13861, "lahills_wiresnshit3", "antenna2" },
+	{ 13861, "lahills_wiresnshit3", "scumtiles2_LAe" },
+	{ 13861, "lahills_wiresnshit3", "sjmornfnce" },
+	{ 14713, "lahss2aint2", "HS1_2Wall3" },
+	{ 14713, "lahss2aint2", "HS1_carpet1" },
+	{ 14713, "lahss2aint2", "HS1_Shade" },
+	{ 14713, "lahss2aint2", "HS1_wall2" },
+	{ 14713, "lahss2aint2", "HS2_Artex2" },
+	{ 14713, "lahss2aint2", "HS2_Artex4" },
+	{ 14713, "lahss2aint2", "HS2_Blind1" },
+	{ 14713, "lahss2aint2", "HS2_Blind3" },
+	{ 14713, "lahss2aint2", "HS2_Curt3" },
+	{ 14713, "lahss2aint2", "HS2_floor1" },
+	{ 14713, "lahss2aint2", "HS2_wall4" },
+	{ 14713, "lahss2aint2", "HS2_wall6" },
+	{ 14713, "lahss2aint2", "HS3_Light3" },
+	{ 14713, "lahss2aint2", "HS_plug" },
+	{ 14712, "lahss2bint2", "HS1_2Wall2" },
+	{ 14712, "lahss2bint2", "HS1_Shade3" },
+	{ 14712, "lahss2bint2", "HS2_Artex6" },
+	{ 14712, "lahss2bint2", "HS3_wall8" },
+	{ 14712, "lahss2bint2", "WH_carpet2" },
+	{ 14701, "lahss2int2", "HS1_Kwall" },
+	{ 14701, "lahss2int2", "HS1_Kwall2" },
+	{ 14701, "lahss2int2", "HS1_Plug" },
+	{ 14701, "lahss2int2", "HS1_wall1" },
+	{ 14701, "lahss2int2", "HS1_wall3" },
+	{ 14701, "lahss2int2", "HS1_wall4" },
+	{ 14701, "lahss2int2", "HS2_Artex1" },
+	{ 14701, "lahss2int2", "HS2_Artex3" },
+	{ 14701, "lahss2int2", "HS2_Blind2" },
+	{ 14701, "lahss2int2", "HS2_Curt1" },
+	{ 14701, "lahss2int2", "HS2_Curt4" },
+	{ 14701, "lahss2int2", "HS2_Curt5" },
+	{ 14701, "lahss2int2", "HS2_wall1" },
+	{ 14701, "lahss2int2", "HS2_wall2" },
+	{ 14701, "lahss2int2", "WH_carpet1" },
+	{ 14701, "lahss2int2", "WH_carpet4" },
+	{ 14704, "lahss2_2int2", "HS_lamp1" },
+	{ 14704, "lahss2_2int2", "HS_radiator1" },
+	{ 14704, "lahss2_2int2", "HS_radiator2" },
+	{ 14704, "lahss2_2int2", "HS_vase2" },
+	{ 4556, "laland1_lan2", "gm_labuld2_a" },
+	{ 4556, "laland1_lan2", "gm_labuld4_c" },
+	{ 4556, "laland1_lan2", "sl_blokpave2" },
+	{ 14709, "lamidint2", "mp_apt1_bathfloor1" },
+	{ 14709, "lamidint2", "mp_apt1_bathtiles" },
+	{ 14709, "lamidint2", "mp_apt1_door" },
+	{ 14709, "lamidint2", "mp_apt1_floor" },
+	{ 14709, "lamidint2", "mp_apt1_kitchfloor" },
+	{ 14709, "lamidint2", "mp_apt1_roomwall" },
+	{ 14709, "lamidint2", "mp_apt1_win" },
+	{ 4653, "lan2freeway", "sl_freew2road1" },
+	{ 3781, "lan2office", "glass_office1" },
+	{ 3781, "lan2office", "glass_office2" },
+	{ 3781, "lan2office", "glass_office3" },
+	{ 3781, "lan2office", "glass_office4" },
+	{ 3781, "lan2office", "glass_office5" },
+	{ 3781, "lan2office", "glass_office6" },
+	{ 3781, "lan2office", "glass_office7" },
+	{ 3781, "lan2office", "glass_office8" },
+	{ 4601, "lan2_gm1", "gm_labuld1_a" },
+	{ 4601, "lan2_gm1", "gm_labuld1_b" },
+	{ 4601, "lan2_gm1", "gm_labuld1_c" },
+	{ 4601, "lan2_gm1", "gm_labuld1_d" },
+	{ 4601, "lan2_gm1", "gm_labuld1_e" },
+	{ 4601, "lan2_gm1", "pinkgranite" },
+	{ 4113, "lanbloka", "newall4-1" },
+	{ 4113, "lanbloka", "sl_dwntwndecor1" },
+	{ 4113, "lanbloka", "sl_forlease1" },
+	{ 4113, "lanbloka", "sl_laoffblokedg1" },
+	{ 4113, "lanbloka", "sl_laoffblokwall1" },
+	{ 4113, "lanbloka", "sl_laoffblokwin1" },
+	{ 4113, "lanbloka", "sl_laspiredecor1" },
+	{ 4113, "lanbloka", "sl_laspirewall1" },
+	{ 4113, "lanbloka", "sl_laspirewin1" },
+	{ 4113, "lanbloka", "sl_laspirewin2" },
+	{ 4011, "lanblokb", "sl_cinemasign1" },
+	{ 4011, "lanblokb", "sl_regalsgn" },
+	{ 4011, "lanblokb", "sl_rotnbrikvent" },
+	{ 4011, "lanblokb", "sl_rotnbrikwin1" },
+	{ 4010, "lanblokb2", "bluewhitebuild1" },
+	{ 4010, "lanblokb2", "bluewhitebuildwall2" },
+	{ 4010, "lanblokb2", "bluewhitebuildwall2drt" },
+	{ 4010, "lanblokb2", "bluewhitebuildwndbtm" },
+	{ 4010, "lanblokb2", "bluewhitewindow" },
+	{ 4010, "lanblokb2", "forleasesign" },
+	{ 4010, "lanblokb2", "sl_brikdotdecor1" },
+	{ 4010, "lanblokb2", "sl_brikdotwin1" },
+	{ 4010, "lanblokb2", "sl_lavicdtdecor1b" },
+	{ 4007, "lanblokc", "bonavwall1_LAn" },
+	{ 4007, "lanblokc", "skyscra1_LAn" },
+	{ 4007, "lanblokc", "skyscra2_LAn" },
+	{ 4007, "lanblokc", "sl_laoffblok2win1" },
+	{ 4007, "lanblokc", "sl_laoffblok2win2" },
+	{ 4005, "lanblokd", "decobuild2b_LAn" },
+	{ 4005, "lanblokd", "decobuild2c_LAn" },
+	{ 4005, "lanblokd", "decobuild2_LAn" },
+	{ 4005, "lanblokd", "deptstore1_LAn" },
+	{ 4005, "lanblokd", "deptstore2_LAn" },
+	{ 4005, "lanblokd", "deptstore4_LAn" },
+	{ 3975, "lanbloke", "lasbevcit1" },
+	{ 3975, "lanbloke", "lasbevcit2" },
+	{ 3975, "lanbloke", "lasbevcit3" },
+	{ 3975, "lanbloke", "lasbevcit4" },
+	{ 3975, "lanbloke", "lasbevcit5" },
+	{ 3975, "lanbloke", "lasbevcit8" },
+	{ 3975, "lanbloke", "lasbevcit99" },
+	{ 3975, "lanbloke", "lasunion95" },
+	{ 3975, "lanbloke", "ottos_SFE" },
+	{ 3983, "lanblokg", "Bow_dlct_plstrb_genb" },
+	{ 3984, "lanbloki", "bookwindowshigh" },
+	{ 3984, "lanbloki", "churchwall1" },
+	{ 3984, "lanbloki", "churchwin1_LAn" },
+	{ 3984, "lanbloki", "greytile_LA" },
+	{ 3984, "lanbloki", "nicewindowsnews" },
+	{ 3984, "lanbloki", "ws_sandstone2b" },
+	{ 17685, "landcoast_lae2", "rockwall1_LAe2" },
+	{ 17685, "landcoast_lae2", "rockwall2_LAe2" },
+	{ 17514, "landhub", "grasspatch_64HV" },
+	{ 17514, "landhub", "grasspave256" },
+	{ 17514, "landhub", "sidewgrass4" },
+	{ 17514, "landhub", "yardgrass2" },
+	{ 1631, "landjump", "Aascaff128" },
+	{ 1631, "landjump", "greywallc128" },
+	{ 1631, "landjump", "jumpside1_256" },
+	{ 1631, "landjump", "jumpside2_256" },
+	{ 1631, "landjump", "jumptop1_128" },
+	{ 1631, "landjump", "plasticdrum1_128" },
+	{ 1631, "landjump", "skipdirt_128" },
+	{ 17634, "landlae2b", "compfence4b_LAe" },
+	{ 17634, "landlae2b", "compfence5b_LAe" },
+	{ 17539, "landlae2c", "conc_slab_256" },
+	{ 17539, "landlae2c", "roughwall_kb_semless" },
+	{ 17513, "landlae2e", "basketballcourt1" },
+	{ 10903, "landsfe", "GB_nastybar20" },
+	{ 9483, "landsfw", "rock1_128" },
+	{ 4100, "lanfireesc_tr", "barbwire1" },
+	{ 4100, "lanfireesc_tr", "sl_metaledge" },
+	{ 4558, "lanlacmab_lan2", "lasbrwnhus3" },
+	{ 4558, "lanlacmab_lan2", "LASLACMA9" },
+	{ 4558, "lanlacmab_lan2", "LASLACMA98" },
+	{ 4558, "lanlacmab_lan2", "LASLACMA99" },
+	{ 4558, "lanlacmab_lan2", "LASLACMA991" },
+	{ 4558, "lanlacmab_lan2", "LASLACMA998" },
+	{ 4558, "lanlacmab_lan2", "sjmmetrail" },
+	{ 4558, "lanlacmab_lan2", "sl_galleryplaza1" },
+	{ 4558, "lanlacmab_lan2", "sl_gallerywall1" },
+	{ 4558, "lanlacmab_lan2", "sl_plazatile02" },
+	{ 4558, "lanlacmab_lan2", "sl_stapldoor1" },
+	{ 4559, "lanlacma_lan2", "LASLACMA2" },
+	{ 4559, "lanlacma_lan2", "LASLACMA5" },
+	{ 4559, "lanlacma_lan2", "LASLACMA7" },
+	{ 4559, "lanlacma_lan2", "LASLACMA91" },
+	{ 4559, "lanlacma_lan2", "LASLACMA94" },
+	{ 4559, "lanlacma_lan2", "LASLACMA95" },
+	{ 4559, "lanlacma_lan2", "LASLACMA97" },
+	{ 4559, "lanlacma_lan2", "LASLACMA996" },
+	{ 4559, "lanlacma_lan2", "LASLACMA997" },
+	{ 4714, "lanlacma_tr_lan2", "sl_galleryrail1" },
+	{ 3977, "lanriver", "stormdrain1b_sl" },
+	{ 3977, "lanriver", "stormdrain1_nt" },
+	{ 3990, "lanroad", "lakerbcol" },
+	{ 3990, "lanroad", "sl_pavebutt1" },
+	{ 5149, "lasground2_las2", "driveway4_128" },
+	{ 5149, "lasground2_las2", "garage_roof" },
+	{ 5149, "lasground2_las2", "gragewinkb1" },
+	{ 5149, "lasground2_las2", "rooftoprd128" },
+	{ 5113, "lasground_las2", "general01_law" },
+	{ 5113, "lasground_las2", "sjmbarber21" },
+	{ 5142, "lashops1b_las2", "lasjmslumwall" },
+	{ 5142, "lashops1b_las2", "lasplaza2" },
+	{ 5142, "lashops1b_las2", "lasplaza3" },
+	{ 5142, "lashops1b_las2", "lasplaza5" },
+	{ 5142, "lashops1b_las2", "lasplaza8" },
+	{ 5142, "lashops1b_las2", "lasplaza91" },
+	{ 5142, "lashops1b_las2", "lasplaza92" },
+	{ 5142, "lashops1b_las2", "mural03_LA" },
+	{ 5142, "lashops1b_las2", "sanpedshpito" },
+	{ 5142, "lashops1b_las2", "sjmhoodaab" },
+	{ 5142, "lashops1b_las2", "sjmhoodaac" },
+	{ 5142, "lashops1b_las2", "snpdwhit2" },
+	{ 5110, "lashops1_las2", "crenhous2" },
+	{ 5110, "lashops1_las2", "sanpshop5z" },
+	{ 5110, "lashops1_las2", "sjmhicut3las" },
+	{ 5168, "lashops6_las2", "sw_wind12" },
+	{ 5168, "lashops6_las2", "yellow2_128" },
+	{ 5267, "lashops91_las2", "laspowrec2" },
+	{ 5180, "lashops93_las2", "snpedshptst1" },
+	{ 5180, "lashops93_las2", "snpedshptst2" },
+	{ 5180, "lashops93_las2", "Window1164HV" },
+	{ 14718, "lasmall1int2", "burglry_wall7" },
+	{ 14718, "lasmall1int2", "cooker1" },
+	{ 14718, "lasmall1int2", "hob_1" },
+	{ 14718, "lasmall1int2", "kb_sink2" },
+	{ 14718, "lasmall1int2", "la_kitch4" },
+	{ 14718, "lasmall1int2", "washmchne_1" },
+	{ 15031, "lasmallsave", "ab_tile4" },
+	{ 5106, "lasraodnshops", "sanpedmot2" },
+	{ 5106, "lasraodnshops", "sanpedton2" },
+	{ 4807, "lasroads_las", "newall8-1" },
+	{ 5120, "lasroads_las2", "lasunion994" },
+	{ 5120, "lasroads_las2", "snpedtest1BLND" },
+	{ 3620, "lasxrefdock", "boatcables_128" },
+	{ 3620, "lasxrefdock", "sanpedock6" },
+	{ 3620, "lasxrefdock", "sanpedock96" },
+	{ 3620, "lasxrefdock", "sjmlawarlit" },
+	{ 3620, "lasxrefdock", "sjmlawarlit1" },
+	{ 3620, "lasxrefdock", "ws_goldengate5b" },
+	{ 3761, "lasxrefdockbox", "shadow1shelfd" },
+	{ 3761, "lasxrefdockbox", "sjmlawarshel" },
+	{ 3761, "lasxrefdockbox", "sjmlawarshel2" },
+	{ 3749, "law2misc_lax", "cemewall01_law" },
+	{ 3749, "law2misc_lax", "sanwel1" },
+	{ 3749, "law2misc_lax", "sanwel4" },
+	{ 6291, "law2_roadsb", "anwfrntbev6" },
+	{ 6291, "law2_roadsb", "nicepavegras_LA" },
+	{ 6205, "lawartg", "luxorwall01_128" },
+	{ 1980, "lawest1", "fillertop01_law" },
+	{ 1980, "lawest1", "fillertop02_law" },
+	{ 1980, "lawest1", "shoptop01_law" },
+	{ 1980, "lawest1", "sunsetmall05_law" },
+	{ 6293, "lawland2", "asanlithus1" },
+	{ 6293, "lawland2", "asanlithus2" },
+	{ 6293, "lawland2", "asanlithus3" },
+	{ 6293, "lawland2", "asanmonhrbwal1" },
+	{ 6293, "lawland2", "compcourtrail1" },
+	{ 6293, "lawland2", "lasjmflat1" },
+	{ 6293, "lawland2", "lightglass" },
+	{ 5813, "lawnabv", "bargainpawn1_256" },
+	{ 5813, "lawnabv", "dwntwnvgn1_128]" },
+	{ 5813, "lawnabv", "nudexxxsign1_256" },
+	{ 5813, "lawnabv", "vgnwstshop1_256" },
+	{ 5813, "lawnabv", "vgnwstshop4_256" },
+	{ 5813, "lawnabv", "vgnwstshoptop_256" },
+	{ 5813, "lawnabv", "ws_corr_wall1" },
+	{ 3684, "lawnapartxref", "genroof03_128" },
+	{ 3684, "lawnapartxref", "vgnbalcony1_256" },
+	{ 3684, "lawnapartxref", "vnghse4_256" },
+	{ 3684, "lawnapartxref", "vnghse5_256" },
+	{ 5728, "lawnbit", "frostedglass256128" },
+	{ 5857, "lawnbuy", "ws_starballs" },
+	{ 5713, "lawnest2", "concrete_64HV" },
+	{ 5713, "lawnest2", "grave02_law" },
+	{ 5713, "lawnest2", "grave03_law" },
+	{ 5713, "lawnest2", "grave04_law" },
+	{ 5713, "lawnest2", "grave05_law" },
+	{ 5810, "lawnstripm", "papercuts" },
+	{ 5810, "lawnstripm", "savsig1" },
+	{ 5810, "lawnstripm", "savsig4" },
+	{ 5810, "lawnstripm", "sodom_law" },
+	{ 3676, "lawnxref", "lasthoose1" },
+	{ 3676, "lawnxref", "lasthoose1blue" },
+	{ 3676, "lawnxref", "lasthoose2" },
+	{ 3676, "lawnxref", "lasthoose3" },
+	{ 3676, "lawnxref", "lasthoose4" },
+	{ 3676, "lawnxref", "lasthoose4blue" },
+	{ 3676, "lawnxref", "lasthoose5" },
+	{ 3676, "lawnxref", "lasthoose6" },
+	{ 6038, "lawwhitebuilds", "buzzer_law" },
+	{ 6038, "lawwhitebuilds", "gasstopwall1_256" },
+	{ 6038, "lawwhitebuilds", "GB_blend01" },
+	{ 6038, "lawwhitebuilds", "musk3" },
+	{ 6038, "lawwhitebuilds", "planterend_law" },
+	{ 6038, "lawwhitebuilds", "planterside_law" },
+	{ 6038, "lawwhitebuilds", "plantertop_law" },
+	{ 6038, "lawwhitebuilds", "venwin03_lawlit" },
+	{ 6038, "lawwhitebuilds", "wilsa_01b_lalit" },
+	{ 6038, "lawwhitebuilds", "wilsc_01_la" },
+	{ 6064, "law_beach1", "avenpol4" },
+	{ 6064, "law_beach1", "beachwalk_law" },
+	{ 6064, "law_beach1", "musk1" },
+	{ 6064, "law_beach1", "musk2" },
+	{ 6064, "law_beach1", "musk4" },
+	{ 6064, "law_beach1", "musk5" },
+	{ 6049, "law_beach2", "beachut1back256" },
+	{ 6049, "law_beach2", "blueshade3_64" },
+	{ 6049, "law_beach2", "glasses2_law" },
+	{ 6049, "law_beach2", "greenshade_64" },
+	{ 6049, "law_beach2", "law_gazcoast3" },
+	{ 6049, "law_beach2", "law_gazcoast4" },
+	{ 6049, "law_beach2", "lombard_build2_3" },
+	{ 6049, "law_beach2", "Lombard_door1" },
+	{ 6049, "law_beach2", "luxorwall02_128" },
+	{ 6040, "law_cnrtplaz", "creamshop1_LAe" },
+	{ 6040, "law_cnrtplaz", "off01bot_law" },
+	{ 6040, "law_cnrtplaz", "off01mid_law" },
+	{ 6040, "law_cnrtplaz", "off01top_law" },
+	{ 2895, "law_coffinfl", "hot_flowers1" },
+	{ 2895, "law_coffinfl", "hot_flowers2" },
+	{ 2898, "law_coffintu", "faketurf_law" },
+	{ 2896, "law_coffintxd", "caskdrape_law" },
+	{ 2896, "law_coffintxd", "caskhandle_law" },
+	{ 2896, "law_coffintxd", "caskside2_law" },
+	{ 2896, "law_coffintxd", "casktop_law" },
+	{ 2896, "law_coffintxd", "metleg_32_law" },
+	{ 6052, "law_doontoon", "gz_lawbuilda_1" },
+	{ 6052, "law_doontoon", "gz_lawbuilda_2" },
+	{ 6052, "law_doontoon", "gz_lawbuilda_6" },
+	{ 6052, "law_doontoon", "gz_lawbuilda_7" },
+	{ 6052, "law_doontoon", "sfe_nicearch2" },
+	{ 6052, "law_doontoon", "sfe_nicearch3" },
+	{ 6052, "law_doontoon", "sf_windos_10b" },
+	{ 6052, "law_doontoon", "sf_window_mod1" },
+	{ 6052, "law_doontoon", "stepshoptop_law" },
+	{ 3586, "la_props1", "shutters2" },
+	{ 14802, "lee_bdupsflat", "Bdup_Bed" },
+	{ 14802, "lee_bdupsflat", "Bdup_cabinet" },
+	{ 14802, "lee_bdupsflat", "Bdup_Clock" },
+	{ 14802, "lee_bdupsflat", "Bdup_Cooker" },
+	{ 14802, "lee_bdupsflat", "Bdup_door" },
+	{ 14802, "lee_bdupsflat", "Bdup_Fridge" },
+	{ 14802, "lee_bdupsflat", "Bdup_GhettoB" },
+	{ 14802, "lee_bdupsflat", "Bdup_KitchDoor" },
+	{ 14802, "lee_bdupsflat", "Bdup_KitchSink" },
+	{ 14802, "lee_bdupsflat", "Bdup_lamp" },
+	{ 14802, "lee_bdupsflat", "Bdup_Light" },
+	{ 14802, "lee_bdupsflat", "Bdup_NetCurtains" },
+	{ 14802, "lee_bdupsflat", "Bdup_news" },
+	{ 14802, "lee_bdupsflat", "Bdup_phone" },
+	{ 14802, "lee_bdupsflat", "Bdup_Pillow" },
+	{ 14802, "lee_bdupsflat", "Bdup_Pizza" },
+	{ 14802, "lee_bdupsflat", "Bdup_plate" },
+	{ 14802, "lee_bdupsflat", "Bdup_Poster" },
+	{ 14802, "lee_bdupsflat", "Bdup_punters" },
+	{ 14802, "lee_bdupsflat", "Bdup_Rug" },
+	{ 14802, "lee_bdupsflat", "Bdup_Sofa" },
+	{ 14802, "lee_bdupsflat", "Bdup_table" },
+	{ 14802, "lee_bdupsflat", "Bdup_TV" },
+	{ 14802, "lee_bdupsflat", "Bdup_VCR" },
+	{ 14802, "lee_bdupsflat", "Bdup_Wine" },
+	{ 14802, "lee_bdupsflat", "CJ_LID" },
+	{ 14802, "lee_bdupsflat", "mp_Gen_Bin_Bag" },
+	{ 14802, "lee_bdupsflat", "mp_sprunk2dirty" },
+	{ 14802, "lee_bdupsflat", "USAflag" },
+	{ 14801, "lee_bdupsmain", "ahomcarpet" },
+	{ 14801, "lee_bdupsmain", "ahomcarpet2" },
+	{ 14801, "lee_bdupsmain", "Bdup_Blinds" },
+	{ 14801, "lee_bdupsmain", "Bdup_graf1" },
+	{ 14801, "lee_bdupsmain", "Bdup_graf2" },
+	{ 14801, "lee_bdupsmain", "Bdup_graf3" },
+	{ 14801, "lee_bdupsmain", "Bdup_graf4" },
+	{ 14801, "lee_bdupsmain", "Bdup_graf5" },
+	{ 14801, "lee_bdupsmain", "Bdup_KitchFloor" },
+	{ 14801, "lee_bdupsmain", "lasjmslumwin1" },
+	{ 14801, "lee_bdupsmain", "subindwall2" },
+	{ 2776, "lee_chair1", "Strip_Chair" },
+	{ 2776, "lee_chair1", "strip_metal" },
+	{ 3961, "lee_kitch", "ChipPan" },
+	{ 3961, "lee_kitch", "ChoppingBoard" },
+	{ 3961, "lee_kitch", "Cooker" },
+	{ 3961, "lee_kitch", "Cooker_Dial" },
+	{ 3961, "lee_kitch", "Freezer" },
+	{ 3961, "lee_kitch", "Grater" },
+	{ 3961, "lee_kitch", "KitchenUnits" },
+	{ 3961, "lee_kitch", "Knive1" },
+	{ 3961, "lee_kitch", "metal1" },
+	{ 3961, "lee_kitch", "metal2" },
+	{ 3961, "lee_kitch", "metal5" },
+	{ 3961, "lee_kitch", "metal6" },
+	{ 3961, "lee_kitch", "metal7" },
+	{ 3961, "lee_kitch", "Microwave" },
+	{ 3961, "lee_kitch", "Oil" },
+	{ 3961, "lee_kitch", "Oil2" },
+	{ 3961, "lee_kitch", "Pepper" },
+	{ 3961, "lee_kitch", "Pot1" },
+	{ 3961, "lee_kitch", "Pot3" },
+	{ 3961, "lee_kitch", "rack" },
+	{ 3961, "lee_kitch", "Roast" },
+	{ 3961, "lee_kitch", "SinkL" },
+	{ 3961, "lee_kitch", "Spatula" },
+	{ 3961, "lee_kitch", "Spices" },
+	{ 3961, "lee_kitch", "Steak" },
+	{ 14808, "lee_strip2", "HS3_wall1" },
+	{ 14808, "lee_strip2", "Strip_Carpet" },
+	{ 14808, "lee_strip2", "strip_carpet2" },
+	{ 14808, "lee_strip2", "Strip_Ceiling" },
+	{ 14808, "lee_strip2", "Strip_Chand" },
+	{ 14808, "lee_strip2", "Strip_curtain" },
+	{ 14808, "lee_strip2", "Strip_Dresser" },
+	{ 14808, "lee_strip2", "Strip_Gold" },
+	{ 14808, "lee_strip2", "strip_lights" },
+	{ 14808, "lee_strip2", "Strip_neon1" },
+	{ 14808, "lee_strip2", "Strip_neon2" },
+	{ 14808, "lee_strip2", "strip_neon_Curtain" },
+	{ 14808, "lee_strip2", "strip_neon_Flat" },
+	{ 14808, "lee_strip2", "strip_table" },
+	{ 14808, "lee_strip2", "Strip_Throne" },
+	{ 14808, "lee_strip2", "strip_wall" },
+	{ 14808, "lee_strip2", "Strip_wood" },
+	{ 14808, "lee_strip2", "WH_Hbed" },
+	{ 14808, "lee_strip2", "WH_Hbo1" },
+	{ 14811, "lee_strip2_1", "BeerGlass" },
+	{ 14811, "lee_strip2_1", "BeerGlass2" },
+	{ 14811, "lee_strip2_1", "BeerTap" },
+	{ 14811, "lee_strip2_1", "CJ_NEON_HEART" },
+	{ 14811, "lee_strip2_1", "Liquer" },
+	{ 14811, "lee_strip2_1", "till1" },
+	{ 14811, "lee_strip2_1", "VodkaBottle" },
+	{ 14811, "lee_strip2_1", "Winebottle2" },
+	{ 14811, "lee_strip2_1", "WineGlass2" },
+	{ 14832, "lee_stripclub", "cl_floornew_256" },
+	{ 14832, "lee_stripclub", "mirror_ref1" },
+	{ 14832, "lee_stripclub", "Strip_bar_wall1" },
+	{ 14832, "lee_stripclub", "Strip_ceiling" },
+	{ 14832, "lee_stripclub", "Strip_ladyDoor" },
+	{ 14832, "lee_stripclub", "Strip_neon3" },
+	{ 14832, "lee_stripclub", "Strip_neon4" },
+	{ 14832, "lee_stripclub", "Strip_plant" },
+	{ 14832, "lee_stripclub", "Strip_plantBark" },
+	{ 14832, "lee_stripclub", "Strip_plantPot" },
+	{ 14832, "lee_stripclub", "Strip_podium" },
+	{ 14832, "lee_stripclub", "Strip_podium2" },
+	{ 14832, "lee_stripclub", "Strip_sofa" },
+	{ 14832, "lee_stripclub", "Strip_sofa2" },
+	{ 14832, "lee_stripclub", "Strip_wood_floor" },
+	{ 14829, "lee_stripclub1", "Strip_light" },
+	{ 14839, "lee_strippriv", "Strip_Ashtray" },
+	{ 14839, "lee_strippriv", "Strip_DrinkCab" },
+	{ 14839, "lee_strippriv", "Strip_Fan" },
+	{ 14839, "lee_strippriv", "Strip_Private" },
+	{ 14839, "lee_strippriv", "Strip_Sign12" },
+	{ 14839, "lee_strippriv", "WH_Chang" },
+	{ 14839, "lee_strippriv", "WH_Chang1" },
+	{ 14839, "lee_strippriv", "WH_Cpik" },
+	{ 14839, "lee_strippriv", "WH_Curtains" },
+	{ 14839, "lee_strippriv", "WH_fan" },
+	{ 14839, "lee_strippriv", "WH_Sofa" },
+	{ 14812, "lee_studhall", "carpet" },
+	{ 14812, "lee_studhall", "GoldDisk1" },
+	{ 14812, "lee_studhall", "GoldDisk2" },
+	{ 14812, "lee_studhall", "GoldDisk3" },
+	{ 14812, "lee_studhall", "GoldDisk4" },
+	{ 14812, "lee_studhall", "GoldDisk5" },
+	{ 14812, "lee_studhall", "GoldDisk6" },
+	{ 14812, "lee_studhall", "Papercup" },
+	{ 14812, "lee_studhall", "WaterCooler" },
+	{ 14812, "lee_studhall", "WaterCooler2" },
+	{ 2723, "lee_txd", "Strip_chair" },
+	{ 2723, "lee_txd", "Strip_lamp" },
+	{ 2723, "lee_txd", "Strip_table_base" },
+	{ 2723, "lee_txd", "Strip_table_top" },
+	{ 3904, "libertyfar", "buildtall1" },
+	{ 3904, "libertyfar", "china6a" },
+	{ 3904, "libertyfar", "china6d" },
+	{ 3904, "libertyfar", "Chinabuildnew1a" },
+	{ 3904, "libertyfar", "Chinabuildnew1b" },
+	{ 3904, "libertyfar", "Chinabuildnew1c" },
+	{ 3904, "libertyfar", "Chinabuilds06a" },
+	{ 3904, "libertyfar", "Chinabuilds06b" },
+	{ 3904, "libertyfar", "Chinabuilds06c" },
+	{ 3904, "libertyfar", "chinatwnfmrkt" },
+	{ 3904, "libertyfar", "chinatwnfmrktb" },
+	{ 3904, "libertyfar", "chnaquadhouse1" },
+	{ 3904, "libertyfar", "chnaquadhouse2" },
+	{ 3904, "libertyfar", "entlev" },
+	{ 3904, "libertyfar", "fishroof" },
+	{ 3904, "libertyfar", "indhibuild10_l0r" },
+	{ 3904, "libertyfar", "indhibuild2a" },
+	{ 3904, "libertyfar", "indhibuild2b" },
+	{ 3904, "libertyfar", "indhibuild2c" },
+	{ 3904, "libertyfar", "indhibuild2d" },
+	{ 3904, "libertyfar", "indhibuild3_l0" },
+	{ 3904, "libertyfar", "luigiscluba" },
+	{ 3904, "libertyfar", "mainten2a" },
+	{ 3904, "libertyfar", "mainten2b" },
+	{ 3904, "libertyfar", "mainten2c" },
+	{ 3904, "libertyfar", "mainten2d" },
+	{ 3904, "libertyfar", "mainten364" },
+	{ 3904, "libertyfar", "mainten3a" },
+	{ 3904, "libertyfar", "mainten3b" },
+	{ 3904, "libertyfar", "mainten3c" },
+	{ 3904, "libertyfar", "newtenmt1" },
+	{ 3904, "libertyfar", "newtenmt2" },
+	{ 3904, "libertyfar", "newtenmt3" },
+	{ 3904, "libertyfar", "newtenmt4" },
+	{ 3904, "libertyfar", "newtenmt6" },
+	{ 3904, "libertyfar", "newtenmt7" },
+	{ 3904, "libertyfar", "newtenx" },
+	{ 3904, "libertyfar", "Paveblank_64hv" },
+	{ 3904, "libertyfar", "redbuild06a" },
+	{ 3904, "libertyfar", "redbuild06b" },
+	{ 3904, "libertyfar", "redbuild12a" },
+	{ 3904, "libertyfar", "redbuild12b" },
+	{ 3904, "libertyfar", "redbuild12c" },
+	{ 3904, "libertyfar", "redbuild12d" },
+	{ 3904, "libertyfar", "redlightbuild04b" },
+	{ 3904, "libertyfar", "redlightbuild04_dyr_l0" },
+	{ 3904, "libertyfar", "redlightbuild06b_l0f" },
+	{ 3904, "libertyfar", "redlightbuild06e_l0b" },
+	{ 3904, "libertyfar", "redlightbuild06e_l0f" },
+	{ 3904, "libertyfar", "redlightbuild06v_l0b" },
+	{ 3904, "libertyfar", "redlightbuild06v_l0f" },
+	{ 3904, "libertyfar", "redlightbuild08a_l0b" },
+	{ 3904, "libertyfar", "redlightbuild08a_l0f" },
+	{ 3904, "libertyfar", "redlightbuild09f1" },
+	{ 3904, "libertyfar", "redlightbuild09f2" },
+	{ 3904, "libertyfar", "redlightbuild10f" },
+	{ 3904, "libertyfar", "redlightbuild11_l0f" },
+	{ 3904, "libertyfar", "redlightbuild12_l0b" },
+	{ 3904, "libertyfar", "rizzo2" },
+	{ 3904, "libertyfar", "steps" },
+	{ 3904, "libertyfar", "subplat" },
+	{ 3904, "libertyfar", "subplatyell" },
+	{ 3904, "libertyfar", "support_water256" },
+	{ 3904, "libertyfar", "support_water64" },
+	{ 3904, "libertyfar", "tallbuild" },
+	{ 3904, "libertyfar", "tenblock6" },
+	{ 3904, "libertyfar", "towerflat" },
+	{ 3897, "libertyhi", "blueshop128" },
+	{ 3897, "libertyhi", "bricksoftgrey128" },
+	{ 3897, "libertyhi", "concretebuild64" },
+	{ 3897, "libertyhi", "greytendetwin256128" },
+	{ 3897, "libertyhi", "inddoordark128" },
+	{ 3897, "libertyhi", "inddoorway128" },
+	{ 3897, "libertyhi", "indtendark64" },
+	{ 3897, "libertyhi", "ledge4_64H" },
+	{ 3897, "libertyhi", "marcos01_128" },
+	{ 3897, "libertyhi", "newallkb1128" },
+	{ 3897, "libertyhi", "newallktenb1128" },
+	{ 3897, "libertyhi", "newtreea128" },
+	{ 3897, "libertyhi", "Newtreeb256" },
+	{ 3897, "libertyhi", "railhi_64V" },
+	{ 3897, "libertyhi", "railmesh_64" },
+	{ 3897, "libertyhi", "railtrack_64" },
+	{ 3897, "libertyhi", "Road_yellowline256HV" },
+	{ 3897, "libertyhi", "wallmix64HV" },
+	{ 3905, "libertyhi2", "alleypave_64V" },
+	{ 3905, "libertyhi2", "artgal_128" },
+	{ 3905, "libertyhi2", "bank1_64" },
+	{ 3905, "libertyhi2", "bank3_64" },
+	{ 3905, "libertyhi2", "bankdoor_64a" },
+	{ 3905, "libertyhi2", "inddoor7" },
+	{ 3905, "libertyhi2", "indtena128" },
+	{ 3905, "libertyhi2", "ind_tentop128" },
+	{ 3905, "libertyhi2", "ledge_uni_64H" },
+	{ 3905, "libertyhi2", "newall_harling_sless128" },
+	{ 3905, "libertyhi2", "Pillarbrickgrey_64HV" },
+	{ 3905, "libertyhi2", "tenabrick64" },
+	{ 3905, "libertyhi2", "tenbeige128" },
+	{ 3905, "libertyhi2", "tenbeigebrick64" },
+	{ 3902, "libertyhi3", "cafea64" },
+	{ 3902, "libertyhi3", "glass2_64" },
+	{ 3902, "libertyhi3", "ledgetop_64HV" },
+	{ 3902, "libertyhi3", "marcos02_128" },
+	{ 3902, "libertyhi3", "metfence2_64HV" },
+	{ 3902, "libertyhi3", "newall9-1128" },
+	{ 3902, "libertyhi3", "shopdoor3_64" },
+	{ 3902, "libertyhi3", "taxi_256128" },
+	{ 3906, "libertyhi5", "chipboardgrating64HV" },
+	{ 3906, "libertyhi5", "concrete02_64HV" },
+	{ 3906, "libertyhi5", "dragtop_64h" },
+	{ 3906, "libertyhi5", "grating 64HV" },
+	{ 3906, "libertyhi5", "indcleaner128" },
+	{ 3906, "libertyhi5", "inddoor3" },
+	{ 3906, "libertyhi5", "indnailshop128" },
+	{ 3906, "libertyhi5", "indredten128" },
+	{ 3906, "libertyhi5", "indten2btm128" },
+	{ 3906, "libertyhi5", "indten2top128" },
+	{ 3906, "libertyhi5", "indtenbtm128" },
+	{ 3906, "libertyhi5", "indtentop128" },
+	{ 3906, "libertyhi5", "ind_italdeli128" },
+	{ 3906, "libertyhi5", "ind_italywinda128" },
+	{ 3906, "libertyhi5", "ind_photo256128" },
+	{ 3906, "libertyhi5", "ind_store128" },
+	{ 3906, "libertyhi5", "ind_window" },
+	{ 3906, "libertyhi5", "italyawalll64" },
+	{ 3906, "libertyhi5", "italy_cds128" },
+	{ 3906, "libertyhi5", "ledgegreen_64H" },
+	{ 3906, "libertyhi5", "ledge_detl_256128" },
+	{ 3906, "libertyhi5", "newall9d_16c128" },
+	{ 3906, "libertyhi5", "nicewhttop256128" },
+	{ 3906, "libertyhi5", "ornatetall256128" },
+	{ 3906, "libertyhi5", "shopgrating128H" },
+	{ 3906, "libertyhi5", "TENdblue2_128" },
+	{ 3906, "libertyhi5", "TENdbrown5_128" },
+	{ 3906, "libertyhi5", "tenreditaly128" },
+	{ 3906, "libertyhi5", "TENterr2_128" },
+	{ 3906, "libertyhi5", "wallbrown02_64HV" },
+	{ 3906, "libertyhi5", "walldirtynewa256128" },
+	{ 3906, "libertyhi5", "walldirtyneward256128" },
+	{ 4726, "libhelipad_lan2", "dt_twinklylites" },
+	{ 4726, "libhelipad_lan2", "footplate_gz" },
+	{ 4726, "libhelipad_lan2", "helipad_basepanel" },
+	{ 4726, "libhelipad_lan2", "helipad_whitelines" },
+	{ 4726, "libhelipad_lan2", "helipad_yellowline" },
+	{ 17944, "lngblok_lae2", "downtsign14_LA" },
+	{ 17944, "lngblok_lae2", "grnboard_law" },
+	{ 17944, "lngblok_lae2", "sw_wind22" },
+	{ 17944, "lngblok_lae2", "white64bumpy" },
+	{ 10052, "lomall", "club_metal_sfw" },
+	{ 10052, "lomall", "helipad_leg" },
+	{ 10052, "lomall", "lomall_ext1_" },
+	{ 10052, "lomall", "lomall_ext3_" },
+	{ 10052, "lomall", "tileornateg256" },
+	{ 10052, "lomall", "zombiegeddon" },
+	{ 9947, "lombard", "lombard_build1_3" },
+	{ 9947, "lombard", "lombard_build3_2" },
+	{ 9947, "lombard", "lombard_build3_3" },
+	{ 9947, "lombard", "lombard_build3_4" },
+	{ 9947, "lombard", "lombard_sfe" },
+	{ 9947, "lombard", "pier69_ground1" },
+	{ 9947, "lombard", "windy_SF" },
+	{ 17546, "losflor2_lae2", "hydrowin1_LAe" },
+	{ 17538, "losflor4_lae2", "ventc128" },
+	{ 17538, "losflor4_lae2", "wallbrown64HV" },
+	{ 1255, "lounger", "lounger_back" },
+	{ 1255, "lounger", "lounger_bits" },
+	{ 8496, "lowbuild03_lvs", "vgshopwall01_128" },
+	{ 8496, "lowbuild03_lvs", "vgshopwall02_128" },
+	{ 8496, "lowbuild03_lvs", "vgshopwall03_64" },
+	{ 8496, "lowbuild03_lvs", "vgshopwall04_64" },
+	{ 8496, "lowbuild03_lvs", "vgshopwall06_64" },
+	{ 14780, "lring_gmint3", "clamp" },
+	{ 14780, "lring_gmint3", "crash_pad" },
+	{ 14780, "lring_gmint3", "crash_pad_red" },
+	{ 14780, "lring_gmint3", "nuringtest" },
+	{ 14780, "lring_gmint3", "nuringtest2" },
+	{ 14780, "lring_gmint3", "ringbase" },
+	{ 14780, "lring_gmint3", "ROPE_1" },
+	{ 8398, "luxorland", "luxorfloor01_256" },
+	{ 8398, "luxorland", "luxorfloor02_128" },
+	{ 8397, "luxorpillar1", "luxorpillar01_128" },
+	{ 3441, "luxorpillar2", "luxorpillar02_256" },
+	{ 8589, "lwbldstuff03", "biglips_128" },
+	{ 8589, "lwbldstuff03", "filmcase01_64" },
+	{ 8589, "lwbldstuff03", "filmstrip01_64" },
+	{ 8589, "lwbldstuff03", "lipstick_64" },
+	{ 14841, "l_gymers", "ab_boxingFloor" },
+	{ 5458, "macpark1tr_lae", "cobbles_kb_edge_128" },
+	{ 5458, "macpark1tr_lae", "grasslong256" },
+	{ 5458, "macpark1tr_lae", "macpath_LAe" },
+	{ 14425, "madbedrooms", "ah_wallstyle2" },
+	{ 14389, "madpoolbit", "AH_flroortile4" },
+	{ 14623, "mafcasmain", "ab_carpGreenEdge" },
+	{ 14623, "mafcasmain", "ab_MarbleDiamond" },
+	{ 14623, "mafcasmain", "ab_panel5" },
+	{ 14623, "mafcasmain", "ab_tileStar" },
+	{ 14623, "mafcasmain", "ab_tileStar2" },
+	{ 14623, "mafcasmain", "casino_carp" },
+	{ 14623, "mafcasmain", "ele_flr" },
+	{ 14623, "mafcasmain", "marble_wall" },
+	{ 14623, "mafcasmain", "marble_wall2" },
+	{ 14623, "mafcasmain", "sign_managerSuite" },
+	{ 14626, "mafcassigns1", "sign_placeYourBets" },
+	{ 14642, "mafcasspiral", "sign_CaligulaWin" },
+	{ 14590, "mafcastopfoor", "ab_carpet01" },
+	{ 14590, "mafcastopfoor", "ab_stairwellLwr" },
+	{ 14590, "mafcastopfoor", "cop_ceiling1" },
+	{ 14590, "mafcastopfoor", "donut_wall1" },
+	{ 3089, "mafcasx", "cof_wind1" },
+	{ 14636, "mafcas_signs", "sign_careful" },
+	{ 14636, "mafcas_signs", "sign_caution" },
+	{ 14636, "mafcas_signs", "sign_donot" },
+	{ 14636, "mafcas_signs", "sign_notice" },
+	{ 14621, "mafiacasinodl", "sign_bank&change" },
+	{ 14576, "mafiacasinovault01", "ab_vaultboxes" },
+	{ 14576, "mafiacasinovault01", "ab_vaultmetal" },
+	{ 3053, "magnetx", "magnetY" },
+	{ 5848, "mainlcawn", "24hoursign1_LAwN" },
+	{ 5848, "mainlcawn", "cashdispenser1_256" },
+	{ 5848, "mainlcawn", "downtsign16_LA" },
+	{ 5848, "mainlcawn", "fakestone2_LA" },
+	{ 5848, "mainlcawn", "sexsign1_LAwn" },
+	{ 5848, "mainlcawn", "striplight01_128" },
+	{ 5848, "mainlcawn", "touristbureauLAwN" },
+	{ 14572, "maint1", "ab_maintDoors" },
+	{ 14572, "maint1", "main_floor" },
+	{ 14572, "maint1", "main_wall" },
+	{ 6048, "mall_law", "frostdoor01_law" },
+	{ 6048, "mall_law", "lascourtsc1" },
+	{ 6048, "mall_law", "malltwr01_law" },
+	{ 6048, "mall_law", "malltwr02_law" },
+	{ 6048, "mall_law", "mallvent_LAW" },
+	{ 6048, "mall_law", "stonemall_law" },
+	{ 6048, "mall_law", "veronamall_law" },
+	{ 6048, "mall_law", "wolf1" },
+	{ 6048, "mall_law", "wolf2" },
+	{ 6048, "mall_law", "wolf3" },
+	{ 6048, "mall_law", "wolf4" },
+	{ 6048, "mall_law", "wolf6b" },
+	{ 10973, "mall_sfse", "mallfloor3" },
+	{ 10973, "mall_sfse", "ws_grilleshade" },
+	{ 10973, "mall_sfse", "ws_shopfront1a" },
+	{ 10973, "mall_sfse", "ws_trainstationwin2" },
+	{ 14702, "masmall3int2", "HS2_Curt2" },
+	{ 14702, "masmall3int2", "HS2_wall3" },
+	{ 14702, "masmall3int2", "HS3_Light" },
+	{ 14702, "masmall3int2", "HS3_wall3" },
+	{ 14702, "masmall3int2", "HS3_wall4" },
+	{ 14702, "masmall3int2", "HS3_wall6" },
+	{ 5787, "melrose02_lawn", "LAstripmall2" },
+	{ 5787, "melrose02_lawn", "melrblu_law" },
+	{ 5787, "melrose02_lawn", "melrgr01_law" },
+	{ 5787, "melrose02_lawn", "melrgren2_law" },
+	{ 5787, "melrose02_lawn", "melrpurp2_law" },
+	{ 5787, "melrose02_lawn", "shopfr01_LA" },
+	{ 5787, "melrose02_lawn", "shopfr02_LA" },
+	{ 5780, "melrose03_lawn", "hollyshop01_LAwn" },
+	{ 5780, "melrose03_lawn", "hollyshop02_LAwn" },
+	{ 5780, "melrose03_lawn", "hollyshop03_LAwn" },
+	{ 5780, "melrose03_lawn", "hollyshop04_LAwn" },
+	{ 5780, "melrose03_lawn", "ws_apartmentmankypeach1" },
+	{ 5730, "melrose05_lawn", "melrbr01_law" },
+	{ 5730, "melrose05_lawn", "melrbr02_law" },
+	{ 5704, "melrose07_lawn", "decotop_law" },
+	{ 5704, "melrose07_lawn", "shopdeco01b_law" },
+	{ 5704, "melrose07_lawn", "shopdeco01_law" },
+	{ 5704, "melrose07_lawn", "shopdeco02_law" },
+	{ 5704, "melrose07_lawn", "shopdeco03b_law" },
+	{ 5704, "melrose07_lawn", "shopdeco03c_law" },
+	{ 5704, "melrose07_lawn", "shopdeco03_law" },
+	{ 5704, "melrose07_lawn", "shopwall01_law" },
+	{ 5704, "melrose07_lawn", "ws_conc_step1" },
+	{ 5733, "melrose08_lawn", "base5_1" },
+	{ 5733, "melrose08_lawn", "malawn01_LAwN" },
+	{ 5733, "melrose08_lawn", "malawn02_LAwN" },
+	{ 5733, "melrose08_lawn", "melrdoor01_law" },
+	{ 5733, "melrose08_lawn", "melroran2_law" },
+	{ 5733, "melrose08_lawn", "melryel_law" },
+	{ 5771, "melrose11_lawn", "melrshop05_LAwN" },
+	{ 5771, "melrose11_lawn", "melrshop06_LAwN" },
+	{ 5771, "melrose11_lawn", "melrshop07_LAwN" },
+	{ 5771, "melrose11_lawn", "melrsign04_LA" },
+	{ 5771, "melrose11_lawn", "melrsign07_LA" },
+	{ 5771, "melrose11_lawn", "melrsign08_LA" },
+	{ 5732, "melrose12_lawn", "comptwall39" },
+	{ 5732, "melrose12_lawn", "melrshop01_LAwN" },
+	{ 5732, "melrose12_lawn", "melrshop03_LAwN" },
+	{ 5732, "melrose12_lawn", "melrsign01_LA" },
+	{ 5732, "melrose12_lawn", "melrwall01_LAw" },
+	{ 5773, "melrose13_lawn", "downtwin19" },
+	{ 5773, "melrose13_lawn", "downtwin22" },
+	{ 5773, "melrose13_lawn", "LAplaza1" },
+	{ 5773, "melrose13_lawn", "recshop01_LA" },
+	{ 5773, "melrose13_lawn", "recshop02_LA" },
+	{ 5773, "melrose13_lawn", "shopfr03_LA" },
+	{ 5731, "melrose15_lawn", "2winsmel_law" },
+	{ 5731, "melrose15_lawn", "melrshut01_law" },
+	{ 5731, "melrose15_lawn", "melrshut02_law" },
+	{ 5731, "melrose15_lawn", "melrshut03_law" },
+	{ 5731, "melrose15_lawn", "melrsign03_LA" },
+	{ 5731, "melrose15_lawn", "melrsign05_LA" },
+	{ 5731, "melrose15_lawn", "melryel02_law" },
+	{ 5731, "melrose15_lawn", "yoyojos_law" },
+	{ 5737, "melrose16_lawn", "frostwin01_law" },
+	{ 5737, "melrose16_lawn", "planterbev01_law" },
+	{ 5737, "melrose16_lawn", "shopdeco06_law" },
+	{ 5737, "melrose16_lawn", "shopface08_law" },
+	{ 5737, "melrose16_lawn", "shoptop02_law" },
+	{ 5709, "melrose17_lawn", "shopface01_law" },
+	{ 5709, "melrose17_lawn", "shopface02bl_law" },
+	{ 5709, "melrose17_lawn", "shopface02c_law" },
+	{ 5709, "melrose17_lawn", "shopface06_law" },
+	{ 5709, "melrose17_lawn", "shopwin02_law" },
+	{ 5709, "melrose17_lawn", "shopwin06_law" },
+	{ 5785, "melrosetr1_lawn", "711doors1" },
+	{ 5785, "melrosetr1_lawn", "blob1_LAwN" },
+	{ 5789, "melrosetr_lawn", "melrsign06_LA" },
+	{ 10281, "michgar", "michelle_car1" },
+	{ 10281, "michgar", "michelle_car2" },
+	{ 10281, "michgar", "michelle_car3" },
+	{ 10281, "michgar", "toolwall2" },
+	{ 3267, "milbase", "a51_boffstuff2" },
+	{ 3267, "milbase", "a51_boffstuff4" },
+	{ 3267, "milbase", "a51_light1" },
+	{ 3267, "milbase", "CJ_FILLING" },
+	{ 3267, "milbase", "lightblue_64" },
+	{ 3267, "milbase", "lightred2_32" },
+	{ 3267, "milbase", "sam_camobits" },
+	{ 2985, "minigx", "mini_base" },
+	{ 3056, "minimex", "kmb_dynamite" },
+	{ 7630, "miragecasino1", "cparkvgn1_256" },
+	{ 7630, "miragecasino1", "cparkvgn2_256" },
+	{ 7630, "miragecasino1", "cparkvgn3_256" },
+	{ 7630, "miragecasino1", "cparkvgn4_256" },
+	{ 7630, "miragecasino1", "maxhead4" },
+	{ 7630, "miragecasino1", "ws_carparknew5" },
+	{ 7553, "miragecasino2", "miragepillar1_256" },
+	{ 7553, "miragecasino2", "miragepillar2_256" },
+	{ 7553, "miragecasino2", "miragesign1_256" },
+	{ 7553, "miragecasino2", "miragesign2_256" },
+	{ 7553, "miragecasino2", "miragewall1" },
+	{ 7553, "miragecasino2", "miragewall2" },
+	{ 7553, "miragecasino2", "miragewall3" },
+	{ 7553, "miragecasino2", "miragewall4_256" },
+	{ 7553, "miragecasino2", "miragewall5_256" },
+	{ 7553, "miragecasino2", "miragewall6_256" },
+	{ 7553, "miragecasino2", "visagesign2_256" },
+	{ 3786, "missiles_sfs", "ws_greyfoam" },
+	{ 3786, "missiles_sfs", "ws_packingcase1" },
+	{ 10982, "mission2apts_sfse", "ws_aptwin" },
+	{ 10982, "mission2apts_sfse", "ws_ed_shop5" },
+	{ 10982, "mission2apts_sfse", "ws_ed_shop9b" },
+	{ 10988, "mission2_sfse", "ws_apartmentyello1" },
+	{ 10988, "mission2_sfse", "ws_apartmentyello2" },
+	{ 10988, "mission2_sfse", "ws_apartmentyello3" },
+	{ 10988, "mission2_sfse", "ws_buildblock1a" },
+	{ 10988, "mission2_sfse", "ws_buildblock1b" },
+	{ 10988, "mission2_sfse", "ws_fancywallpink" },
+	{ 10988, "mission2_sfse", "ws_fancywindowpink" },
+	{ 10988, "mission2_sfse", "ws_shopfront1b" },
+	{ 10980, "mission3z_sfse", "ws_ed_shop6" },
+	{ 10981, "mission3_sfse", "ws_buildblock2a" },
+	{ 10981, "mission3_sfse", "ws_buildblock2b" },
+	{ 10981, "mission3_sfse", "ws_buildblock2c" },
+	{ 10981, "mission3_sfse", "ws_classyshop1" },
+	{ 10981, "mission3_sfse", "ws_ed_shop1" },
+	{ 10977, "mission_sfse", "ws_apartmentbrown1" },
+	{ 10977, "mission_sfse", "ws_apartmentbrown2" },
+	{ 10977, "mission_sfse", "ws_ed_shop8" },
+	{ 10977, "mission_sfse", "ws_ed_shop8_door" },
+	{ 1262, "mitraffic", "lamppost" },
+	{ 1262, "mitraffic", "Tafficlights" },
+	{ 1952, "mixkb1", "aluminum_1" },
+	{ 1952, "mixkb1", "chrome_tube2" },
+	{ 1952, "mixkb1", "chrome_tube3" },
+	{ 1952, "mixkb1", "deck_rim" },
+	{ 1952, "mixkb1", "mixer1" },
+	{ 1952, "mixkb1", "mixer2" },
+	{ 2967, "mobile93a", "mobile93a" },
+	{ 2966, "mobile93b", "mobile93b" },
+	{ 9907, "monlith_sfe", "sf_column1" },
+	{ 9907, "monlith_sfe", "sf_windos_4" },
+	{ 9907, "monlith_sfe", "sf_windos_5" },
+	{ 9907, "monlith_sfe", "sf_windos_6" },
+	{ 9907, "monlith_sfe", "window5b" },
+	{ 1692, "moregenroofstuff", "airvent_shadowT_gz" },
+	{ 1692, "moregenroofstuff", "mast_shadow_t" },
+	{ 1692, "moregenroofstuff", "skylight_meshed" },
+	{ 1692, "moregenroofstuff", "skylight_scum" },
+	{ 1692, "moregenroofstuff", "solar_panel_1" },
+	{ 3436, "motel01", "vegasfence01_64" },
+	{ 3436, "motel01", "vegasmotel01_128" },
+	{ 3436, "motel01", "vegasmotel02_128" },
+	{ 3436, "motel01", "vegasmotel03_64" },
+	{ 3436, "motel01", "vegasmoteldoor01_128" },
+	{ 3436, "motel01", "vegasmotelwind01_128" },
+	{ 3435, "motel01sign", "vegasmotelsign01_128" },
+	{ 3435, "motel01sign", "vegasmotelsign02_128" },
+	{ 3435, "motel01sign", "vegasmotelsign03_128" },
+	{ 5413, "motel_lae", "crakwindo1_LAe" },
+	{ 14482, "motel_skuzwin", "motel_curt1" },
+	{ 10386, "mountainsfs", "grass4dirty" },
+	{ 10386, "mountainsfs", "ws_stonewall" },
+	{ 14742, "mp3", "GB_rapposter02" },
+	{ 14742, "mp3", "GB_rapposter05" },
+	{ 18056, "mp_diner1", "mp_CJ_CARDBOARD128" },
+	{ 18056, "mp_diner1", "mp_cj_sheetmetal" },
+	{ 18056, "mp_diner1", "mp_diner_swing" },
+	{ 18056, "mp_diner1", "mp_diner_wall" },
+	{ 18058, "mp_diner2", "mp_diner_count" },
+	{ 18058, "mp_diner2", "mp_diner_counttop" },
+	{ 18058, "mp_diner2", "mp_diner_floordirt" },
+	{ 18058, "mp_diner2", "mp_diner_seats" },
+	{ 18058, "mp_diner2", "mp_diner_slats" },
+	{ 18058, "mp_diner2", "mp_diner_table" },
+	{ 18058, "mp_diner2", "mp_diner_tilewallALT" },
+	{ 14847, "mp_policesf", "mp_cop_carpet" },
+	{ 14847, "mp_policesf", "mp_cop_ceilingtile" },
+	{ 14847, "mp_policesf", "mp_cop_cell" },
+	{ 14847, "mp_policesf", "mp_cop_floor" },
+	{ 14847, "mp_policesf", "mp_cop_floor1" },
+	{ 14847, "mp_policesf", "mp_cop_lectern" },
+	{ 14847, "mp_policesf", "mp_cop_marble" },
+	{ 14847, "mp_policesf", "mp_cop_skirt" },
+	{ 14847, "mp_policesf", "mp_cop_skirting" },
+	{ 14847, "mp_policesf", "mp_cop_tile" },
+	{ 14847, "mp_policesf", "mp_cop_vinyl" },
+	{ 14847, "mp_policesf", "mp_cop_wallpink" },
+	{ 14847, "mp_policesf", "mp_tank_room" },
+	{ 14847, "mp_policesf", "mp_tank_roomplain" },
+	{ 11631, "mp_ranchcut", "CJ_PAINTING20" },
+	{ 11631, "mp_ranchcut", "CJ_PAINTING22" },
+	{ 11631, "mp_ranchcut", "CJ_PAINTING6" },
+	{ 11631, "mp_ranchcut", "Gen_Quallity_HiFi_Side" },
+	{ 11631, "mp_ranchcut", "mpCJ_Black_metal" },
+	{ 11631, "mp_ranchcut", "mpCJ_DarkWood" },
+	{ 11631, "mp_ranchcut", "mpCJ_Deer1" },
+	{ 11631, "mp_ranchcut", "mpCJ_GALVANISEDn" },
+	{ 11631, "mp_ranchcut", "mpCJ_HI_FI" },
+	{ 11631, "mp_ranchcut", "mpcj_speaker2" },
+	{ 11631, "mp_ranchcut", "mpCJ_SPEAKER4" },
+	{ 11631, "mp_ranchcut", "mpcj_speaker_6" },
+	{ 11631, "mp_ranchcut", "mpCJ_WOOD_DARK" },
+	{ 11631, "mp_ranchcut", "mpkbsofa333c" },
+	{ 11631, "mp_ranchcut", "mpman_tigr_rug" },
+	{ 11631, "mp_ranchcut", "mp_torenoshadA" },
+	{ 1726, "mrk_couches2", "kb_sofa5_256" },
+	{ 2013, "mrk_kitstuf", "ffrriiddggee__33" },
+	{ 2013, "mrk_kitstuf", "fridge_3" },
+	{ 18217, "mtbfencecs_t", "steel256256" },
+	{ 18217, "mtbfencecs_t", "ws_scaffoldscreen" },
+	{ 18268, "mtbtrackcs_t", "palmbark128" },
+	{ 3281, "mtb_banners", "xtreme_prolaps" },
+	{ 13721, "mulhousclahills", "residentialdoor3_256" },
+	{ 13673, "mullho03a_lahills", "desegravelgrassroadLA" },
+	{ 13673, "mullho03a_lahills", "gravelkb2_128" },
+	{ 13673, "mullho03a_lahills", "sw_wall02" },
+	{ 13711, "mullho03_lahills", "shadover_law" },
+	{ 13754, "mullholl_lahills", "redslates64_law" },
+	{ 9957, "multistory_sfe", "sfe_whitewall" },
+	{ 3121, "munchyx", "doughunt" },
+	{ 14735, "newcrak", "ab_rug" },
+	{ 14735, "newcrak", "ab_wall2" },
+	{ 14735, "newcrak", "AH_ArchitraveM" },
+	{ 14735, "newcrak", "AH_BLINDSM" },
+	{ 14735, "newcrak", "AH_flrwllM" },
+	{ 14735, "newcrak", "AH_skirtM" },
+	{ 14735, "newcrak", "AH_skirtscum" },
+	{ 14735, "newcrak", "AH_stripwallcln" },
+	{ 14735, "newcrak", "carp21S" },
+	{ 14735, "newcrak", "carp23S" },
+	{ 14735, "newcrak", "carpet-tile" },
+	{ 14735, "newcrak", "kbdirty_wall1" },
+	{ 11388, "newhubgrg1_sfse", "ws_hubbeams1" },
+	{ 11388, "newhubgrg1_sfse", "ws_hubbeams2" },
+	{ 1245, "newramp", "craneblnk_128" },
+	{ 1285, "newstand", "newstandnew256" },
+	{ 1285, "newstand", "newstandnew256back" },
+	{ 9223, "newstuff_sfn", "carlot1_LAn" },
+	{ 9223, "newstuff_sfn", "cm_clothing ad1" },
+	{ 9223, "newstuff_sfn", "oldflowerbed" },
+	{ 9223, "newstuff_sfn", "sl_preswallbot01" },
+	{ 1982, "new_cabinets", "cabinet_grill" },
+	{ 1982, "new_cabinets", "cabinet_hi1" },
+	{ 1982, "new_cabinets", "cabinet_hi1b" },
+	{ 1982, "new_cabinets", "cabinet_hi3" },
+	{ 1982, "new_cabinets", "cabinet_hilite" },
+	{ 1982, "new_cabinets", "meat1" },
+	{ 1982, "new_cabinets", "meat2" },
+	{ 1982, "new_cabinets", "shelf4" },
+	{ 1983, "new_cabinets2", "cereal2" },
+	{ 1983, "new_cabinets2", "cereal3" },
+	{ 1983, "new_cabinets2", "cereal4" },
+	{ 1983, "new_cabinets2", "powder1_1" },
+	{ 1983, "new_cabinets2", "powder1_2" },
+	{ 1983, "new_cabinets2", "shop_shelfnu2" },
+	{ 1983, "new_cabinets2", "shop_shelfnu3" },
+	{ 1983, "new_cabinets2", "shop_shelfnu4" },
+	{ 1983, "new_cabinets2", "shop_shelfnu5" },
+	{ 1983, "new_cabinets2", "sh_tins1" },
+	{ 1983, "new_cabinets2", "sh_tins2" },
+	{ 1981, "new_cabinets3", "butter_etc2" },
+	{ 1981, "new_cabinets3", "jarsss1" },
+	{ 1981, "new_cabinets3", "jarsss2" },
+	{ 1981, "new_cabinets3", "sauce1" },
+	{ 1981, "new_cabinets3", "shop_shelfnu6" },
+	{ 4720, "nightlights1_lan2", "sl_dtwinlights1" },
+	{ 4720, "nightlights1_lan2", "sl_dtwinlights3" },
+	{ 11410, "nightlights_sfse", "sfnitewindow_alfa" },
+	{ 5661, "nightlts_lae", "sl_dtwinlights2" },
+	{ 9932, "nitelites", "monlith_win_tex" },
+	{ 9932, "nitelites", "sfnitewindows" },
+	{ 17954, "nitelites_lae2", "nitwin01_LA" },
+	{ 4212, "nitewin_lan", "neonwin1" },
+	{ 8431, "nucarpark", "nucarpark01_128" },
+	{ 8431, "nucarpark", "nucarpark02_128" },
+	{ 8431, "nucarpark", "nucarpark03_128" },
+	{ 8431, "nucarpark", "nucarpark04_64" },
+	{ 8710, "nuhotel01", "nuhotel01_128" },
+	{ 8710, "nuhotel01", "nuhotel02_128" },
+	{ 8710, "nuhotel01", "nuhotel03_128" },
+	{ 8710, "nuhotel01", "nuhotel04_128" },
+	{ 8710, "nuhotel01", "nuhotel05_64" },
+	{ 8710, "nuhotel01", "nuhotel07_128" },
+	{ 8710, "nuhotel01", "nuhoteldoor01_128" },
+	{ 8710, "nuhotel01", "nuhoteldoor02_128" },
+	{ 8710, "nuhotel01", "nuhoteldoor03_128" },
+	{ 10350, "oc_flats_gnd_sfs", "ws_screenedfence_big" },
+	{ 10350, "oc_flats_gnd_sfs", "ws_stucco_red_1" },
+	{ 10350, "oc_flats_gnd_sfs", "ws_stucco_yello_1" },
+	{ 10350, "oc_flats_gnd_sfs", "ws_woodfence1" },
+	{ 1637, "od_beachstuff", "beachtowels" },
+	{ 1637, "od_beachstuff", "beachwood" },
+	{ 1637, "od_beachstuff", "beach_hut_128" },
+	{ 1637, "od_beachstuff", "lotion" },
+	{ 1637, "od_beachstuff", "loungertubes" },
+	{ 1637, "od_beachstuff", "lounger_matress" },
+	{ 1637, "od_beachstuff", "mbhutdr3" },
+	{ 1637, "od_beachstuff", "mbhutdr4" },
+	{ 1637, "od_beachstuff", "mbhutgre" },
+	{ 1637, "od_beachstuff", "mbhutsig" },
+	{ 1637, "od_beachstuff", "mbhutwin" },
+	{ 1637, "od_beachstuff", "mbhutyel" },
+	{ 1637, "od_beachstuff", "vbnet" },
+	{ 11326, "oldgarage_sfse", "ws_corr_2_plaintiled" },
+	{ 11326, "oldgarage_sfse", "ws_fuckedwin1" },
+	{ 11326, "oldgarage_sfse", "ws_xenon_used" },
+	{ 4850, "oldshops_las", "lasmulap7" },
+	{ 4850, "oldshops_las", "sanpedmark1" },
+	{ 4850, "oldshops_las", "sanpedmark2" },
+	{ 4850, "oldshops_las", "sanpedmark3" },
+	{ 4850, "oldshops_las", "sanpedmark4" },
+	{ 4850, "oldshops_las", "sanpedmark5" },
+	{ 4850, "oldshops_las", "snpedbutshp1" },
+	{ 4850, "oldshops_las", "snpedmat1" },
+	{ 4850, "oldshops_las", "snpedmat3" },
+	{ 4850, "oldshops_las", "snpedmat4" },
+	{ 4850, "oldshops_las", "snpedmat9" },
+	{ 16051, "oldwest", "snakefarmsign" },
+	{ 16051, "oldwest", "sw_hedstones" },
+	{ 8591, "olympic01", "nudedaily_256" },
+	{ 8591, "olympic01", "olympic01_128" },
+	{ 8591, "olympic01", "olympic02_128" },
+	{ 8591, "olympic01", "olympic03_64" },
+	{ 8591, "olympic01", "olympic05_64" },
+	{ 8591, "olympic01", "olympic06_64" },
+	{ 8591, "olympic01", "strippers1_256" },
+	{ 8591, "olympic01", "vgscityhwal1" },
+	{ 2754, "otb_machine", "ab_shinyPanel" },
+	{ 2754, "otb_machine", "lift4" },
+	{ 2754, "otb_machine", "mp_CJ_GALVANISED" },
+	{ 10249, "ottos2_sfw", "ottos_pics_sfe" },
+	{ 10249, "ottos2_sfw", "pinebranch1" },
+	{ 3857, "ottos_glass", "carshowroom1" },
+	{ 9953, "ottos_sfw", "carshowroom2" },
+	{ 9953, "ottos_sfw", "carshowroom3" },
+	{ 9953, "ottos_sfw", "carshowroomfloor" },
+	{ 9953, "ottos_sfw", "carshowroomrceiling" },
+	{ 13602, "ovalsurround", "dresswall1_256" },
+	{ 10166, "p69_rocks", "sfe_rock1" },
+	{ 10166, "p69_rocks", "sfe_rock2" },
+	{ 10166, "p69_rocks", "sfe_rock3" },
+	{ 14593, "papaerchaseoffice", "ab_blinds" },
+	{ 14593, "papaerchaseoffice", "ab_payphone1" },
+	{ 14593, "papaerchaseoffice", "ab_SkirtingGrey" },
+	{ 14593, "papaerchaseoffice", "glassPartition" },
+	{ 14593, "papaerchaseoffice", "sign_noCamera" },
+	{ 14593, "papaerchaseoffice", "sign_outOfOrder" },
+	{ 14593, "papaerchaseoffice", "sign_planDept" },
+	{ 14593, "papaerchaseoffice", "sign_restroom" },
+	{ 14593, "papaerchaseoffice", "spad_tile2_64" },
+	{ 14593, "papaerchaseoffice", "wall_stone3_256" },
+	{ 14593, "papaerchaseoffice", "wall_stone6_256" },
+	{ 14599, "paperchasebits", "ab_blueprint1" },
+	{ 14599, "paperchasebits", "ab_blueprint2" },
+	{ 14599, "paperchasebits", "ab_blueprint3" },
+	{ 14599, "paperchasebits", "ab_blueprint4" },
+	{ 14599, "paperchasebits", "sign_firstaid" },
+	{ 14600, "paperchase_bits2", "ab_docbox" },
+	{ 14600, "paperchase_bits2", "ab_medbag" },
+	{ 14600, "paperchase_bits2", "ab_medbottle" },
+	{ 14600, "paperchase_bits2", "ab_paperoll" },
+	{ 14600, "paperchase_bits2", "ab_plasticBin" },
+	{ 3060, "paracx", "parachute_e" },
+	{ 3060, "paracx", "ripcord" },
+	{ 3060, "paracx", "strings" },
+	{ 3026, "parapakx", "parapak" },
+	{ 5532, "paynspray_lae", "bigblue1" },
+	{ 5532, "paynspray_lae", "bigblue2" },
+	{ 5532, "paynspray_lae", "sprysig2" },
+	{ 14537, "pdomebar", "ab_weeLite" },
+	{ 14537, "pdomebar", "club_beer1SFw" },
+	{ 14537, "pdomebar", "club_bottles1_SFW" },
+	{ 14537, "pdomebar", "club_floor2_sfwTEST" },
+	{ 14537, "pdomebar", "club_wood1_SFw" },
+	{ 14539, "pdomes_logo", "pdomes_jizzys" },
+	{ 14539, "pdomes_logo", "pdomes_OM" },
+	{ 14539, "pdomes_logo", "pdomes_PLEA" },
+	{ 14539, "pdomes_logo", "pdomes_SURD" },
+	{ 14540, "pdome_extras", "ab_lipSofa" },
+	{ 14540, "pdome_extras", "pdomes_flexLite" },
+	{ 3985, "pershingsq", "hotelfig2_LAn" },
+	{ 3985, "pershingsq", "la_brownhibuildc" },
+	{ 3985, "pershingsq", "posh_eagle9_sfe" },
+	{ 1244, "petrol", "pumpdial" },
+	{ 2702, "pick_up", "CJ_BREAD" },
+	{ 2702, "pick_up", "cj_burg_top" },
+	{ 2702, "pick_up", "cj_fambly" },
+	{ 2702, "pick_up", "cj_fambly2" },
+	{ 2702, "pick_up", "CJ_red_FELT" },
+	{ 2702, "pick_up", "lwface08" },
+	{ 2702, "pick_up", "lwstrap05" },
+	{ 2266, "picture_frame", "CJ_PAINTING1" },
+	{ 2266, "picture_frame", "CJ_PAINTING10" },
+	{ 2266, "picture_frame", "CJ_PAINTING11" },
+	{ 2266, "picture_frame", "CJ_PAINTING14" },
+	{ 2266, "picture_frame", "CJ_PAINTING16" },
+	{ 2266, "picture_frame", "CJ_PAINTING17" },
+	{ 2266, "picture_frame", "CJ_PAINTING18" },
+	{ 2266, "picture_frame", "CJ_PAINTING19" },
+	{ 2266, "picture_frame", "CJ_PAINTING21" },
+	{ 2266, "picture_frame", "CJ_PAINTING23" },
+	{ 2266, "picture_frame", "CJ_PAINTING28" },
+	{ 2266, "picture_frame", "CJ_PAINTING29" },
+	{ 2266, "picture_frame", "CJ_PAINTING3" },
+	{ 2266, "picture_frame", "CJ_PAINTING30" },
+	{ 2266, "picture_frame", "CJ_PAINTING31" },
+	{ 2266, "picture_frame", "CJ_PAINTING32" },
+	{ 2266, "picture_frame", "CJ_PAINTING33" },
+	{ 2266, "picture_frame", "CJ_PAINTING34" },
+	{ 2266, "picture_frame", "CJ_PAINTING35" },
+	{ 2266, "picture_frame", "CJ_PAINTING36" },
+	{ 2266, "picture_frame", "CJ_PAINTING37" },
+	{ 2266, "picture_frame", "CJ_PAINTING5" },
+	{ 2266, "picture_frame", "CJ_PAINTING7" },
+	{ 2254, "picture_frame_clip", "CJ_PAINTING12" },
+	{ 2254, "picture_frame_clip", "CJ_PAINTING15" },
+	{ 2254, "picture_frame_clip", "CJ_PAINTING2" },
+	{ 2254, "picture_frame_clip", "CJ_PAINTING24" },
+	{ 2254, "picture_frame_clip", "CJ_PAINTING26" },
+	{ 2254, "picture_frame_clip", "CJ_PAINTING27" },
+	{ 2254, "picture_frame_clip", "CJ_PAINTING4" },
+	{ 9903, "pier69", "pier69_blue1" },
+	{ 9903, "pier69", "pier69_blue2" },
+	{ 9903, "pier69", "pier69_blue3" },
+	{ 9903, "pier69", "pier69_blue4" },
+	{ 9903, "pier69", "pier69_blue5" },
+	{ 9903, "pier69", "pier69_blue6" },
+	{ 9903, "pier69", "pier69_blue7" },
+	{ 9903, "pier69", "pier69_brown1" },
+	{ 9903, "pier69", "pier69_brown2" },
+	{ 9903, "pier69", "pier69_brown3" },
+	{ 9903, "pier69", "pier69_brown4" },
+	{ 9903, "pier69", "pier69_brown5" },
+	{ 9903, "pier69", "pier69_brown6" },
+	{ 9903, "pier69", "pier69_brown7" },
+	{ 9903, "pier69", "pier69_catwalkside" },
+	{ 9903, "pier69", "pier69_sign2" },
+	{ 9903, "pier69", "rooftop_gz4" },
+	{ 6448, "piera_law2", "beachpiersign1_256" },
+	{ 6448, "piera_law2", "Gen_Crain_Mast" },
+	{ 6283, "pierb_law2", "brownstar_law" },
+	{ 6283, "pierb_law2", "pierbild02_law" },
+	{ 6283, "pierb_law2", "pierbild03_law" },
+	{ 6283, "pierb_law2", "pierbild05_law" },
+	{ 6283, "pierb_law2", "pierbild06_law" },
+	{ 6283, "pierb_law2", "pierbild07_law" },
+	{ 6283, "pierb_law2", "pierbild08_law" },
+	{ 6283, "pierb_law2", "pierends_law" },
+	{ 6283, "pierb_law2", "pierfenc_LAw2" },
+	{ 6283, "pierb_law2", "pierlegbot_law" },
+	{ 6283, "pierb_law2", "pierlegtop_law" },
+	{ 6283, "pierb_law2", "sancorn5" },
+	{ 6283, "pierb_law2", "sancorn6" },
+	{ 6283, "pierb_law2", "sancorn7" },
+	{ 6283, "pierb_law2", "sanice1" },
+	{ 6283, "pierb_law2", "sanice2" },
+	{ 6283, "pierb_law2", "sanice3" },
+	{ 6283, "pierb_law2", "sanice4" },
+	{ 6283, "pierb_law2", "sanice5" },
+	{ 6283, "pierb_law2", "sanpiz4" },
+	{ 6283, "pierb_law2", "santall8s1" },
+	{ 6283, "pierb_law2", "sanwel5" },
+	{ 6283, "pierb_law2", "sanwel6" },
+	{ 6283, "pierb_law2", "sanwel7" },
+	{ 6283, "pierb_law2", "wilsd_02_la" },
+	{ 6287, "pierc_law2", "beachawning1_256" },
+	{ 6287, "pierc_law2", "beachwall1_256" },
+	{ 6287, "pierc_law2", "beachwall2_256" },
+	{ 6287, "pierc_law2", "beachwall5_256" },
+	{ 6287, "pierc_law2", "beachwall6_256" },
+	{ 6287, "pierc_law2", "beachwall7_256" },
+	{ 6287, "pierc_law2", "blueroof_128" },
+	{ 6287, "pierc_law2", "pierbild09_law" },
+	{ 6287, "pierc_law2", "pierwin02_law" },
+	{ 6287, "pierc_law2", "sancorn1" },
+	{ 6287, "pierc_law2", "sancorn2" },
+	{ 6287, "pierc_law2", "sancorn3" },
+	{ 6287, "pierc_law2", "sancorn4" },
+	{ 6287, "pierc_law2", "sanpiz3" },
+	{ 6287, "pierc_law2", "sanpiz5" },
+	{ 6287, "pierc_law2", "shoptop05_law" },
+	{ 6287, "pierc_law2", "stormdrain3b_nt" },
+	{ 6188, "pier_law", "pierlegTEST" },
+	{ 6188, "pier_law", "piermetalt_LAW" },
+	{ 6188, "pier_law", "pierside_LAW" },
+	{ 9949, "pier_sfe", "pierhead1_sfe" },
+	{ 9949, "pier_sfe", "pierhead2_sfe" },
+	{ 9949, "pier_sfe", "pierhead3_sfe" },
+	{ 9949, "pier_sfe", "pierhead4_sfe" },
+	{ 10621, "pinkcarpark_sfs", "vegparking2_256" },
+	{ 10621, "pinkcarpark_sfs", "ws_fmaparking" },
+	{ 8421, "pirateland", "pirates01_128" },
+	{ 8421, "pirateland", "pirates02_128" },
+	{ 8421, "pirateland", "pirates03_64" },
+	{ 8421, "pirateland", "pirates04_64" },
+	{ 8421, "pirateland", "pirates05_64" },
+	{ 8421, "pirateland", "tislandbanister" },
+	{ 8421, "pirateland", "tislandledge01_64" },
+	{ 8421, "pirateland", "tislandledge03_128" },
+	{ 8421, "pirateland", "tislndrock01_128" },
+	{ 8421, "pirateland", "tislndrock02_128" },
+	{ 8421, "pirateland", "tislndskullrock_256" },
+	{ 8423, "pirateship01", "old_carpet_dvdr" },
+	{ 8423, "pirateship01", "pirates07_128" },
+	{ 8423, "pirateship01", "tislandfront01_128" },
+	{ 8423, "pirateship01", "tislandfront02_128" },
+	{ 8423, "pirateship01", "tislandfront03_128" },
+	{ 8423, "pirateship01", "tislandshpback_256" },
+	{ 8423, "pirateship01", "tislandwall01_128" },
+	{ 8423, "pirateship01", "tislandwall02_128" },
+	{ 8423, "pirateship01", "tislandwall04_64" },
+	{ 8423, "pirateship01", "tislandwall05_128" },
+	{ 8423, "pirateship01", "tislandwdbox01_128" },
+	{ 8423, "pirateship01", "tislandwdbox02_64" },
+	{ 8423, "pirateship01", "tislndshpmast" },
+	{ 2635, "pizza_furn", "CJ_TART_TABLE" },
+	{ 2218, "pizza_tray", "pboxside" },
+	{ 2218, "pizza_tray", "pfries" },
+	{ 2218, "pizza_tray", "pizzaslice" },
+	{ 2218, "pizza_tray", "tray_cb" },
+	{ 2247, "plants_galss", "CJ_willow" },
+	{ 2246, "plants_office", "cooker3" },
+	{ 4562, "plaza1_lan2", "sl_blokpave1" },
+	{ 14533, "pleas_dome", "ab_carpethexi" },
+	{ 14533, "pleas_dome", "ab_clubloungewall" },
+	{ 14533, "pleas_dome", "ab_litepetal" },
+	{ 14533, "pleas_dome", "ab_metaldisc" },
+	{ 14533, "pleas_dome", "ab_velvor" },
+	{ 14533, "pleas_dome", "club_floor1_sfwTEST" },
+	{ 14533, "pleas_dome", "club_metal2_sfw" },
+	{ 14533, "pleas_dome", "club_wall4_SFw" },
+	{ 14533, "pleas_dome", "club_zeb_SFW1" },
+	{ 14533, "pleas_dome", "club_zeb_SFW2" },
+	{ 14533, "pleas_dome", "mallfence_law" },
+	{ 14533, "pleas_dome", "ornate_ceiling1_sfw" },
+	{ 14533, "pleas_dome", "pdome_arch1" },
+	{ 14533, "pleas_dome", "pdome_wall1" },
+	{ 14533, "pleas_dome", "scaffold_stuff" },
+	{ 14533, "pleas_dome", "sfw_clublight1" },
+	{ 14533, "pleas_dome", "timber_gz" },
+	{ 14533, "pleas_dome", "toaty_lite_SFW" },
+	{ 14533, "pleas_dome", "ws_corner_iron1" },
+	{ 9900, "pointysfe", "pointy_sfe" },
+	{ 9900, "pointysfe", "transam_2_sfe" },
+	{ 9900, "pointysfe", "ws_trans_block" },
+	{ 2602, "police_props_un", "GUS" },
+	{ 2965, "pool_blsx", "poolballsa1" },
+	{ 2965, "pool_blsx", "poolballsa2" },
+	{ 2965, "pool_blsx", "poolballscue" },
+	{ 1684, "portakabin", "ws_portacabin1" },
+	{ 1684, "portakabin", "ws_portacabin2" },
+	{ 1684, "portakabin", "ws_portacabin3" },
+	{ 9918, "posh2_sfe", "poshsfe1" },
+	{ 9918, "posh2_sfe", "poshsfe2" },
+	{ 9918, "posh2_sfe", "poshsfe3" },
+	{ 10049, "posh_sfe", "posh_eagle5_sfe" },
+	{ 10049, "posh_sfe", "posh_eagle6_sfe" },
+	{ 10049, "posh_sfe", "posh_eagle7_sfe" },
+	{ 10049, "posh_sfe", "ws_alley2_128_plain" },
+	{ 2984, "potax", "chemtoilet1256" },
+	{ 2984, "potax", "chemtoilet2256" },
+	{ 9259, "presidio01_sfn", "sl_clayroof01" },
+	{ 9259, "presidio01_sfn", "sl_presdoor01" },
+	{ 9259, "presidio01_sfn", "sl_presdoor02" },
+	{ 9259, "presidio01_sfn", "sl_presroofedg01" },
+	{ 9259, "presidio01_sfn", "sl_preswin04" },
+	{ 9259, "presidio01_sfn", "sl_preswin06" },
+	{ 9259, "presidio01_sfn", "sl_preswindbl01" },
+	{ 9259, "presidio01_sfn", "sl_whitewood01" },
+	{ 9259, "presidio01_sfn", "stainwin_law" },
+	{ 9259, "presidio01_sfn", "yelloconc_LA" },
+	{ 3262, "privatesign", "sign_tresspass1" },
+	{ 3262, "privatesign", "sign_tresspass2" },
+	{ 3262, "privatesign", "sw_hairpinL" },
+	{ 3262, "privatesign", "sw_hairpinR" },
+	{ 2670, "proc_rub", "CJ_CERT_1" },
+	{ 2670, "proc_rub", "CJ_CERT_2" },
+	{ 2670, "proc_rub", "CJ_CERT_3" },
+	{ 2670, "proc_rub", "CJ_CERT_4" },
+	{ 2670, "proc_rub", "CJ_FAG_BUT" },
+	{ 2670, "proc_rub", "sprunk2dirty" },
+	{ 3661, "projects_la", "ws_boxhouse_wins2" },
+	{ 1664, "propbarstuff", "kb_vodka_64_256" },
+	{ 1985, "punchbag2", "punchbag2" },
+	{ 8395, "pyramid", "luxorwindow01_128" },
+	{ 3049, "qrydrx", "Was_scrpyd_barbwire" },
+	{ 3049, "qrydrx", "ws_corr_1_red" },
+	{ 3214, "quarry", "lasjmflood3" },
+	{ 3214, "quarry", "Was_swr_trolleycage" },
+	{ 10628, "queens1_sfs", "ws_cinemasign1" },
+	{ 10628, "queens1_sfs", "ws_fancyshop1" },
+	{ 10628, "queens1_sfs", "ws_fancyshop1b" },
+	{ 10628, "queens1_sfs", "ws_fancyshop1c" },
+	{ 10628, "queens1_sfs", "ws_fancyshop1e" },
+	{ 10628, "queens1_sfs", "ws_lights_in_marble" },
+	{ 10628, "queens1_sfs", "ws_queens1" },
+	{ 10626, "queens2_sfs", "ws_apartmentmankyblue2" },
+	{ 10626, "queens2_sfs", "ws_apartmentmankyblue3" },
+	{ 10626, "queens2_sfs", "ws_apartmentmankygreen3" },
+	{ 10626, "queens2_sfs", "ws_apartmentmankypeach2" },
+	{ 10626, "queens2_sfs", "ws_apartmentmankypeach3" },
+	{ 10626, "queens2_sfs", "ws_awning_plum" },
+	{ 10626, "queens2_sfs", "WS_barberspole" },
+	{ 10626, "queens2_sfs", "ws_beenflick1" },
+	{ 10626, "queens2_sfs", "ws_beenflick2" },
+	{ 10626, "queens2_sfs", "ws_dirty_awning2b" },
+	{ 10626, "queens2_sfs", "WS_ED_shop3b" },
+	{ 10626, "queens2_sfs", "WS_ED_shop3c" },
+	{ 10626, "queens2_sfs", "ws_gazeglasses" },
+	{ 10626, "queens2_sfs", "ws_lesbeans" },
+	{ 10626, "queens2_sfs", "ws_newvicapt_blu" },
+	{ 10626, "queens2_sfs", "ws_newvicapt_blu2" },
+	{ 10626, "queens2_sfs", "ws_newvicapt_blu3" },
+	{ 10626, "queens2_sfs", "ws_newvicapt_pnk" },
+	{ 10626, "queens2_sfs", "ws_newvicapt_pnk_2" },
+	{ 10626, "queens2_sfs", "ws_newvicapt_pnk_3" },
+	{ 10626, "queens2_sfs", "ws_plainshop" },
+	{ 10631, "queensammo_sfs", "ammu_boots" },
+	{ 10631, "queensammo_sfs", "ammu_camo1" },
+	{ 10631, "queensammo_sfs", "CJ_SUB_DOORS" },
+	{ 10631, "queensammo_sfs", "ws_ammu-posh" },
+	{ 11252, "railbridge_sfse", "ws_goldengate5bnoalpha" },
+	{ 5394, "railtracklae", "trainground2" },
+	{ 17283, "railwaycuntw", "grasstype10_rail" },
+	{ 4860, "railway_las", "lasjmroof" },
+	{ 4860, "railway_las", "lasunion2" },
+	{ 4860, "railway_las", "lasunion5" },
+	{ 4860, "railway_las", "lasunion7" },
+	{ 4860, "railway_las", "railplatformwall" },
+	{ 4860, "railway_las", "sjmscorclawn3" },
+	{ 1660, "ramp2", "chemsign2_64" },
+	{ 18036, "range_main", "gun_galss1" },
+	{ 18036, "range_main", "gun_xtra6" },
+	{ 18036, "range_main", "range_mainlightingmap" },
+	{ 1636, "rcbomb", "rcbomb" },
+	{ 3947, "rczero_track", "grassdeep1blnd" },
+	{ 2464, "rc_shop_acc", "CJ_BIPLANE1" },
+	{ 2464, "rc_shop_acc", "CJ_RC_1" },
+	{ 2464, "rc_shop_acc", "CJ_RC_13" },
+	{ 2464, "rc_shop_acc", "CJ_RC_2" },
+	{ 2464, "rc_shop_acc", "CJ_RC_3" },
+	{ 2464, "rc_shop_acc", "CJ_RC_4" },
+	{ 2464, "rc_shop_acc", "CJ_RC_5" },
+	{ 2464, "rc_shop_acc", "CJ_RC_6" },
+	{ 2464, "rc_shop_acc", "CJ_RC_7" },
+	{ 2464, "rc_shop_acc", "CJ_TRAIN_SET" },
+	{ 2464, "rc_shop_acc", "CJ_WING" },
+	{ 2362, "rc_shop_figure", "CJ_RC_10" },
+	{ 2362, "rc_shop_figure", "CJ_RC_11" },
+	{ 2362, "rc_shop_figure", "CJ_RC_12" },
+	{ 2362, "rc_shop_figure", "CJ_RC_9" },
+	{ 2487, "rc_shop_hanger", "CJ_kite" },
+	{ 2487, "rc_shop_hanger", "CJ_kite2" },
+	{ 2487, "rc_shop_hanger", "CJ_kite3" },
+	{ 2487, "rc_shop_hanger", "CJ_kite4" },
+	{ 2484, "rc_shop_toy", "CJ_SAIL_1" },
+	{ 2484, "rc_shop_toy", "CJ_SAIL_2" },
+	{ 2471, "rc_shop_trains", "CJ_RC_14" },
+	{ 2471, "rc_shop_trains", "CJ_RC_15" },
+	{ 2471, "rc_shop_trains", "CJ_trains" },
+	{ 1960, "record1", "record1" },
+	{ 1960, "record1", "record2" },
+	{ 1960, "record1", "record3" },
+	{ 3255, "refinery", "des_refpipes" },
+	{ 3255, "refinery", "des_reftower1" },
+	{ 8437, "residential01", "residential01_256" },
+	{ 8437, "residential01", "residential02_256" },
+	{ 8437, "residential01", "residential03_256" },
+	{ 8437, "residential01", "residentialsign01_256" },
+	{ 8433, "residnce01", "residence01_256" },
+	{ 8433, "residnce01", "residence02_256" },
+	{ 8433, "residnce01", "residence03_128" },
+	{ 8433, "residnce01", "residence04_128" },
+	{ 8433, "residnce01", "residence05_256" },
+	{ 8433, "residnce01", "residence06_128" },
+	{ 13715, "richman02_lahills", "monobloc_256128" },
+	{ 13626, "road", "sidetrack" },
+	{ 13626, "road", "trackroadside" },
+	{ 10294, "road2sfe", "sf_pave3" },
+	{ 10294, "road2sfe", "sf_pave4" },
+	{ 10294, "road2sfe", "sf_pave5" },
+	{ 10820, "roadbridge_sfse", "drain" },
+	{ 1346, "roadside", "CJ_PHONEBOX1" },
+	{ 1346, "roadside", "CJ_phoneboxmiami" },
+	{ 1346, "roadside", "CJ_PHONESEXADD" },
+	{ 13713, "roadslahills", "roadnew4blend_256" },
+	{ 13323, "roads_cunte", "paveb256" },
+	{ 13717, "roads_lahills", "pavebsand256blueblend" },
+	{ 13717, "roads_lahills", "snpedtest1blend" },
+	{ 6035, "roads_law", "crossing2_law" },
+	{ 5703, "roads_lawn", "sidewalk4_LAe" },
+	{ 5703, "roads_lawn", "starpaveb_law" },
+	{ 5703, "roads_lawn", "starpave_law" },
+	{ 5703, "roads_lawn", "starpave_lawblend" },
+	{ 13676, "roads_tunnellahills", "tunwill1law2" },
+	{ 9743, "rock_coastsfw", "cst_rocksea_sfw" },
+	{ 9743, "rock_coastsfw", "cst_rock_undersea_sfw" },
+	{ 6332, "rodeo01_law2", "arodeo1sj" },
+	{ 6332, "rodeo01_law2", "bevhot01b_law" },
+	{ 6332, "rodeo01_law2", "bevhot01_law" },
+	{ 6332, "rodeo01_law2", "ceaserpillar01_256" },
+	{ 6332, "rodeo01_law2", "clothes01_128" },
+	{ 6332, "rodeo01_law2", "glassentrace2" },
+	{ 6332, "rodeo01_law2", "prada_256" },
+	{ 6332, "rodeo01_law2", "rodeowind3" },
+	{ 6332, "rodeo01_law2", "rodesign01_LA" },
+	{ 6332, "rodeo01_law2", "rodesign02_LA" },
+	{ 6332, "rodeo01_law2", "rodwall01_LAw2" },
+	{ 6332, "rodeo01_law2", "rodwall02_LAw2" },
+	{ 6332, "rodeo01_law2", "rodwall04_LAw2" },
+	{ 6332, "rodeo01_law2", "rodwall05_LAw2" },
+	{ 6332, "rodeo01_law2", "rodwall06_LAw2" },
+	{ 6332, "rodeo01_law2", "rodwall07_LAw2" },
+	{ 6332, "rodeo01_law2", "rodwall08_LAw2" },
+	{ 6332, "rodeo01_law2", "rodwall09_LAw2" },
+	{ 6332, "rodeo01_law2", "rodwall10_LAw2" },
+	{ 6332, "rodeo01_law2", "shopface05b_law" },
+	{ 6332, "rodeo01_law2", "shopface05c_law" },
+	{ 6351, "rodeo02_law2", "bevhiwin_01" },
+	{ 6351, "rodeo02_law2", "dirtwall128" },
+	{ 6351, "rodeo02_law2", "helmutwall1_LAw" },
+	{ 6351, "rodeo02_law2", "hollywall02_law" },
+	{ 6351, "rodeo02_law2", "oranconc01_LA" },
+	{ 6351, "rodeo02_law2", "ortilwall_LAw" },
+	{ 6351, "rodeo02_law2", "prolsign01_LA" },
+	{ 6351, "rodeo02_law2", "rodesign03_LA" },
+	{ 6351, "rodeo02_law2", "woodboards1" },
+	{ 6341, "rodeo03_law2", "century01_LA" },
+	{ 6341, "rodeo03_law2", "sl_hirisergrnconc" },
+	{ 6344, "rodeo04_law2", "golf_hedge1" },
+	{ 6340, "rodeo05_law2", "airportwind04" },
+	{ 6340, "rodeo05_law2", "badmarb2_LAn" },
+	{ 6340, "rodeo05_law2", "citywall6" },
+	{ 6340, "rodeo05_law2", "gnocchiston_LA" },
+	{ 6340, "rodeo05_law2", "rodeowin02" },
+	{ 6340, "rodeo05_law2", "siliconvalleywins1" },
+	{ 2992, "roulx", "roulette_glow" },
+	{ 3074, "runwayx", "kb_bckdrp" },
+	{ 14744, "rybath", "AH_rywood" },
+	{ 14744, "rybath", "tiletop" },
+	{ 3694, "ryderholes", "ryder_mud" },
+	{ 3694, "ryderholes", "ryd_holes" },
+	{ 14743, "ryhall", "AH_ryskirt" },
+	{ 14743, "ryhall", "GB_midbarand" },
+	{ 14746, "rylounge", "AH_rykitiles" },
+	{ 14745, "rystuff", "mp_apt1_bathfloor" },
+	{ 14745, "rystuff", "mp_apt1_bathwall" },
+	{ 14745, "rystuff", "mp_apt1_bathwall1" },
+	{ 14745, "rystuff", "mp_apt1_sofatest" },
+	{ 14745, "rystuff", "mp_CJ_bottle" },
+	{ 14745, "rystuff", "mp_CJ_bottle2" },
+	{ 14745, "rystuff", "mp_CJ_CHROME2" },
+	{ 14745, "rystuff", "mp_CJ_FILLIMENT" },
+	{ 14745, "rystuff", "mp_CJ_HI_FI" },
+	{ 14740, "rywins", "mp_CJ_WOODDOOR2" },
+	{ 3884, "samsite_sfxrf", "sam_camo-navy" },
+	{ 3884, "samsite_sfxrf", "sam_camobits-navy" },
+	{ 3717, "sanclifbal1_lax", "glasfenc1_LA" },
+	{ 3717, "sanclifbal1_lax", "sanmonwin01" },
+	{ 3717, "sanclifbal1_lax", "whiteconc01" },
+	{ 3717, "sanclifbal1_lax", "yelloconcW_LA" },
+	{ 6388, "sancliff02_law2", "oranconcwin_LA" },
+	{ 6390, "sancliff_law2", "bluepat_LAw2" },
+	{ 6390, "sancliff_law2", "pharmacy1_1256" },
+	{ 6390, "sancliff_law2", "windblind_law" },
+	{ 1610, "sandcastle", "whitesand_256" },
+	{ 3783, "sanpedh22_1x", "snpdhus3" },
+	{ 3588, "sanpedhse_1x", "ctdoon1_LAS" },
+	{ 3588, "sanpedhse_1x", "lasmulap4" },
+	{ 3588, "sanpedhse_1x", "lasmulap5" },
+	{ 3588, "sanpedhse_1x", "laspedhus8" },
+	{ 3588, "sanpedhse_1x", "laspedhus9" },
+	{ 3588, "sanpedhse_1x", "laspedhus91" },
+	{ 3588, "sanpedhse_1x", "snpedflatt2" },
+	{ 3588, "sanpedhse_1x", "snpedflatt7" },
+	{ 6294, "santamonhus", "pierbuild10b_law" },
+	{ 6294, "santamonhus", "pierbuild11b_law" },
+	{ 6294, "santamonhus", "pierbuild11c_law" },
+	{ 6294, "santamonhus", "pierbuild11d_law" },
+	{ 6294, "santamonhus", "pierbuild11_law" },
+	{ 6294, "santamonhus", "pierhouse4_law" },
+	{ 6294, "santamonhus", "pierwall04_law" },
+	{ 6286, "santamonhus1", "fivewins_law" },
+	{ 6286, "santamonhus1", "lasmulap1" },
+	{ 6286, "santamonhus1", "lasmulap2" },
+	{ 6286, "santamonhus1", "lasmulap3" },
+	{ 6286, "santamonhus1", "pierbuild9_law" },
+	{ 6286, "santamonhus1", "pierwin08c_law" },
+	{ 6286, "santamonhus1", "pierwin09b_law" },
+	{ 6286, "santamonhus1", "pierwin09_law" },
+	{ 6286, "santamonhus1", "pierwin9_law" },
+	{ 6281, "santamonicalaw2", "asanwall1" },
+	{ 6280, "santamonicalaw2a", "asanmonstat1" },
+	{ 6280, "santamonicalaw2a", "sandypath_law" },
+	{ 6296, "santamopollaw2", "avenpol1" },
+	{ 6296, "santamopollaw2", "avenpol2" },
+	{ 6296, "santamopollaw2", "avenpol3" },
+	{ 6042, "santavenice3", "concretebig3_256128" },
+	{ 6042, "santavenice3", "psychic_law" },
+	{ 6042, "santavenice3", "venblock01" },
+	{ 6042, "santavenice3", "venblock01b" },
+	{ 6042, "santavenice3", "venwalkway_law" },
+	{ 1595, "satdish", "generatorfront1_256" },
+	{ 1595, "satdish", "wallwhitetinge256" },
+	{ 15054, "savesfmid", "AH_blackmar" },
+	{ 15054, "savesfmid", "AH_flroortile8" },
+	{ 15054, "savesfmid", "ah_pnwainscot" },
+	{ 15054, "savesfmid", "AH_walltile5" },
+	{ 15054, "savesfmid", "AH_wdpanel" },
+	{ 15054, "savesfmid", "cspornmag" },
+	{ 18365, "sawmillcs_t", "bricklayerdark_hi64HV" },
+	{ 18365, "sawmillcs_t", "dirtyframe64HVa" },
+	{ 18365, "sawmillcs_t", "electricity_64" },
+	{ 18365, "sawmillcs_t", "inwindow3" },
+	{ 18365, "sawmillcs_t", "mp_sawmill" },
+	{ 18365, "sawmillcs_t", "sprinklersign64" },
+	{ 3867, "scaffolding_sfx", "Gen_Scaffold_Wood" },
+	{ 10388, "scum2_sfs", "ws_carparkmanky1" },
+	{ 10388, "scum2_sfs", "ws_carparkmanky2" },
+	{ 10388, "scum2_sfs", "ws_cobrasign_small" },
+	{ 10388, "scum2_sfs", "ws_devop_temp" },
+	{ 18026, "scummy", "CJ_BINC_WIN" },
+	{ 10969, "scum_sfse", "ws_jaunk_billbd" },
+	{ 10969, "scum_sfse", "ws_mistys_bar" },
+	{ 10226, "sfeship1", "sf_shipcomp" },
+	{ 10226, "sfeship1", "sf_shipcomp2" },
+	{ 10226, "sfeship1", "sf_ship_door" },
+	{ 10226, "sfeship1", "sf_ship_generic1" },
+	{ 10226, "sfeship1", "sf_ship_generic11" },
+	{ 10226, "sfeship1", "sf_ship_generic12" },
+	{ 10226, "sfeship1", "sf_ship_generic14" },
+	{ 10226, "sfeship1", "sf_ship_generic15" },
+	{ 10226, "sfeship1", "sf_ship_generic16" },
+	{ 10226, "sfeship1", "sf_ship_generic18" },
+	{ 10226, "sfeship1", "sf_ship_generic19" },
+	{ 10226, "sfeship1", "sf_ship_generic20" },
+	{ 10226, "sfeship1", "sf_ship_generic21" },
+	{ 10226, "sfeship1", "sf_ship_generic22" },
+	{ 10226, "sfeship1", "sf_ship_generic23" },
+	{ 10226, "sfeship1", "sf_ship_generic24" },
+	{ 10226, "sfeship1", "sf_ship_generic25" },
+	{ 10226, "sfeship1", "sf_ship_generic27" },
+	{ 10226, "sfeship1", "sf_ship_generic28" },
+	{ 10226, "sfeship1", "sf_ship_generic3" },
+	{ 10226, "sfeship1", "sf_ship_generic4" },
+	{ 10226, "sfeship1", "sf_ship_generic5" },
+	{ 10226, "sfeship1", "sf_ship_generic8" },
+	{ 10226, "sfeship1", "sf_ship_generic9" },
+	{ 10226, "sfeship1", "sf_ship_handrail" },
+	{ 10226, "sfeship1", "sf_ship_screen1" },
+	{ 9906, "sfe_builda", "blindZIP_law" },
+	{ 9906, "sfe_builda", "deisel_1sfs" },
+	{ 9906, "sfe_builda", "deisel_3sfs" },
+	{ 9906, "sfe_builda", "sl_dwntwallvic1" },
+	{ 9906, "sfe_builda", "sl_dwntwnvic1" },
+	{ 9906, "sfe_builda", "sl_dwntwnvic2" },
+	{ 9906, "sfe_builda", "sl_dwntwnvic3" },
+	{ 9906, "sfe_builda", "sl_dwntwnvic4" },
+	{ 9906, "sfe_builda", "sl_dwntwnvic5" },
+	{ 9906, "sfe_builda", "sl_dwntwnvicconc" },
+	{ 10029, "sfe_copchop", "helipad_base" },
+	{ 9915, "sfe_park1", "samtue_test" },
+	{ 9958, "sfe_sub", "sfe_sub_1" },
+	{ 9958, "sfe_sub", "sfe_sub_2" },
+	{ 9958, "sfe_sub", "sfe_sub_3" },
+	{ 10044, "sfe_swank1", "sf_shop1" },
+	{ 14760, "sfhosemed2", "AH_blucurtain" },
+	{ 14760, "sfhosemed2", "AH_Ironbal" },
+	{ 14760, "sfhosemed2", "ah_marcorn1" },
+	{ 14760, "sfhosemed2", "ah_pnwainscot3" },
+	{ 14760, "sfhosemed2", "ah_pnwainskt" },
+	{ 14760, "sfhosemed2", "ah_poshwdflr1" },
+	{ 14760, "sfhosemed2", "ah_RFPLSTR" },
+	{ 14760, "sfhosemed2", "AH_walltile2" },
+	{ 14760, "sfhosemed2", "ah_whtcorn" },
+	{ 14760, "sfhosemed2", "ah_wpaper5" },
+	{ 14760, "sfhosemed2", "carp19S" },
+	{ 14760, "sfhosemed2", "walp40S" },
+	{ 14757, "sfhsb2bits", "AH_bigcurtains1" },
+	{ 14757, "sfhsb2bits", "AH_bigcurtains2" },
+	{ 14754, "sfhsb3", "ah_flrtile1" },
+	{ 14754, "sfhsb3", "ah_halltiles" },
+	{ 14754, "sfhsb3", "ah_plnks1" },
+	{ 14754, "sfhsb3", "ah_pnwainscotbroon" },
+	{ 14754, "sfhsb3", "ah_skrtmorebroon" },
+	{ 14754, "sfhsb3", "ah_wpaper10" },
+	{ 14754, "sfhsb3", "ah_wpaper4" },
+	{ 14754, "sfhsb3", "ah_wpaper6" },
+	{ 14748, "sfhsm1", "AH_bartilegreen" },
+	{ 14748, "sfhsm1", "AH_bigwoodthing" },
+	{ 14748, "sfhsm1", "AH_orncorn" },
+	{ 14748, "sfhsm1", "ah_pnwainscot5" },
+	{ 14748, "sfhsm1", "ah_pnwainscot6" },
+	{ 14748, "sfhsm1", "AH_windows1" },
+	{ 14748, "sfhsm1", "carpet3kb" },
+	{ 14748, "sfhsm1", "diner_wall1" },
+	{ 14750, "sfhsm2", "ston09S" },
+	{ 14750, "sfhsm2", "wallpnice06" },
+	{ 14751, "sfhsm2bits", "AH_redcurtain" },
+	{ 14759, "sfhsmedium1", "ah_wpaper1" },
+	{ 14759, "sfhsmedium1", "ah_wpaper3" },
+	{ 14755, "sfhss2", "ah_pnwainscot12" },
+	{ 14755, "sfhss2", "ah_rotwindow" },
+	{ 14755, "sfhss2", "ah_utilbor4" },
+	{ 14755, "sfhss2", "mcstraps_wall2" },
+	{ 14758, "sfmansion1", "AH_cornice" },
+	{ 14758, "sfmansion1", "AH_flroortile6" },
+	{ 14758, "sfmansion1", "ah_pnwainscot4" },
+	{ 14758, "sfmansion1", "ah_stainglass" },
+	{ 9220, "sfn_apart02sfn", "concreteslab" },
+	{ 9220, "sfn_apart02sfn", "fencewhta256" },
+	{ 9220, "sfn_apart02sfn", "newindow10" },
+	{ 9220, "sfn_apart02sfn", "newindow12" },
+	{ 9220, "sfn_apart02sfn", "newindow6" },
+	{ 9227, "sfn_caravansfn", "trail_side1" },
+	{ 9227, "sfn_caravansfn", "trail_vent" },
+	{ 9227, "sfn_caravansfn", "trail_wall3" },
+	{ 9227, "sfn_caravansfn", "trail_wall4" },
+	{ 9227, "sfn_caravansfn", "trail_win" },
+	{ 9292, "sfn_crashbar", "sfn_crashbar" },
+	{ 9241, "sfn_helipad", "genwndw01_128" },
+	{ 9241, "sfn_helipad", "office01_law" },
+	{ 9361, "sfn_office", "law_gazwhite3" },
+	{ 9206, "sfn_sfn", "sfncn_rockgrass3" },
+	{ 9206, "sfn_sfn", "sfncn_rockgrass4" },
+	{ 9206, "sfn_sfn", "sfn_rockhole" },
+	{ 10452, "sfsroadshotel", "ws_biffins" },
+	{ 10452, "sfsroadshotel", "ws_biffinsback" },
+	{ 9909, "sfvictorian", "gz_sf_door12b" },
+	{ 9909, "sfvictorian", "GZ_vic7c" },
+	{ 9909, "sfvictorian", "GZ_vic7d" },
+	{ 9909, "sfvictorian", "GZ_vic8a" },
+	{ 9909, "sfvictorian", "steepsign2_SF" },
+	{ 9909, "sfvictorian", "steepsign_SF" },
+	{ 9482, "sfw_victemp2", "ws_chinagate" },
+	{ 9482, "sfw_victemp2", "ws_conc_block2" },
+	{ 3801, "sfxref", "hangplant1_sf" },
+	{ 3801, "sfxref", "sfxref_aircon1" },
+	{ 3801, "sfxref", "sfxref_aircon2" },
+	{ 3801, "sfxref", "sfxref_aircon3" },
+	{ 3801, "sfxref", "sfxref_aircon4" },
+	{ 3801, "sfxref", "sfxref_alarm1" },
+	{ 3801, "sfxref", "sfxref_alarm2" },
+	{ 3801, "sfxref", "sfxref_ironthingt1" },
+	{ 3801, "sfxref", "sfxref_lite1a" },
+	{ 3801, "sfxref", "sfxref_lite1b" },
+	{ 3801, "sfxref", "sfxref_lite1d" },
+	{ 3801, "sfxref", "sfxref_lite2a" },
+	{ 3801, "sfxref", "sfxref_shadb" },
+	{ 3801, "sfxref", "windowbox_SF1" },
+	{ 3801, "sfxref", "windowbox_SF2" },
+	{ 3448, "shamcpark", "concretewall1_256" },
+	{ 1608, "shark", "sharky" },
+	{ 9818, "ship_brijsfw", "blchr_seat2b" },
+	{ 9818, "ship_brijsfw", "fusebox2_128" },
+	{ 9818, "ship_brijsfw", "sf_ship_generic10" },
+	{ 9818, "ship_brijsfw", "sf_ship_generic13" },
+	{ 9818, "ship_brijsfw", "sf_ship_generic2" },
+	{ 9818, "ship_brijsfw", "sf_ship_generic29" },
+	{ 9818, "ship_brijsfw", "ship_greenscreen1" },
+	{ 9818, "ship_brijsfw", "ship_screen1sfw" },
+	{ 8432, "shop06_lvs", "vegashops01_256" },
+	{ 8432, "shop06_lvs", "vegashops02_128" },
+	{ 8432, "shop06_lvs", "vegashops03_128" },
+	{ 8507, "shop09", "sidewalkmarket01_128" },
+	{ 8507, "shop09", "sidewalkmarket02_128" },
+	{ 5040, "shopliquor_las", "labombshop" },
+	{ 5040, "shopliquor_las", "las69str4" },
+	{ 5040, "shopliquor_las", "lasjmbrsig4" },
+	{ 5040, "shopliquor_las", "lasjmliq1" },
+	{ 5040, "shopliquor_las", "lasjmliq2" },
+	{ 5040, "shopliquor_las", "lasjmliq3" },
+	{ 5040, "shopliquor_las", "mural02_LA" },
+	{ 2366, "shopping", "cj_ziptop" },
+	{ 6095, "shops01_law", "bankoff01_law" },
+	{ 6095, "shops01_law", "GB_canopy01b" },
+	{ 6095, "shops01_law", "GB_chatwall03b" },
+	{ 6095, "shops01_law", "GB_shop01" },
+	{ 6095, "shops01_law", "GB_shopdoor01" },
+	{ 6095, "shops01_law", "GB_sign02" },
+	{ 6095, "shops01_law", "GB_sign04" },
+	{ 6095, "shops01_law", "GB_venflat02" },
+	{ 6095, "shops01_law", "GB_yellow01" },
+	{ 6095, "shops01_law", "greenshade2_64" },
+	{ 6095, "shops01_law", "hotwall1_law" },
+	{ 6095, "shops01_law", "lasmflat3" },
+	{ 6095, "shops01_law", "topsm01drk_law" },
+	{ 6095, "shops01_law", "venflat02" },
+	{ 6060, "shops2_law", "atmflat" },
+	{ 6060, "shops2_law", "biffoffwin_law" },
+	{ 6060, "shops2_law", "hotbasetop_law" },
+	{ 6060, "shops2_law", "hottop2_law" },
+	{ 6060, "shops2_law", "newall8-1blue" },
+	{ 6060, "shops2_law", "shoptop08_law" },
+	{ 6060, "shops2_law", "venshade03_law" },
+	{ 6060, "shops2_law", "ws_alley4_128_plain" },
+	{ 10925, "shopszz_sfse", "buymorejeans" },
+	{ 10925, "shopszz_sfse", "ws_newshop" },
+	{ 10926, "shops_sfse", "ws_oldtowerbottom" },
+	{ 10926, "shops_sfse", "ws_oldtowertop" },
+	{ 10926, "shops_sfse", "ws_woodenscreen2" },
+	{ 1493, "shop_doors", "CJ_SHOPDOOR1" },
+	{ 1842, "shop_shelf1", "formica" },
+	{ 1842, "shop_shelf1", "shelf3" },
+	{ 1842, "shop_shelf1", "shelf5" },
+	{ 1842, "shop_shelf1", "shelf6" },
+	{ 1842, "shop_shelf1", "shelf7" },
+	{ 1842, "shop_shelf1", "shelf8" },
+	{ 1842, "shop_shelf1", "shelf9" },
+	{ 1229, "signs", "busschedule64" },
+	{ 1229, "signs", "bus_stop64" },
+	{ 1229, "signs", "NoParking2_128" },
+	{ 1229, "signs", "parkmeter_128" },
+	{ 1229, "signs", "phonesign_128" },
+	{ 1229, "signs", "redparkmeter" },
+	{ 1229, "signs", "roadsign01_128" },
+	{ 10941, "silicon2_sfse", "siliconvalleywins2" },
+	{ 10941, "silicon2_sfse", "siliconvalleywins3" },
+	{ 10941, "silicon2_sfse", "siliconvalleywins5" },
+	{ 10941, "silicon2_sfse", "ws_badplaster" },
+	{ 10941, "silicon2_sfse", "ws_girderhole" },
+	{ 10939, "silicon_sfse", "pavementhexagon" },
+	{ 10939, "silicon_sfse", "ws_traingravelblend" },
+	{ 10061, "simcondo_sfe", "sl_hiriserail1" },
+	{ 10061, "simcondo_sfe", "sl_hiriserail2" },
+	{ 3576, "sjmla_las", "lasdockbar" },
+	{ 3576, "sjmla_las", "SJMLAWEPCRAT1" },
+	{ 3576, "sjmla_las", "SJMLAWEPCRAT2" },
+	{ 2411, "skate_shop", "CJ_PRO_3" },
+	{ 3524, "skullpillar", "pirateskull02_128" },
+	{ 3434, "skullsign", "pirates06_64" },
+	{ 3434, "skullsign", "pirates08_128" },
+	{ 3434, "skullsign", "pirates09_128" },
+	{ 3434, "skullsign", "pirateskull01_128" },
+	{ 3434, "skullsign", "piratesword_64" },
+	{ 3434, "skullsign", "vegasstripsign1_256" },
+	{ 3434, "skullsign", "vegasstripsign2_256" },
+	{ 3434, "skullsign", "vgsn_scrollsgn" },
+	{ 14479, "skuzzy_motelmain", "burglry_wall5" },
+	{ 14479, "skuzzy_motelmain", "motel_mirror2" },
+	{ 14479, "skuzzy_motelmain", "mp_CJ_Laminate1" },
+	{ 4550, "skyscr1_lan2", "ablndwall2_LAE" },
+	{ 4550, "skyscr1_lan2", "downtwin24" },
+	{ 4550, "skyscr1_lan2", "gm_labuld2_b" },
+	{ 4550, "skyscr1_lan2", "gm_labuld3_a" },
+	{ 4550, "skyscr1_lan2", "gm_labuld3_b" },
+	{ 4550, "skyscr1_lan2", "sl_librarycolmn1" },
+	{ 4550, "skyscr1_lan2", "sl_librarycolmn2" },
+	{ 4550, "skyscr1_lan2", "sl_librarydoor1" },
+	{ 4550, "skyscr1_lan2", "sl_librarygdoor1" },
+	{ 4550, "skyscr1_lan2", "sl_librarywall1" },
+	{ 4550, "skyscr1_lan2", "sl_librarywin1" },
+	{ 4550, "skyscr1_lan2", "sl_librarywin2" },
+	{ 4550, "skyscr1_lan2", "sl_librarywin3" },
+	{ 4550, "skyscr1_lan2", "sl_skyscprbtm1" },
+	{ 4550, "skyscr1_lan2", "sl_skyscprwall1" },
+	{ 4550, "skyscr1_lan2", "sl_skyscrpr02" },
+	{ 4550, "skyscr1_lan2", "sl_skyscrpr02wall1" },
+	{ 4550, "skyscr1_lan2", "sl_skyscrpr03" },
+	{ 4568, "skyscrap2_lan2", "sl_marblewall2" },
+	{ 4586, "skyscrap3_lan2", "sl_dthotelwin1" },
+	{ 4586, "skyscrap3_lan2", "sl_skyscrpr05" },
+	{ 4586, "skyscrap3_lan2", "sl_skyscrpr05b" },
+	{ 4586, "skyscrap3_lan2", "sl_skyscrpr05wall1" },
+	{ 5740, "skyscrapelawn", "glasswindow3_256" },
+	{ 10948, "skyscrapper_sfs", "ws_skywins4" },
+	{ 10938, "skyscrap_sfse", "ws_rollerdoor_alu_noentry" },
+	{ 10938, "skyscrap_sfse", "ws_skyscraperwin1" },
+	{ 10053, "slapart01sfe", "sl_brwnaprtwall1" },
+	{ 10053, "slapart01sfe", "sl_brwnaprtwin1" },
+	{ 10053, "slapart01sfe", "sl_brwnaprtwin2" },
+	{ 10053, "slapart01sfe", "sl_brwnaprtwin3" },
+	{ 10053, "slapart01sfe", "sl_grngarage1" },
+	{ 10053, "slapart01sfe", "sl_hirise2win1" },
+	{ 10053, "slapart01sfe", "sl_hirise2_conc" },
+	{ 10053, "slapart01sfe", "sl_hirisegrn1" },
+	{ 10053, "slapart01sfe", "sl_hirisepnk1" },
+	{ 10053, "slapart01sfe", "sl_hiriseredconc" },
+	{ 10053, "slapart01sfe", "sl_hirisewhite1" },
+	{ 9908, "smallertxd", "bigpark_sfe" },
+	{ 9908, "smallertxd", "hotel_bit1" },
+	{ 9908, "smallertxd", "hotel_win1" },
+	{ 9908, "smallertxd", "pizzabot_64" },
+	{ 9908, "smallertxd", "sfe_bigbuild4" },
+	{ 9908, "smallertxd", "sf_backaley4" },
+	{ 9908, "smallertxd", "sf_downtown_1097b" },
+	{ 9908, "smallertxd", "sf_shop3" },
+	{ 9908, "smallertxd", "sf_windos_15c" },
+	{ 9908, "smallertxd", "wash_grnd_mess1_128" },
+	{ 14756, "smallsfhs", "AH_flroortiledirt1" },
+	{ 14756, "smallsfhs", "ah_whitiles" },
+	{ 3587, "snpedhusxref", "lasjmscum2a" },
+	{ 3587, "snpedhusxref", "lasjmslumgrnd" },
+	{ 3587, "snpedhusxref", "sanpednhusd1" },
+	{ 3587, "snpedhusxref", "sanpednhusd4" },
+	{ 3587, "snpedhusxref", "sjmlababit" },
+	{ 3587, "snpedhusxref", "sjmlawood" },
+	{ 3587, "snpedhusxref", "sjmlawood2" },
+	{ 3587, "snpedhusxref", "vgsclubwall08_128" },
+	{ 8396, "sphinx01", "luxorceiling01_128" },
+	{ 8396, "sphinx01", "luxorceiling02_128" },
+	{ 8396, "sphinx01", "luxorledge02_128" },
+	{ 8396, "sphinx01", "luxormural01_256" },
+	{ 8396, "sphinx01", "sphinxbody01_128" },
+	{ 8396, "sphinx01", "sphinxface01_256" },
+	{ 2689, "sport_cloth", "BB_TOPS" },
+	{ 2689, "sport_cloth", "oran12" },
+	{ 2689, "sport_cloth", "rockstarhood" },
+	{ 12847, "sprunkworks", "bigsprunkcan" },
+	{ 12847, "sprunkworks", "bigsprunkends" },
+	{ 12847, "sprunkworks", "coe_factry1" },
+	{ 11095, "stadbridge_sfs", "ws_footbridge" },
+	{ 17511, "stadium_lae2", "compmallsign1" },
+	{ 17511, "stadium_lae2", "formumsgn_lae2" },
+	{ 17511, "stadium_lae2", "forum1" },
+	{ 17511, "stadium_lae2", "grassdeep2" },
+	{ 17511, "stadium_lae2", "hotring1" },
+	{ 17511, "stadium_lae2", "hotring2" },
+	{ 17511, "stadium_lae2", "kickbarrier" },
+	{ 17511, "stadium_lae2", "stadtbludoors_lae2" },
+	{ 17511, "stadium_lae2", "stadtcorrugate_lae2" },
+	{ 17511, "stadium_lae2", "stadtdoors_lae2" },
+	{ 17511, "stadium_lae2", "stadtpaytwin_lae2" },
+	{ 17511, "stadium_lae2", "stadt_banner1" },
+	{ 17511, "stadium_lae2", "stadt_banner2" },
+	{ 17511, "stadium_lae2", "stadt_banner3" },
+	{ 17511, "stadium_lae2", "ticketsnprice_lae2" },
+	{ 10954, "stadium_sfse", "ws_stadiumgates" },
+	{ 13603, "stad_tag", "Was_swr_wall_blue" },
+	{ 4101, "stapl", "sl_Laexpomtl1" },
+	{ 4101, "stapl", "sl_laexpowall1" },
+	{ 4101, "stapl", "sl_laexpowin1" },
+	{ 4101, "stapl", "sl_Laexpowin2" },
+	{ 4101, "stapl", "sl_stapldoor2" },
+	{ 14818, "starps_ext", "kb_pathgras" },
+	{ 3900, "station", "ledge2_64H" },
+	{ 3900, "station", "ledgetop2_64HV" },
+	{ 3900, "station", "newall2_16c128" },
+	{ 3900, "station", "rustd64" },
+	{ 3900, "station", "stairstep01_64" },
+	{ 11352, "stationsfse_1", "sfsestationsigns" },
+	{ 5772, "stationtunnel", "market_LAwN" },
+	{ 10932, "station_sfse", "neon" },
+	{ 4573, "stolenbuild01", "sl_dtbuild1door1" },
+	{ 4573, "stolenbuild01", "sl_dtbuild1wall1" },
+	{ 4573, "stolenbuild01", "sl_dtbuild1win1" },
+	{ 4573, "stolenbuild01", "sl_dtbuild1win2" },
+	{ 4573, "stolenbuild01", "sl_dtbuild1win3" },
+	{ 4573, "stolenbuild01", "sl_dtwn2edge1" },
+	{ 4573, "stolenbuild01", "sl_dtwn2wall1" },
+	{ 4573, "stolenbuild01", "sl_dtwn2win1" },
+	{ 4572, "stolenbuild02", "sl_skyscrpr04" },
+	{ 4572, "stolenbuild02", "sl_zippendant1" },
+	{ 4570, "stolenbuild03", "girdygird" },
+	{ 4570, "stolenbuild03", "sl_concretewin1" },
+	{ 4570, "stolenbuild03", "sl_dtbuild2edge1" },
+	{ 4570, "stolenbuild03", "sl_dtbuild2wall1" },
+	{ 4570, "stolenbuild03", "sl_dtbuild2win1" },
+	{ 4570, "stolenbuild03", "sl_dtbuild2win2" },
+	{ 4570, "stolenbuild03", "sl_dtbuild2win3" },
+	{ 5404, "stormdra1_lae", "lasrmd2_sjm" },
+	{ 5404, "stormdra1_lae", "lasrmd3_sjm" },
+	{ 5404, "stormdra1_lae", "lasrmd4_sjm" },
+	{ 5105, "stormdrain_las2", "abeybrid" },
+	{ 14819, "straps_int", "speakerkb1" },
+	{ 1294, "streetlights", "Lamphead" },
+	{ 6977, "stripshop1", "vgnstripwall1_256" },
+	{ 5735, "studio01_lawn", "studoff01_law" },
+	{ 5735, "studio01_lawn", "studoff02_law" },
+	{ 5735, "studio01_lawn", "studoff03_law" },
+	{ 5735, "studio01_lawn", "studoff04_law" },
+	{ 9239, "stuff2_sfn", "cm_SFN_warehousewall" },
+	{ 9239, "stuff2_sfn", "sl_preswin02" },
+	{ 9239, "stuff2_sfn", "sl_preswindbl02" },
+	{ 10824, "subpen1_sfse", "ws_sub_pen_conc" },
+	{ 10375, "subshops_sfs", "ws_archangels_dirty" },
+	{ 10375, "subshops_sfs", "ws_fancyshop1d" },
+	{ 10375, "subshops_sfs", "ws_fancywindaes2" },
+	{ 10375, "subshops_sfs", "ws_rollerdoor_silver2" },
+	{ 13608, "sumoback", "dirtmix_128" },
+	{ 6349, "sunbill_law2", "SunBillB01" },
+	{ 6349, "sunbill_law2", "SunBillB02" },
+	{ 5722, "sunrise01_lawn", "hair01_law" },
+	{ 5722, "sunrise01_lawn", "holshop_law" },
+	{ 5722, "sunrise01_lawn", "tileshoptop1_law" },
+	{ 5722, "sunrise01_lawn", "venshade02_law" },
+	{ 5716, "sunrise02_lawn", "mann01_law" },
+	{ 5716, "sunrise02_lawn", "mann02_law" },
+	{ 5716, "sunrise02_lawn", "mann03_law" },
+	{ 5716, "sunrise02_lawn", "Mannblok1_LAn" },
+	{ 5716, "sunrise02_lawn", "manndoorb_law" },
+	{ 5716, "sunrise02_lawn", "manndoorc_law" },
+	{ 5716, "sunrise02_lawn", "manndoor_law" },
+	{ 5716, "sunrise02_lawn", "manns01_LAwN" },
+	{ 5716, "sunrise02_lawn", "mannwallb_law" },
+	{ 5716, "sunrise02_lawn", "mannwallc_law" },
+	{ 5716, "sunrise02_lawn", "mannwall_law" },
+	{ 5727, "sunrise04_lawn", "decodet1_LAwn" },
+	{ 5727, "sunrise04_lawn", "decodet2_LAwn" },
+	{ 5727, "sunrise04_lawn", "fredwall1_LAwN" },
+	{ 5727, "sunrise04_lawn", "fredwall2_LAwN" },
+	{ 5727, "sunrise04_lawn", "fredwall3_LAwN" },
+	{ 5727, "sunrise04_lawn", "holbuild10b_law" },
+	{ 5727, "sunrise04_lawn", "holbuild10_law" },
+	{ 5727, "sunrise04_lawn", "lasjmflood1" },
+	{ 5727, "sunrise04_lawn", "mosaic2_LAwn" },
+	{ 5727, "sunrise04_lawn", "windowbot01_law" },
+	{ 5768, "sunrise05_lawn", "hollysign01_LAw" },
+	{ 5768, "sunrise05_lawn", "hollywin01_LAw" },
+	{ 5768, "sunrise05_lawn", "hollywin04_LAw" },
+	{ 5725, "sunrise08_lawn", "cornice02_la" },
+	{ 5725, "sunrise08_lawn", "holbuild06b_law" },
+	{ 5725, "sunrise08_lawn", "holbuild06dr_law" },
+	{ 5725, "sunrise08_lawn", "holbuild06_law" },
+	{ 5725, "sunrise08_lawn", "hwbig01b_law" },
+	{ 5725, "sunrise08_lawn", "hwbig01c_law" },
+	{ 5725, "sunrise08_lawn", "hwbig01_law" },
+	{ 5725, "sunrise08_lawn", "motpic_law" },
+	{ 5725, "sunrise08_lawn", "pillarstone_law" },
+	{ 5725, "sunrise08_lawn", "tikboxwall_law" },
+	{ 5725, "sunrise08_lawn", "tikboxwin_law" },
+	{ 5725, "sunrise08_lawn", "topgrill01_law" },
+	{ 5725, "sunrise08_lawn", "weeregal" },
+	{ 5769, "sunrise09_lawn", "hollydoor01_law" },
+	{ 5769, "sunrise09_lawn", "hollysign03_LAw" },
+	{ 5769, "sunrise09_lawn", "hollysign04_LAw" },
+	{ 5769, "sunrise09_lawn", "hollywall01_law" },
+	{ 5769, "sunrise09_lawn", "hollywin05_LAw" },
+	{ 5769, "sunrise09_lawn", "vinedet1_LAwN" },
+	{ 5769, "sunrise09_lawn", "vinesign2_LAw" },
+	{ 5769, "sunrise09_lawn", "vinewall01_law" },
+	{ 5719, "sunrise10_lawn", "compcouwall2" },
+	{ 5719, "sunrise10_lawn", "eldritch_law" },
+	{ 5719, "sunrise10_lawn", "eld_box2_law" },
+	{ 5719, "sunrise10_lawn", "eld_box3_law" },
+	{ 5719, "sunrise10_lawn", "eld_box_law" },
+	{ 5719, "sunrise10_lawn", "holbuild01c_law" },
+	{ 5719, "sunrise10_lawn", "holbuild01_law" },
+	{ 5719, "sunrise10_lawn", "holbuild02b_law" },
+	{ 5719, "sunrise10_lawn", "holbuild02c_law" },
+	{ 5719, "sunrise10_lawn", "holbuild02d_law" },
+	{ 5719, "sunrise10_lawn", "holbuild02_law" },
+	{ 5719, "sunrise10_lawn", "holbuild03b_law" },
+	{ 5719, "sunrise10_lawn", "holbuild03c_law" },
+	{ 5719, "sunrise10_lawn", "holbuild03d_law" },
+	{ 5719, "sunrise10_lawn", "holbuild03_law" },
+	{ 5719, "sunrise10_lawn", "holbuild04_law" },
+	{ 5719, "sunrise10_lawn", "pillarbase_law" },
+	{ 5719, "sunrise10_lawn", "pillartop_law" },
+	{ 5719, "sunrise10_lawn", "pillar_law" },
+	{ 5719, "sunrise10_lawn", "starland01_law" },
+	{ 5719, "sunrise10_lawn", "startours01_law" },
+	{ 5717, "sunrise11_lawn", "ShopWall1_LAn" },
+	{ 5717, "sunrise11_lawn", "ShopWall2_LAn" },
+	{ 5717, "sunrise11_lawn", "ShopWindo1_LAn" },
+	{ 6338, "sunset01_law2", "downtwin18" },
+	{ 6338, "sunset01_law2", "melrorg_law" },
+	{ 6338, "sunset01_law2", "sffront24_256" },
+	{ 5775, "sunset01_lawn", "comptwindo5" },
+	{ 5775, "sunset01_lawn", "standardet1_LA" },
+	{ 5775, "sunset01_lawn", "stanwin01_LAwN" },
+	{ 5775, "sunset01_lawn", "stanwin02_LAwN" },
+	{ 6336, "sunset02_law2", "bank01_LAw" },
+	{ 6336, "sunset02_law2", "rodeowin01" },
+	{ 6336, "sunset02_law2", "SunBillB07" },
+	{ 6336, "sunset02_law2", "SunBillB08" },
+	{ 6354, "sunset03_law2", "billLA01" },
+	{ 6354, "sunset03_law2", "billLA02" },
+	{ 6354, "sunset03_law2", "coinlaundry2_256" },
+	{ 6354, "sunset03_law2", "streetsign1_256" },
+	{ 6354, "sunset03_law2", "SunBillB04" },
+	{ 6354, "sunset03_law2", "SunBillB06" },
+	{ 6328, "sunset04_law2", "pawnsigns01_128" },
+	{ 4551, "sunset1_lan2", "Bow_road_nomark_b" },
+	{ 4551, "sunset1_lan2", "emptyshop" },
+	{ 4551, "sunset1_lan2", "snpedpurtrm" },
+	{ 5870, "sunst18_lawn", "argwin1_LA" },
+	{ 5870, "sunst18_lawn", "greenwall3" },
+	{ 5870, "sunst18_lawn", "laspowrec3" },
+	{ 5870, "sunst18_lawn", "laspowrec6" },
+	{ 6357, "sunstrans_law2", "dogbill01" },
+	{ 6357, "sunstrans_law2", "SunBillB05" },
+	{ 6357, "sunstrans_law2", "SunBillB10" },
+	{ 5998, "sunstr_lawn", "eldneoLAwN" },
+	{ 5998, "sunstr_lawn", "ganggraf02_LA" },
+	{ 5998, "sunstr_lawn", "manns02_LAwN" },
+	{ 5998, "sunstr_lawn", "neon01_LAwN" },
+	{ 5998, "sunstr_lawn", "neon02_LAwN" },
+	{ 5998, "sunstr_lawn", "neon04_LAwN" },
+	{ 5998, "sunstr_lawn", "neon05_LAwN" },
+	{ 5998, "sunstr_lawn", "sunneon01" },
+	{ 5998, "sunstr_lawn", "sunneon02" },
+	{ 2404, "surf_boards", "CJ_SURFBOARDS" },
+	{ 15046, "svcunthoose", "ab_flakeywall" },
+	{ 15046, "svcunthoose", "AH_carpet5kb" },
+	{ 15046, "svcunthoose", "csGarageTrolley01psd" },
+	{ 15046, "svcunthoose", "csheistbox01" },
+	{ 15046, "svcunthoose", "GB_fireplace02" },
+	{ 15046, "svcunthoose", "GB_plug01" },
+	{ 15046, "svcunthoose", "GB_toilet01" },
+	{ 15046, "svcunthoose", "mplid02" },
+	{ 15055, "svlamid", "ah_blindfana" },
+	{ 15055, "svlamid", "AH_flroortile3" },
+	{ 15042, "svsfsm", "AH_filthrug1" },
+	{ 15042, "svsfsm", "chin_carp2" },
+	{ 15042, "svsfsm", "GB_rapposter01" },
+	{ 15042, "svsfsm", "GB_rapposter03" },
+	{ 15042, "svsfsm", "strip_carpet" },
+	{ 15058, "svvgmid", "AH_flroortile11" },
+	{ 15058, "svvgmid", "AH_walltile4" },
+	{ 14493, "sweetsbits", "ab_cusion1" },
+	{ 14493, "sweetsbits", "ab_cusion2" },
+	{ 14528, "sweetshads", "andydark3" },
+	{ 14495, "sweetshall", "ab_rollerblind" },
+	{ 14495, "sweetshall", "ab_wall4" },
+	{ 14495, "sweetshall", "AH_dirtywalls8bit2" },
+	{ 14495, "sweetshall", "ah_wpaper13" },
+	{ 14495, "sweetshall", "GB_nastybar25" },
+	{ 14495, "sweetshall", "mcstraps_ceiling" },
+	{ 14495, "sweetshall", "mcstraps_door1" },
+	{ 14495, "sweetshall", "mp_cooker1" },
+	{ 14527, "sweetslites", "mp_diner_fan" },
+	{ 14526, "sweetsmain", "ab_kitchunit2" },
+	{ 14526, "sweetsmain", "ab_tilekitch" },
+	{ 14526, "sweetsmain", "ah_whitpanelceil" },
+	{ 14526, "sweetsmain", "ah_wpaper12" },
+	{ 14526, "sweetsmain", "gb_binbag01" },
+	{ 14526, "sweetsmain", "GB_Pan01" },
+	{ 14526, "sweetsmain", "Metal3_64_hole" },
+	{ 14526, "sweetsmain", "mp_CJ_BIG_TELLY1" },
+	{ 14526, "sweetsmain", "mp_cooker2" },
+	{ 14526, "sweetsmain", "mp_cooker3" },
+	{ 14526, "sweetsmain", "wall2" },
+	{ 14526, "sweetsmain", "wall5" },
+	{ 14481, "sweets_bit2", "ab_curtain_shwr" },
+	{ 12962, "sw_apartflat", "sw_genstore2" },
+	{ 12962, "sw_apartflat", "sw_hardware" },
+	{ 12962, "sw_apartflat", "sw_realtywin" },
+	{ 12962, "sw_apartflat", "wal0256hi" },
+	{ 13012, "sw_apartflat5", "des_donutwall" },
+	{ 13012, "sw_apartflat5", "sjmfad1" },
+	{ 13012, "sw_apartflat5", "sw_lastdrop" },
+	{ 12938, "sw_apartments", "sjmrufhus3" },
+	{ 12938, "sw_apartments", "sw_policeline" },
+	{ 13007, "sw_bankint", "bank_wall1" },
+	{ 13007, "sw_bankint", "bank_wall4" },
+	{ 13007, "sw_bankint", "closed_temp" },
+	{ 13007, "sw_bankint", "comdore_pet256" },
+	{ 13007, "sw_bankint", "kbcornice_1_128" },
+	{ 13007, "sw_bankint", "spad_tile5_256" },
+	{ 13007, "sw_bankint", "type_128" },
+	{ 13007, "sw_bankint", "woodfloor1" },
+	{ 13008, "sw_block01", "sw_cafedoor1" },
+	{ 13008, "sw_block01", "ws_smoked" },
+	{ 12862, "sw_block03", "sw_barb" },
+	{ 12862, "sw_block03", "sw_bigmike" },
+	{ 12862, "sw_block03", "sw_cashstore" },
+	{ 12862, "sw_block03", "sw_door03" },
+	{ 12862, "sw_block03", "sw_door04" },
+	{ 12862, "sw_block03", "sw_door05" },
+	{ 12862, "sw_block03", "sw_garagedoor" },
+	{ 12862, "sw_block03", "sw_lintl01" },
+	{ 12862, "sw_block03", "sw_roofbit1" },
+	{ 12862, "sw_block03", "sw_watson" },
+	{ 12862, "sw_block03", "sw_wind02" },
+	{ 12862, "sw_block03", "sw_wind04" },
+	{ 12862, "sw_block03", "sw_woodwall1" },
+	{ 12862, "sw_block03", "sw_woodwall2" },
+	{ 13014, "sw_block04", "GB_nastybar21" },
+	{ 13014, "sw_block04", "sw_wallbrick_03" },
+	{ 13014, "sw_block04", "sw_wind06" },
+	{ 12923, "sw_block05", "sw_door08" },
+	{ 12923, "sw_block05", "sw_walltopx3" },
+	{ 12923, "sw_block05", "sw_woodslats1" },
+	{ 12924, "sw_block06", "sw_wallbrick_07" },
+	{ 12964, "sw_block09", "GB_truckdepot18" },
+	{ 12964, "sw_block09", "sjmbwall1" },
+	{ 12964, "sw_block09", "sw_genstore" },
+	{ 12980, "sw_block10", "sw_wind20" },
+	{ 12980, "sw_block10", "sw_woodslats2" },
+	{ 12984, "sw_block11", "shoptopb128" },
+	{ 13011, "sw_block12", "gwfrontpan_law" },
+	{ 12979, "sw_block9", "sw_bikeshed" },
+	{ 12979, "sw_block9", "sw_wind14" },
+	{ 12931, "sw_brewery", "sw_brewbrickwin01" },
+	{ 12931, "sw_brewery", "sw_brewbrickwin02" },
+	{ 12960, "sw_church", "sw_confess" },
+	{ 12960, "sw_church", "sw_confessthru" },
+	{ 12960, "sw_church", "sw_trellis" },
+	{ 12960, "sw_church", "sw_winshutr" },
+	{ 12976, "sw_diner1", "huspnk256hi" },
+	{ 12976, "sw_diner1", "SW_dinersigns" },
+	{ 12976, "sw_diner1", "sw_oldpump" },
+	{ 12976, "sw_diner1", "sw_pump" },
+	{ 12976, "sw_diner1", "sw_roof01" },
+	{ 12988, "sw_fact02", "sw_bioeng" },
+	{ 13065, "sw_fact02alt", "spandLoadingDoor" },
+	{ 13065, "sw_fact02alt", "ws_oldwall1" },
+	{ 12911, "sw_farm1", "sw_farmsign01" },
+	{ 12863, "sw_genstore1", "sw_awning2" },
+	{ 12959, "sw_library", "airportwind01" },
+	{ 12959, "sw_library", "sw_library" },
+	{ 12959, "sw_library", "sw_libwin" },
+	{ 12983, "sw_med1", "sw_med01" },
+	{ 12937, "sw_oldshack", "hilltest2_LAS" },
+	{ 12937, "sw_oldshack", "sw_cabshut01" },
+	{ 12937, "sw_oldshack", "sw_hubcaps" },
+	{ 12937, "sw_oldshack", "sw_pelts01" },
+	{ 12910, "sw_railbridge1", "sw_rock1b" },
+	{ 13296, "sw_roadgas", "bballboard3_256" },
+	{ 12925, "sw_sheds", "sw_barnframe" },
+	{ 12986, "sw_well1", "Bio_64" },
+	{ 1490, "tags2_lalae", "frontyard" },
+	{ 1490, "tags2_lalae", "grove" },
+	{ 1531, "tags_laazteca", "aztecas" },
+	{ 1525, "tags_lakilo", "kilotray" },
+	{ 1526, "tags_larifa", "rifa" },
+	{ 1527, "tags_larollin", "rollin" },
+	{ 1528, "tags_laseville", "seville" },
+	{ 1529, "tags_latemple", "temple" },
+	{ 1530, "tags_lavagos", "vagos" },
+	{ 3018, "targetmx", "target4" },
+	{ 1583, "targets", "5parttarget" },
+	{ 1583, "targets", "target1" },
+	{ 1583, "targets", "target2" },
+	{ 1583, "targets", "target3" },
+	{ 1583, "targets", "targetframe1" },
+	{ 1583, "targets", "targetframe2" },
+	{ 3762, "tcecen4law", "lasjmwinny" },
+	{ 3762, "tcecen4law", "mulhuose01c_law" },
+	{ 5764, "telewirelawn", "donutLAwN" },
+	{ 17517, "templae2land", "bincoslae2_128" },
+	{ 17517, "templae2land", "bincowin" },
+	{ 17517, "templae2land", "LAglaswall2" },
+	{ 5408, "tempstuff_lae", "examball1_LAe" },
+	{ 5408, "tempstuff_lae", "examintp2_LAS" },
+	{ 5408, "tempstuff_lae", "examintp_LAS" },
+	{ 5408, "tempstuff_lae", "examroof1_LAe" },
+	{ 5408, "tempstuff_lae", "examwall1_LAe" },
+	{ 5408, "tempstuff_lae", "sl_metalbndrust1" },
+	{ 1885, "temp_shop", "basket_1" },
+	{ 1975, "texttest", "kb_blue" },
+	{ 1975, "texttest", "kb_red" },
+	{ 4600, "theatrelan2", "flmngo03_128" },
+	{ 4600, "theatrelan2", "gm_labuld2_c" },
+	{ 4600, "theatrelan2", "sl_pendant1" },
+	{ 4600, "theatrelan2", "sl_whitewash1" },
+	{ 4600, "theatrelan2", "wolf1 copy" },
+	{ 962, "ticket_sub", "CJ_TICKM" },
+	{ 8532, "tikigrass", "vgsndivebrd" },
+	{ 8534, "tikimotel", "sa_wood01_128" },
+	{ 8534, "tikimotel", "sa_wood03_128" },
+	{ 8534, "tikimotel", "sa_wood04_128" },
+	{ 8534, "tikimotel", "sa_wood05_128" },
+	{ 8534, "tikimotel", "tikidoor01_128" },
+	{ 8534, "tikimotel", "tikitriangle_128" },
+	{ 8536, "tikisign", "tikireed01_128" },
+	{ 8536, "tikisign", "tikisign01_128" },
+	{ 8536, "tikisign", "tikisign02_128" },
+	{ 9623, "toll_sfw", "toll_SFw1" },
+	{ 9623, "toll_sfw", "toll_SFw3" },
+	{ 977, "towerdoor", "Front_Door" },
+	{ 14570, "traidaqua", "ab_aqua_anenome" },
+	{ 14570, "traidaqua", "ab_aqua_bubbles" },
+	{ 14570, "traidaqua", "ab_aqua_coral" },
+	{ 14570, "traidaqua", "ab_aqua_kelp" },
+	{ 14570, "traidaqua", "ab_aqua_sand" },
+	{ 14570, "traidaqua", "ab_aqua_starfish" },
+	{ 14570, "traidaqua", "ab_aqua_tubeweed" },
+	{ 14570, "traidaqua", "ab_aqua_urchin" },
+	{ 14570, "traidaqua", "ab_tv" },
+	{ 14570, "traidaqua", "sa_wood06_128" },
+	{ 14569, "traidman", "ab_aquarium" },
+	{ 14569, "traidman", "chinese3" },
+	{ 14569, "traidman", "chinese8" },
+	{ 14569, "traidman", "darkgrey_carpet_256" },
+	{ 14569, "traidman", "luxebrown_law" },
+	{ 14569, "traidman", "pagodaroof4" },
+	{ 14569, "traidman", "walpaper_dragn" },
+	{ 14385, "trailerkb", "tr_floor1" },
+	{ 14385, "trailerkb", "tr_floor2" },
+	{ 14385, "trailerkb", "tr_kit_1a" },
+	{ 14385, "trailerkb", "tr_kit_2ba" },
+	{ 14385, "trailerkb", "tr_kit_3a" },
+	{ 14385, "trailerkb", "tr_kit_4b" },
+	{ 14385, "trailerkb", "tr_wall2" },
+	{ 14385, "trailerkb", "tr_wall3" },
+	{ 14385, "trailerkb", "tr_wood1" },
+	{ 3167, "trailers", "sm_airstreamside" },
+	{ 3167, "trailers", "sm_airstreamside2" },
+	{ 1373, "traincross", "railxing" },
+	{ 1373, "traincross", "rednwhite" },
+	{ 1373, "traincross", "trainwarninglight" },
+	{ 10931, "traingen_sfse", "metpatshadow32" },
+	{ 4817, "traintrack_las", "sjmlascumpth" },
+	{ 10752, "traintunnel1_sfse", "wallwashvc128" },
+	{ 9680, "tramstatsfw", "sf_tramcross" },
+	{ 9680, "tramstatsfw", "tramdoors_sfw" },
+	{ 9680, "tramstatsfw", "tramstation1_sfw" },
+	{ 9680, "tramstatsfw", "tramstation2_sfw" },
+	{ 9680, "tramstatsfw", "tramstation3_sfw" },
+	{ 1375, "tramstop", "tramstop_sf" },
+	{ 767, "tree1", "bzelka1" },
+	{ 767, "tree1", "elmtreered" },
+	{ 767, "tree1", "Elm_treegrn" },
+	{ 767, "tree1", "Elm_treegrn2" },
+	{ 767, "tree1", "Elm_treegrn4" },
+	{ 764, "tree2", "bgleda0" },
+	{ 764, "tree2", "bpiced1" },
+	{ 764, "tree2", "cedarbare" },
+	{ 764, "tree2", "cedarwee" },
+	{ 764, "tree2", "elmdead" },
+	{ 764, "tree2", "Locustbra" },
+	{ 764, "tree2", "sprucbr" },
+	{ 764, "tree2", "weeelm" },
+	{ 763, "tree3", "ashbrnch" },
+	{ 763, "tree3", "bcorya0" },
+	{ 763, "tree3", "bfraxa1" },
+	{ 763, "tree3", "bpinud2" },
+	{ 763, "tree3", "hazelbranch" },
+	{ 763, "tree3", "hazelbrnch" },
+	{ 763, "tree3", "pinebrnch1" },
+	{ 3910, "treeshad", "railshadowdif" },
+	{ 8663, "triadcasino", "FourDragons01_256" },
+	{ 8663, "triadcasino", "imperial01_64" },
+	{ 8663, "triadcasino", "imperial02_64" },
+	{ 8663, "triadcasino", "imperial03_128" },
+	{ 8663, "triadcasino", "imperial04_128" },
+	{ 14562, "triadinteriorn", "vgnchinlion1_512" },
+	{ 3531, "triadprops_lvs", "casinowall1" },
+	{ 3531, "triadprops_lvs", "chinese1" },
+	{ 3531, "triadprops_lvs", "GB_restaursmll58" },
+	{ 14560, "triad_bar", "pagoda3" },
+	{ 14560, "triad_bar", "pagodaroof2" },
+	{ 14560, "triad_bar", "pagodaroof3" },
+	{ 14560, "triad_bar", "triad_decor1" },
+	{ 14565, "triad_bar2", "shaker128" },
+	{ 14608, "triad_big", "buddha_gold" },
+	{ 14608, "triad_big", "silver_coins2" },
+	{ 14564, "triad_ext", "ab_spotlite" },
+	{ 14563, "triad_main", "chinese5" },
+	{ 14563, "triad_main", "chin_carp3" },
+	{ 14563, "triad_main", "sign_maintenance" },
+	{ 14561, "triad_neon", "ab_neon_wof" },
+	{ 14561, "triad_neon", "kbneon" },
+	{ 14561, "triad_neon", "lightalp1a" },
+	{ 14561, "triad_neon", "sign_Restaurant" },
+	{ 14561, "triad_neon", "sign_wheelofrtne2" },
+	{ 14605, "tricas_neon", "sign_hotel&casino" },
+	{ 14605, "tricas_neon", "sign_neondollar&star" },
+	{ 14605, "tricas_neon", "SIGN_playAgain" },
+	{ 14605, "tricas_neon", "sign_the4dragons" },
+	{ 8577, "trnstnground", "concretenew256128" },
+	{ 2994, "trolex", "trolley01" },
+	{ 2994, "trolex", "trolley03" },
+	{ 17072, "truckedepotlawn", "GB_truckdepot01" },
+	{ 17072, "truckedepotlawn", "GB_truckdepot02" },
+	{ 17072, "truckedepotlawn", "GB_truckdepot03" },
+	{ 17072, "truckedepotlawn", "GB_truckdepot04" },
+	{ 17072, "truckedepotlawn", "GB_truckdepot05" },
+	{ 17072, "truckedepotlawn", "GB_truckdepot07" },
+	{ 17072, "truckedepotlawn", "GB_truckdepot08" },
+	{ 972, "tunnel", "corugwall1128" },
+	{ 972, "tunnel", "panlantic_128" },
+	{ 972, "tunnel", "tunnel_128" },
+	{ 1609, "turtle", "turtlebit" },
+	{ 1609, "turtle", "turtlehead" },
+	{ 1609, "turtle", "turtletop" },
+	{ 6490, "tvstudio_law2", "tvstud01_LAw2" },
+	{ 6490, "tvstudio_law2", "tvstud02_LAw2" },
+	{ 6490, "tvstudio_law2", "tvstud03_LAw2" },
+	{ 10357, "tvtower_sfs", "ws_transmit_red" },
+	{ 10357, "tvtower_sfs", "ws_transmit_wht" },
+	{ 16150, "ufo_bar", "des_fanshadow" },
+	{ 16150, "ufo_bar", "des_intufowin" },
+	{ 16150, "ufo_bar", "ufo_pics1" },
+	{ 896, "underwater", "coral" },
+	{ 896, "underwater", "greyrockbig" },
+	{ 896, "underwater", "rocktr128" },
+	{ 896, "underwater", "starfish64" },
+	{ 4821, "union_las", "lasunion1" },
+	{ 4821, "union_las", "lasunion96" },
+	{ 4821, "union_las", "lasunion98" },
+	{ 4821, "union_las", "lasunion995" },
+	{ 7979, "vegasairprtland", "blackshadow3" },
+	{ 7979, "vegasairprtland", "hangerlight01_64" },
+	{ 430, "vegasbooth", "vendor01_lvs_128" },
+	{ 430, "vegasbooth", "vendor02_lvs_128" },
+	{ 430, "vegasbooth", "vendor04_lvs_64" },
+	{ 430, "vegasbooth", "vendor05_lvs_128" },
+	{ 7419, "vegasbuild", "Bow_church_dirt_to_grass_side" },
+	{ 7419, "vegasbuild", "vegparking1_256" },
+	{ 7419, "vegasbuild", "vgnwoodenwall_256" },
+	{ 6871, "vegascourtbld", "courthse1_256" },
+	{ 6871, "vegascourtbld", "courthse2_256" },
+	{ 6871, "vegascourtbld", "courthse3_256" },
+	{ 6871, "vegascourtbld", "courthsedor2_256" },
+	{ 6871, "vegascourtbld", "courthsewin2_128" },
+	{ 6871, "vegascourtbld", "courthse_128" },
+	{ 6871, "vegascourtbld", "marbletilewal1_256" },
+	{ 6871, "vegascourtbld", "vegaselecbloc_256" },
+	{ 7488, "vegasdwntwn1", "dangersign256" },
+	{ 7488, "vegasdwntwn1", "dwntwnvgn2_256" },
+	{ 7488, "vegasdwntwn1", "dwntwnvgn3_256" },
+	{ 7488, "vegasdwntwn1", "dwntwnvgn4_256" },
+	{ 7488, "vegasdwntwn1", "dwntwnvgnawn1_128" },
+	{ 7488, "vegasdwntwn1", "gen_gym1_256" },
+	{ 7488, "vegasdwntwn1", "savsig2" },
+	{ 7488, "vegasdwntwn1", "vgncprkdoor1_256" },
+	{ 7488, "vegasdwntwn1", "vgnstonewall1_256" },
+	{ 7488, "vegasdwntwn1", "villainnwall02_128" },
+	{ 7488, "vegasdwntwn1", "warning-strip64" },
+	{ 3449, "vegashse2", "airconditioner02_128" },
+	{ 3449, "vegashse2", "badhousewall01_128" },
+	{ 3449, "vegashse2", "badhousewalld01_128" },
+	{ 3449, "vegashse2", "badhousewalld02_128" },
+	{ 3449, "vegashse2", "badhousewalld04_128" },
+	{ 3449, "vegashse2", "badhousewalld05_128" },
+	{ 3449, "vegashse2", "badhousewalld06_128" },
+	{ 3449, "vegashse2", "hseconcblend1_256" },
+	{ 3449, "vegashse2", "pinkwall01_64" },
+	{ 3449, "vegashse2", "studiowall_law" },
+	{ 3446, "vegashse3", "starhedge2" },
+	{ 3446, "vegashse3", "vgnhseledgw1_64" },
+	{ 3442, "vegashse4", "Est_corridor_ceiling" },
+	{ 3442, "vegashse4", "Est_Gen_stone" },
+	{ 3442, "vegashse4", "mallint01" },
+	{ 3442, "vegashse4", "vgnlowbuild3_256" },
+	{ 3484, "vegashse5", "newindow14" },
+	{ 3484, "vegashse5", "vegashousewal1_256" },
+	{ 3484, "vegashse5", "vegashousewal2_256" },
+	{ 3484, "vegashse5", "vegashousewal7_256" },
+	{ 3484, "vegashse5", "vegashousewal8_256" },
+	{ 3484, "vegashse5", "vgnhsepsh4_256" },
+	{ 3445, "vegashse6", "vegashousewal3_256" },
+	{ 3445, "vegashse6", "vegashousewal4_256" },
+	{ 3445, "vegashse6", "vgnhsepsh1_256" },
+	{ 3483, "vegashse7", "black128" },
+	{ 3483, "vegashse7", "vegashousewal5_256" },
+	{ 3483, "vegashse7", "vegashousewal6_256" },
+	{ 3483, "vegashse7", "vgnhsepsh7_128" },
+	{ 3444, "vegashse8", "airconditioner01_128" },
+	{ 3444, "vegashse8", "badhousegttrng03_128" },
+	{ 3444, "vegashse8", "badhousewall02_256" },
+	{ 3444, "vegashse8", "badhousewall03_256" },
+	{ 3444, "vegashse8", "badhousewall04_256" },
+	{ 3444, "vegashse8", "badhousewall05_256" },
+	{ 3444, "vegashse8", "badhousewall07_128" },
+	{ 3444, "vegashse8", "badhousewallb01_256" },
+	{ 3444, "vegashse8", "badhousewallb02_128" },
+	{ 3444, "vegashse8", "badhousewallc01_128" },
+	{ 3444, "vegashse8", "badhousewallc02_128" },
+	{ 3444, "vegashse8", "redstones01_256" },
+	{ 3444, "vegashse8", "venbuildwh_law2" },
+	{ 6875, "vegasnbuild1", "brickglasvgn1_256" },
+	{ 6875, "vegasnbuild1", "brickglasvgn2_128" },
+	{ 6875, "vegasnbuild1", "brickvgn1_128" },
+	{ 7367, "vegasnefnc", "ws_griddyfence_64" },
+	{ 7541, "vegasneon", "vgntelewires1" },
+	{ 15033, "vegassavesmal", "ah_corn2" },
+	{ 15033, "vegassavesmal", "ah_wallstyle3" },
+	{ 8373, "vegass_jetty", "coasty_bit6_sfe" },
+	{ 6869, "vegastemp1", "casinobase1_256" },
+	{ 6869, "vegastemp1", "casinobase2_256" },
+	{ 6869, "vegastemp1", "casinowall1_128" },
+	{ 6869, "vegastemp1", "vgnbarb1_256" },
+	{ 6869, "vegastemp1", "vgnbarb2_256" },
+	{ 6869, "vegastemp1", "vgnbarb3_256" },
+	{ 6869, "vegastemp1", "vgnbarbtex1_256" },
+	{ 6869, "vegastemp1", "vgnbarbwall6_256" },
+	{ 6869, "vegastemp1", "vgnbarbwall7_256" },
+	{ 6869, "vegastemp1", "vgnbarb_wall_128" },
+	{ 7916, "vegaswaterfall", "newaterfal1_256" },
+	{ 7497, "vegaswrehse1", "roof05L256" },
+	{ 7497, "vegaswrehse1", "sjmbarblas" },
+	{ 18038, "vegas_munation", "mp_gun_floorred" },
+	{ 18038, "vegas_munation", "mp_gun_range" },
+	{ 18038, "vegas_munation", "mp_gun_wallbreeze" },
+	{ 3469, "vegenmotel", "vgnmotel4_256" },
+	{ 3467, "vegstreetsign", "streetsign2_256" },
+	{ 734, "vegtresshi9b", "oakb" },
+	{ 1209, "vend", "veding1_64" },
+	{ 1209, "vend", "veding2_64" },
+	{ 6057, "venicegb02_law", "bbalcony03_law" },
+	{ 6057, "venicegb02_law", "hedge1_law" },
+	{ 6057, "venicegb02_law", "mottwin_law" },
+	{ 6057, "venicegb02_law", "venw01b_law" },
+	{ 6057, "venicegb02_law", "venw01_law" },
+	{ 6056, "venice_law", "jettylounge_law" },
+	{ 6056, "venice_law", "law_blue2" },
+	{ 6056, "venice_law", "law_blue3" },
+	{ 6056, "venice_law", "law_blue4" },
+	{ 6056, "venice_law", "law_blue5" },
+	{ 6056, "venice_law", "law_blue6" },
+	{ 6056, "venice_law", "law_blue7" },
+	{ 6056, "venice_law", "law_terra2" },
+	{ 6056, "venice_law", "law_terra4" },
+	{ 6056, "venice_law", "law_terra5" },
+	{ 6056, "venice_law", "law_yellow2" },
+	{ 6056, "venice_law", "law_yellow4" },
+	{ 6056, "venice_law", "law_yellow5" },
+	{ 6056, "venice_law", "law_yellow6" },
+	{ 6056, "venice_law", "newlawdoor" },
+	{ 6056, "venice_law", "stonewalls2" },
+	{ 6056, "venice_law", "wdpanel01b_law" },
+	{ 6056, "venice_law", "wdpanel01_law" },
+	{ 9106, "vgeamun", "blueroof_64" },
+	{ 9106, "vgeamun", "hirisedoor1_256" },
+	{ 9106, "vgeamun", "vgnammuwal1" },
+	{ 9106, "vgeamun", "vgnammuwal2" },
+	{ 9106, "vgeamun", "vgnammuwal3" },
+	{ 9184, "vgebillboards", "cokopops_2" },
+	{ 9184, "vgebillboards", "eris_4" },
+	{ 8849, "vgeretail1", "alleywallyell" },
+	{ 8849, "vgeretail1", "casinoshop31_256" },
+	{ 8849, "vgeretail1", "zippizzaco_256" },
+	{ 9029, "vgetrainfnce", "wire_sm" },
+	{ 14703, "vghsb3int2", "HS2_2Wall2" },
+	{ 14703, "vghsb3int2", "HS2_3Wall1" },
+	{ 14703, "vghsb3int2", "HS4_Wall7" },
+	{ 14703, "vghsb3int2", "HS4_Wall8" },
+	{ 14714, "vghss1int2", "HS1_2Floor1" },
+	{ 14714, "vghss1int2", "HS2_2Wall3" },
+	{ 14714, "vghss1int2", "HS2_2Wall5" },
+	{ 14714, "vghss1int2", "HS2_3Wall4" },
+	{ 14714, "vghss1int2", "HS4_Wall5" },
+	{ 14714, "vghss1int2", "HS4_Wall6" },
+	{ 6959, "vgnbasktball", "yellowbball" },
+	{ 7416, "vgnbball", "actopblank_256" },
+	{ 7416, "vgnbball", "banditsign_256" },
+	{ 7416, "vgnbball", "vgngewall2_256" },
+	{ 7418, "vgnbballsign2", "autobahn3_256" },
+	{ 7418, "vgnbballsign2", "bailbondvg_256" },
+	{ 7418, "vgnbballsign2", "bankofSA_law" },
+	{ 7418, "vgnbballsign2", "disgraceland1_256" },
+	{ 7418, "vgnbballsign2", "frogspawn1_256" },
+	{ 7418, "vgnbballsign2", "KACCdepot_256" },
+	{ 7418, "vgnbballsign2", "scoreboardvgn_256" },
+	{ 7418, "vgnbballsign2", "steakhouse_256" },
+	{ 7418, "vgnbballsign2", "tattoosignvgn_256" },
+	{ 7418, "vgnbballsign2", "weldwed1_256" },
+	{ 7418, "vgnbballsign2", "ws_chipboard2" },
+	{ 7232, "vgncastext01", "Clowns_Pocket" },
+	{ 7288, "vgncastext02", "vgncasign12_256" },
+	{ 7288, "vgncastext02", "vgncasign22_256" },
+	{ 7288, "vgncastext02", "vgncasign42_256" },
+	{ 6993, "vgncircir", "circirc1_256" },
+	{ 6993, "vgncircir", "circirc2_256" },
+	{ 6993, "vgncircir", "circirctex1_128" },
+	{ 6993, "vgncircir", "circirctex2_64" },
+	{ 6993, "vgncircir", "circirctex3_128" },
+	{ 6993, "vgncircir", "circirctex4_256" },
+	{ 6993, "vgncircir", "circirctex4_neon" },
+	{ 6993, "vgncircir", "gasstopwall1_128" },
+	{ 6993, "vgncircir", "neon_centrala" },
+	{ 6993, "vgncircir", "starfish_static_lits" },
+	{ 6993, "vgncircir", "vgnbarb1_256na" },
+	{ 6993, "vgncircir", "vgncirctent1_256" },
+	{ 7231, "vgncircir2", "aluminiumbands64" },
+	{ 7231, "vgncircir2", "Clown_Pock_sign1b" },
+	{ 7231, "vgncircir2", "Clown_Pock_sign1c2" },
+	{ 7231, "vgncircir2", "hairybanjo_256" },
+	{ 6866, "vgncnstrct1", "Circus_gls_01" },
+	{ 6866, "vgncnstrct1", "Circus_gls_02" },
+	{ 6866, "vgncnstrct1", "Circus_gls_03" },
+	{ 6866, "vgncnstrct1", "Circus_gls_04" },
+	{ 6866, "vgncnstrct1", "Circus_gls_05" },
+	{ 6866, "vgncnstrct1", "concretegroundl1b" },
+	{ 6866, "vgncnstrct1", "desmudtrail3" },
+	{ 6866, "vgncnstrct1", "vegasclubdoor_128" },
+	{ 7247, "vgncoast", "concretewall22b" },
+	{ 7247, "vgncoast", "metalwheel1_128" },
+	{ 7247, "vgncoast", "metalwheel2_128" },
+	{ 7247, "vgncoast", "mp_bigmetaldoor_256" },
+	{ 7533, "vgncondos1", "casinowall6_256" },
+	{ 7533, "vgncondos1", "plantwoodchip_128" },
+	{ 7533, "vgncondos1", "vgnmotel1_256" },
+	{ 7533, "vgncondos1", "vgnmotel2_256" },
+	{ 7533, "vgncondos1", "vgnmotel3_256" },
+	{ 7426, "vgncorp1", "brick2" },
+	{ 7426, "vgncorp1", "curbred_64H" },
+	{ 7426, "vgncorp1", "elcid1_256" },
+	{ 7426, "vgncorp1", "elcid2_256" },
+	{ 7426, "vgncorp1", "elcid3_256" },
+	{ 7426, "vgncorp1", "elcid4_256" },
+	{ 7426, "vgncorp1", "elcid5_128" },
+	{ 7426, "vgncorp1", "elcid6_128" },
+	{ 7426, "vgncorp1", "elcid7_128" },
+	{ 7426, "vgncorp1", "elcid8_128" },
+	{ 7426, "vgncorp1", "ivorytower1_256" },
+	{ 7426, "vgncorp1", "ivorytower2_256" },
+	{ 7426, "vgncorp1", "vgnbuild1_256" },
+	{ 7426, "vgncorp1", "vgnbuild2_128" },
+	{ 7426, "vgncorp1", "vgnbuild3_256" },
+	{ 7426, "vgncorp1", "vgndwntwnrf2_128" },
+	{ 7009, "vgndwntwn1", "newpolice_sa" },
+	{ 7009, "vgndwntwn1", "vgnbankbld1_256" },
+	{ 7009, "vgndwntwn1", "vgnbankbld2_256" },
+	{ 7009, "vgndwntwn1", "vgnbankbld3_256" },
+	{ 7009, "vgndwntwn1", "vgnbankbld4_256" },
+	{ 7009, "vgndwntwn1", "vgnbankbld5_256" },
+	{ 7009, "vgndwntwn1", "vgnbankbld6_256" },
+	{ 7009, "vgndwntwn1", "win_frame" },
+	{ 7424, "vgndwntwn2", "gravelkb_128b" },
+	{ 7424, "vgndwntwn2", "souveniers1_256" },
+	{ 7424, "vgndwntwn2", "vegaswigshop1_256" },
+	{ 7424, "vgndwntwn2", "vgnalleywall1_256" },
+	{ 7424, "vgndwntwn2", "vgsSshopnew01" },
+	{ 6908, "vgndwntwn21", "247sign1_64" },
+	{ 6908, "vgndwntwn21", "fighotwin1_LAn" },
+	{ 6908, "vgndwntwn21", "newbank" },
+	{ 6908, "vgndwntwn21", "vgnbuild5bot_256" },
+	{ 6908, "vgndwntwn21", "vgnbuild5top_256" },
+	{ 6908, "vgndwntwn21", "vgnlawbuild1_256" },
+	{ 6908, "vgndwntwn21", "vgnlawbuild2_256" },
+	{ 6908, "vgndwntwn21", "vgnlawbuild3_256" },
+	{ 6908, "vgndwntwn21", "vgnlawbuild4_256" },
+	{ 6908, "vgndwntwn21", "vgnofic1_256" },
+	{ 6908, "vgndwntwn21", "vgnofic2_256" },
+	{ 6908, "vgndwntwn21", "vgnshopwal2_256" },
+	{ 6908, "vgndwntwn21", "vgnshopwal3_256" },
+	{ 6908, "vgndwntwn21", "vgnwstshop3_256" },
+	{ 6908, "vgndwntwn21", "vgnwstshoptop2_256" },
+	{ 6868, "vgndwntwn22", "vgnlowbuild1_256" },
+	{ 6868, "vgndwntwn22", "vgnlowbuild2_128" },
+	{ 6868, "vgndwntwn22", "vgnlowbuild4_256" },
+	{ 6868, "vgndwntwn22", "vgnlowbuild5_256" },
+	{ 6868, "vgndwntwn22", "vgnlowbuild6_256" },
+	{ 6868, "vgndwntwn22", "vgnlowbuild7_256" },
+	{ 6865, "vgndwntwn23", "steaksign1_256" },
+	{ 6865, "vgndwntwn23", "steaksign2_256" },
+	{ 6865, "vgndwntwn23", "Stekullvegas2" },
+	{ 6865, "vgndwntwn23", "vgnbordpnk2_256" },
+	{ 6865, "vgndwntwn23", "vgnpawnshrt_256" },
+	{ 6865, "vgndwntwn23", "vgnwstshop2_256" },
+	{ 6865, "vgndwntwn23", "ws_corr_wall2" },
+	{ 6872, "vgndwntwn5", "artsoul1_256" },
+	{ 6872, "vgndwntwn5", "fitzwallvgn2_256" },
+	{ 6872, "vgndwntwn5", "fountain6_256" },
+	{ 6872, "vgndwntwn5", "glasswindow5_256" },
+	{ 6872, "vgndwntwn5", "glasswindow6_256" },
+	{ 6872, "vgndwntwn5", "venetfount1_256" },
+	{ 6872, "vgndwntwn5", "venetfount2_256" },
+	{ 6872, "vgndwntwn5", "venetfount3_128" },
+	{ 6872, "vgndwntwn5", "vgnledge1_128" },
+	{ 7525, "vgnfirestat", "desertgravelsand" },
+	{ 7525, "vgnfirestat", "hangersign01_256" },
+	{ 7525, "vgnfirestat", "vegasfiredept1_256" },
+	{ 7525, "vgnfirestat", "vgnfirestat1_256" },
+	{ 7525, "vgnfirestat", "vgnfirestat4_256" },
+	{ 7525, "vgnfirestat", "vgnwrehse1_256" },
+	{ 7525, "vgnfirestat", "vgn_pinkfirestat_256" },
+	{ 7490, "vgnfrates", "resaurantsign1_256" },
+	{ 7490, "vgnfrates", "sanpshop1" },
+	{ 7490, "vgnfrates", "vgnwrehsewal1_256" },
+	{ 7490, "vgnfrates", "vgnwrehsewal2_256" },
+	{ 6988, "vgnfremnt1", "casinobulb2_128n" },
+	{ 6988, "vgnfremnt1", "casinodoor_frmnt" },
+	{ 6988, "vgnfremnt1", "casinofront_256" },
+	{ 6988, "vgnfremnt1", "casinohotel5_256" },
+	{ 6988, "vgnfremnt1", "casinolights1b_128n" },
+	{ 6988, "vgnfremnt1", "casinolights1_128" },
+	{ 6988, "vgnfremnt1", "casinolights2_128" },
+	{ 6988, "vgnfremnt1", "casinolights2_128n" },
+	{ 6988, "vgnfremnt1", "casinolights3_128" },
+	{ 6988, "vgnfremnt1", "casinolights3_128n" },
+	{ 6988, "vgnfremnt1", "casinolights5_256" },
+	{ 6988, "vgnfremnt1", "casinolights6lit3_256" },
+	{ 6988, "vgnfremnt1", "casinolights6_256" },
+	{ 6988, "vgnfremnt1", "casinolights7_256" },
+	{ 6988, "vgnfremnt1", "casinolights9_256" },
+	{ 6988, "vgnfremnt1", "casinolit2_128" },
+	{ 6988, "vgnfremnt1", "casinopillar1_256" },
+	{ 6988, "vgnfremnt1", "casinoshop32_256" },
+	{ 6988, "vgnfremnt1", "casinoside2_256" },
+	{ 6988, "vgnfremnt1", "casinosign1_128" },
+	{ 6988, "vgnfremnt1", "casinosign1_256" },
+	{ 6988, "vgnfremnt1", "casinosign2_128" },
+	{ 6988, "vgnfremnt1", "casinowall1_256" },
+	{ 6988, "vgnfremnt1", "casinowall2_256" },
+	{ 6988, "vgnfremnt1", "casinowall5_256" },
+	{ 6988, "vgnfremnt1", "freemontsign1_256" },
+	{ 6988, "vgnfremnt1", "goldframe_256" },
+	{ 6988, "vgnfremnt1", "hotelsignvgn1_256" },
+	{ 6988, "vgnfremnt1", "scmgarage1_128" },
+	{ 6988, "vgnfremnt1", "vgnhotelwin1" },
+	{ 6988, "vgnfremnt1", "vgnhotelwin2" },
+	{ 6985, "vgnfremnt2", "casinoawn1_128" },
+	{ 6985, "vgnfremnt2", "casinoawn2_256" },
+	{ 6985, "vgnfremnt2", "casinobulb3_128" },
+	{ 6985, "vgnfremnt2", "casinohotel1_256" },
+	{ 6985, "vgnfremnt2", "casinolights8_128" },
+	{ 6985, "vgnfremnt2", "casinoshop1_256" },
+	{ 6985, "vgnfremnt2", "casinoshop2_256" },
+	{ 6985, "vgnfremnt2", "casinoshop4_256" },
+	{ 6985, "vgnfremnt2", "casinouper1_256" },
+	{ 6985, "vgnfremnt2", "casinouper2_256" },
+	{ 6985, "vgnfremnt2", "casinowall42_256" },
+	{ 6985, "vgnfremnt2", "casinowall4_128" },
+	{ 6985, "vgnfremnt2", "girlsneon_256" },
+	{ 6985, "vgnfremnt2", "striplightsblu_256" },
+	{ 6985, "vgnfremnt2", "striplightsgreen_256" },
+	{ 6985, "vgnfremnt2", "striplightsorange_256" },
+	{ 6985, "vgnfremnt2", "striplightspinky_256" },
+	{ 6985, "vgnfremnt2", "striplightsred_256" },
+	{ 6985, "vgnfremnt2", "striplightsyel_256" },
+	{ 6985, "vgnfremnt2", "vegassign1_256" },
+	{ 6985, "vgnfremnt2", "vgnbordpurp1_256" },
+	{ 6985, "vgnfremnt2", "vgnbordpurp2_256" },
+	{ 6985, "vgnfremnt2", "vgndwntwn3_256_256" },
+	{ 6985, "vgnfremnt2", "vgnhotelwall1_256" },
+	{ 6985, "vgnfremnt2", "vgntext1_256" },
+	{ 6985, "vgnfremnt2", "vgsN_casadd01" },
+	{ 6985, "vgnfremnt2", "vgs_casino_neon" },
+	{ 6985, "vgnfremnt2", "washmallotsd_256" },
+	{ 7073, "vgnfremntsgn", "averysign1_256" },
+	{ 7073, "vgnfremntsgn", "averysign2_256" },
+	{ 7073, "vgnfremntsgn", "averysigneon1a_256" },
+	{ 7073, "vgnfremntsgn", "averysigneon2a_256" },
+	{ 7073, "vgnfremntsgn", "candysign1_256" },
+	{ 7530, "vgngebuild", "vgngewall3_256" },
+	{ 7530, "vgngebuild", "vgngewall4_256" },
+	{ 7530, "vgngebuild", "vgngewall5_256" },
+	{ 7530, "vgngebuild", "vgngewall6_256" },
+	{ 7420, "vgnglfcrse1", "des_dirt1_glfhvy" },
+	{ 7420, "vgnglfcrse1", "fence_iron_256" },
+	{ 7420, "vgnglfcrse1", "glfclbhsesign_256" },
+	{ 7420, "vgnglfcrse1", "golf_fairway3" },
+	{ 7420, "vgnglfcrse1", "hotel2base1_256" },
+	{ 7420, "vgnglfcrse1", "hotel2base2_256" },
+	{ 7420, "vgnglfcrse1", "sandstone2_128" },
+	{ 7420, "vgnglfcrse1", "seabed" },
+	{ 6876, "vgnground", "crossing_law2" },
+	{ 6876, "vgnground", "vegasroad3_256" },
+	{ 6886, "vgnground3", "crossing_law3" },
+	{ 6886, "vgnground3", "vegasdirtypave1_256" },
+	{ 6886, "vgnground3", "vegasdirtypave2_256" },
+	{ 6886, "vgnground3", "vegasdirtyroad1_256" },
+	{ 6886, "vgnground3", "vegasdirtyroad2_256" },
+	{ 6886, "vgnground3", "vgsN_road2sand01" },
+	{ 6886, "vgnground3", "vgsN_road2sand02" },
+	{ 6886, "vgnground3", "ws_carparknew2c" },
+	{ 3455, "vgnhseblk1", "vnghse1_256" },
+	{ 3455, "vgnhseblk1", "vnghse2_256" },
+	{ 3455, "vgnhseblk1", "vnghse3_128" },
+	{ 6919, "vgnhseing1", "vgnhseledgw2_64" },
+	{ 6919, "vgnhseing1", "vgnwrehse8_256" },
+	{ 7518, "vgnhseland", "vgnhsewall1_256" },
+	{ 6882, "vgnland", "con2sand1a" },
+	{ 6882, "vgnland", "con2sand1b" },
+	{ 6882, "vgnland", "con2sand1c" },
+	{ 6882, "vgnland", "des_scrub1_dirt1a" },
+	{ 6882, "vgnland", "des_scrub1_dirt1b" },
+	{ 6882, "vgnland", "hiway2sand1a" },
+	{ 6882, "vgnland", "hiwaygravel1_256" },
+	{ 6882, "vgnland", "ws_carparknew2b" },
+	{ 6882, "vgnland", "ws_oldredbrick64" },
+	{ 7526, "vgnlowbild", "24hoursign1_256" },
+	{ 7526, "vgnlowbild", "cashloans1_256" },
+	{ 7526, "vgnlowbild", "gaygordos_128" },
+	{ 7526, "vgnlowbild", "pavedark128" },
+	{ 7526, "vgnlowbild", "touristbureau_256" },
+	{ 7526, "vgnlowbild", "vegaspillar12_128" },
+	{ 7526, "vgnlowbild", "vgnlowbildwal1_256" },
+	{ 3460, "vgnlpost", "lamppost2" },
+	{ 6947, "vgnmall", "vgncarwash2_128" },
+	{ 6947, "vgnmall", "vgnpizzawindow_256" },
+	{ 7019, "vgnoutown2", "vgnwrehse5_256" },
+	{ 7019, "vgnoutown2", "vgnwrehse6_256" },
+	{ 7019, "vgnoutown2", "vgnwrehse7_256" },
+	{ 7103, "vgnplantgen", "metalwheel3_128" },
+	{ 7103, "vgnplantgen", "metalwheel4_128" },
+	{ 7103, "vgnplantgen", "metalwheel5" },
+	{ 7103, "vgnplantgen", "metalwheel5_128" },
+	{ 6909, "vgnptrlpmp", "soapytitwank_256" },
+	{ 6909, "vgnptrlpmp", "vgnstripwal1_128" },
+	{ 6867, "vgnpwrmainbld", "hazwaste1_256" },
+	{ 6867, "vgnpwrmainbld", "sw_wallbrick_02" },
+	{ 6929, "vgnpwroutbld1", "sw_stresswall1" },
+	{ 6931, "vgnpwroutbld3", "plant_tank" },
+	{ 7024, "vgnpwrwhse", "Bow_Load_Door" },
+	{ 6912, "vgnrailroad", "conchev_64HV" },
+	{ 6912, "vgnrailroad", "railwy_tun" },
+	{ 7506, "vgnretail2", "vgnmetalwall1_256" },
+	{ 7506, "vgnretail2", "vgnmetalwall2_256" },
+	{ 7506, "vgnretail2", "vgnmetalwall5_256" },
+	{ 7506, "vgnretail2", "vgnmetalwall6_256" },
+	{ 7508, "vgnretail3", "counter01_law" },
+	{ 7508, "vgnretail3", "garageledge01_64" },
+	{ 7094, "vgnretail5", "carparksign02_128" },
+	{ 7094, "vgnretail5", "sw_trellis_64" },
+	{ 7094, "vgnretail5", "vegasclub01_128" },
+	{ 7094, "vgnretail5", "vegasclub02_128" },
+	{ 7094, "vgnretail5", "vegasclubledge_128" },
+	{ 7094, "vgnretail5", "vgsclubwall01_128" },
+	{ 7094, "vgnretail5", "VgsN_wedtack1b" },
+	{ 6922, "vgnretail6", "marinawindow2_256" },
+	{ 6922, "vgnretail6", "vgsn_chplroof" },
+	{ 6922, "vgnretail6", "vgsn_chplwall" },
+	{ 6922, "vgnretail6", "wddngchapel02_64" },
+	{ 6922, "vgnretail6", "wddngchapel03_64" },
+	{ 6922, "vgnretail6", "wddngchapelsign03_128" },
+	{ 6922, "vgnretail6", "wddngchapelsign04_128" },
+	{ 6922, "vgnretail6", "wddngchapelsign08_256" },
+	{ 6922, "vgnretail6", "wddngchplldge01_64" },
+	{ 6922, "vgnretail6", "wddngchplldge03_64" },
+	{ 6924, "vgnretail7", "erotic_wc_256" },
+	{ 6924, "vgnretail7", "vgnwedding1_256" },
+	{ 6924, "vgnretail7", "vgnwedding2_256" },
+	{ 7520, "vgnretail72", "gasstop1_256" },
+	{ 7520, "vgnretail72", "solairtyre64" },
+	{ 7520, "vgnretail72", "solairwheel64" },
+	{ 7520, "vgnretail72", "vgnmetalwall4_256" },
+	{ 7015, "vgnscaffold", "vgsnscafold_256" },
+	{ 7015, "vgnscaffold", "vgsnscfldclr_256" },
+	{ 6873, "vgnshambild1", "cparknumbers1a_128" },
+	{ 6873, "vgnshambild1", "fitzwallvgn1_256" },
+	{ 6873, "vgnshambild1", "fitzwallvgn3_256" },
+	{ 6873, "vgnshambild1", "fitzwallvgn6_256" },
+	{ 6873, "vgnshambild1", "glasswindow3b_256" },
+	{ 6873, "vgnshambild1", "vgsN_emerald" },
+	{ 6971, "vgnshamcpark", "fitzwallvgn4_256" },
+	{ 6971, "vgnshamcpark", "fitzwallvgn5_256" },
+	{ 6944, "vgnshopnmall", "gaulle_3" },
+	{ 6944, "vgnshopnmall", "prolaps01_small" },
+	{ 6944, "vgnshopnmall", "vgnmetalwall3_256" },
+	{ 6978, "vgnstrfshsign", "vgncasign32_256" },
+	{ 7489, "vgntamotel", "Bow_dryclean_floor" },
+	{ 7489, "vgntamotel", "freestwall1" },
+	{ 7489, "vgntamotel", "gingerwig_128" },
+	{ 7489, "vgntamotel", "motelsign2_256" },
+	{ 7489, "vgntamotel", "vegmotelsign2_256" },
+	{ 7489, "vgntamotel", "vgnacmotel2_256" },
+	{ 7489, "vgntamotel", "vgnacmotel5_128" },
+	{ 7489, "vgntamotel", "vgncoctart1_256" },
+	{ 7511, "vgntrainstat", "awning4256" },
+	{ 7511, "vgntrainstat", "metaliron1_128" },
+	{ 7511, "vgntrainstat", "venetian15_128" },
+	{ 7650, "vgnusedcar", "greenshade4_64" },
+	{ 7650, "vgnusedcar", "lightblue2_32" },
+	{ 7650, "vgnusedcar", "lightgreen2_32" },
+	{ 7650, "vgnusedcar", "lightpurple2_32" },
+	{ 7650, "vgnusedcar", "lightyellow2_32" },
+	{ 7650, "vgnusedcar", "marinadoor2_256" },
+	{ 7650, "vgnusedcar", "shody1_256" },
+	{ 6864, "vgnvrock", "ampback_256" },
+	{ 6864, "vgnvrock", "ampfront_256" },
+	{ 6864, "vgnvrock", "vrocksign1_256" },
+	{ 6864, "vgnvrock", "VRockwall_256" },
+	{ 6864, "vgnvrock", "VRockwins_256" },
+	{ 8044, "vgsairport", "LasVenturasAirport_256" },
+	{ 3496, "vgsbballnet1", "bballboard2_256" },
+	{ 8136, "vgsbikeschool", "gravelground128" },
+	{ 8419, "vgsbldng1", "buildng01wind2_64" },
+	{ 8419, "vgsbldng1", "buildng01wind_128" },
+	{ 8419, "vgsbldng1", "buildng01_64" },
+	{ 8419, "vgsbldng1", "cityplansign01_256" },
+	{ 8419, "vgsbldng1", "hotbasebot_law" },
+	{ 3431, "vgsclubox", "vgsclubdsply_128" },
+	{ 8842, "vgse24hr", "takeaway1" },
+	{ 8567, "vgsebuild02", "airconfrnt2_128" },
+	{ 8567, "vgsebuild02", "la_brownhibuilda" },
+	{ 8567, "vgsebuild02", "la_brownhibuildb" },
+	{ 8567, "vgsebuild02", "vgsderelict01_128" },
+	{ 8567, "vgsebuild02", "vgsderelict02_128" },
+	{ 8567, "vgsebuild02", "vgsderelict03_128" },
+	{ 8567, "vgsebuild02", "vgsderelict04_128" },
+	{ 8567, "vgsebuild02", "vgsderelict05_128" },
+	{ 8567, "vgsebuild02", "vgsderelictdoor_128" },
+	{ 8867, "vgsecnstrct01", "concretewall21_256" },
+	{ 8870, "vgsecnstrct03", "newscafold_256" },
+	{ 8870, "vgsecnstrct03", "scafoldclear_256" },
+	{ 8491, "vgseflmngonion", "flmngo11_128" },
+	{ 8491, "vgseflmngonion", "flmngosign01" },
+	{ 8463, "vgseland", "tiadbuddhagold" },
+	{ 8463, "vgseland", "triadcarpet" },
+	{ 8463, "vgseland", "triadcarpet2" },
+	{ 8438, "vgseroads", "blendpavement2b_256" },
+	{ 14711, "vgshm2int2", "HS2_2Carpet1" },
+	{ 14711, "vgshm2int2", "HS2_4wall1" },
+	{ 14711, "vgshm2int2", "HS2_wall5" },
+	{ 14711, "vgshm2int2", "HSV_carpet1" },
+	{ 14711, "vgshm2int2", "HSV_carpet2" },
+	{ 14711, "vgshm2int2", "HSV_wall1" },
+	{ 14711, "vgshm2int2", "HSV_wall2" },
+	{ 14711, "vgshm2int2", "HSV_wall4" },
+	{ 14710, "vgshm3int2", "HS1_Shade4" },
+	{ 14710, "vgshm3int2", "HSV_2carpet1" },
+	{ 14710, "vgshm3int2", "HSV_3carpet1" },
+	{ 14710, "vgshm3int2", "HSV_3carpet2" },
+	{ 14710, "vgshm3int2", "HSV_3wall1" },
+	{ 14710, "vgshm3int2", "HSV_3wall2" },
+	{ 14710, "vgshm3int2", "HSV_3wall3" },
+	{ 14710, "vgshm3int2", "HSV_3wall4" },
+	{ 14710, "vgshm3int2", "HSV_3wall5" },
+	{ 8401, "vgshpground", "carparksign03_128" },
+	{ 8401, "vgshpground", "parkinghut01_128" },
+	{ 8401, "vgshpground", "parkinghut02_128" },
+	{ 8401, "vgshpground", "parkinghutdoor_128" },
+	{ 8401, "vgshpground", "parkingsign01_128" },
+	{ 8401, "vgshpground", "vegaspawn01_128" },
+	{ 8401, "vgshpground", "vegaspawnwall02_128" },
+	{ 8401, "vgshpground", "vgspawnroof01_128" },
+	{ 14700, "vgshs2int2", "ah_rouren" },
+	{ 14700, "vgshs2int2", "ah_SCMFLR" },
+	{ 14700, "vgshs2int2", "ah_wwornskt" },
+	{ 8947, "vgslockup", "vegasoffice05_128" },
+	{ 8495, "vgsmall", "vgncarwash1_256" },
+	{ 6863, "vgsnbuild07", "vegasbank1_256" },
+	{ 6863, "vgsnbuild07", "vegasbank2_256" },
+	{ 6863, "vgsnbuild07", "vegasbank3_256" },
+	{ 6863, "vgsnbuild07", "vgndwntwn1_256_256" },
+	{ 6863, "vgsnbuild07", "vgndwntwn2_256_256" },
+	{ 3502, "vgsncircon", "woodsuport1_128" },
+	{ 3502, "vgsncircon", "woodsuport2_128" },
+	{ 7300, "vgsn_billboard", "homies_1_128" },
+	{ 3475, "vgsn_fncelec_pst", "ws_oldpainted_64" },
+	{ 3505, "vgsn_nitree", "vgsN_rope" },
+	{ 3521, "vgsn_rbstiff", "randysign1_256" },
+	{ 3521, "vgsn_rbstiff", "randysign2_256" },
+	{ 8434, "vgsoffice1", "vegasoffice01_128" },
+	{ 8434, "vgsoffice1", "vegasoffice02_128" },
+	{ 8434, "vgsoffice1", "vegasoffice03_128" },
+	{ 8434, "vgsoffice1", "vegasoffice04_256" },
+	{ 8434, "vgsoffice1", "vegasoffice06" },
+	{ 7978, "vgssairport", "aascaff_yellow" },
+	{ 7978, "vgssairport", "airportwindow02_128" },
+	{ 7978, "vgssairport", "Industdoor9white" },
+	{ 7978, "vgssairport", "newall16white" },
+	{ 7978, "vgssairport", "newall_harling_sless" },
+	{ 7978, "vgssairport", "venturasairsign1" },
+	{ 7978, "vgssairport", "weatheredwood64HV" },
+	{ 7981, "vgssairport02", "airsign2_64" },
+	{ 7981, "vgssairport02", "alleydoorz256" },
+	{ 7981, "vgssairport02", "chevronYB_64" },
+	{ 7981, "vgssairport02", "danger" },
+	{ 7981, "vgssairport02", "drivecare_64" },
+	{ 7981, "vgssairport02", "exit_noexit128" },
+	{ 7981, "vgssairport02", "metalcopy" },
+	{ 7981, "vgssairport02", "ws_airsecurity" },
+	{ 8130, "vgsschurch", "vgschapelwall01_64" },
+	{ 8130, "vgsschurch", "vgschrchwndow01_128" },
+	{ 8130, "vgsschurch", "vgschurchdoor01_128" },
+	{ 8130, "vgsschurch", "vgschurchdoor03_128" },
+	{ 8130, "vgsschurch", "vgschurchmural01_256" },
+	{ 8130, "vgsschurch", "vgschurchroof01_128" },
+	{ 8130, "vgsschurch", "vgschurchsign01_256" },
+	{ 8130, "vgsschurch", "vgschurchwall03_128" },
+	{ 8130, "vgsschurch", "vgschurchwall04_256" },
+	{ 8130, "vgsschurch", "vgschurchwall06_256" },
+	{ 8147, "vgsselecfence", "vgsSmetalgate01" },
+	{ 7993, "vgsshiways", "hiwayinsideblend1_256" },
+	{ 8035, "vgsshospshop", "bincoLogo" },
+	{ 8035, "vgsshospshop", "desgrassbrnsnd" },
+	{ 8035, "vgsshospshop", "hosp_sign01a" },
+	{ 8035, "vgsshospshop", "hosp_sign01b" },
+	{ 8035, "vgsshospshop", "hosp_sign01c" },
+	{ 8035, "vgsshospshop", "vgsShospsign01" },
+	{ 8035, "vgsshospshop", "wok&roll1_2256" },
+	{ 8006, "vgssland", "desgrasandblend" },
+	{ 8006, "vgssland", "hiwayblend1_256" },
+	{ 7996, "vgssland01", "greyground2sand" },
+	{ 8001, "vgssland03", "Upt_Conc floor" },
+	{ 8037, "vgssmulticarprk", "vgsSstonewall01" },
+	{ 7987, "vgssroads", "blendpavement2_256" },
+	{ 7987, "vgssroads", "road1256" },
+	{ 8322, "vgsssignage02", "dirtringtex1_256" },
+	{ 8293, "vgsssignage03", "electrics01" },
+	{ 8071, "vgsswarehse01", "vgswrehouse01_128" },
+	{ 8071, "vgsswarehse01", "vgswrehouse02_128" },
+	{ 8057, "vgsswarehse02", "GB_truckdepot10" },
+	{ 8057, "vgsswarehse02", "GB_truckdepot16" },
+	{ 8057, "vgsswarehse02", "Nu-chem_64" },
+	{ 8057, "vgsswarehse02", "shafted01" },
+	{ 8057, "vgsswarehse02", "vgsScautionsign01" },
+	{ 8057, "vgsswarehse02", "ws_RShaul_transp_M" },
+	{ 8057, "vgsswarehse02", "ws_warehousewall1" },
+	{ 7985, "vgsswarehse02c", "garageledge02_64" },
+	{ 7985, "vgsswarehse02c", "GB_truckdepot12" },
+	{ 7985, "vgsswarehse02c", "muddywater" },
+	{ 7985, "vgsswarehse02c", "vgsSnewshop03" },
+	{ 7985, "vgsswarehse02c", "vgsSpinkshop01" },
+	{ 7985, "vgsswarehse02c", "vgsSpinkshop02" },
+	{ 7985, "vgsswarehse02c", "vgsSpinkshop03" },
+	{ 7985, "vgsswarehse02c", "vgsSpinkshop04" },
+	{ 7985, "vgsswarehse02c", "vgsSshopnew02" },
+	{ 7985, "vgsswarehse02c", "wddngchapelsign06_128" },
+	{ 8034, "vgsswarhse04", "flightschoolwall01_128" },
+	{ 8034, "vgsswarhse04", "GB_truckdepot14" },
+	{ 8034, "vgsswarhse04", "vgsSfltschool01" },
+	{ 8065, "vgsswrehse03", "sumo" },
+	{ 8065, "vgsswrehse03", "vgswrhsign01" },
+	{ 8399, "vgs_shops", "vegasclubmural_128" },
+	{ 8399, "vgs_shops", "vgsclubwall02_128" },
+	{ 8399, "vgs_shops", "vgsclubwall03_128" },
+	{ 8399, "vgs_shops", "vgsclubwall08_256" },
+	{ 8399, "vgs_shops", "vgs_shpfrnt01_128" },
+	{ 8399, "vgs_shops", "vgs_shpfrnt02_128" },
+	{ 8399, "vgs_shops", "villainn02_256" },
+	{ 8399, "vgs_shops", "villainnwall01_128" },
+	{ 8201, "vgs_stadium", "dirtringtex2_256" },
+	{ 8201, "vgs_stadium", "dirtringtex3_256" },
+	{ 7492, "vgwestabats", "vgnabatwal1_256" },
+	{ 7492, "vgwestabats", "vgnabatwal2_256" },
+	{ 7492, "vgwestabats", "vgnabatwal3_256" },
+	{ 7492, "vgwestabats", "vgnabatwal4_256" },
+	{ 7448, "vgwestcoast", "golf_hvygras_cpark" },
+	{ 7452, "vgwestland", "des_dirt1_grass" },
+	{ 7509, "vgwestretail1", "hedge2_256" },
+	{ 7681, "vgwsavehses", "carparksignplate_64" },
+	{ 7681, "vgwsavehses", "villainnpipe_64" },
+	{ 7429, "vgwstdirtyrd", "vegasdirtypaveblend1" },
+	{ 7429, "vgwstdirtyrd", "vegasdirtypaveblend2" },
+	{ 7429, "vgwstdirtyrd", "vegasdirtyroad3_256" },
+	{ 7429, "vgwstdirtyrd", "vgsroadirt1_256" },
+	{ 7429, "vgwstdirtyrd", "vgsroadirt2_256" },
+	{ 7415, "vgwwelcome", "lvswelcomesign01_512" },
+	{ 7415, "vgwwelcome", "lvswelvomesign02" },
+	{ 7415, "vgwwelcome", "ws_coppersheet2" },
+	{ 2025, "wardrobe_tmp", "wardrobe_1128" },
+	{ 5174, "warehus_las2", "cmpwarhus1" },
+	{ 5174, "warehus_las2", "las2_dcwal1" },
+	{ 5174, "warehus_las2", "las2_dcwal2" },
+	{ 5134, "wasteland_las2", "ja_gencheapmx" },
+	{ 5134, "wasteland_las2", "ja_sgcombo3" },
+	{ 5134, "wasteland_las2", "mural05_LA" },
+	{ 5134, "wasteland_las2", "snpedsigx1" },
+	{ 5134, "wasteland_las2", "snpedsigx2" },
+	{ 8412, "wddngchpl", "wddngchapelsign01_256" },
+	{ 8675, "wddngchpl02", "vgschapelwall02_128" },
+	{ 8675, "wddngchpl02", "wddngchapeldoor01_128" },
+	{ 8675, "wddngchpl02", "wddngchapeldoor02_128" },
+	{ 8675, "wddngchpl02", "wddngchapelwndw01_128" },
+	{ 8675, "wddngchpl02", "wddngchapelwndw02" },
+	{ 8676, "wddngchplsign2", "wddngchapelsign05_256" },
+	{ 17298, "weefarmcuntw", "sjmbigold3" },
+	{ 17298, "weefarmcuntw", "sjmbigoldgut" },
+	{ 17298, "weefarmcuntw", "sjmbigoldwin" },
+	{ 17298, "weefarmcuntw", "sjmscruffhut4" },
+	{ 3925, "weemap", "skyclouds" },
+	{ 1649, "wglass", "carshowwin2" },
+	{ 14738, "whorebar", "AH_Architrave" },
+	{ 14738, "whorebar", "AH_blueceiling" },
+	{ 14738, "whorebar", "AH_cheapwhoremainwall" },
+	{ 14738, "whorebar", "AH_cheapwindow" },
+	{ 14738, "whorebar", "AH_fbatters" },
+	{ 14738, "whorebar", "AH_mirror" },
+	{ 14738, "whorebar", "AH_tile" },
+	{ 14738, "whorebar", "AH_wdblinds" },
+	{ 14738, "whorebar", "AH_whoredoor" },
+	{ 14738, "whorebar", "skirting" },
+	{ 14739, "whorebits", "AH_barchair" },
+	{ 14739, "whorebits", "AH_bartop" },
+	{ 14739, "whorebits", "AH_beercabinet2" },
+	{ 14739, "whorebits", "AH_cheapbarpan" },
+	{ 14739, "whorebits", "AH_speakbig" },
+	{ 14739, "whorebits", "AH_wdpanelback" },
+	{ 14739, "whorebits", "sink" },
+	{ 14736, "whorerooms", "AH_bathbigblu" },
+	{ 14736, "whorerooms", "AH_bathmos" },
+	{ 14736, "whorerooms", "AH_bathplanks" },
+	{ 14736, "whorerooms", "AH_dirt1" },
+	{ 14736, "whorerooms", "AH_flrwll" },
+	{ 14736, "whorerooms", "AH_grncarpet" },
+	{ 14736, "whorerooms", "blu_paper" },
+	{ 14736, "whorerooms", "blu_paper2" },
+	{ 14737, "whorewallstuff", "AH_dirtypix2" },
+	{ 14737, "whorewallstuff", "AH_drinkshelf" },
+	{ 14737, "whorewallstuff", "AH_fbatters2" },
+	{ 14737, "whorewallstuff", "AH_paintbond" },
+	{ 14737, "whorewallstuff", "ah_painting1" },
+	{ 14737, "whorewallstuff", "ah_painting2" },
+	{ 14737, "whorewallstuff", "Pict1" },
+	{ 14816, "whore_furn", "WH_flowers1" },
+	{ 14816, "whore_furn", "WH_keys" },
+	{ 14815, "whore_main", "WH_carpet3" },
+	{ 14815, "whore_main", "WH_tiles" },
+	{ 14815, "whore_main", "WH_tiles2" },
+	{ 14815, "whore_main", "WH_Wall" },
+	{ 14817, "whore_rms", "WH_boa1" },
+	{ 14817, "whore_rms", "WH_boots" },
+	{ 14817, "whore_rms", "WH_Clit" },
+	{ 14817, "whore_rms", "WH_Cpot" },
+	{ 14817, "whore_rms", "WH_fan2" },
+	{ 14817, "whore_rms", "WH_gown" },
+	{ 14817, "whore_rms", "WH_gown2" },
+	{ 14817, "whore_rms", "WH_horse" },
+	{ 14817, "whore_rms", "WH_netC" },
+	{ 14817, "whore_rms", "WH_netC2" },
+	{ 14817, "whore_rms", "WH_Rug1" },
+	{ 14817, "whore_rms", "WH_stetson" },
+	{ 4981, "wiresetc2_las", "ganggraf03_LA" },
+	{ 4981, "wiresetc2_las", "lasunionclk" },
+	{ 4981, "wiresetc2_las", "unity1" },
+	{ 5150, "wiresetc_las2", "ganggraf01_LA_m" },
+	{ 5150, "wiresetc_las2", "lastat4_M" },
+	{ 10695, "wires_sfs", "ws_telwiresnew1" },
+	{ 3031, "wngdishx", "dish1" },
+	{ 3031, "wngdishx", "dish_leg" },
+	{ 3031, "wngdishx", "metal_leg" },
+	{ 3030, "wong_twx", "kb_radiomast_burnt" },
+	{ 1675, "wshxrefhse", "decodoor5256" },
+	{ 1675, "wshxrefhse", "duskyblue_128" },
+	{ 1675, "wshxrefhse", "greygreensubuild_128" },
+	{ 1675, "wshxrefhse", "resimexwin4_256" },
+	{ 1675, "wshxrefhse", "washdecowall3256" },
+	{ 1677, "wshxrefhse2", "awning1256" },
+	{ 1677, "wshxrefhse2", "tilestone256" },
+	{ 1677, "wshxrefhse2", "yellowbeige_128" },
+	{ 1676, "wshxrefpump", "petrolpumpbase_256" },
+	{ 1676, "wshxrefpump", "petrolpumptop_128" },
+	{ 3879, "ws_jetty_sfx", "northwood3_64" },
+	{ 3879, "ws_jetty_sfx", "ws_algae_concrete" },
+	{ 3879, "ws_jetty_sfx", "ws_jeepwheel" },
+	{ 1319, "ws_roadside_dyn1", "ws_roadpost" },
+	{ 1319, "ws_roadside_dyn1", "ws_roadwarnings" },
+	{ 18200, "w_town2cs_t", "Bow_door_graffiti_128" },
+	{ 18200, "w_town2cs_t", "corrugated02_red" },
+	{ 18200, "w_town2cs_t", "dogpillar_128" },
+	{ 18200, "w_town2cs_t", "inwindow1128" },
+	{ 18200, "w_town2cs_t", "mottled_creme_64HV" },
+	{ 18200, "w_town2cs_t", "shoptopc128" },
+	{ 18200, "w_town2cs_t", "shoptopd128" },
+	{ 18200, "w_town2cs_t", "yellowbuilda256" },
+	{ 18265, "w_town3cs_t", "inddoor5" },
+	{ 18265, "w_town3cs_t", "sjmscruffhut2" },
+	{ 18202, "w_towncs_t", "hatwall256hi" },
+	{ 18202, "w_towncs_t", "husdr" },
+	{ 18202, "w_towncs_t", "husruf" },
+	{ 18202, "w_towncs_t", "mp_pinesheriff" },
+	{ 18202, "w_towncs_t", "pax256hi" },
+	{ 18202, "w_towncs_t", "sh256hi" },
+	{ 18202, "w_towncs_t", "shpbill256hi" },
+	{ 18202, "w_towncs_t", "shpcam2561hi" },
+	{ 18202, "w_towncs_t", "shphr1hi" },
+	{ 18202, "w_towncs_t", "shpton256hi" },
+	{ 18202, "w_towncs_t", "sjmroof1" },
+	{ 10789, "xenon_sfse", "ws_xenomart" },
+	{ 3439, "xrefairtree", "rustadark128" },
+	{ 3439, "xrefairtree", "treepropleaf01" },
+	{ 19426, "all_walls", "mirror01" },
+	{ 19426, "all_walls", "officewallsnew1" },
+	{ 19426, "all_walls", "vgsn_scrollsgn256" },
+	{ 11701, "ambulancelights1", "vehiclelights128" },
+	{ 19107, "armyhelmets", "armyhelmet1" },
+	{ 19107, "armyhelmets", "armyhelmet2" },
+	{ 19107, "armyhelmets", "armyhelmet3" },
+	{ 19107, "armyhelmets", "armyhelmet4" },
+	{ 19107, "armyhelmets", "armyhelmet5" },
+	{ 19107, "armyhelmets", "armyhelmet6" },
+	{ 19107, "armyhelmets", "armyhelmet7" },
+	{ 19107, "armyhelmets", "armyhelmet8" },
+	{ 19801, "balaclava1", "balaclava1" },
+	{ 19332, "balloon_texts", "balloon01" },
+	{ 19332, "balloon_texts", "balloon02" },
+	{ 19332, "balloon_texts", "balloon03" },
+	{ 19332, "balloon_texts", "balloon04" },
+	{ 19332, "balloon_texts", "balloon05" },
+	{ 19332, "balloon_texts", "balloon06" },
+	{ 19332, "balloon_texts", "balloon07" },
+	{ 19332, "balloon_texts", "balloon_basket01" },
+	{ 19332, "balloon_texts", "balloon_poles01" },
+	{ 19332, "balloon_texts", "basket_flamers01" },
+	{ 11748, "bandages", "bandage1" },
+	{ 11748, "bandages", "bandagepack1" },
+	{ 18754, "basesections", "hazardtile13" },
+	{ 18754, "basesections", "metalflooring4" },
+	{ 19317, "bassguitar01", "bassguitar01" },
+	{ 19873, "bathroomstuff1", "soapbar1" },
+	{ 19873, "bathroomstuff1", "toiletpaperroll1" },
+	{ 19579, "breadloaf1", "breadloaf1" },
+	{ 19883, "breadslice1", "cj_bread_1" },
+	{ 19883, "breadslice1", "cj_bread_2" },
+	{ 19622, "broom1", "cj_smallbat" },
+	{ 19468, "bucket01", "bucket01" },
+	{ 19314, "bullhorns01", "bullhorns01" },
+	{ 19623, "camera1", "cscamera01" },
+	{ 19623, "camera1", "cscamera02" },
+	{ 19623, "camera1", "cscamera03" },
+	{ 19624, "case1", "cj_case_brown" },
+	{ 19527, "cauldron1", "alienliquid1" },
+	{ 19527, "cauldron1", "cauldron1" },
+	{ 19897, "cigarettepacks", "cigarettepack1" },
+	{ 19625, "ciggy1", "ciggy1" },
+	{ 19352, "classy", "cane01" },
+	{ 19352, "classy", "monocle01" },
+	{ 19352, "classy", "moustache01" },
+	{ 19352, "classy", "scarf01" },
+	{ 19352, "classy", "tophat01" },
+	{ 19339, "coffin01", "coffin_handle01" },
+	{ 19339, "coffin01", "coffin_side01" },
+	{ 19339, "coffin01", "coffin_top01" },
+	{ 18767, "concretebits", "stonewalltile1-3" },
+	{ 18782, "cookieramp1", "cookie" },
+	{ 19098, "cowboyhats", "cowboyhat1" },
+	{ 19098, "cowboyhats", "cowboyhat3" },
+	{ 19098, "cowboyhats", "cowboyhat4" },
+	{ 19098, "cowboyhats", "cowboyhat5" },
+	{ 19098, "cowboyhats", "dwmolc2" },
+	{ 11712, "cross1", "cross1" },
+	{ 11749, "cshandcuffs1", "handcuffsblack1" },
+	{ 19129, "dancefloors", "dancefloor1" },
+	{ 19129, "dancefloors", "plastic5-small" },
+	{ 19315, "deer01", "deer01" },
+	{ 18759, "dmcages", "barbedwire1" },
+	{ 18759, "dmcages", "metaldrumold1" },
+	{ 18759, "dmcages", "metalgrid15-2" },
+	{ 18759, "dmcages", "metalplate23-3" },
+	{ 18759, "dmcages", "tarmacplain1" },
+	{ 11746, "doorkey1", "doorkey1" },
+	{ 19344, "egg_texts", "easter_egg01" },
+	{ 19344, "egg_texts", "easter_egg02" },
+	{ 19344, "egg_texts", "easter_egg03" },
+	{ 19344, "egg_texts", "easter_egg04" },
+	{ 19344, "egg_texts", "easter_egg05" },
+	{ 18886, "electromagnet1", "hazardtile13-128x128" },
+	{ 19607, "enexmarkers", "enex" },
+	{ 19607, "enexmarkers", "enexmarker1" },
+	{ 19607, "enexmarkers", "enexmarker1-2" },
+	{ 19607, "enexmarkers", "enexmarker4-2" },
+	{ 19607, "enexmarkers", "enexmarker4-3" },
+	{ 19607, "enexmarkers", "enexmarker4-4" },
+	{ 19085, "eyepatch1", "eyepatch" },
+	{ 18864, "fakesnow1", "snow2" },
+	{ 19641, "fencesection1", "fencesection1" },
+	{ 18878, "ferriswheel", "bunting" },
+	{ 18878, "ferriswheel", "railing3" },
+	{ 19331, "firehats", "fire_hat01" },
+	{ 19331, "firehats", "fire_hat02" },
+	{ 19793, "firewood1", "firewood1" },
+	{ 19793, "firewood1", "firewood2" },
+	{ 18632, "fishingrod", "handle2" },
+	{ 18632, "fishingrod", "line" },
+	{ 18632, "fishingrod", "plastic" },
+	{ 18632, "fishingrod", "rodpole2" },
+	{ 18641, "flashlight1", "faglite" },
+	{ 18641, "flashlight1", "metalblack1-2" },
+	{ 18641, "flashlight1", "torch-glass-64x64" },
+	{ 19318, "flyingv01", "flyingv01" },
+	{ 19588, "footbridge1", "footbridge-diffuse" },
+	{ 18889, "forcefields", "glass1" },
+	{ 18888, "forcefields", "white" },
+	{ 19470, "forsale01", "forsale01" },
+	{ 19638, "fruitcrates1", "applesgreen1" },
+	{ 19638, "fruitcrates1", "applesred1" },
+	{ 19638, "fruitcrates1", "oranges1" },
+	{ 19472, "gasmask01", "gaskmask01" },
+	{ 19163, "gimpmask1", "gimp" },
+	{ 19307, "goflagx2", "goflag2" },
+	{ 19307, "goflagx2", "goflag3" },
+	{ 19941, "goldbar1", "chrome" },
+	{ 19165, "gtamap", "gtasamapbit1" },
+	{ 19165, "gtamap", "gtasamapbit2" },
+	{ 19165, "gtamap", "gtasamapbit3" },
+	{ 19165, "gtamap", "gtasamapbit4" },
+	{ 19165, "gtamap", "gtasavectormap1" },
+	{ 19165, "gtamap", "metal1-128x128" },
+	{ 19165, "gtamap", "paperbacking" },
+	{ 18885, "gunvendingmachine1", "gunz" },
+	{ 18885, "gunvendingmachine1", "vendbox" },
+	{ 18885, "gunvendingmachine1", "vendredmetal" },
+	{ 18975, "hair2", "face_afro" },
+	{ 19424, "headphones", "headphones01" },
+	{ 19424, "headphones", "headphones02" },
+	{ 19424, "headphones", "headphones03" },
+	{ 19424, "headphones", "headphones04" },
+	{ 11696, "hill250x250rocky3", "cw2_mountdirtscree2" },
+	{ 11696, "hill250x250rocky3", "cw2_mountdirtscree3" },
+	{ 11696, "hill250x250rocky3", "cw2_mounttrail" },
+	{ 19067, "hoodyhats", "hoodyhat1" },
+	{ 19067, "hoodyhats", "hoodyhat2" },
+	{ 19067, "hoodyhats", "hoodyhat3" },
+	{ 19346, "hotdog01", "hotdog01" },
+	{ 18882, "hugebowls", "balaclava" },
+	{ 18882, "hugebowls", "beetles5" },
+	{ 18882, "hugebowls", "metalplate1" },
+	{ 18882, "hugebowls", "wallwhite2bot" },
+	{ 18882, "hugebowls", "wallwhite2top" },
+	{ 18882, "hugebowls", "woodpanel1" },
+	{ 19894, "laptopsamp1", "laptopsamp1" },
+	{ 19894, "laptopsamp1", "laptopscreen1" },
+	{ 19894, "laptopsamp1", "laptopscreen2" },
+	{ 19894, "laptopsamp1", "laptopscreen3" },
+	{ 18643, "laserpointer1", "laserbeam64x64" },
+	{ 18643, "laserpointer1", "laserwarninglabel" },
+	{ 19080, "laserpointer2", "laserbeam-2-64x64" },
+	{ 19081, "laserpointer3", "laserbeam-3-64x64" },
+	{ 19082, "laserpointer4", "laserbeam-4-64x64" },
+	{ 19083, "laserpointer5", "laserbeam-5-64x64" },
+	{ 19084, "laserpointer6", "laserbeam-6-64x64" },
+	{ 19847, "legham1", "legham1" },
+	{ 19620, "lightbar1", "lightbar1" },
+	{ 18657, "lightbeams", "blue-512x512" },
+	{ 18657, "lightbeams", "red-512x512" },
+	{ 18657, "lightbeams", "white-512x512" },
+	{ 19829, "lightswitches", "lightswitch1" },
+	{ 19829, "lightswitches", "lightswitch2" },
+	{ 19829, "lightswitches", "lightswitch3" },
+	{ 19800, "lsacarpark1", "dt_officewall1" },
+	{ 19800, "lsacarpark1", "dt_officewall2" },
+	{ 19800, "lsacarpark1", "dt_officflr2" },
+	{ 19595, "lsappartments1", "capitolwin1_lawn_new" },
+	{ 19595, "lsappartments1", "carpet4-256x256" },
+	{ 19595, "lsappartments1", "ceilingtiles3-128x128" },
+	{ 19597, "lsbeachside", "beachside-sign" },
+	{ 19597, "lsbeachside", "carpet19-128x128" },
+	{ 19597, "lsbeachside", "ceilingtiles4-128x128" },
+	{ 19597, "lsbeachside", "lsskyscraper1windows" },
+	{ 19597, "lsbeachside", "tiles7-128x128" },
+	{ 19597, "lsbeachside", "wall7-256x256" },
+	{ 19325, "lsmall_shops", "lsmall_window01" },
+	{ 19267, "mapmarkers", "green-2" },
+	{ 19267, "mapmarkers", "mapicon2" },
+	{ 19267, "mapmarkers", "mapicon3" },
+	{ 19267, "mapmarkers", "mapicon4" },
+	{ 19267, "mapmarkers", "mapicon5" },
+	{ 19267, "mapmarkers", "mapicon6" },
+	{ 19267, "mapmarkers", "mapicon7" },
+	{ 19267, "mapmarkers", "mapicon8" },
+	{ 19267, "mapmarkers", "mapicon9" },
+	{ 19267, "mapmarkers", "mapicon10" },
+	{ 19267, "mapmarkers", "mapicon11" },
+	{ 19267, "mapmarkers", "mapicon12" },
+	{ 19267, "mapmarkers", "mapicon13" },
+	{ 19267, "mapmarkers", "mapicon14" },
+	{ 19267, "mapmarkers", "mapicon15" },
+	{ 19267, "mapmarkers", "mapicon16" },
+	{ 19267, "mapmarkers", "mapicon17" },
+	{ 19267, "mapmarkers", "mapicon18" },
+	{ 19267, "mapmarkers", "mapicon19" },
+	{ 19267, "mapmarkers", "mapicon20" },
+	{ 19267, "mapmarkers", "mapicon21" },
+	{ 19267, "mapmarkers", "mapicon22" },
+	{ 19267, "mapmarkers", "mapicon23" },
+	{ 19267, "mapmarkers", "mapicon24" },
+	{ 19267, "mapmarkers", "mapicon25" },
+	{ 19267, "mapmarkers", "mapicon26" },
+	{ 19267, "mapmarkers", "mapicon27" },
+	{ 19267, "mapmarkers", "mapicon28" },
+	{ 19267, "mapmarkers", "mapicon29" },
+	{ 19267, "mapmarkers", "mapicon30" },
+	{ 19267, "mapmarkers", "mapicon31" },
+	{ 19267, "mapmarkers", "mapicon31-2" },
+	{ 19267, "mapmarkers", "mapicon31-3" },
+	{ 19267, "mapmarkers", "mapicon31-4" },
+	{ 19267, "mapmarkers", "mapicon31-5" },
+	{ 19267, "mapmarkers", "mapicon32" },
+	{ 19267, "mapmarkers", "mapicon33" },
+	{ 19267, "mapmarkers", "mapicon34" },
+	{ 19267, "mapmarkers", "mapicon35" },
+	{ 19267, "mapmarkers", "mapicon36" },
+	{ 19267, "mapmarkers", "mapicon37" },
+	{ 19267, "mapmarkers", "mapicon38" },
+	{ 19267, "mapmarkers", "mapicon39" },
+	{ 19267, "mapmarkers", "mapicon40" },
+	{ 19267, "mapmarkers", "mapicon41" },
+	{ 19267, "mapmarkers", "mapicon42" },
+	{ 19267, "mapmarkers", "mapicon43" },
+	{ 19267, "mapmarkers", "mapicon44" },
+	{ 19267, "mapmarkers", "mapicon45" },
+	{ 19267, "mapmarkers", "mapicon46" },
+	{ 19267, "mapmarkers", "mapicon47" },
+	{ 19267, "mapmarkers", "mapicon48" },
+	{ 19267, "mapmarkers", "mapicon49" },
+	{ 19267, "mapmarkers", "mapicon50" },
+	{ 19267, "mapmarkers", "mapicon51" },
+	{ 19267, "mapmarkers", "mapicon52" },
+	{ 19267, "mapmarkers", "mapicon53" },
+	{ 19267, "mapmarkers", "mapicon54" },
+	{ 19267, "mapmarkers", "mapicon55" },
+	{ 19267, "mapmarkers", "mapicon56" },
+	{ 19267, "mapmarkers", "mapicon57" },
+	{ 19267, "mapmarkers", "mapicon58" },
+	{ 19267, "mapmarkers", "mapicon59" },
+	{ 19267, "mapmarkers", "mapicon60" },
+	{ 19267, "mapmarkers", "mapicon61" },
+	{ 19267, "mapmarkers", "mapicon62" },
+	{ 19267, "mapmarkers", "mapicon63" },
+	{ 19267, "mapmarkers", "mapiconfire1" },
+	{ 19267, "mapmarkers", "mapiconlight1" },
+	{ 19267, "mapmarkers", "mapiconnew11" },
+	{ 19267, "mapmarkers", "mapiconnew12" },
+	{ 19267, "mapmarkers", "mapiconnew13" },
+	{ 19267, "mapmarkers", "mapiconnew14" },
+	{ 19267, "mapmarkers", "mapiconnew15" },
+	{ 19267, "mapmarkers", "mapiconnew16" },
+	{ 19267, "mapmarkers", "mapiconnew17" },
+	{ 19267, "mapmarkers", "mapiconnew18" },
+	{ 19267, "mapmarkers", "mapiconnew19" },
+	{ 19267, "mapmarkers", "mapiconnew20" },
+	{ 19267, "mapmarkers", "red-2" },
+	{ 19267, "mapmarkers", "redstripes-16x16" },
+	{ 19267, "mapmarkers", "samporange" },
+	{ 19882, "marcossteak2", "cj_steak" },
+	{ 19130, "matarrows", "arrow-1" },
+	{ 19130, "matarrows", "arrow-1-edge" },
+	{ 19130, "matarrows", "arrowedges1" },
+	{ 19130, "matarrows", "arrows3" },
+	{ 19130, "matarrows", "green" },
+	{ 19130, "matarrows", "red-2-2" },
+	{ 18901, "matclothes", "bandanablu" },
+	{ 18901, "matclothes", "bandanabluish" },
+	{ 18901, "matclothes", "bandanacamo" },
+	{ 18901, "matclothes", "bandanacheese" },
+	{ 18901, "matclothes", "bandanacloth1" },
+	{ 18901, "matclothes", "bandanacloth2" },
+	{ 18901, "matclothes", "bandanacloth3" },
+	{ 18901, "matclothes", "bandanacloth4" },
+	{ 18901, "matclothes", "bandanacloth5" },
+	{ 18901, "matclothes", "bandanadots1" },
+	{ 18901, "matclothes", "bandanaelec" },
+	{ 18901, "matclothes", "bandanaflag" },
+	{ 18901, "matclothes", "bandanafur" },
+	{ 18901, "matclothes", "bandanagold" },
+	{ 18901, "matclothes", "bandanaleaf" },
+	{ 18901, "matclothes", "bandanapurple" },
+	{ 18901, "matclothes", "bandanared" },
+	{ 18901, "matclothes", "bandanaredish" },
+	{ 18901, "matclothes", "bandanaskull" },
+	{ 18901, "matclothes", "bandanataidai" },
+	{ 18901, "matclothes", "bandanathingy" },
+	{ 18901, "matclothes", "bandanawash1" },
+	{ 18901, "matclothes", "bandanazigzag" },
+	{ 18901, "matclothes", "bandblack" },
+	{ 18901, "matclothes", "bandblue" },
+	{ 18901, "matclothes", "bandgang" },
+	{ 18901, "matclothes", "beretblk" },
+	{ 18901, "matclothes", "beretmap1" },
+	{ 18901, "matclothes", "beretmap2" },
+	{ 18901, "matclothes", "beretred" },
+	{ 18901, "matclothes", "boater" },
+	{ 18901, "matclothes", "bowler" },
+	{ 18901, "matclothes", "bowlerblue" },
+	{ 18901, "matclothes", "bowlergang" },
+	{ 18901, "matclothes", "bowlerred" },
+	{ 18901, "matclothes", "bowleryellow" },
+	{ 18901, "matclothes", "boxingcap" },
+	{ 18901, "matclothes", "capblk" },
+	{ 18901, "matclothes", "capblue" },
+	{ 18901, "matclothes", "capgang" },
+	{ 18901, "matclothes", "capknitblk" },
+	{ 18901, "matclothes", "capknitgrn" },
+	{ 18901, "matclothes", "captruck" },
+	{ 18901, "matclothes", "cowboy" },
+	{ 18901, "matclothes", "darkblue" },
+	{ 18901, "matclothes", "elvishair" },
+	{ 18901, "matclothes", "hatmancblk" },
+	{ 18901, "matclothes", "hatmancplaid" },
+	{ 18901, "matclothes", "hatmap1" },
+	{ 18901, "matclothes", "hatmap2" },
+	{ 18901, "matclothes", "hatmap3" },
+	{ 18901, "matclothes", "hattiger" },
+	{ 18901, "matclothes", "helmet" },
+	{ 18901, "matclothes", "helmet2" },
+	{ 18901, "matclothes", "helmetmap1" },
+	{ 18901, "matclothes", "helmetmap2" },
+	{ 18901, "matclothes", "helmetmap3" },
+	{ 18901, "matclothes", "metalalumox1" },
+	{ 18901, "matclothes", "skullyblk" },
+	{ 18901, "matclothes", "skullygrn" },
+	{ 18901, "matclothes", "zorromask" },
+	{ 18646, "matcolours", "blue" },
+	{ 18646, "matcolours", "grey" },
+	{ 18646, "matcolours", "grey-10-percent" },
+	{ 18646, "matcolours", "grey-20-percent" },
+	{ 18646, "matcolours", "grey-30-percent" },
+	{ 18646, "matcolours", "grey-40-percent" },
+	{ 18646, "matcolours", "grey-50-percent" },
+	{ 18646, "matcolours", "grey-60-percent" },
+	{ 18646, "matcolours", "grey-70-percent" },
+	{ 18646, "matcolours", "grey-80-percent" },
+	{ 18646, "matcolours", "grey-90-percent" },
+	{ 18646, "matcolours", "grey-93-percent" },
+	{ 18646, "matcolours", "grey-95-percent" },
+	{ 18646, "matcolours", "lightblue" },
+	{ 18646, "matcolours", "orange" },
+	{ 18646, "matcolours", "red" },
+	{ 18646, "matcolours", "red-3" },
+	{ 18646, "matcolours", "red-4" },
+	{ 18646, "matcolours", "redlaser" },
+	{ 19775, "matcopstuff", "copholster1" },
+	{ 19775, "matcopstuff", "fbi_id_card" },
+	{ 19775, "matcopstuff", "fbi_logo" },
+	{ 19775, "matcopstuff", "policebadge2" },
+	{ 19775, "matcopstuff", "policebadge3" },
+	{ 19029, "matglasses", "glassestype1map" },
+	{ 19029, "matglasses", "glassestype2map" },
+	{ 19029, "matglasses", "glassestype3map" },
+	{ 19029, "matglasses", "glassestype4map" },
+	{ 19029, "matglasses", "glassestype5map" },
+	{ 19029, "matglasses", "glassestype6map" },
+	{ 19029, "matglasses", "glassestype7map" },
+	{ 19029, "matglasses", "glassestype8map" },
+	{ 19029, "matglasses", "glassestype9map" },
+	{ 19029, "matglasses", "glassestype10map" },
+	{ 19029, "matglasses", "glassestype11map" },
+	{ 19029, "matglasses", "glassestype12map" },
+	{ 19029, "matglasses", "glassestype13map" },
+	{ 19029, "matglasses", "glassestype14map" },
+	{ 19029, "matglasses", "glassestype15map" },
+	{ 19029, "matglasses", "glassestype16map" },
+	{ 19029, "matglasses", "glassestype17map" },
+	{ 19029, "matglasses", "glassestype18map" },
+	{ 19029, "matglasses", "glassestype19map" },
+	{ 19029, "matglasses", "glassestype20map" },
+	{ 19029, "matglasses", "glassestype21map" },
+	{ 19029, "matglasses", "glassestype22map" },
+	{ 19029, "matglasses", "glassestype23map" },
+	{ 19029, "matglasses", "glassestype24map" },
+	{ 19029, "matglasses", "glassestype25map" },
+	{ 19029, "matglasses", "glassestype26map" },
+	{ 19029, "matglasses", "glassestype27map" },
+	{ 19029, "matglasses", "glassestype28map" },
+	{ 19029, "matglasses", "glassestype29map" },
+	{ 19029, "matglasses", "glassestype30map" },
+	{ 19037, "mathockey", "hockeymask" },
+	{ 19037, "mathockey", "hockeymask2" },
+	{ 19037, "mathockey", "hockeymask3" },
+	{ 19297, "matlights", "emergencylights64" },
+	{ 19297, "matlights", "invisible" },
+	{ 19784, "matpoliceinsignias", "detective1" },
+	{ 19784, "matpoliceinsignias", "detective2" },
+	{ 19784, "matpoliceinsignias", "detective3" },
+	{ 19784, "matpoliceinsignias", "policeofficer2" },
+	{ 19784, "matpoliceinsignias", "policeofficer3" },
+	{ 19784, "matpoliceinsignias", "seniorleadofficer" },
+	{ 19784, "matpoliceinsignias", "sergeant1" },
+	{ 19784, "matpoliceinsignias", "sergeant2" },
+	{ 18761, "matracing", "bridgeframe2" },
+	{ 18761, "matracing", "checkeredarrows1" },
+	{ 18761, "matracing", "metalfence3" },
+	{ 18787, "matramps", "cardboard4" },
+	{ 18787, "matramps", "cardboard4-2" },
+	{ 18787, "matramps", "cardboard4-12" },
+	{ 18787, "matramps", "cardboard4-16" },
+	{ 18787, "matramps", "cardboard4-21" },
+	{ 18787, "matramps", "floormetal1" },
+	{ 18787, "matramps", "grating3" },
+	{ 18787, "matramps", "knot_woodpaint128" },
+	{ 18787, "matramps", "metalflooring" },
+	{ 18787, "matramps", "redrailing" },
+	{ 18787, "matramps", "roadguides" },
+	{ 18787, "matramps", "wallgarage" },
+	{ 18787, "matramps", "zap" },
+	{ 19535, "matroadinters1", "roadinters1" },
+	{ 19089, "matropes", "csrope02" },
+	{ 18771, "matstairs", "hazardwall2" },
+	{ 18771, "matstairs", "stonewalltile1-4" },
+	{ 18996, "mattextures", "beetles1" },
+	{ 18996, "mattextures", "bluefoil" },
+	{ 18996, "mattextures", "cagesign" },
+	{ 18996, "mattextures", "cappolice" },
+	{ 18996, "mattextures", "concrete12" },
+	{ 18996, "mattextures", "garbagepile1" },
+	{ 18996, "mattextures", "gun_melee" },
+	{ 18996, "mattextures", "lava1" },
+	{ 18996, "mattextures", "lime" },
+	{ 18996, "mattextures", "multi086" },
+	{ 18996, "mattextures", "policeshield" },
+	{ 18996, "mattextures", "policeshieldgls" },
+	{ 18996, "mattextures", "safetymesh" },
+	{ 18996, "mattextures", "sampblack" },
+	{ 18996, "mattextures", "sampred" },
+	{ 18996, "mattextures", "sampwhite" },
+	{ 18996, "mattextures", "screw" },
+	{ 18996, "mattextures", "truchettiling3-4" },
+	{ 18996, "mattextures", "wood020" },
+	{ 18996, "mattextures", "ws_wetdryblendsand2" },
+	{ 19655, "mattubes", "bluedirt1" },
+	{ 19655, "mattubes", "greendirt1" },
+	{ 19655, "mattubes", "purpledirt1" },
+	{ 19655, "mattubes", "reddirt1" },
+	{ 19655, "mattubes", "yellowdirt1" },
+	{ 19041, "matwatches", "watchtype1map" },
+	{ 19041, "matwatches", "watchtype2map" },
+	{ 19041, "matwatches", "watchtype3map" },
+	{ 19041, "matwatches", "watchtype4map" },
+	{ 19041, "matwatches", "watchtype5map" },
+	{ 19041, "matwatches", "watchtype6map" },
+	{ 19041, "matwatches", "watchtype7map" },
+	{ 19041, "matwatches", "watchtype8map" },
+	{ 19041, "matwatches", "watchtype9map" },
+	{ 19041, "matwatches", "watchtype10map" },
+	{ 19041, "matwatches", "watchtype11map" },
+	{ 19041, "matwatches", "watchtype12map" },
+	{ 19041, "matwatches", "watchtype13map" },
+	{ 19041, "matwatches", "watchtype14map" },
+	{ 19041, "matwatches", "watchtype15map" },
+	{ 19560, "meattray1", "meattray1" },
+	{ 11738, "mediccase1", "medicalbox1b" },
+	{ 19844, "metalpanels", "metalpanel1" },
+	{ 19844, "metalpanels", "metalpanel2" },
+	{ 19844, "metalpanels", "metalpanel3" },
+	{ 19844, "metalpanels", "metalpanel4" },
+	{ 18835, "mickytextures", "arrow-blue-outline-up" },
+	{ 18835, "mickytextures", "brick008" },
+	{ 18835, "mickytextures", "brown013" },
+	{ 18835, "mickytextures", "dancea" },
+	{ 18835, "mickytextures", "gg_end_lod_3" },
+	{ 18835, "mickytextures", "grey002" },
+	{ 18835, "mickytextures", "marb002" },
+	{ 18835, "mickytextures", "metal013" },
+	{ 18835, "mickytextures", "metal061" },
+	{ 18835, "mickytextures", "orang006" },
+	{ 18835, "mickytextures", "red032" },
+	{ 18835, "mickytextures", "smileyface1" },
+	{ 18835, "mickytextures", "smileyface2" },
+	{ 18835, "mickytextures", "whiteforletters" },
+	{ 18835, "mickytextures", "wood051" },
+	{ 18835, "mickytextures", "yello007" },
+	{ 19611, "microphone1", "microphone1" },
+	{ 19611, "microphone1", "microphonestand1" },
+	{ 19853, "mihouse1", "bluewall1" },
+	{ 19853, "mihouse1", "bluewall1_64" },
+	{ 19853, "mihouse1", "brownwall1" },
+	{ 19853, "mihouse1", "dooredited1" },
+	{ 19853, "mihouse1", "greenwall1" },
+	{ 19853, "mihouse1", "redwall1" },
+	{ 19853, "mihouse1", "tileblue1" },
+	{ 19853, "mihouse1", "tilesswimmingpool2" },
+	{ 19853, "mihouse1", "window1edited" },
+	{ 19853, "mihouse1", "yellowwall1" },
+	{ 19853, "mihouse1", "yellowwall1_64" },
+	{ 19602, "mine", "mine_64" },
+	{ 19159, "mirrorball1", "mirrortile3" },
+	{ 19933, "mkwalloven1", "walloven1" },
+	{ 18865, "mobilephone1", "mobilephone1-1" },
+	{ 18865, "mobilephone1", "mobilephone1-2" },
+	{ 18865, "mobilephone1", "mobilephone1-3" },
+	{ 18866, "mobilephone2", "mobilephone2-1" },
+	{ 18866, "mobilephone2", "mobilephone2-2" },
+	{ 18866, "mobilephone2", "mobilephone2-3" },
+	{ 18867, "mobilephone3", "mobilephone3-1" },
+	{ 18867, "mobilephone3", "mobilephone3-2" },
+	{ 18867, "mobilephone3", "mobilephone3-3" },
+	{ 18868, "mobilephone4", "mobilephone4-1" },
+	{ 18868, "mobilephone4", "mobilephone4-2" },
+	{ 18868, "mobilephone4", "mobilephone4-3" },
+	{ 18869, "mobilephone5", "mobilephone5-1" },
+	{ 18869, "mobilephone5", "mobilephone5-2" },
+	{ 18869, "mobilephone5", "mobilephone5-3" },
+	{ 18870, "mobilephone6", "mobilephone6-1" },
+	{ 18870, "mobilephone6", "mobilephone6-2" },
+	{ 18870, "mobilephone6", "mobilephone6-3" },
+	{ 18871, "mobilephone7", "mobilephone7-1" },
+	{ 18871, "mobilephone7", "mobilephone7-2" },
+	{ 18871, "mobilephone7", "mobilephone7-3" },
+	{ 18872, "mobilephone8", "mobilephone8-1" },
+	{ 18872, "mobilephone8", "mobilephone8-2" },
+	{ 18872, "mobilephone8", "mobilephone8-3" },
+	{ 18873, "mobilephone9", "mobilephone9-1" },
+	{ 18873, "mobilephone9", "mobilephone9-2" },
+	{ 18873, "mobilephone9", "mobilephone9-3" },
+	{ 18874, "mobilephone10", "mobilephone10-1" },
+	{ 18874, "mobilephone10", "mobilephone10-2" },
+	{ 18874, "mobilephone10", "mobilephone10-3" },
+	{ 18800, "mroadhelix1", "concretemanky1" },
+	{ 18800, "mroadhelix1", "concreteoldpainted1" },
+	{ 18800, "mroadhelix1", "road1-3" },
+	{ 19160, "newhardhats", "hardhat2map" },
+	{ 19160, "newhardhats", "hardhat3map" },
+	{ 19162, "newpolicehats", "policehatmap1" },
+	{ 19162, "newpolicehats", "policehatmap2" },
+	{ 18631, "nomodelfile", "hazardtile6" },
+	{ 19517, "noncolored", "bowlerwhite" },
+	{ 19517, "noncolored", "gen_white" },
+	{ 19517, "noncolored", "smyst" },
+	{ 19517, "noncolored", "tophat02" },
+	{ 19517, "noncolored", "wmoice" },
+	{ 19621, "oilcan1", "oilcan1" },
+	{ 19804, "padlock1", "padlock1" },
+	{ 18875, "pager1", "pagermap1" },
+	{ 19302, "pd_jail_door01", "pd_jail_door01" },
+	{ 19303, "pd_jail_door02", "pd_jail_door02" },
+	{ 19304, "pd_jail_door_top01", "pd_jail_door_top01" },
+	{ 19521, "pilotpolicehat", "pilothat01" },
+	{ 19521, "pilotpolicehat", "policehat01" },
+	{ 19143, "pinspotlights", "lighton" },
+	{ 19119, "plainhelmets", "plainhelmet1" },
+	{ 19119, "plainhelmets", "plainhelmet2" },
+	{ 19119, "plainhelmets", "plainhelmet3" },
+	{ 19119, "plainhelmets", "plainhelmet4" },
+	{ 19119, "plainhelmets", "plainhelmet5" },
+	{ 19418, "police_things", "badge01" },
+	{ 19418, "police_things", "handcuffs01" },
+	{ 19418, "police_things", "police_lights01" },
+	{ 19099, "policecaps", "policecap2" },
+	{ 19099, "policecaps", "policecap3" },
+	{ 19140, "policeglasses", "policeglasses1" },
+	{ 19140, "policeglasses", "policeglasses2" },
+	{ 19140, "policeglasses", "policeglasses3" },
+	{ 19942, "policeradio1", "policeradio1" },
+	{ 19797, "policevisorstrobe1", "policevisorstrobe1" },
+	{ 19092, "pompoms", "wood-64x64" },
+	{ 19320, "pumpkin01", "pumpkin01" },
+	{ 19004, "roundbuilding1", "capitolwin1_lawn2" },
+	{ 19004, "roundbuilding1", "stonewalltile4" },
+	{ 19574, "sampfruits", "apple1" },
+	{ 19574, "sampfruits", "apple2" },
+	{ 19574, "sampfruits", "banana1" },
+	{ 19574, "sampfruits", "tomato1" },
+	{ 19523, "sampicons", "oranggrad32" },
+	{ 19523, "sampicons", "reeedgrad32" },
+	{ 19523, "sampicons", "yellograd32" },
+	{ 19792, "sampkeycard1", "sampkeycard1" },
+	{ 19787, "samplcdtvs1", "samplcdtv1" },
+	{ 19787, "samplcdtvs1", "samplcdtv1screen" },
+	{ 19173, "samppictures", "samppicture1" },
+	{ 19173, "samppictures", "samppicture2" },
+	{ 19173, "samppictures", "samppicture3" },
+	{ 19173, "samppictures", "samppicture4" },
+	{ 19962, "samproadsigns", "arrownoleftsign" },
+	{ 19962, "samproadsigns", "arrownorightsign" },
+	{ 19962, "samproadsigns", "arrownostraightsign" },
+	{ 19962, "samproadsigns", "bluearrowleft" },
+	{ 19962, "samproadsigns", "bluearrowright" },
+	{ 19962, "samproadsigns", "bluearrowstraight" },
+	{ 19962, "samproadsigns", "chevronleftsign" },
+	{ 19962, "samproadsigns", "chevronleftsign2" },
+	{ 19962, "samproadsigns", "chevronrightsign" },
+	{ 19962, "samproadsigns", "chevronrightsign2" },
+	{ 19962, "samproadsigns", "crossinterssign" },
+	{ 19962, "samproadsigns", "donotentersign" },
+	{ 19962, "samproadsigns", "greenbackgroundsign" },
+	{ 19962, "samproadsigns", "leftcurvesign" },
+	{ 19962, "samproadsigns", "leftturnsign" },
+	{ 19962, "samproadsigns", "materialtext1" },
+	{ 19962, "samproadsigns", "noparkingsignl" },
+	{ 19962, "samproadsigns", "noparkingsignr" },
+	{ 19962, "samproadsigns", "onewaysignl" },
+	{ 19962, "samproadsigns", "onewaysignr" },
+	{ 19962, "samproadsigns", "radiation" },
+	{ 19962, "samproadsigns", "rightcurvesign" },
+	{ 19962, "samproadsigns", "rightturnsign" },
+	{ 19962, "samproadsigns", "roadclosedsign" },
+	{ 19962, "samproadsigns", "roadworkzonesign" },
+	{ 19962, "samproadsigns", "roadworkzonesign2" },
+	{ 19962, "samproadsigns", "speedlimit5sign" },
+	{ 19962, "samproadsigns", "speedlimit10sign" },
+	{ 19962, "samproadsigns", "speedlimit15sign" },
+	{ 19962, "samproadsigns", "speedlimit20sign" },
+	{ 19962, "samproadsigns", "speedlimit25sign" },
+	{ 19962, "samproadsigns", "speedlimit30sign" },
+	{ 19962, "samproadsigns", "speedlimit35sign" },
+	{ 19962, "samproadsigns", "speedlimit40sign" },
+	{ 19962, "samproadsigns", "speedlimit45sign" },
+	{ 19962, "samproadsigns", "speedlimit50sign" },
+	{ 19962, "samproadsigns", "speedlimit55sign" },
+	{ 19962, "samproadsigns", "speedlimitblanksign" },
+	{ 19962, "samproadsigns", "stopsign" },
+	{ 19962, "samproadsigns", "stopsignahead" },
+	{ 19962, "samproadsigns", "streetsign" },
+	{ 19962, "samproadsigns", "tintersectionsign" },
+	{ 19962, "samproadsigns", "towawayzonesign" },
+	{ 19962, "samproadsigns", "trafficcamera" },
+	{ 19962, "samproadsigns", "trafficlightssign" },
+	{ 19962, "samproadsigns", "warningsign" },
+	{ 19962, "samproadsigns", "workzonesign" },
+	{ 19962, "samproadsigns", "yieldsign" },
+	{ 19064, "santahats", "santahat1" },
+	{ 19064, "santahats", "santahat2" },
+	{ 19064, "santahats", "santahat3" },
+	{ 19598, "sfbuilding1", "darkwood1" },
+	{ 19598, "sfbuilding1", "wall8" },
+	{ 19480, "signsurf", "sign" },
+	{ 19115, "sillyhelmets", "sillyhelmet1" },
+	{ 19115, "sillyhelmets", "sillyhelmet2" },
+	{ 19115, "sillyhelmets", "sillyhelmet3" },
+	{ 19278, "skydiveplatforms", "chromegrill8" },
+	{ 19278, "skydiveplatforms", "hazardtile15-3" },
+	{ 19278, "skydiveplatforms", "hazardtile19-2" },
+	{ 19278, "skydiveplatforms", "metalpylonred" },
+	{ 19278, "skydiveplatforms", "sampeasteregg" },
+	{ 19278, "skydiveplatforms", "stonewalltile1-2" },
+	{ 19278, "skydiveplatforms", "stonewalltile1-10" },
+	{ 19631, "sledgehammer1", "sledgehammer1" },
+	{ 19601, "snowplow1", "snowplow1" },
+	{ 19626, "spade1", "brownmetalcopy" },
+	{ 19467, "speed_bumps", "speed_bump01" },
+	{ 19467, "speed_bumps", "vehicle_barrier01" },
+	{ 18880, "speedcamera1", "glassbullethole1" },
+	{ 18880, "speedcamera1", "metallamppost4" },
+	{ 18880, "speedcamera1", "speedcameramap1" },
+	{ 19515, "swatgrey", "swat" },
+	{ 18642, "taser1", "lightning2-3" },
+	{ 18642, "taser1", "metalshinydented1" },
+	{ 18642, "taser1", "tasermap1" },
+	{ 19308, "taxi01", "taxi01" },
+	{ 19309, "taxi02", "taxi02" },
+	{ 19310, "taxi03", "taxi03" },
+	{ 19311, "taxi04", "taxi04" },
+	{ 19078, "theparrot", "tony" },
+	{ 18773, "tunnelsections", "metalflooring44-2" },
+	{ 18773, "tunnelsections", "stonewall4" },
+	{ 18773, "tunnelsections", "stonewalltile1-5" },
+	{ 18757, "vcinteriors", "dt_office_gls_text" },
+	{ 18757, "vcinteriors", "dt_officewall3" },
+	{ 18757, "vcinteriors", "dt_officflr1" },
+	{ 18757, "vcinteriors", "dts_elevator_buttons" },
+	{ 18757, "vcinteriors", "dts_elevator_carpet1" },
+	{ 18757, "vcinteriors", "dts_elevator_carpet3" },
+	{ 18757, "vcinteriors", "dts_elevator_ceiling" },
+	{ 18757, "vcinteriors", "dts_elevator_floors" },
+	{ 18757, "vcinteriors", "metalplate9" },
+	{ 18752, "volcano", "lavalake" },
+	{ 18752, "volcano", "redgravel" },
+	{ 19319, "warlock01", "warlock01" },
+	{ 19525, "weddingcake1", "bngdecoration1" },
+	{ 19525, "weddingcake1", "weddingcake1" },
+	{ 19513, "whitephone", "whitephone" },
+	{ 19513, "whitephone", "whitephonefront" },
+	{ 19528, "witcheshat1", "witcheshat1" },
+	{ 19608, "woodenstage1", "woodenstage1" },
+	{ 19627, "wrench1", "wrench1" },
+	{ 19071, "wssections", "rockbrown1" },
+	{ 19071, "wssections", "waterclear1" },
+	{ 19071, "wssections", "wood1" },
+	{ 19058, "xmasboxes", "silk5-128x128" },
+	{ 19058, "xmasboxes", "silk6-128x128" },
+	{ 19058, "xmasboxes", "silk7-128x128" },
+	{ 19058, "xmasboxes", "silk8-128x128" },
+	{ 19058, "xmasboxes", "silk9-128x128" },
+	{ 19058, "xmasboxes", "wrappingpaper1" },
+	{ 19058, "xmasboxes", "wrappingpaper4-2" },
+	{ 19058, "xmasboxes", "wrappingpaper16" },
+	{ 19058, "xmasboxes", "wrappingpaper20" },
+	{ 19058, "xmasboxes", "wrappingpaper28" },
+	{ 19063, "xmasorbs", "foil1-128x128" },
+	{ 19063, "xmasorbs", "foil2-128x128" },
+	{ 19063, "xmasorbs", "foil3-128x128" },
+	{ 19063, "xmasorbs", "foil4-128x128" },
+	{ 19063, "xmasorbs", "foil5-128x128" },
+	{ 19063, "xmasorbs", "orbcap" },
+	{ 19063, "xmasorbs", "sphere" },
+	{ 19076, "xmastree1", "goldplate" }
+};
+
+#if defined FILTERSCRIPT
+	public OnFilterScriptInit()
+	{
+		MAX_TEXTURES = sizeof(ObjectTextures);
+		printf("LOADED %i texture definitions", MAX_TEXTURES);
+		return CallLocalFunction("Texture_ALS_OnFilterScriptInit", "");
+	}
+	#if defined _ALS_OnFilterScriptInit
+		#undef OnFilterScriptInit
+	#else
+		#define _ALS_OnFilterScriptInit
+	#endif
+	#define OnFilterScriptInit Texture_ALS_OnFilterScriptInit
+
+	forward Texture_ALS_OnFilterScriptInit();
+#else
+	public OnGameModeInit()
+	{
+		MAX_TEXTURES = sizeof(ObjectTextures);
+		printf("LOADED %i texture definitions", MAX_TEXTURES);
+		return CallLocalFunction("Texture_ALS_OnGameModeInit", "");
+	}
+	#if defined _ALS_OnGameModeInit
+		#undef OnGameModeInit
+	#else
+		#define _ALS_OnGameModeInit
+	#endif
+	#define OnGameModeInit Texture_ALS_OnGameModeInit
+
+	forward Texture_ALS_OnGameModeInit();
+#endif

+ 8769 - 0
Texture-Studio-master/filterscripts/tstudio/alltextures420.pwn

@@ -0,0 +1,8769 @@
+#define GetTModel(%0) ObjectTextures[%0][TModel]
+#define GetTXDName(%0) ObjectTextures[%0][TXDName]
+#define GetTextureName(%0) ObjectTextures[%0][TextureName]
+
+new MAX_TEXTURES;
+
+enum TEXTUREDEF { TModel, TXDName[32], TextureName[32] }
+
+stock const ObjectTextures[][TEXTUREDEF] =
+{
+////////////////////////////////////////////////////////////////////////////////
+// Original Medit textures /////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+	{0,"INVALID","INVALID"},
+	{3922,"bistro","vent_64"},
+	{3922,"bistro","Tablecloth"},
+	{3922,"bistro","sw_wallbrick_01"},
+	{3922,"bistro","sw_door11"},
+	{3922,"bistro","StainedGlass"},
+	{3922,"bistro","rest_wall4"},
+	{3922,"bistro","Panel"},
+	{3922,"bistro","mp_snow"},
+	{3922,"bistro","mottled_grey_64HV"},
+	{3922,"bistro","marblekb_256128"},
+	{3922,"bistro","Marble2"},
+	{3922,"bistro","Marble"},
+	{3922,"bistro","DinerFloor"},
+	{3922,"bistro","concretebig3_256"},
+	{3922,"bistro","Bow_Abattoir_Conc2"},
+	{3922,"bistro","barbersflr1_LA"},
+	{3945,"alpha_fence","bistro_alpha"},
+	{3967,"cj_airprt","ws_stationfloor"},
+	{3967,"cj_airprt","Slabs"},
+	{3967,"cj_airprt","Road_blank256HV"},
+	{3967,"cj_airprt","gun_ceiling3"},
+	{3967,"cj_airprt","dts_elevator_carpet2"},
+	{3967,"cj_airprt","cj_white_wall2"},
+	{3967,"cj_airprt","cj_sheetmetal2"},
+	{3967,"cj_airprt","CJ_RUBBER"},
+	{3967,"cj_airprt","CJ_red_COUNTER"},
+	{3967,"cj_airprt","CJ_POLISHED"},
+	{3967,"cj_airprt","cj_juank_1"},
+	{3967,"cj_airprt","CJ_G_CHROME"},
+	{3967,"cj_airprt","cj_chromepipe"},
+	{3967,"cj_airprt","CJ_CHROME2"},
+	{3967,"cj_airprt","CJ_CHIP_M2"},
+	{3967,"cj_airprt","CJ_BLACK_RUB2"},
+	{3967,"cj_airprt","ceiling_256"},
+	{3967,"cj_airprt","bigbrick"},
+	{3967,"cj_airprt","airportmetalwall256"},
+	{3973,"cj_airprt3","CJ_BANDEDMETAL"},
+	{3899,"hospital2","sky33_64hv"},
+	{3899,"hospital2","plainwoodoor2"},
+	{3899,"hospital2","notice01_128"},
+	{3899,"hospital2","newall15128"},
+	{3899,"hospital2","KeepOut_64"},
+	{3899,"hospital2","HospitalCarPark_64"},
+	{3899,"hospital2","hospitalboard_128a"},
+	{3899,"hospital2","fire_exit128"},
+	{3899,"hospital2","dustyconcrete128"},
+	{3899,"hospital2","cutscenebank128"},
+	{3899,"hospital2","concretenew256"},
+	{3899,"hospital2","banding9_64HV"},
+	{3899,"hospital2","AmbulanceParking_64"},
+	{3899,"hospital2","Alumox64"},
+	{3895,"inditaly","tenwhite128"},
+	{3896,"indust1","tarmac_64HV"},
+	{3896,"indust1","sandytar_64HV"},
+	{3896,"indust1","LO1road_128"},
+	{3896,"indust1","indsmallwall64"},
+	{3896,"indust1","Grass_128HV"},
+	{3896,"indust1","firewall"},
+	{3961,"lee_kitch","rack"},
+	{3961,"lee_kitch","metal6"},
+	{3961,"lee_kitch","metal5"},
+	{3961,"lee_kitch","metal2"},
+	{3961,"lee_kitch","metal1"},
+	{3961,"lee_kitch","Grass"},
+	{3961,"lee_kitch","dinerfloor01_128"},
+	{3961,"lee_kitch","concretebig3_256"},
+	{3948,"libertyhi","wallmix64HV"},
+	{3948,"libertyhi","Road_yellowline256HV"},
+	{3948,"libertyhi","newallktenb1128"},
+	{3948,"libertyhi","newallkb1128"},
+	{3948,"libertyhi","newall9-1"},
+	{3948,"libertyhi","newall10_seamless"},
+	{3948,"libertyhi","forestfloor3"},
+	{3948,"libertyhi","bricksoftgrey128"},
+	{3905,"libertyhi2","tenbeigebrick64"},
+	{3905,"libertyhi2","tenbeige128"},
+	{3905,"libertyhi2","indtena128"},
+	{3905,"libertyhi2","artgal_128"},
+	{3905,"libertyhi2","alleypave_64V"},
+	{3902,"libertyhi3","taxi_256128"},
+	{3906,"libertyhi5","walldirtynewa256128"},
+	{3906,"libertyhi5","wallbrown02_64HV"},
+	{3906,"libertyhi5","TENterr2_128"},
+    {3906,"libertyhi5","TENdbrown5_128"},
+    {3906,"libertyhi5","TENdblue2_128"},
+    {3906,"libertyhi5","tenabrick64"},
+    {3906,"libertyhi5","indtena128"},
+    {3906,"libertyhi5","indten2btm128"},
+    {3906,"libertyhi5","chipboardgrating64HV"},
+	{3954,"rczero_track","waterclear256"},
+	{3954,"rczero_track","sw_grass01"},
+	{3954,"rczero_track","newgrnd1brntrk_128"},
+	{3954,"rczero_track","grassdeep1blnd"},
+	{3954,"rczero_track","grassdeep1"},
+	{3954,"rczero_track","desertstones256grass"},
+	{3954,"rczero_track","cuntbrnclifftop"},
+	{3954,"rczero_track","cuntbrncliffbtmbmp"},
+	{3958,"rc_warhoose","planks01"},
+	{3958,"rc_warhoose","Gen_Scaffold_Wood_Under"},
+	{3958,"rc_warhoose","crate128"},
+	{3958,"rc_warhoose","cj_crates"},
+	{3900,"station","newall2_16c128"},
+	{3925,"weemap","ws_oldwall1"},
+	{3925,"weemap","telepole128"},
+	{3925,"weemap","sw_shedwindow1"},
+	{3925,"weemap","steel128"},
+	{3925,"weemap","skyclouds"},
+	{3925,"weemap","rocktb128"},
+	{3925,"weemap","plaintarmac1"},
+	{3925,"weemap","newall9b_16c128"},
+	{3925,"weemap","LoadingDoorClean"},
+	{3925,"weemap","metaldoor01_256"},
+	{3925,"weemap","des_sherrifwall1"},
+	{3925,"weemap","corrRoof_64HV"},
+	{3925,"weemap","concretenewb256"},
+	{3925,"weemap","chevron_red_64HVa"},
+	{3925,"weemap","Bow_stained_wall"},
+	{3925,"weemap","beigehotel_128"},
+	{4522,"roadblkx","warnsigns2"},
+	{4522,"roadblkx","BLOCK"},
+	{4242,"seabed","sw_sand"},
+	{4242,"seabed","sandnew_law"},
+	{4242,"seabed","rocktq128_dirt"},
+	{4242,"seabed","rocktbrn128"},
+	{4242,"seabed","des_dirt1"},
+	{4242,"seabed","desertstones256"},
+	{4242,"seabed","cw2_mounttrailblank"},
+	{3095,"a51jdrx","bonyrd_skin2"},
+	{3095,"a51jdrx","sam_camo"},
+	{2928,"a51_imy","a51_intdoor"},
+	{2928,"a51_imy","a51_blastdoor"},
+	{2951,"a51_labdoor","washapartwall1_256"},
+	{2951,"a51_labdoor","ws_carparkwall2"},
+	{2951,"a51_labdoor","girder2_grey_64HV"},
+	{3080,"adjumpx","jumptop1_64"},
+	{3066,"ammotrx","ammotrn92crate64"},
+	{2990,"arsex","nopark128"},
+	{3083,"billbox","iron"},
+	{3083,"billbox","ADDWOOD"},
+	{3085,"blkbrdx","tatty_wood_1"},
+	{3085,"blkbrdx","nf_blackbrd"},
+	{3054,"break_ballx","brk_ball1"},
+	{3054,"break_ballx","brk_Ball2"},
+	{3068,"cargo_rear","cargo_gir3"},
+	{3068,"cargo_rear","cargo_pipes"},
+	{3068,"cargo_rear","cargo_ceil2"},
+	{3068,"cargo_rear","cargo_top1"},
+	{3068,"cargo_rear","cargo_floor2"},
+	{3068,"cargo_rear","cargo_floor1"},
+	{3068,"cargo_rear","cargo_gir2"},
+	{3115,"carrierxr","ws_carrierdeckbase"},
+	{3099,"col_wall1x","ab_wood1"},
+	{3099,"col_wall1x","wall1"},
+	{3099,"col_wall1x","motel_wall4"},
+	{3099,"col_wall1x","mp_diner_ceilingdirt"},
+	{3099,"col_wall1x","mp_burn_wall1"},
+	{3062,"continx","frate64_yellow"},
+	{3062,"continx","frate_doors64yellow"},
+	{3062,"continx","frate64_red"},
+	{3062,"continx","frate_doors128red"},
+	{3062,"continx","frate_doors64"},
+	{3062,"continx","frate64_blue"},
+	{3039,"ct_salx","ct_stall1"},
+	{3042,"ct_ventx","liftdoorsac128"},
+	{2956,"immcrax","Metalox64"},
+	{2956,"immcrax","redmetal"},
+	{2956,"immcrax","snpedtest1"},
+	{2956,"immcrax","banding8_64"},
+	{2890,"kb_skip_txd","skip_rubble1"},
+	{2890,"kb_skip_txd","metpat64"},
+	{2890,"kb_skip_txd","walldirtynewa256"},
+	{2890,"kb_skip_txd","skipY"},
+	{18885,"GunVendingMachine1","vendredmetal"},
+	{18886,"ElectroMagnet1","hazardtile13-128x128"},
+	{18886,"ElectroMagnet1","metalox64"},
+	{18890,"Rake1","cj_lightwood"},
+	{18890,"Rake1","metalalumox1"},
+	{19070,"WSSections","wood1"},
+	{19070,"WSSections","rockbrown1"},
+	{19060,"XmasOrbs","foil1-128x128"},
+	{19060,"XmasOrbs","foil2-128x128"},
+	{19060,"XmasOrbs","foil3-128x128"},
+	{19060,"XmasOrbs","foil4-128x128"},
+	{19060,"XmasOrbs","foil5-128x128"},
+	{19090,"PomPoms","mp_bobbie_pompom"},
+	{19090,"PomPoms","mp_bobbie_pompom1"},
+	{19090,"PomPoms","mp_bobbie_pompom2"},
+	{19076,"XmasTree1","goldplated1"},
+	{19076,"XmasTree1","gen_log"},
+	{19176,"skyscrapelan2","stonefloortile13"},
+	{19176,"skyscrapelan2","dts_elevator_door"},
+	{19176,"skyscrapelan2","dts_elevator_woodpanel"},
+	{19176,"skyscrapelan2","dts_elevator_carpet2"},
+	{19176,"skyscrapelan2","dt_officflr2"},
+	{19176,"skyscrapelan2","conc_wall2_128H"},
+	{19176,"skyscrapelan2","sl_stapldoor1"},
+	{18845,"MickyTextures","ws_gayflag1"},
+	{18845,"MickyTextures","brick008"},
+	{18845,"MickyTextures","yello007"},
+	{18845,"MickyTextures","metal013"},
+	{18845,"MickyTextures","knot_wood128"},
+	{18777,"TunnelSections","stonewalltile1-5"},
+	{18777,"TunnelSections","stonewalltile1-3"},
+	{18777,"TunnelSections","stonewall4"},
+	{18880,"SpeedCamera1","metallamppost4"},
+	{19128,"DanceFloors","DanceFloor1"},
+	{19278,"SkyDivePlatforms","hazardtile19-2"},
+	{19278,"SkyDivePlatforms","concreteoldpainted1"},
+	{19278,"SkyDivePlatforms","hazardtile15-3"},
+	{19278,"SkyDivePlatforms","sampeasteregg"},
+	{19278,"SkyDivePlatforms","stonewalltile1-2"},
+	{19054,"XmasBoxes","silk5-128x128"},
+	{19054,"XmasBoxes","silk6-128x128"},
+	{19054,"XmasBoxes","silk8-128x128"},
+	{19054,"XmasBoxes","silk9-128x128"},
+	{19054,"XmasBoxes","silk7-128x128"},
+	{19054,"XmasBoxes","wrappingpaper4-2"},
+	{19054,"XmasBoxes","wrappingpaper1"},
+	{19054,"XmasBoxes","wrappingpaper16"},
+	{19054,"XmasBoxes","wrappingpaper20"},
+	{19054,"XmasBoxes","wrappingpaper28"},
+	{19316,"FerrisWheel","CJ-COUCHL1"},
+	{19272,"DMCages","metaldrumold1"},
+	{19272,"DMCages","metalplate23-3"},
+	{19171,"gtamap","gtasavectormap1"},
+	{19171,"gtamap","gtasamapbit1"},
+	{19171,"gtamap","gtasamapbit2"},
+	{19171,"gtamap","gtasamapbit3"},
+	{19171,"gtamap","gtasamapbit4"},
+	{19005,"MatRamps","rustyboltpanel"},
+	{19005,"MatRamps","planks01"},
+	{19005,"MatRamps","wallgarage"},
+	{19005,"MatRamps","floormetal1"},
+	{19005,"MatRamps","WoodPanel1"},
+	{19005,"MatRamps","redrailing"},
+	{19005,"MatRamps","roadguides"},
+	{19005,"MatRamps","cardboard4"},
+	{19005,"MatRamps","cardboard4-16"},
+	{19005,"MatRamps","cardboard4-2"},
+	{19005,"MatRamps","cardboard4-12"},
+	{19005,"MatRamps","cardboard4-21"},
+	{19005,"MatRamps","knot_woodpaint128"},
+	{19005,"MatRamps","knot_wood128"},
+	{19005,"MatRamps","telepole2128"},
+	{18771,"MatStairs","hazardwall2"},
+	{18808,"MatTextures","bboardblank_law"},
+	{18808,"MatTextures","ab_sheetSteel"},
+	{18808,"MatTextures","scratchedmetal"},
+	{18808,"MatTextures","ws_wetdryblendsand2"},
+	{18808,"MatTextures","multi086"},
+	{18808,"MatTextures","wood020"},
+	{18808,"MatTextures","metal1_128"},
+	{18808,"MatTextures","bluefoil"},
+	{18808,"MatTextures","truchettiling3-4"},
+	{18808,"MatTextures","beetles1"},
+	{18808,"MatTextures","lava1"},
+	{18808,"MatTextures","garbagepile1"},
+	{18808,"MatTextures","concrete12"},
+	{19172,"SAMPPictures","samppicture1"},
+	{19172,"SAMPPictures","samppicture2"},
+	{19172,"SAMPPictures","samppicture3"},
+	{19172,"SAMPPictures","samppicture4"},
+	{18752,"Volcano","rocktb128"},
+	{18752,"Volcano","lavalake"},
+	{19341,"egg_texts","easter_egg01"},
+	{19341,"egg_texts","easter_egg02"},
+	{19341,"egg_texts","easter_egg03"},
+	{19341,"egg_texts","easter_egg04"},
+	{19341,"egg_texts","easter_egg05"},
+	{19400,"all_walls","711_walltemp"},
+	{19400,"all_walls","ab_clubloungewall"},
+	{19400,"all_walls","ab_corwallupr"},
+	{19400,"all_walls","cj_lightwood"},
+	{19400,"all_walls","cj_white_wall2"},
+	{19400,"all_walls","cl_of_wltemp"},
+	{19400,"all_walls","copbtm_brown"},
+	{19400,"all_walls","gym_floor5"},
+	{19400,"all_walls","kb_kit_wal1"},
+	{19400,"all_walls","la_carp3"},
+	{19400,"all_walls","motel_wall3"},
+	{19400,"all_walls","mp_carter_bwall"},
+	{19400,"all_walls","mp_carter_wall"},
+	{19400,"all_walls","mp_diner_woodwall"},
+	{19400,"all_walls","mp_motel_bluew"},
+	{19400,"all_walls","mp_motel_pinkw"},
+	{19400,"all_walls","mp_motel_whitewall"},
+	{19400,"all_walls","mp_shop_floor2"},
+	{19400,"all_walls","stormdrain3_nt"},
+	{19400,"all_walls","des_dirt1"},
+	{19400,"all_walls","desgreengrass"},
+	{14633,"paperchase_bits2","ab_medbag"},
+	{14613,"ab_abattoir_box","ab_bloodfloor"},
+	{18041,"cj_ammun_extra","cj_bulletbox2c"},
+	{18041,"cj_ammun_extra","cj_bulletbox2b"},
+	{18041,"cj_ammun_extra","cj_bulletboxb2"},
+	{18041,"cj_ammun_extra","cj_bulletboxb"},
+	{18041,"cj_ammun_extra","cj_bulletbox3"},
+	{18041,"cj_ammun_extra","cj_bulletbox2"},
+	{14633,"paperchase_bits2","ab_medbottle"},
+	{2856,"gb_foodwrap01","cj_milk"},
+	{10817,"airportgnd_sfse","black64"},
+	{2707,"Shopping","white"},
+	{2541,"CJ_SS_1","cj_juice"},
+	{2541,"CJ_SS_1","cj_juice2"},
+	{2541,"CJ_SS_1","cj_bbq_bag"},
+	{2541,"CJ_SS_1","cj_lube1"},
+	{2541,"CJ_SS_1","cj_b_towel"},
+	{14633,"paperchase_bits2","ab_paperoll"},
+	{2068,"CJ_AMMO_net", "cj_cammonet"},
+	{2821,"gb_foodwrap01","gb_foodwrap02"},
+	{11391,"hubprops2_sfse","tool_store"},
+    {11391,"hubprops2_sfse","cj_sheetmetal2"},
+    {11391,"hubprops2_sfse","chipboard_256"},
+	{14738, "whorebar", "ah_whoredoor"},
+	{14833, "Lee_StripClub", "zebra_skin"},
+	{18028, "CJ_BAR2", "cj_nastybar_d"},
+	{2255, "Picture_frame_clip", "cj_painting9"},
+	{14534, "ab_woozieA", "ab_wuziwillow"},
+	{14534, "ab_woozieA", "ab_wuzimirror"},
+	{3082, "ammocapx", "ammo_tube"},
+	{4878, "airport_las", "metpat64chev_128"},
+	{4878, "airport_las", "grass_128hv"},
+	{5792, "sunrise04_lawn", "mosaic2_lawn"},
+	{4186, "pershingsq", "pershing1_lan"},
+	{6351, "rodeo02_law2", "helmutwall1_law"},
+	{9835, "hosbibalsfw", "poundroofsupport_sfe"},
+	{9835, "hosbibalsfw", "poundroofblock_sfe"},
+	{9835, "hosbibalsfw", "hospital6_swf"},
+	{9835, "hosbibalsfw", "hospital7_swf"},
+	{9835, "hosbibalsfw", "2hospital2sfw"},
+	{9835, "hosbibalsfw", "2hospital1sfw"},
+	{9835, "hosbibalsfw", "2hospital3sfw"},
+	{9835, "hosbibalsfw", "ceiling_256"},
+	{16217, "des_s", "des_dirtgrassmixbmp"},
+	{12938, "sw_apartments", "sw_policeline"},
+	{12938, "sw_apartments", "sw_warewall2"},
+	{12938, "sw_apartments", "sw_stairs1"},
+////////////////////////////////////////////////////////////////////////////////
+// Original Medit textures /////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+
+// Transition marker
+	{12938, "sw_apartments", "sw_stairs1"},
+	{12938, "sw_apartments", "sw_stairs1"},
+	{12938, "sw_apartments", "sw_stairs1"},
+	{12938, "sw_apartments", "sw_stairs1"},
+	{12938, "sw_apartments", "sw_stairs1"},
+	{12938, "sw_apartments", "sw_stairs1"},
+	{12938, "sw_apartments", "sw_stairs1"},
+	{12938, "sw_apartments", "sw_stairs1"},
+	{12938, "sw_apartments", "sw_stairs1"},
+// Transition marker
+
+// All textures
+    { 10101, "2notherbuildsfe", "Bow_Abpave_Gen" },
+    { 10101, "2notherbuildsfe", "Bow_church_grass_alt" },
+    { 10101, "2notherbuildsfe", "ferry_build14" },
+    { 10101, "2notherbuildsfe", "flatdoor01_law" },
+    { 10101, "2notherbuildsfe", "gz_vicdoor1" },
+    { 10101, "2notherbuildsfe", "gz_vicdoor2" },
+    { 10101, "2notherbuildsfe", "sl_vicbrikwall01" },
+    { 10101, "2notherbuildsfe", "sl_vicrfedge" },
+    { 10101, "2notherbuildsfe", "sl_vicwall01" },
+    { 10101, "2notherbuildsfe", "sl_vicwall02" },
+    { 10101, "2notherbuildsfe", "sl_vicwin01" },
+    { 10101, "2notherbuildsfe", "sl_vicwin02" },
+    { 10101, "2notherbuildsfe", "ws_rooftarmac1" },
+    { 14668, "711c", "bwtilebroth" },
+    { 14668, "711c", "CJ_7_11_TILE" },
+    { 14668, "711c", "CJ_7_11_win" },
+    { 14668, "711c", "CJ_CHIP_M2" },
+    { 14668, "711c", "cj_white_wall2" },
+    { 14668, "711c", "forumstand1_LAe" },
+    { 14668, "711c", "gun_ceiling1128" },
+    { 14668, "711c", "gun_ceiling3" },
+    { 14668, "711c", "sec_camera1" },
+    { 9514, "711_sfw", "beachwall_law" },
+    { 9514, "711_sfw", "brick" },
+    { 9514, "711_sfw", "dt_carpark_line_texture" },
+    { 9514, "711_sfw", "mono1_sfe" },
+    { 9514, "711_sfw", "mono2_sfe" },
+    { 9514, "711_sfw", "pcut_bot_law" },
+    { 9514, "711_sfw", "rebrckwall_128" },
+    { 9514, "711_sfw", "shingles2" },
+    { 9514, "711_sfw", "staddoors1" },
+    { 9514, "711_sfw", "supasave_sfw" },
+    { 9514, "711_sfw", "supasave_wintemp" },
+    { 9514, "711_sfw", "sw_sheddoor2" },
+    { 9514, "711_sfw", "ws_carpark2" },
+    { 1560, "7_11_door", "CJ_CHROME2" },
+    { 1560, "7_11_door", "cj_sheetmetal2" },
+    { 14690, "7_11_posters", "CJ_7_11_POST" },
+    { 14690, "7_11_posters", "CJ_7_11_POST2" },
+    { 14690, "7_11_posters", "cokopops_1" },
+    { 14690, "7_11_posters", "munkyJuice_2" },
+    { 13659, "8bars", "AH_gbarrier" },
+    { 13659, "8bars", "barrier" },
+    { 13659, "8bars", "bridgeconc" },
+    { 13659, "8bars", "Upt_Fence_Mesh" },
+    { 13628, "8stad", "stadroof" },
+    { 16640, "a51", "a51_blastdoor" },
+    { 16640, "a51", "a51_boffstuff1" },
+    { 16640, "a51", "a51_boffstuff3" },
+    { 16640, "a51", "a51_cardreader" },
+    { 16640, "a51", "a51_floorpanel1" },
+    { 16640, "a51", "a51_glass" },
+    { 16640, "a51", "a51_handrail" },
+    { 16640, "a51", "a51_intdoor" },
+    { 16640, "a51", "a51_metal1" },
+    { 16640, "a51", "a51_monitors" },
+    { 16640, "a51", "a51_panel2" },
+    { 16640, "a51", "a51_panels1" },
+    { 16640, "a51", "a51_pipeend" },
+    { 16640, "a51", "a51_strips1" },
+    { 16640, "a51", "a51_vent1" },
+    { 16640, "a51", "a51_wall1" },
+    { 16640, "a51", "a51_weedoors" },
+    { 16640, "a51", "airvent_gz" },
+    { 16640, "a51", "Alumox64" },
+    { 16640, "a51", "banding3c_64HV" },
+    { 16640, "a51", "banding3_64HV" },
+    { 16640, "a51", "banding9_64HV" },
+    { 16640, "a51", "bluemetal" },
+    { 16640, "a51", "bonyrd_skin2" },
+    { 16640, "a51", "carparkwall12_256" },
+    { 16640, "a51", "concretegroundl1_256" },
+    { 16640, "a51", "concretemanky" },
+    { 16640, "a51", "concretewall22_256" },
+    { 16640, "a51", "concreteyellow256 copy" },
+    { 16640, "a51", "dam_gencon" },
+    { 16640, "a51", "des_factower" },
+    { 16640, "a51", "des_tunnellight" },
+    { 16640, "a51", "Metal3_128" },
+    { 16640, "a51", "Metalox64" },
+    { 16640, "a51", "metpat64" },
+    { 16640, "a51", "pavegrey128" },
+    { 16640, "a51", "plaintarmac1" },
+    { 16640, "a51", "redmetal" },
+    { 16640, "a51", "scratchedmetal" },
+    { 16640, "a51", "sl_metalwalk" },
+    { 16640, "a51", "sm_conc_hatch" },
+    { 16640, "a51", "stormdrain7" },
+    { 16640, "a51", "sw_olddrum1" },
+    { 16640, "a51", "vent01_64" },
+    { 16640, "a51", "ventb128" },
+    { 16640, "a51", "ventb64" },
+    { 16640, "a51", "vgs_shopwall01_128" },
+    { 16640, "a51", "wallgreyred128" },
+    { 16640, "a51", "ws_carparkwall2" },
+    { 16640, "a51", "ws_castironwalk" },
+    { 16640, "a51", "ws_metalpanel1" },
+    { 16640, "a51", "ws_stationfloor" },
+    { 3095, "a51jdrx", "sam_camo" },
+    { 16646, "a51_alpha", "a51_sign1" },
+    { 16646, "a51_alpha", "des_rails1" },
+    { 16646, "a51_alpha", "stanwind_nt" },
+    { 16646, "a51_alpha", "waterdirty256" },
+    { 16646, "a51_alpha", "ws_stationgirder1" },
+    { 2917, "a51_crane", "banding5_64HV" },
+    { 2917, "a51_crane", "dish_base1" },
+    { 2917, "a51_crane", "dish_base2" },
+    { 2917, "a51_crane", "girder2_grey_64HV" },
+    { 2917, "a51_crane", "quarry_conv_belt_struct" },
+    { 16644, "a51_detailstuff", "a51_map" },
+    { 16644, "a51_detailstuff", "a51_radardisp" },
+    { 16644, "a51_detailstuff", "a51_radarscan_m" },
+    { 16644, "a51_detailstuff", "a51_secdesk" },
+    { 16644, "a51_detailstuff", "aluminiumbands256" },
+    { 16644, "a51_detailstuff", "Gen_Keyboard" },
+    { 16644, "a51_detailstuff", "Gen_Monitor" },
+    { 16644, "a51_detailstuff", "roucghstonebrtb" },
+    { 16644, "a51_detailstuff", "steel256128" },
+    { 16093, "a51_ext", "a51_fencsign" },
+    { 16093, "a51_ext", "alleydoor2" },
+    { 16093, "a51_ext", "alleydoor9b" },
+    { 16093, "a51_ext", "BLOCK" },
+    { 16093, "a51_ext", "BLOCK2" },
+    { 16093, "a51_ext", "block2_high" },
+    { 16093, "a51_ext", "cabin5" },
+    { 16093, "a51_ext", "corugwall_sandy" },
+    { 16093, "a51_ext", "des_backdoor1" },
+    { 16093, "a51_ext", "des_dirt1" },
+    { 16093, "a51_ext", "des_dirttrack1" },
+    { 16093, "a51_ext", "des_dirttrack1r" },
+    { 16093, "a51_ext", "des_elepylon" },
+    { 16093, "a51_ext", "stormdrain2_nt" },
+    { 16093, "a51_ext", "Tar_1line256HV" },
+    { 16093, "a51_ext", "wilswin01_la" },
+    { 16093, "a51_ext", "ws_controltowerwin1" },
+    { 16093, "a51_ext", "ws_corr_2_plain" },
+    { 16093, "a51_ext", "ws_trans_concr" },
+    { 16093, "a51_ext", "ws_whitewall2_bottom" },
+    { 16093, "a51_ext", "ws_whitewall2_top" },
+    { 2951, "a51_labdoor", "washapartwall1_256" },
+    { 16639, "a51_labs", "a51_labwall1" },
+    { 16639, "a51_labs", "dam_terazzo" },
+    { 16639, "a51_labs", "studiowall4_law" },
+    { 16639, "a51_labs", "ws_trainstationwin1" },
+    { 2887, "a51_spotlight", "dts_spotlight" },
+    { 2887, "a51_spotlight", "stormdrain5_nt" },
+    { 16322, "a51_stores", "dam_gencrane" },
+    { 16322, "a51_stores", "des_ghotwood1" },
+    { 16322, "a51_stores", "dish_panel_a" },
+    { 16322, "a51_stores", "dish_roundbit_a" },
+    { 16322, "a51_stores", "fence_64" },
+    { 16322, "a51_stores", "Gen_Freight" },
+    { 16322, "a51_stores", "hangingwires1" },
+    { 16322, "a51_stores", "metalic128" },
+    { 16322, "a51_stores", "metpat64chev_128" },
+    { 16322, "a51_stores", "steel64" },
+    { 16322, "a51_stores", "wtmetal3" },
+    { 16293, "a51_undergrnd", "Was_scrpyd_door_in_hngr" },
+    { 2567, "ab", "ab_metaledge" },
+    { 2567, "ab", "ab_metalholes" },
+    { 2567, "ab", "ab_plasicwrapa" },
+    { 2567, "ab", "Box_Texturepage" },
+    { 2567, "ab", "chipboard_256" },
+    { 14615, "abatoir_daylite", "ab_volumelight" },
+    { 2589, "ab_ab", "ab_carcass" },
+    { 2589, "ab_ab", "ab_sheetSteel" },
+    { 14612, "ab_abattoir_box", "ab_airconunit" },
+    { 14612, "ab_abattoir_box", "ab_bloodfloor" },
+    { 14612, "ab_abattoir_box", "ab_boxStack2" },
+    { 14612, "ab_abattoir_box", "ab_walldamage" },
+    { 14612, "ab_abattoir_box", "pipes_csite_256" },
+    { 14584, "ab_abbatoir01", "ab_ceiling1" },
+    { 14584, "ab_abbatoir01", "ab_concFloor" },
+    { 14584, "ab_abbatoir01", "ab_drainage" },
+    { 14584, "ab_abbatoir01", "ab_tiles" },
+    { 14584, "ab_abbatoir01", "ab_tileWall" },
+    { 14584, "ab_abbatoir01", "ab_vent1" },
+    { 14584, "ab_abbatoir01", "ab_wall1b" },
+    { 14584, "ab_abbatoir01", "carpet5kb" },
+    { 14584, "ab_abbatoir01", "cj_sheetmetal" },
+    { 14584, "ab_abbatoir01", "striplight1" },
+    { 11150, "ab_acc_control", "ab_BoltPanel2" },
+    { 11150, "ab_acc_control", "ab_dialsSwitches" },
+    { 11150, "ab_acc_control", "ws_shipmetal5" },
+    { 14628, "ab_caligulasfront", "sign_Caligulas2" },
+    { 14548, "ab_cargo_int", "747_cage" },
+    { 14548, "ab_cargo_int", "747_freight1" },
+    { 14548, "ab_cargo_int", "ab_planeBoby" },
+    { 14548, "ab_cargo_int", "ab_planeWing" },
+    { 14548, "ab_cargo_int", "Alumplat64" },
+    { 14548, "ab_cargo_int", "cargo_ceil2" },
+    { 14548, "ab_cargo_int", "cargo_floor1" },
+    { 14548, "ab_cargo_int", "cargo_floor2" },
+    { 14548, "ab_cargo_int", "cargo_gir1" },
+    { 14548, "ab_cargo_int", "cargo_gir2" },
+    { 14548, "ab_cargo_int", "cargo_gir3" },
+    { 14548, "ab_cargo_int", "cargo_pipes" },
+    { 14548, "ab_cargo_int", "cargo_top1" },
+    { 14548, "ab_cargo_int", "cargo_wall2" },
+    { 14548, "ab_cargo_int", "metal_frame" },
+    { 14548, "ab_cargo_int", "yellowmetal" },
+    { 14629, "ab_chande", "ab_frostLiteGlass" },
+    { 14629, "ab_chande", "ab_gemBead" },
+    { 14629, "ab_chande", "ab_goldpipe" },
+    { 2755, "ab_dojowall", "ab_trellis" },
+    { 2755, "ab_dojowall", "mp_apt1_roomfloor" },
+    { 1564, "ab_jetlite", "bathwin01_int" },
+    { 1564, "ab_jetlite", "CJ_BULLETBRASS" },
+    { 1562, "ab_jetseat", "mp_jet_seat" },
+    { 14583, "ab_mafcaslaund", "crate_side" },
+    { 14583, "ab_mafcaslaund", "hospital_trolley" },
+    { 14581, "ab_mafiasuitea", "ab_blind" },
+    { 14581, "ab_mafiasuitea", "ab_books" },
+    { 14581, "ab_mafiasuitea", "ab_CeilRose" },
+    { 14581, "ab_mafiasuitea", "ab_picFrame" },
+    { 14581, "ab_mafiasuitea", "ab_pic_bridge" },
+    { 14581, "ab_mafiasuitea", "ab_walnut" },
+    { 14581, "ab_mafiasuitea", "ab_walnutLite" },
+    { 14581, "ab_mafiasuitea", "ab_wood01" },
+    { 14581, "ab_mafiasuitea", "barbersmir1" },
+    { 14581, "ab_mafiasuitea", "carp01S" },
+    { 14581, "ab_mafiasuitea", "ceilingLite" },
+    { 14581, "ab_mafiasuitea", "cof_wood2" },
+    { 14581, "ab_mafiasuitea", "goldDecal" },
+    { 14581, "ab_mafiasuitea", "goldPillar" },
+    { 14581, "ab_mafiasuitea", "kit_door1" },
+    { 14581, "ab_mafiasuitea", "mp_burn_ceiling" },
+    { 14581, "ab_mafiasuitea", "wallpapkb2" },
+    { 14581, "ab_mafiasuitea", "walp45S" },
+    { 14581, "ab_mafiasuitea", "wood02S" },
+    { 14627, "ab_optilite", "ab_optilite" },
+    { 2591, "ab_partition1", "ab_fabricCheck2" },
+    { 14616, "ab_pillartemp", "ab_Pillar" },
+    { 14616, "ab_pillartemp", "ab_PillarTop" },
+    { 18062, "ab_sfammuitems01", "ammo_gunboard" },
+    { 18062, "ab_sfammuitems01", "ammu_ammo" },
+    { 18062, "ab_sfammuitems01", "ammu_clothes" },
+    { 18062, "ab_sfammuitems01", "ammu_gunboard2" },
+    { 18062, "ab_sfammuitems01", "ammu_gunboard3" },
+    { 18062, "ab_sfammuitems01", "ammu_gunboard4" },
+    { 18062, "ab_sfammuitems01", "gun_guns3a" },
+    { 18062, "ab_sfammuitems01", "gun_guns4a" },
+    { 18063, "ab_sfammuitems02", "1_to_8" },
+    { 18063, "ab_sfammuitems02", "gun_sign_txta" },
+    { 18063, "ab_sfammuitems02", "gun_xtra1" },
+    { 18063, "ab_sfammuitems02", "gun_xtra2" },
+    { 18065, "ab_sfammumain", "ab_stripped_floor" },
+    { 18065, "ab_sfammumain", "ab_wallpaper02" },
+    { 18065, "ab_sfammumain", "breezewall" },
+    { 18065, "ab_sfammumain", "breezewall5" },
+    { 18065, "ab_sfammumain", "carp20S" },
+    { 18065, "ab_sfammumain", "gun_ceiling1" },
+    { 18065, "ab_sfammumain", "gun_door1" },
+    { 18065, "ab_sfammumain", "gun_floor1" },
+    { 18065, "ab_sfammumain", "gun_floor2" },
+    { 18065, "ab_sfammumain", "mp_gun_wall" },
+    { 18065, "ab_sfammumain", "pavea256" },
+    { 18065, "ab_sfammumain", "plate1" },
+    { 18065, "ab_sfammumain", "plywood_gym" },
+    { 18065, "ab_sfammumain", "shelf_glas" },
+    { 18064, "ab_sfammuunits", "gun_blackbox" },
+    { 18064, "ab_sfammuunits", "gun_divider2" },
+    { 18064, "ab_sfammuunits", "gun_targeta" },
+    { 18064, "ab_sfammuunits", "gun_targetb" },
+    { 18064, "ab_sfammuunits", "gun_targetc" },
+    { 18064, "ab_sfammuunits", "rubber_mat" },
+    { 14786, "ab_sfgymbeams", "gym_floor5" },
+    { 14786, "ab_sfgymbeams", "knot_wood128" },
+    { 14788, "ab_sfgymbits01", "ab_rollmat01" },
+    { 14788, "ab_sfgymbits01", "lockers" },
+    { 14787, "ab_sfgymbits02", "ab_gymMark01" },
+    { 14787, "ab_sfgymbits02", "ab_rollmat02" },
+    { 14787, "ab_sfgymbits02", "sign_cobra1" },
+    { 14787, "ab_sfgymbits02", "sign_cobra2" },
+    { 14789, "ab_sfgymmain", "ab_panelWall1" },
+    { 14789, "ab_sfgymmain", "ab_panelWall2" },
+    { 14789, "ab_sfgymmain", "ab_wood02" },
+    { 14789, "ab_sfgymmain", "CBchallenge_256" },
+    { 14789, "ab_sfgymmain", "gun_ceiling2_128" },
+    { 14789, "ab_sfgymmain", "gymwinodow3" },
+    { 14789, "ab_sfgymmain", "gym_floor6" },
+    { 14652, "ab_trukstpa", "barberswindo" },
+    { 14652, "ab_trukstpa", "bbar_door1" },
+    { 14652, "ab_trukstpa", "bbar_wall1" },
+    { 14652, "ab_trukstpa", "bbar_wall4" },
+    { 14652, "ab_trukstpa", "CJ_CORD" },
+    { 14652, "ab_trukstpa", "CJ_WOOD1(EDGE)" },
+    { 14652, "ab_trukstpa", "CJ_WOOD6" },
+    { 14652, "ab_trukstpa", "diner_tbl3" },
+    { 14652, "ab_trukstpa", "mp_diner_wood" },
+    { 14652, "ab_trukstpa", "wood01" },
+    { 14653, "ab_trukstpb", "diner_seat3" },
+    { 14653, "ab_trukstpb", "ketchup" },
+    { 14653, "ab_trukstpb", "met_supp" },
+    { 14653, "ab_trukstpb", "mustard" },
+    { 14653, "ab_trukstpb", "napkin_disp" },
+    { 14650, "ab_trukstpc", "bbar_till1" },
+    { 14650, "ab_trukstpc", "bras_base" },
+    { 14650, "ab_trukstpc", "Gen_Sacki" },
+    { 14650, "ab_trukstpc", "mp_CJ_WOOD5" },
+    { 14650, "ab_trukstpc", "sa_wood08_128" },
+    { 14651, "ab_trukstpd", "bbar_poollamp1" },
+    { 14651, "ab_trukstpd", "Bow_bar_flooring" },
+    { 14651, "ab_trukstpd", "Bow_bar_metal_cabinet" },
+    { 14651, "ab_trukstpd", "Bow_bar_pool_table" },
+    { 14651, "ab_trukstpd", "Bow_bar_pool_tablebase" },
+    { 14651, "ab_trukstpd", "Bow_bar_tabletop_wood" },
+    { 14654, "ab_trukstpe", "bbar_plates2" },
+    { 14654, "ab_trukstpe", "bbar_signs1" },
+    { 14654, "ab_trukstpe", "bbar_sports1" },
+    { 14654, "ab_trukstpe", "bbar_stuff1" },
+    { 14654, "ab_trukstpe", "bbar_stuff3" },
+    { 14654, "ab_trukstpe", "bbar_stuff9" },
+    { 2592, "ab_veg", "ab_slotBase" },
+    { 2592, "ab_veg", "tubelite" },
+    { 14486, "ab_vegasgymbits01", "bbar_wall2" },
+    { 14794, "ab_vegasgymmain", "barrel_64HV" },
+    { 14794, "ab_vegasgymmain", "bbar_wall3" },
+    { 14794, "ab_vegasgymmain", "dt_compound_fanvent" },
+    { 14794, "ab_vegasgymmain", "gym_pipes" },
+    { 14794, "ab_vegasgymmain", "Gym_rope" },
+    { 14794, "ab_vegasgymmain", "mp_CJ_SHEET2" },
+    { 14794, "ab_vegasgymmain", "studiowall2_law" },
+    { 14534, "ab_wooziea", "ab_fabricRed" },
+    { 14534, "ab_wooziea", "ab_redwall" },
+    { 14534, "ab_wooziea", "ab_tileDiamond" },
+    { 14534, "ab_wooziea", "ab_wuzibet" },
+    { 14534, "ab_wooziea", "ab_wuziMirror" },
+    { 14534, "ab_wooziea", "ab_wuziwillow" },
+    { 14534, "ab_wooziea", "carp02S" },
+    { 14534, "ab_wooziea", "CJ_WOODDOOR5" },
+    { 14534, "ab_wooziea", "dt_office_roof" },
+    { 14534, "ab_wooziea", "light_full" },
+    { 14534, "ab_wooziea", "mcstraps_window" },
+    { 14534, "ab_wooziea", "walp72S" },
+    { 14544, "ab_woozieb", "ap_screens1" },
+    { 14544, "ab_woozieb", "golf_secgates1" },
+    { 14544, "ab_woozieb", "otb_mach1" },
+    { 14544, "ab_woozieb", "otb_numbers" },
+    { 14544, "ab_woozieb", "otb_signs" },
+    { 14544, "ab_woozieb", "otb_wind" },
+    { 14535, "ab_wooziec", "ab_butfly_sword" },
+    { 14535, "ab_wooziec", "ab_wallfan" },
+    { 14535, "ab_wooziec", "ab_wallpaper01" },
+    { 14535, "ab_wooziec", "ab_woodborder" },
+    { 14535, "ab_wooziec", "sink1" },
+    { 14535, "ab_wooziec", "wall4" },
+    { 14554, "ab_wooziesshad", "shadow_wuzi_blak" },
+    { 14538, "ab_xit_box", "sw_door07" },
+    { 1569, "adam_v_doort", "ws_guardhousedoor" },
+    { 3061, "addoorx", "lasjmdoorgud" },
+    { 3080, "adjumpx", "gen_chrome" },
+    { 3080, "adjumpx", "jumpit" },
+    { 3080, "adjumpx", "jumptop1_64" },
+    { 3080, "adjumpx", "planks64" },
+    { 3080, "adjumpx", "rustyboltpanel" },
+    { 3028, "adswrdx", "gun_katana" },
+    { 3076, "ad_rmx", "ammo_tube" },
+    { 3076, "ad_rmx", "ws_cargoshipdoor" },
+    { 10839, "aircarpkbarier_sfse", "banding8_64HV" },
+    { 10839, "aircarpkbarier_sfse", "bareboards_64a" },
+    { 10839, "aircarpkbarier_sfse", "chevron_red_64HVa" },
+    { 10839, "aircarpkbarier_sfse", "cratetop128" },
+    { 10839, "aircarpkbarier_sfse", "glass_64a" },
+    { 10839, "aircarpkbarier_sfse", "redband_64Ha" },
+    { 915, "airconext", "CJ_plating" },
+    { 915, "airconext", "cj_plating2" },
+    { 915, "airconext", "cj_plating3" },
+    { 915, "airconext", "cj_sheet2" },
+    { 10806, "airfence_sfse", "ws_griddyfence" },
+    { 10806, "airfence_sfse", "ws_leccyfncesign" },
+    { 10806, "airfence_sfse", "ws_leccyfncetop" },
+    { 10806, "airfence_sfse", "ws_oldpainted" },
+    { 4835, "airoads_las", "aarprt8LAS" },
+    { 4835, "airoads_las", "aarprt9LAS" },
+    { 4835, "airoads_las", "concretenewb256" },
+    { 4835, "airoads_las", "dt_road" },
+    { 4835, "airoads_las", "easykerb" },
+    { 4835, "airoads_las", "grassdry_128HV" },
+    { 4835, "airoads_las", "kbpavement_test" },
+    { 4835, "airoads_las", "sjmhoodlawn41" },
+    { 4835, "airoads_las", "sjmhoodlawn42" },
+    { 4835, "airoads_las", "snpedtest1" },
+    { 4835, "airoads_las", "tardor2" },
+    { 4835, "airoads_las", "weewall256" },
+    { 4835, "airoads_las", "ws_carparkwall1" },
+    { 10763, "airport1_sfse", "airportwind03" },
+    { 10763, "airport1_sfse", "ws_airportdoors1" },
+    { 10763, "airport1_sfse", "ws_lightlens" },
+    { 10763, "airport1_sfse", "ws_rollerdoor_fire" },
+    { 10763, "airport1_sfse", "ws_yelloscaff" },
+    { 10763, "airport1_sfse", "yellowscum64" },
+    { 4830, "airport2", "aarprt3LAS" },
+    { 4830, "airport2", "aarprt5LAS" },
+    { 4830, "airport2", "aarprt6LAS" },
+    { 4830, "airport2", "bathtile01_int" },
+    { 4830, "airport2", "bevflower2" },
+    { 4830, "airport2", "brnstucco1" },
+    { 4830, "airport2", "kbplanter_plants1" },
+    { 4830, "airport2", "LASLACMA93" },
+    { 4830, "airport2", "LASLACMA96" },
+    { 4830, "airport2", "sanairtex1" },
+    { 4830, "airport2", "sanairtex2" },
+    { 4830, "airport2", "sanairtex3" },
+    { 4830, "airport2", "sanpedock5" },
+    { 4830, "airport2", "scaff2flas" },
+    { 4830, "airport2", "sjmpostbar3" },
+    { 4830, "airport2", "sm_Agave_2" },
+    { 4830, "airport2", "sw_door12" },
+    { 4830, "airport2", "sw_shedwall02" },
+    { 4830, "airport2", "tardor9" },
+    { 4830, "airport2", "ws_officewins_1" },
+    { 4828, "airport3_las", "aarprt1LAS" },
+    { 4828, "airport3_las", "alax1_las" },
+    { 4828, "airport3_las", "alax3_las" },
+    { 4828, "airport3_las", "alax5_las" },
+    { 4828, "airport3_las", "alax6_las" },
+    { 4828, "airport3_las", "brwall_128" },
+    { 4828, "airport3_las", "gallery01_law" },
+    { 4828, "airport3_las", "gnhotelwall02_128" },
+    { 4828, "airport3_las", "mirrwind1_LAn" },
+    { 4828, "airport3_las", "sanpedock7" },
+    { 4828, "airport3_las", "sanpedock8" },
+    { 10811, "airportbits_sfse", "ap_fuel2" },
+    { 10811, "airportbits_sfse", "ap_fuel3" },
+    { 10811, "airportbits_sfse", "ap_fuel4" },
+    { 10811, "airportbits_sfse", "brckwhtwash128" },
+    { 10778, "airportcpark_sfse", "elecbox2" },
+    { 10778, "airportcpark_sfse", "helipad_bits" },
+    { 10778, "airportcpark_sfse", "vgsclubdoor02_128" },
+    { 10778, "airportcpark_sfse", "ws_aircarparksign1" },
+    { 10778, "airportcpark_sfse", "ws_boothpanel" },
+    { 10778, "airportcpark_sfse", "ws_carpark1" },
+    { 10778, "airportcpark_sfse", "ws_carpark3" },
+    { 10778, "airportcpark_sfse", "ws_crashbarrier" },
+    { 10778, "airportcpark_sfse", "ws_crashbarrier2" },
+    { 10778, "airportcpark_sfse", "ws_doubledoor1" },
+    { 10778, "airportcpark_sfse", "ws_fireexit" },
+    { 10778, "airportcpark_sfse", "ws_fluorescent1" },
+    { 10778, "airportcpark_sfse", "ws_fluorescent2" },
+    { 10778, "airportcpark_sfse", "ws_roadarrow1" },
+    { 4992, "airportdetail", "aarprt91LAS" },
+    { 4992, "airportdetail", "aarprt92LAS" },
+    { 4992, "airportdetail", "aarprt93LAS" },
+    { 4992, "airportdetail", "ads003 copy" },
+    { 4992, "airportdetail", "bevflower1" },
+    { 4992, "airportdetail", "diderSachs01" },
+    { 4992, "airportdetail", "hedge2" },
+    { 4992, "airportdetail", "kb_ivy_256" },
+    { 4992, "airportdetail", "prolaps01" },
+    { 4992, "airportdetail", "sm_Agave_1" },
+    { 10765, "airportgnd_sfse", "ap_metal1" },
+    { 10765, "airportgnd_sfse", "ap_runwaysigns" },
+    { 10765, "airportgnd_sfse", "ap_runwaysigns2" },
+    { 10765, "airportgnd_sfse", "black64" },
+    { 10765, "airportgnd_sfse", "bobo_3" },
+    { 10765, "airportgnd_sfse", "coasty_bit3_sfe" },
+    { 10765, "airportgnd_sfse", "crackedgroundb" },
+    { 10765, "airportgnd_sfse", "desgreengrass" },
+    { 10765, "airportgnd_sfse", "gridchev_64HV" },
+    { 10765, "airportgnd_sfse", "sea_wall_temp" },
+    { 10765, "airportgnd_sfse", "sf_pave2" },
+    { 10765, "airportgnd_sfse", "white" },
+    { 10765, "airportgnd_sfse", "ws_airpt_concrete" },
+    { 10765, "airportgnd_sfse", "ws_bridgepavement2" },
+    { 10765, "airportgnd_sfse", "ws_oldpainted2rusty" },
+    { 10765, "airportgnd_sfse", "ws_runwaytarmac" },
+    { 10765, "airportgnd_sfse", "ws_skidmarks" },
+    { 10765, "airportgnd_sfse", "ws_whiteplaster_btm" },
+    { 10765, "airportgnd_sfse", "ws_whiteplaster_top" },
+    { 10765, "airportgnd_sfse", "ws_whitestripe" },
+    { 10765, "airportgnd_sfse", "ws_yellowline" },
+    { 3440, "airportpillar", "carfx1" },
+    { 3440, "airportpillar", "metalic_64" },
+    { 10755, "airportrminl_sfse", "bumptile" },
+    { 10755, "airportrminl_sfse", "mirrwind4_LAn" },
+    { 10755, "airportrminl_sfse", "ws_airportconc1" },
+    { 10755, "airportrminl_sfse", "ws_airportwall1" },
+    { 10755, "airportrminl_sfse", "ws_airportwall2" },
+    { 10755, "airportrminl_sfse", "ws_airportwin2" },
+    { 10755, "airportrminl_sfse", "ws_airportwin3" },
+    { 10755, "airportrminl_sfse", "ws_dom_departures" },
+    { 10755, "airportrminl_sfse", "ws_rotten_concrete1" },
+    { 10756, "airportroads_sfse", "dt_road_stoplinea" },
+    { 10756, "airportroads_sfse", "Heliconcrete" },
+    { 10756, "airportroads_sfse", "sf_junction5" },
+    { 10756, "airportroads_sfse", "sf_pave6" },
+    { 10756, "airportroads_sfse", "sf_road5" },
+    { 10756, "airportroads_sfse", "stones256128" },
+    { 10756, "airportroads_sfse", "ws_airbigsign2" },
+    { 10756, "airportroads_sfse", "ws_white_wall1" },
+    { 4829, "airport_las", "Bow_Loadingbay_Door" },
+    { 4829, "airport_las", "Bow_Warehousewall" },
+    { 4829, "airport_las", "fancy_slab128" },
+    { 4829, "airport_las", "fencekb_64h" },
+    { 4829, "airport_las", "Grass_128HV" },
+    { 4829, "airport_las", "LASLACMA6" },
+    { 4829, "airport_las", "liftdoorsac256" },
+    { 4829, "airport_las", "sjmlahus28" },
+    { 4829, "airport_las", "yellow" },
+    { 10762, "airport_sfse", "ivy4new" },
+    { 4833, "airprtrunway_las", "asandockw" },
+    { 4833, "airprtrunway_las", "bobo_2" },
+    { 4833, "airprtrunway_las", "cos_hiwaymid_256" },
+    { 4833, "airprtrunway_las", "desbarlas" },
+    { 4833, "airprtrunway_las", "dockwall1" },
+    { 4833, "airprtrunway_las", "Gen_Meshfencing" },
+    { 4833, "airprtrunway_las", "greyground256" },
+    { 4833, "airprtrunway_las", "homies_1" },
+    { 4833, "airprtrunway_las", "lasjmfence1" },
+    { 4833, "airprtrunway_las", "Mannblok2_LAn" },
+    { 4833, "airprtrunway_las", "policeha02black_128" },
+    { 4833, "airprtrunway_las", "tuntest1las" },
+    { 4833, "airprtrunway_las", "ws_bluelino" },
+    { 2772, "airp_prop", "cj_AIRP_DIRECT" },
+    { 2772, "airp_prop", "CJ_AIRP_S_1" },
+    { 2772, "airp_prop", "CJ_AIRP_S_2" },
+    { 2772, "airp_prop", "CJ_AIR_1" },
+    { 2772, "airp_prop", "CJ_BANDEDMETAL" },
+    { 2772, "airp_prop", "cj_chromepipe" },
+    { 2772, "airp_prop", "CJ_GALVANISED" },
+    { 2772, "airp_prop", "CJ_red_COUNTER" },
+    { 2772, "airp_prop", "cj_TILL2" },
+    { 10837, "airroadsigns_sfse", "CJ_LAMPPOST1" },
+    { 10837, "airroadsigns_sfse", "ws_airbigsign1" },
+    { 10838, "airwelcomesign_sfse", "bbback" },
+    { 10838, "airwelcomesign_sfse", "sl_rustyrailing" },
+    { 10838, "airwelcomesign_sfse", "ws_airwelcome1" },
+    { 1613, "alleyprop", "hoteldetails2" },
+    { 1613, "alleyprop", "stuffdirtcol" },
+    { 12821, "alleystuff", "cratec" },
+    { 12821, "alleystuff", "Crate_B" },
+    { 12821, "alleystuff", "Gen_Crate" },
+    { 12821, "alleystuff", "planks01" },
+    { 12821, "alleystuff", "sjmstair" },
+    { 10370, "alleys_sfs", "ws_alley_conc3" },
+    { 10370, "alleys_sfs", "ws_asphalt" },
+    { 10370, "alleys_sfs", "ws_sandstone1" },
+    { 3066, "ammotrx", "ammotrn92crate64" },
+    { 3066, "ammotrx", "ammotrn92tarp128" },
+    { 2619, "ammounique", "mp_gun_man1" },
+    { 18050, "ammu_2flrprops", "ammu_boots3" },
+    { 18050, "ammu_2flrprops", "ammu_hats" },
+    { 18050, "ammu_2flrprops", "chipboard_256128" },
+    { 18050, "ammu_2flrprops", "dt_ammu_flr1" },
+    { 18050, "ammu_2flrprops", "gun_target1" },
+    { 18050, "ammu_2flrprops", "gun_target2" },
+    { 18050, "ammu_2flrprops", "gun_target3" },
+    { 18050, "ammu_2flrprops", "gun_xtra4" },
+    { 4552, "ammu_lan2", "corporate1" },
+    { 4552, "ammu_lan2", "dior" },
+    { 4552, "ammu_lan2", "foodmartla1" },
+    { 4552, "ammu_lan2", "gun_python" },
+    { 4552, "ammu_lan2", "mallextmid01" },
+    { 4552, "ammu_lan2", "newall4-4" },
+    { 4552, "ammu_lan2", "sf_chinashop2" },
+    { 4552, "ammu_lan2", "sl_dtbuild02win1" },
+    { 4552, "ammu_lan2", "sl_dtrufrear2wall1" },
+    { 4552, "ammu_lan2", "sl_dtrufrear2win1" },
+    { 4552, "ammu_lan2", "sl_dtrufrear2win2" },
+    { 4552, "ammu_lan2", "sl_dtrufrear2win3" },
+    { 4552, "ammu_lan2", "sl_fudstore1" },
+    { 4552, "ammu_lan2", "sl_fudstore2" },
+    { 4552, "ammu_lan2", "sl_lavicdtwall1" },
+    { 4552, "ammu_lan2", "sunsetammu1" },
+    { 4552, "ammu_lan2", "sunsetammu2" },
+    { 4552, "ammu_lan2", "sunsetammu4" },
+    { 18049, "ammu_twofloor", "CJ_BACK_BOARD" },
+    { 18049, "ammu_twofloor", "concretebig4256128" },
+    { 18049, "ammu_twofloor", "gun_bacboard" },
+    { 18049, "ammu_twofloor", "gun_ceiling2" },
+    { 18049, "ammu_twofloor", "gun_windo" },
+    { 18049, "ammu_twofloor", "mp_gun_stairs" },
+    { 9920, "anotherbuildsfe", "grassgrn256" },
+    { 9920, "anotherbuildsfe", "gz_vic1a" },
+    { 9920, "anotherbuildsfe", "gz_vic1b" },
+    { 9920, "anotherbuildsfe", "gz_vic1c" },
+    { 9920, "anotherbuildsfe", "gz_vic1d" },
+    { 9920, "anotherbuildsfe", "gz_vic1e" },
+    { 9920, "anotherbuildsfe", "gz_vic2a" },
+    { 9920, "anotherbuildsfe", "gz_vic2b" },
+    { 9920, "anotherbuildsfe", "gz_vic2c" },
+    { 9920, "anotherbuildsfe", "gz_vic2d" },
+    { 5631, "apartmentalpha", "aptsign01_LA" },
+    { 5631, "apartmentalpha", "gymshop1_LAe" },
+    { 5631, "apartmentalpha", "ws_railing1" },
+    { 3881, "apsecurity_sfxrf", "chromepipe2_64HV" },
+    { 3881, "apsecurity_sfxrf", "CJ_WOOD1" },
+    { 3881, "apsecurity_sfxrf", "leather_seat_256" },
+    { 3881, "apsecurity_sfxrf", "lostonclad1" },
+    { 3881, "apsecurity_sfxrf", "WIN_DESKTOP" },
+    { 3881, "apsecurity_sfxrf", "ws_altz_wall10" },
+    { 3881, "apsecurity_sfxrf", "ws_rooftarmac2" },
+    { 10810, "ap_build4e", "airportdanger" },
+    { 10810, "ap_build4e", "redpylon" },
+    { 10810, "ap_build4e", "redwhite_stripe" },
+    { 10810, "ap_build4e", "roof09L256" },
+    { 1683, "ap_jumbos", "airblock1" },
+    { 1683, "ap_jumbos", "airblock2" },
+    { 1683, "ap_jumbos", "airblock3" },
+    { 1683, "ap_jumbos", "blackshadow4" },
+    { 1681, "ap_learjets", "ap_learjet" },
+    { 1682, "ap_misc1bit", "ap_radar" },
+    { 9575, "archbrij", "conc_wall_stripd2128h" },
+    { 3715, "archlax", "arch_sign" },
+    { 3715, "archlax", "ws_greymetal" },
+    { 10041, "archybuild10", "bank_sfe2" },
+    { 10041, "archybuild10", "bank_sfe5" },
+    { 10041, "archybuild10", "copshop2" },
+    { 10041, "archybuild10", "copshop3" },
+    { 10041, "archybuild10", "copshop5" },
+    { 10041, "archybuild10", "copshop6" },
+    { 10041, "archybuild10", "hotel_bit2" },
+    { 10041, "archybuild10", "rooftop_gz3" },
+    { 10041, "archybuild10", "sfe_bigbuild2" },
+    { 10041, "archybuild10", "sfe_pinkbuild1" },
+    { 10041, "archybuild10", "sfe_pinkbuild2" },
+    { 10041, "archybuild10", "sf_shop2" },
+    { 10041, "archybuild10", "sf_windos_15" },
+    { 10041, "archybuild10", "sf_windos_15b" },
+    { 10041, "archybuild10", "sf_windos_7" },
+    { 10041, "archybuild10", "sf_windos_8" },
+    { 10041, "archybuild10", "sf_windos_9" },
+    { 10041, "archybuild10", "stonesteps1" },
+    { 10041, "archybuild10", "Upt_Conc floorClean" },
+    { 10041, "archybuild10", "vgnburgwal4_128" },
+    { 10041, "archybuild10", "vgnburgwal5_256" },
+    { 10041, "archybuild10", "whitedecosfe1" },
+    { 10041, "archybuild10", "whitedecosfe2" },
+    { 10041, "archybuild10", "whitedecosfe3" },
+    { 10041, "archybuild10", "whitedecosfe4" },
+    { 3017, "arch_plx", "arch_plans" },
+    { 3629, "arprtxxref_las", "aarprt4LAS" },
+    { 3629, "arprtxxref_las", "airsetest1_LAS" },
+    { 3629, "arprtxxref_las", "airstoof1_LAS" },
+    { 3629, "arprtxxref_las", "chevron64HVa" },
+    { 3629, "arprtxxref_las", "corrRoof_64HV" },
+    { 3629, "arprtxxref_las", "dirtywhite" },
+    { 3629, "arprtxxref_las", "dustytar_64HV" },
+    { 3629, "arprtxxref_las", "grn_window2_16" },
+    { 3629, "arprtxxref_las", "lastrk6" },
+    { 3629, "arprtxxref_las", "metaldoor_128" },
+    { 3629, "arprtxxref_las", "planetunnel_64HV" },
+    { 3629, "arprtxxref_las", "rustybolts" },
+    { 3629, "arprtxxref_las", "shuttersb" },
+    { 3629, "arprtxxref_las", "wheel02_64" },
+    { 3629, "arprtxxref_las", "ws_corrugated1" },
+    { 3629, "arprtxxref_las", "ws_corrugated2" },
+    { 3629, "arprtxxref_las", "ws_corrugateddoor1" },
+    { 2990, "arsex", "blackdirt" },
+    { 2990, "arsex", "nopark128" },
+    { 2990, "arsex", "steel128" },
+    { 10426, "backroad_sfs", "Bow_church_dirt" },
+    { 10426, "backroad_sfs", "retainwall1" },
+    { 701, "badlands", "newtreeleaves128" },
+    { 701, "badlands", "sm_des_bush1" },
+    { 10850, "bakerybit2_sfse", "frate64_blue" },
+    { 10850, "bakerybit2_sfse", "frate64_red" },
+    { 10850, "bakerybit2_sfse", "frate64_yellow" },
+    { 10850, "bakerybit2_sfse", "frate_doors128red" },
+    { 10850, "bakerybit2_sfse", "frate_doors64" },
+    { 10850, "bakerybit2_sfse", "frate_doors64yellow" },
+    { 10850, "bakerybit2_sfse", "GB_truckdepot29" },
+    { 10850, "bakerybit2_sfse", "ws_altz_wall5" },
+    { 10856, "bakerybit_sfse", "windoresidential256" },
+    { 10856, "bakerybit_sfse", "ws_altz_wall7" },
+    { 10856, "bakerybit_sfse", "ws_dickgoblinmural" },
+    { 10856, "bakerybit_sfse", "ws_doubledoor4" },
+    { 10856, "bakerybit_sfse", "ws_oldwarehouse10a" },
+    { 10856, "bakerybit_sfse", "ws_oldwarehouse10c" },
+    { 10856, "bakerybit_sfse", "ws_oldwarehouse10d" },
+    { 10891, "bakery_sfse", "cabin6" },
+    { 10891, "bakery_sfse", "ws_altz_wall4" },
+    { 10891, "bakery_sfse", "ws_altz_wall5_door" },
+    { 10891, "bakery_sfse", "ws_dflourmural" },
+    { 10891, "bakery_sfse", "ws_RShaul_dirt" },
+    { 3437, "ballypillar01", "ballywall01_64" },
+    { 8391, "ballys01", "ballydoor01_128" },
+    { 8391, "ballys01", "ballyledge01_128" },
+    { 8391, "ballys01", "ballywall02_128" },
+    { 8391, "ballys01", "ballywindw01_128" },
+    { 8391, "ballys01", "ballywindw02_128" },
+    { 8391, "ballys01", "casinolightsblu_128" },
+    { 8391, "ballys01", "CJ_blackplastic" },
+    { 8391, "ballys01", "greyground256128" },
+    { 8391, "ballys01", "vgncorpdoor1_512" },
+    { 8391, "ballys01", "ws_floortiles4" },
+    { 8486, "ballys02", "Grass_concpath_128HV" },
+    { 8486, "ballys02", "walltiles_128" },
+    { 8394, "ballysign01", "HighRoller01_256" },
+    { 8394, "ballysign01", "hortonsnug2_256" },
+    { 8394, "ballysign01", "vgnmetaltopwal1_256" },
+    { 8394, "ballysign01", "vgnpawnlng_256" },
+    { 8394, "ballysign01", "ws_airpassage" },
+    { 8487, "ballyswater", "waterclear256" },
+    { 1252, "barrelexpos", "atm" },
+    { 1949, "barrier", "barrier_stripe" },
+    { 1949, "barrier", "pierlegs" },
+    { 1949, "barrier", "plainboards64HV" },
+    { 4510, "barrierblk", "warnsigns1" },
+    { 4510, "barrierblk", "warnsigns2" },
+    { 4510, "barrierblk", "yellow_64" },
+    { 1282, "barrierm", "orangebarrier2" },
+    { 5397, "barrio1_lae", "cargo7_128" },
+    { 5397, "barrio1_lae", "carwash_256" },
+    { 5397, "barrio1_lae", "closedblank1_256" },
+    { 5397, "barrio1_lae", "concretenewgery256" },
+    { 5397, "barrio1_lae", "corporate3green_128" },
+    { 5397, "barrio1_lae", "crossing_law" },
+    { 5397, "barrio1_lae", "dirtgaz64b" },
+    { 5397, "barrio1_lae", "gassign1_256" },
+    { 5397, "barrio1_lae", "roof06L256" },
+    { 5397, "barrio1_lae", "rufwaldock1" },
+    { 5397, "barrio1_lae", "sanpedocka1" },
+    { 5397, "barrio1_lae", "snpdwargrn1" },
+    { 5397, "barrio1_lae", "sw_wind16" },
+    { 5397, "barrio1_lae", "telewires_law" },
+    { 5397, "barrio1_lae", "wshbrsh1las" },
+    { 17508, "barrio1_lae2", "alleywall2" },
+    { 17508, "barrio1_lae2", "brickred" },
+    { 17508, "barrio1_lae2", "dockpave_256" },
+    { 17508, "barrio1_lae2", "gangshop10_LAe" },
+    { 17508, "barrio1_lae2", "gangshop11_LAe" },
+    { 17508, "barrio1_lae2", "gangshop12_LAe" },
+    { 17508, "barrio1_lae2", "gangsign3_LAe" },
+    { 17508, "barrio1_lae2", "gangsign4_LAe" },
+    { 982, "bar_chainlink", "awirex2" },
+    { 982, "bar_chainlink", "sjmshopBK" },
+    { 10385, "baseballground_sfs", "Bow_church_dirt_to_grass_side_t" },
+    { 10385, "baseballground_sfs", "ws_baseballdirt" },
+    { 10385, "baseballground_sfs", "ws_football_lines2" },
+    { 3819, "baseball_sfsx", "helipad_mesh_t" },
+    { 3819, "baseball_sfsx", "helipad_strutT" },
+    { 3819, "baseball_sfsx", "telepole128" },
+    { 1946, "bball1", "basketball2" },
+    { 7555, "bballcpark1", "backstageceiling1_128" },
+    { 7555, "bballcpark1", "curbyell_64H" },
+    { 7555, "bballcpark1", "vgncpark1_256" },
+    { 7555, "bballcpark1", "vgspshrailing1" },
+    { 7555, "bballcpark1", "ws_carparknew1" },
+    { 7555, "bballcpark1", "ws_carparknew2" },
+    { 7555, "bballcpark1", "ws_carparknew2a" },
+    { 3452, "bballvgnint", "bballconcrete1_256" },
+    { 3452, "bballvgnint", "bballconcrete2_256" },
+    { 3452, "bballvgnint", "bballconcrete3_256" },
+    { 3452, "bballvgnint", "bballconcrete4_256" },
+    { 3452, "bballvgnint", "bballconcrete5_256" },
+    { 3452, "bballvgnint", "Bow_Abattoir_Conc2" },
+    { 3452, "bballvgnint", "carparkwall1_256" },
+    { 3065, "bballx", "bball_fake_light" },
+    { 3128, "bball_hpx", "wire2" },
+    { 3096, "bbpcpx", "bluepink64" },
+    { 3096, "bbpcpx", "blugrad32" },
+    { 2020, "bdcabinets", "sideboard1" },
+    { 14805, "bdupsfurn", "Bdup2_Lamp" },
+    { 14805, "bdupsfurn", "Bdup2_Ttop1" },
+    { 14805, "bdupsfurn", "Bdup2_Ttop2" },
+    { 14805, "bdupsfurn", "Bdup_Ashtray" },
+    { 14805, "bdupsfurn", "Bdup_Caps" },
+    { 14805, "bdupsfurn", "Bdup_Crack" },
+    { 14805, "bdupsfurn", "Bdup_CrackPipe" },
+    { 14805, "bdupsfurn", "Bdup_Pills" },
+    { 14805, "bdupsfurn", "blacksofa01" },
+    { 14806, "bdupshifi", "Bdup2_amp" },
+    { 14806, "bdupshifi", "Bdup2_CD" },
+    { 14806, "bdupshifi", "Bdup2_speakers" },
+    { 14806, "bdupshifi", "Bdup2_TV" },
+    { 14806, "bdupshifi", "Bdup2_wood" },
+    { 5520, "bdupshouse_lae", "awningsides2" },
+    { 5520, "bdupshouse_lae", "compdoor2_LAe" },
+    { 5520, "bdupshouse_lae", "compdoor4_LAe" },
+    { 5520, "bdupshouse_lae", "comptwall23" },
+    { 5520, "bdupshouse_lae", "gangwin4_LAe" },
+    { 5520, "bdupshouse_lae", "shingles3" },
+    { 5520, "bdupshouse_lae", "sw_woodflloor" },
+    { 5520, "bdupshouse_lae", "ws_boxhouse_wins3" },
+    { 14807, "bdupslight", "Bdup2_Light" },
+    { 14803, "bdupsnew", "Bdup2_Artex" },
+    { 14803, "bdupsnew", "Bdup2_carpet" },
+    { 14803, "bdupsnew", "Bdup2_mask" },
+    { 14803, "bdupsnew", "Bdup2_plant" },
+    { 14803, "bdupsnew", "Bdup2_plantPot" },
+    { 14803, "bdupsnew", "Bdup2_plantStalk" },
+    { 14803, "bdupsnew", "Bdup2_poster" },
+    { 14803, "bdupsnew", "Bdup2_Rug" },
+    { 14803, "bdupsnew", "Bdup2_wallpaper" },
+    { 14803, "bdupsnew", "Bdup2_wallpaperB" },
+    { 14803, "bdupsnew", "Bdup2_wallpaperC" },
+    { 3032, "bdwinx", "ct_canopy" },
+    { 3032, "bdwinx", "gangwin3_LAe" },
+    { 3653, "beachapts_lax", "Bow_dryclean_wall_upr" },
+    { 3653, "beachapts_lax", "comptcowind1" },
+    { 3653, "beachapts_lax", "eastwall3_LAe2" },
+    { 3653, "beachapts_lax", "eastwall4_LAe2" },
+    { 3653, "beachapts_lax", "eastwin07_LAe2" },
+    { 3653, "beachapts_lax", "Grass_dry_64HV" },
+    { 3653, "beachapts_lax", "Ind_Roadskank" },
+    { 3653, "beachapts_lax", "sjmscorclawn" },
+    { 3653, "beachapts_lax", "stormdrain6" },
+    { 1598, "beachball", "beachball" },
+    { 9549, "beachbx_sfw", "boxybox_sf1" },
+    { 9549, "beachbx_sfw", "boxybox_sf1b" },
+    { 9549, "beachbx_sfw", "boxybox_sf2" },
+    { 9549, "beachbx_sfw", "boxybox_sf2b" },
+    { 9549, "beachbx_sfw", "boxybox_sf2c" },
+    { 9549, "beachbx_sfw", "boxybox_sf3" },
+    { 9549, "beachbx_sfw", "boxybox_sf3b" },
+    { 9549, "beachbx_sfw", "boxybox_sf4" },
+    { 9549, "beachbx_sfw", "boxybox_sf4b" },
+    { 9549, "beachbx_sfw", "boxybox_sf5" },
+    { 9549, "beachbx_sfw", "boxybox_sf5b" },
+    { 9549, "beachbx_sfw", "boxybox_sf6" },
+    { 9549, "beachbx_sfw", "boxybox_sf6b" },
+    { 9549, "beachbx_sfw", "cst_rock_coast_sfw" },
+    { 9549, "beachbx_sfw", "NEWrockgrass_sfw" },
+    { 9549, "beachbx_sfw", "SF_garden3" },
+    { 3615, "beachhut", "asanmonbhut1" },
+    { 3615, "beachhut", "asanmonbhut2" },
+    { 3615, "beachhut", "sw_flatroof01" },
+    { 3615, "beachhut", "ws_decking1" },
+    { 17953, "beach_lae2", "block2_low" },
+    { 4811, "beach_las", "grifnewtex1x_LAS" },
+    { 4811, "beach_las", "grifnewtex2x_LAS" },
+    { 4811, "beach_las", "lasclifface" },
+    { 4811, "beach_las", "sandnew_law" },
+    { 4811, "beach_las", "sandstonemixb" },
+    { 4811, "beach_las", "sm_Agave_bloom" },
+    { 4811, "beach_las", "sm_minipalm1" },
+    { 5114, "beach_las2", "boardwalk_la" },
+    { 5114, "beach_las2", "Bow_meshfence" },
+    { 5114, "beach_las2", "ganggraf04_LA" },
+    { 5114, "beach_las2", "luxorwall02_128sandblend" },
+    { 5114, "beach_las2", "sw_sand" },
+    { 10351, "beach_sfs", "rocktb128" },
+    { 10351, "beach_sfs", "ws_drysand" },
+    { 10351, "beach_sfs", "ws_drysand2grass" },
+    { 10351, "beach_sfs", "ws_wetdryblendsand" },
+    { 10351, "beach_sfs", "ws_wetsand" },
+    { 6312, "beacliff_law2", "concretebigblu4256128" },
+    { 6312, "beacliff_law2", "grasstype3" },
+    { 6312, "beacliff_law2", "redcliffroof_LA" },
+    { 6312, "beacliff_law2", "redclifftop256" },
+    { 6312, "beacliff_law2", "sm_rock2_desert" },
+    { 6404, "beafron1_law2", "beachsig01_LAw2" },
+    { 6404, "beafron1_law2", "blueshade2_64" },
+    { 6404, "beafron1_law2", "cafe01_law" },
+    { 6404, "beafron1_law2", "compfence7_LAe" },
+    { 6404, "beafron1_law2", "comptwall30" },
+    { 6404, "beafron1_law2", "comptwall31" },
+    { 6404, "beafron1_law2", "comptwall37" },
+    { 6404, "beafron1_law2", "Gen_Scaffold_Wood_Under" },
+    { 6404, "beafron1_law2", "icecream_law" },
+    { 6404, "beafron1_law2", "melroran3_law" },
+    { 6404, "beafron1_law2", "pierbild01_law" },
+    { 6404, "beafron1_law2", "pierroof01_law" },
+    { 6404, "beafron1_law2", "pierwin03_law" },
+    { 6404, "beafron1_law2", "rippost01_LA" },
+    { 6404, "beafron1_law2", "shingledblue_la" },
+    { 6404, "beafron1_law2", "shutter02LA" },
+    { 6404, "beafron1_law2", "shutter04LA" },
+    { 6404, "beafron1_law2", "vencounter01_law" },
+    { 6404, "beafron1_law2", "venshops02_law" },
+    { 6404, "beafron1_law2", "woodroof01_128" },
+    { 6282, "beafron2_law2", "asanwall2" },
+    { 6282, "beafron2_law2", "bchhouse_law" },
+    { 6282, "beafron2_law2", "boardwalk2_la" },
+    { 6282, "beafron2_law2", "bobo_LAw" },
+    { 6282, "beafron2_law2", "comptwall33" },
+    { 6282, "beafron2_law2", "concretebigb256128" },
+    { 6282, "beafron2_law2", "concretenewb256128" },
+    { 6282, "beafron2_law2", "decoacwallbtmb21_256" },
+    { 6282, "beafron2_law2", "des_bunting" },
+    { 6282, "beafron2_law2", "downtshop7_LAn" },
+    { 6282, "beafron2_law2", "downtsign3_LA" },
+    { 6282, "beafron2_law2", "downtwin27" },
+    { 6282, "beafron2_law2", "downtwin28" },
+    { 6282, "beafron2_law2", "eastwin01_LAe2" },
+    { 6282, "beafron2_law2", "eastwin08_LAe2" },
+    { 6282, "beafron2_law2", "eris_3" },
+    { 6282, "beafron2_law2", "examwall2_LAe" },
+    { 6282, "beafron2_law2", "fire_esc_fence" },
+    { 6282, "beafron2_law2", "giftsign01_law" },
+    { 6282, "beafron2_law2", "heat_03" },
+    { 6282, "beafron2_law2", "hollysign02_LAw" },
+    { 6282, "beafron2_law2", "homies_2" },
+    { 6282, "beafron2_law2", "LoadingDoorClean" },
+    { 6282, "beafron2_law2", "melrshop04_LAwN" },
+    { 6282, "beafron2_law2", "sanpiz1" },
+    { 6282, "beafron2_law2", "scumshop01_LAe" },
+    { 6282, "beafron2_law2", "shutter03LA" },
+    { 6282, "beafron2_law2", "sjmcargr" },
+    { 6282, "beafron2_law2", "smoothie" },
+    { 6282, "beafron2_law2", "snpdwingrat1" },
+    { 6282, "beafron2_law2", "snpedshptst1a" },
+    { 6282, "beafron2_law2", "snpedshptst1c" },
+    { 6282, "beafron2_law2", "spraysig1_LAw2" },
+    { 6282, "beafron2_law2", "telewireslong" },
+    { 6282, "beafron2_law2", "vertsign1_LA" },
+    { 6282, "beafron2_law2", "ws_ed_shop11" },
+    { 6282, "beafron2_law2", "ws_ed_shop9" },
+    { 1281, "benches", "pierdoor02_law" },
+    { 1281, "benches", "trafficcone" },
+    { 1256, "benchm", "TaxiCo1_64" },
+    { 11100, "bendytunnel_sfse", "blackmetal" },
+    { 11100, "bendytunnel_sfse", "Bow_sub_wallshine" },
+    { 11100, "bendytunnel_sfse", "Bow_sub_walltiles" },
+    { 11100, "bendytunnel_sfse", "ws_altz_wall10b" },
+    { 13691, "bevcunto2_lahills", "aamanbev96x" },
+    { 13691, "bevcunto2_lahills", "adeta" },
+    { 13691, "bevcunto2_lahills", "Bow_Abattoir_Floor_Clean" },
+    { 13691, "bevcunto2_lahills", "crazypave" },
+    { 13691, "bevcunto2_lahills", "newgrnd1brn_128" },
+    { 13691, "bevcunto2_lahills", "stonewall3_la" },
+    { 13691, "bevcunto2_lahills", "ws_floortiles2" },
+    { 13691, "bevcunto2_lahills", "ws_patio1" },
+    { 3603, "bevmans01_la", "aamanbev1x" },
+    { 3603, "bevmans01_la", "aamanbev2x" },
+    { 3603, "bevmans01_la", "aamanbev3x" },
+    { 3603, "bevmans01_la", "aamanbev5x" },
+    { 3603, "bevmans01_la", "aamanbev6x" },
+    { 3603, "bevmans01_la", "aamanbev7x" },
+    { 3603, "bevmans01_la", "aamanbev8x" },
+    { 3603, "bevmans01_la", "aamanbev92x" },
+    { 3603, "bevmans01_la", "aamanbev93x" },
+    { 3603, "bevmans01_la", "aamanbev94x" },
+    { 3603, "bevmans01_la", "aamanbev95x" },
+    { 3603, "bevmans01_la", "cemebuild03_law" },
+    { 3603, "bevmans01_la", "garagedoor4_law" },
+    { 3603, "bevmans01_la", "genroof01_128" },
+    { 3603, "bevmans01_la", "genroof02_128" },
+    { 3603, "bevmans01_la", "hottop5d_law" },
+    { 3603, "bevmans01_la", "lasbevcit7" },
+    { 3603, "bevmans01_la", "lasjmhus21" },
+    { 3603, "bevmans01_la", "pavepat2_128" },
+    { 3603, "bevmans01_la", "pierwin01_law" },
+    { 3603, "bevmans01_la", "rooftiles1" },
+    { 3603, "bevmans01_la", "sjmhoodaad" },
+    { 3603, "bevmans01_la", "sjmhoodalldr" },
+    { 3603, "bevmans01_la", "sjmhoodlawn9s" },
+    { 3603, "bevmans01_la", "sjmlahus21" },
+    { 3603, "bevmans01_la", "sjmlahus23" },
+    { 3603, "bevmans01_la", "sjmlahus25" },
+    { 3603, "bevmans01_la", "sjmlahus26" },
+    { 3603, "bevmans01_la", "sjmlahus27" },
+    { 3603, "bevmans01_la", "sjmlahus29" },
+    { 3603, "bevmans01_la", "wilsdoor_01_la" },
+    { 6284, "bev_law2", "beachwalkway" },
+    { 6284, "bev_law2", "comptdoor2" },
+    { 6284, "bev_law2", "comptwindo2" },
+    { 6284, "bev_law2", "concretebigb256" },
+    { 6284, "bev_law2", "dirtKB_64HV" },
+    { 6284, "bev_law2", "glass_fence_64hv" },
+    { 6284, "bev_law2", "lasjmposh1" },
+    { 6284, "bev_law2", "lasjmposh2" },
+    { 6284, "bev_law2", "lasjmposh3" },
+    { 6284, "bev_law2", "lasjmposh4" },
+    { 6284, "bev_law2", "lasmalhus92" },
+    { 6284, "bev_law2", "letterbox_law" },
+    { 6284, "bev_law2", "pierbild04_law" },
+    { 6284, "bev_law2", "pierdoor03_law" },
+    { 6284, "bev_law2", "pierfence01_law" },
+    { 6284, "bev_law2", "pierfence02b_law" },
+    { 6284, "bev_law2", "pierfence02_law" },
+    { 6284, "bev_law2", "pierhouse01_law" },
+    { 6284, "bev_law2", "pierhouse02b_law" },
+    { 6284, "bev_law2", "pierhouse02_law" },
+    { 6284, "bev_law2", "pierhouse3_law" },
+    { 6284, "bev_law2", "pierwall02_law" },
+    { 6284, "bev_law2", "pierwall03_law" },
+    { 6284, "bev_law2", "pierwin04_law" },
+    { 6284, "bev_law2", "pierwin05_law" },
+    { 6284, "bev_law2", "pierwin06_law" },
+    { 6284, "bev_law2", "pierwin07_law" },
+    { 6284, "bev_law2", "pierwin08b_law" },
+    { 6284, "bev_law2", "pierwin08_law" },
+    { 6284, "bev_law2", "shinglegrey_la" },
+    { 6284, "bev_law2", "shopdoor01_law" },
+    { 6284, "bev_law2", "sjmlawarwall3" },
+    { 6284, "bev_law2", "studwalltop_law" },
+    { 6284, "bev_law2", "windbox01_law" },
+    { 9515, "bigboxtemp1", "acrooftop1256" },
+    { 9515, "bigboxtemp1", "board64_law" },
+    { 9515, "bigboxtemp1", "browntin1" },
+    { 9515, "bigboxtemp1", "carlot1_sfw" },
+    { 9515, "bigboxtemp1", "garagedoor5_law" },
+    { 9515, "bigboxtemp1", "int02_128" },
+    { 9515, "bigboxtemp1", "lombard_build2_2" },
+    { 9515, "bigboxtemp1", "lombard_build2_4" },
+    { 9515, "bigboxtemp1", "lombard_build2_5" },
+    { 9515, "bigboxtemp1", "lombard_build3_1" },
+    { 9515, "bigboxtemp1", "mullcar01_law" },
+    { 9515, "bigboxtemp1", "patiodr_law" },
+    { 9515, "bigboxtemp1", "poshbox2a" },
+    { 9515, "bigboxtemp1", "poshbox2b" },
+    { 9515, "bigboxtemp1", "poshbox2c" },
+    { 9515, "bigboxtemp1", "poshbox3a" },
+    { 9515, "bigboxtemp1", "poshbox3b" },
+    { 9515, "bigboxtemp1", "poshbox3c" },
+    { 9515, "bigboxtemp1", "poshground_sfw" },
+    { 9515, "bigboxtemp1", "redbrickground256" },
+    { 9515, "bigboxtemp1", "rooftiles2" },
+    { 9515, "bigboxtemp1", "sfn_grass1" },
+    { 9515, "bigboxtemp1", "sf_concrete1" },
+    { 9515, "bigboxtemp1", "shingles1" },
+    { 9515, "bigboxtemp1", "tarmacplain_bank" },
+    { 9515, "bigboxtemp1", "ws_airportwin1" },
+    { 9515, "bigboxtemp1", "ws_alley5_256_blank" },
+    { 9515, "bigboxtemp1", "ws_garagedoor3_white" },
+    { 5763, "bigbuildlawn", "bevdoor02_law" },
+    { 5763, "bigbuildlawn", "ornatebuildlaw2_1" },
+    { 5763, "bigbuildlawn", "ornatebuildlaw2_2" },
+    { 5763, "bigbuildlawn", "ornatebuildlaw2_3" },
+    { 5763, "bigbuildlawn", "ornatebuildlaw2_4" },
+    { 5763, "bigbuildlawn", "roof10L256" },
+    { 3816, "bighangarsfxr", "railgird32bit" },
+    { 3816, "bighangarsfxr", "ws_breezeblocks" },
+    { 3816, "bighangarsfxr", "ws_crossbeam1" },
+    { 3816, "bighangarsfxr", "ws_hangardoor" },
+    { 10056, "bigoldbuild_sfe", "alleys_sfe" },
+    { 10056, "bigoldbuild_sfe", "bank_sfe1" },
+    { 10056, "bigoldbuild_sfe", "bank_sfe3" },
+    { 10056, "bigoldbuild_sfe", "bigbrown1_sfe" },
+    { 10056, "bigoldbuild_sfe", "bigbrown2_sfe" },
+    { 10056, "bigoldbuild_sfe", "clubdoor1_256" },
+    { 10056, "bigoldbuild_sfe", "cluckbell01_law" },
+    { 10056, "bigoldbuild_sfe", "cluckbell02_law" },
+    { 10056, "bigoldbuild_sfe", "lanky1_sfe" },
+    { 10056, "bigoldbuild_sfe", "lanky2_sfe" },
+    { 10056, "bigoldbuild_sfe", "lanky3_sfe" },
+    { 10056, "bigoldbuild_sfe", "lanky4_sfe" },
+    { 10056, "bigoldbuild_sfe", "roofthing2_sfe" },
+    { 10056, "bigoldbuild_sfe", "sfe_arch1" },
+    { 10056, "bigoldbuild_sfe", "sfe_bigbuild1" },
+    { 10056, "bigoldbuild_sfe", "sfe_nicearch4" },
+    { 10056, "bigoldbuild_sfe", "sfe_pinkbuild3" },
+    { 10056, "bigoldbuild_sfe", "sf_backaley1" },
+    { 10056, "bigoldbuild_sfe", "sf_shop4" },
+    { 10056, "bigoldbuild_sfe", "sf_windos_1" },
+    { 10056, "bigoldbuild_sfe", "sf_windos_13wall" },
+    { 10056, "bigoldbuild_sfe", "sf_windos_2" },
+    { 10056, "bigoldbuild_sfe", "sf_windos_3" },
+    { 10056, "bigoldbuild_sfe", "vgnburgwal3_256" },
+    { 15041, "bigsfsave", "ah_ceilpan1" },
+    { 15041, "bigsfsave", "AH_flrdiamonds" },
+    { 15041, "bigsfsave", "AH_flroortile5" },
+    { 15041, "bigsfsave", "AH_flroortile9" },
+    { 15041, "bigsfsave", "ah_greencarp" },
+    { 15041, "bigsfsave", "AH_grepaper2" },
+    { 15041, "bigsfsave", "AH_skt5" },
+    { 15041, "bigsfsave", "AH_strntiles" },
+    { 15041, "bigsfsave", "ah_utilbor1" },
+    { 15041, "bigsfsave", "ah_utilbor2" },
+    { 15041, "bigsfsave", "AH_walltile6" },
+    { 15041, "bigsfsave", "AH_wdpanscum" },
+    { 15041, "bigsfsave", "ah_wpaper7" },
+    { 15041, "bigsfsave", "ah_wrnplnks" },
+    { 15041, "bigsfsave", "andydark" },
+    { 15041, "bigsfsave", "carp11S" },
+    { 15041, "bigsfsave", "mp_carter_tilewall" },
+    { 15041, "bigsfsave", "wall6" },
+    { 15041, "bigsfsave", "walp73S" },
+    { 15041, "bigsfsave", "windo_blinds" },
+    { 2944, "bigshapx", "freighter1" },
+    { 9583, "bigshap_sfw", "alleywin5" },
+    { 9583, "bigshap_sfw", "boatfunnel1_128" },
+    { 9583, "bigshap_sfw", "boatfunnel2_64" },
+    { 9583, "bigshap_sfw", "bridge_walls2_sfw" },
+    { 9583, "bigshap_sfw", "bridge_walls3_sfw" },
+    { 9583, "bigshap_sfw", "cof_tile1" },
+    { 9583, "bigshap_sfw", "freighter1b" },
+    { 9583, "bigshap_sfw", "freighter2" },
+    { 9583, "bigshap_sfw", "freighter2b" },
+    { 9583, "bigshap_sfw", "freighter3" },
+    { 9583, "bigshap_sfw", "freighter4" },
+    { 9583, "bigshap_sfw", "freighter4b" },
+    { 9583, "bigshap_sfw", "freighter5" },
+    { 9583, "bigshap_sfw", "freighterhull1" },
+    { 9583, "bigshap_sfw", "freighterhull2" },
+    { 9583, "bigshap_sfw", "freight_crate1" },
+    { 9583, "bigshap_sfw", "freight_crate2" },
+    { 9583, "bigshap_sfw", "freight_crate3" },
+    { 9583, "bigshap_sfw", "freight_crate4" },
+    { 9583, "bigshap_sfw", "freight_crate5" },
+    { 9583, "bigshap_sfw", "freight_crate6" },
+    { 9583, "bigshap_sfw", "freight_crate7" },
+    { 9583, "bigshap_sfw", "generatorside1_128" },
+    { 9583, "bigshap_sfw", "man_ceiling" },
+    { 9583, "bigshap_sfw", "ropladr_sfw" },
+    { 9583, "bigshap_sfw", "sf_ship_glasst" },
+    { 9583, "bigshap_sfw", "ship2wall_1" },
+    { 9583, "bigshap_sfw", "ship2wall_2" },
+    { 9583, "bigshap_sfw", "ship2wall_3" },
+    { 9583, "bigshap_sfw", "shipceiling_sfw" },
+    { 9583, "bigshap_sfw", "shipfloor_sfw" },
+    { 10840, "bigshed_sfse", "sw_warewinx4" },
+    { 10840, "bigshed_sfse", "ws_corr_metal2" },
+    { 10840, "bigshed_sfse", "ws_corr_metal3" },
+    { 10840, "bigshed_sfse", "ws_corr_plastic" },
+    { 10840, "bigshed_sfse", "ws_oldwarehouse1" },
+    { 10840, "bigshed_sfse", "ws_oldwarehouse9" },
+    { 10840, "bigshed_sfse", "ws_reinforcedbutwonky" },
+    { 10023, "bigwhitesfe", "archgrnd1_SFE" },
+    { 10023, "bigwhitesfe", "archgrnd2_SFE" },
+    { 10023, "bigwhitesfe", "archgrnd3_SFE" },
+    { 10023, "bigwhitesfe", "bigwhite_2" },
+    { 10023, "bigwhitesfe", "bigwhite_3" },
+    { 10023, "bigwhitesfe", "bigwhite_4" },
+    { 10023, "bigwhitesfe", "bigwhite_5" },
+    { 10023, "bigwhitesfe", "bigwhite_6" },
+    { 10023, "bigwhitesfe", "clubpole_SFw" },
+    { 10023, "bigwhitesfe", "forestfloor3" },
+    { 10023, "bigwhitesfe", "helix2_sfe" },
+    { 10023, "bigwhitesfe", "liftdoors_kb_256" },
+    { 10023, "bigwhitesfe", "lomall_ext2_" },
+    { 10023, "bigwhitesfe", "recessed_light_SF" },
+    { 10023, "bigwhitesfe", "sfe_arch10" },
+    { 10023, "bigwhitesfe", "sfe_arch2" },
+    { 10023, "bigwhitesfe", "sfe_arch3" },
+    { 10023, "bigwhitesfe", "sfe_arch4" },
+    { 10023, "bigwhitesfe", "sfe_arch5" },
+    { 10023, "bigwhitesfe", "sfe_arch6" },
+    { 10023, "bigwhitesfe", "sfe_arch7" },
+    { 10023, "bigwhitesfe", "sfe_arch8" },
+    { 10023, "bigwhitesfe", "sfe_arch9" },
+    { 10023, "bigwhitesfe", "zombotech1" },
+    { 10023, "bigwhitesfe", "zombotech2" },
+    { 10023, "bigwhitesfe", "zombotech3" },
+    { 14603, "bikeskool", "artish1" },
+    { 14603, "bikeskool", "door_pan1_64_128" },
+    { 14603, "bikeskool", "dor_slider_16_32b" },
+    { 14603, "bikeskool", "lw_pistol_128" },
+    { 14603, "bikeskool", "motel_wall3" },
+    { 3083, "billbox", "ADDWOOD" },
+    { 3083, "billbox", "billdetaily" },
+    { 3083, "billbox", "iron" },
+    { 3083, "billbox", "Sprunk_postersign1" },
+    { 1259, "billbrd", "BBoardBack" },
+    { 1259, "billbrd", "bluemetal02" },
+    { 1259, "billbrd", "fence1" },
+    { 1259, "billbrd", "spotlight_64" },
+    { 1259, "billbrd", "ws_oldpainted2" },
+    { 4230, "billbrd01_lan", "eris_2" },
+    { 4230, "billbrd01_lan", "heat_02" },
+    { 4729, "billbrd01_lan2", "eris_1" },
+    { 4729, "billbrd01_lan2", "hardon_1" },
+    { 5818, "billbrdlawn", "bobobillboard1" },
+    { 5818, "billbrdlawn", "semi1Dirty" },
+    { 5818, "billbrdlawn", "semi2Dirty" },
+    { 5818, "billbrdlawn", "semi3Dirty" },
+    { 3922, "bistro", "ahoodfence2" },
+    { 3922, "bistro", "barbersflr1_LA" },
+    { 3922, "bistro", "BistroMenu" },
+    { 3922, "bistro", "Cabinet" },
+    { 3922, "bistro", "Cakes" },
+    { 3922, "bistro", "Candle_Holder" },
+    { 3922, "bistro", "Coffemachine" },
+    { 3922, "bistro", "concretebig3_256" },
+    { 3922, "bistro", "Cutlery" },
+    { 3922, "bistro", "deco_chair_1" },
+    { 3922, "bistro", "DinerFloor" },
+    { 3922, "bistro", "Marble" },
+    { 3922, "bistro", "Marble2" },
+    { 3922, "bistro", "marblekb_256128" },
+    { 3922, "bistro", "mottled_grey_64HV" },
+    { 3922, "bistro", "mp_snow" },
+    { 3922, "bistro", "Panel" },
+    { 3922, "bistro", "Plate" },
+    { 3922, "bistro", "rest_wall4" },
+    { 3922, "bistro", "SaltNPeppa" },
+    { 3922, "bistro", "StainedGlass" },
+    { 3922, "bistro", "sw_door11" },
+    { 3922, "bistro", "sw_wallbrick_01" },
+    { 3922, "bistro", "Tablecloth" },
+    { 3922, "bistro", "vent_64" },
+    { 3945, "bistro_alpha", "creme128" },
+    { 3946, "bistro_plants", "starflower2" },
+    { 3946, "bistro_plants", "starflower4" },
+    { 2023, "bitsnbobs", "CJ_LIGHTWOOD" },
+    { 3108, "bjmptx", "target_crv" },
+    { 3108, "bjmptx", "target_nmbrs" },
+    { 10871, "blacksky_sfse", "corporate3" },
+    { 10871, "blacksky_sfse", "ws_altz_wall7_top" },
+    { 10871, "blacksky_sfse", "ws_blackmarble" },
+    { 10871, "blacksky_sfse", "ws_glass_balustrade" },
+    { 10871, "blacksky_sfse", "ws_skywinsgreen" },
+    { 10871, "blacksky_sfse", "ws_slatetiles" },
+    { 17510, "blackwestran1_lae2", "des_indrails" },
+    { 14634, "blindinglite", "ws_volumetriclight" },
+    { 3077, "blkbrdx", "nf_blackbrd" },
+    { 3077, "blkbrdx", "tatty_wood_1" },
+    { 3077, "blkbrdx", "WCList1" },
+    { 3077, "blkbrdx", "WCList2" },
+    { 3077, "blkbrdx", "WCList3" },
+    { 3077, "blkbrdx", "WCScore" },
+    { 3077, "blkbrdx", "WCTitle" },
+    { 5630, "blockalpha", "duskyred_64" },
+    { 5630, "blockalpha", "grille2_LA" },
+    { 9524, "blokmodb", "alleywin4" },
+    { 9524, "blokmodb", "bincosf_1" },
+    { 9524, "blokmodb", "bincosign1_128" },
+    { 9524, "blokmodb", "binco_sf2" },
+    { 9524, "blokmodb", "Bow_Grimebrick" },
+    { 9524, "blokmodb", "fireescape1_sfe" },
+    { 9524, "blokmodb", "Grass" },
+    { 9524, "blokmodb", "lightwallv256" },
+    { 9524, "blokmodb", "lombard_build1_1" },
+    { 9524, "blokmodb", "lombard_build1_2" },
+    { 9524, "blokmodb", "lombard_build1_4" },
+    { 9524, "blokmodb", "lombard_build5_1" },
+    { 9524, "blokmodb", "lombard_build5_2" },
+    { 9524, "blokmodb", "lombard_build5_3" },
+    { 9524, "blokmodb", "sf_garagedr1" },
+    { 1685, "blokpalet", "ws_blockpall" },
+    { 10310, "boigas_sfe", "burgershotmenu256" },
+    { 10310, "boigas_sfe", "burgershotsign1_256" },
+    { 10310, "boigas_sfe", "vgnburger_256" },
+    { 9525, "boigas_sfw", "calfederal4" },
+    { 9525, "boigas_sfw", "calfederal5" },
+    { 9525, "boigas_sfw", "GEwhite1_64" },
+    { 9525, "boigas_sfw", "vgnburgwal1_128" },
+    { 9525, "boigas_sfw", "vgnburgwal2_128" },
+    { 9525, "boigas_sfw", "vgnburgwal6_256" },
+    { 5042, "bombshop_las", "dynobox" },
+    { 5042, "bombshop_las", "greymetal" },
+    { 5042, "bombshop_las", "kb_spray_light1" },
+    { 5042, "bombshop_las", "lightcover1" },
+    { 5042, "bombshop_las", "shutterclosed_law" },
+    { 10148, "bombshop_sfe", "calendar01" },
+    { 3269, "boneyard", "bonyrd_frame1" },
+    { 3269, "boneyard", "bonyrd_skin1" },
+    { 1248, "bonus", "gta3l" },
+    { 2923, "bottle_bank", "recycle" },
+    { 1220, "boxes", "cardboxes_128" },
+    { 1220, "boxes", "crate128" },
+    { 3820, "boxhses_sfsx", "hilcouwall1" },
+    { 3820, "boxhses_sfsx", "LAbluewall" },
+    { 3820, "boxhses_sfsx", "LAcreamwall1" },
+    { 3820, "boxhses_sfsx", "LAgreenwall" },
+    { 3820, "boxhses_sfsx", "sl_vic_decor1" },
+    { 3820, "boxhses_sfsx", "stonewall_la" },
+    { 3820, "boxhses_sfsx", "sw_barnwoodblu" },
+    { 3820, "boxhses_sfsx", "tanboard1" },
+    { 3820, "boxhses_sfsx", "ws_ irongate" },
+    { 3820, "boxhses_sfsx", "ws_ irongate_white" },
+    { 3820, "boxhses_sfsx", "ws_ irongate_yello" },
+    { 3820, "boxhses_sfsx", "ws_blocks_grey_1" },
+    { 3820, "boxhses_sfsx", "ws_blocks_red_1" },
+    { 3820, "boxhses_sfsx", "ws_boxhouse_wins5" },
+    { 3820, "boxhses_sfsx", "ws_boxhouse_wins7" },
+    { 3820, "boxhses_sfsx", "ws_chimneypot" },
+    { 3820, "boxhses_sfsx", "ws_doorframe" },
+    { 3820, "boxhses_sfsx", "ws_garagedoor2_blue" },
+    { 3820, "boxhses_sfsx", "ws_garagedoor2_white" },
+    { 3820, "boxhses_sfsx", "ws_garagedoor3_green" },
+    { 3820, "boxhses_sfsx", "ws_garagedoor3_pink" },
+    { 3820, "boxhses_sfsx", "ws_green_wall1" },
+    { 3820, "boxhses_sfsx", "ws_mixedbrick" },
+    { 3820, "boxhses_sfsx", "ws_painted_doors1" },
+    { 3820, "boxhses_sfsx", "ws_painted_doors2" },
+    { 3820, "boxhses_sfsx", "ws_painted_doors3" },
+    { 3820, "boxhses_sfsx", "ws_pink_wall1" },
+    { 3820, "boxhses_sfsx", "ws_shutters" },
+    { 3820, "boxhses_sfsx", "ws_stucco_white_2" },
+    { 3820, "boxhses_sfsx", "ws_vic_bits" },
+    { 3820, "boxhses_sfsx", "ws_vic_cornice1" },
+    { 3820, "boxhses_sfsx", "ws_vic_wood1" },
+    { 3820, "boxhses_sfsx", "ws_wood_doors1" },
+    { 3820, "boxhses_sfsx", "ws_wood_doors2" },
+    { 9507, "boxybld2_sfw", "bevdoor01_law" },
+    { 9507, "boxybld2_sfw", "boxybox_sf3z" },
+    { 9507, "boxybld2_sfw", "compcouwall1" },
+    { 9507, "boxybld2_sfw", "comptdoor3" },
+    { 9507, "boxybld2_sfw", "dirty01" },
+    { 9507, "boxybld2_sfw", "gz_vic4a" },
+    { 9507, "boxybld2_sfw", "gz_vic4b" },
+    { 9507, "boxybld2_sfw", "gz_vic4c" },
+    { 9507, "boxybld2_sfw", "gz_vic4e" },
+    { 9507, "boxybld2_sfw", "hospital3_sfw" },
+    { 9507, "boxybld2_sfw", "lombard_build2_1" },
+    { 9507, "boxybld2_sfw", "sfn_rock2" },
+    { 9507, "boxybld2_sfw", "sfn_rockgrass1" },
+    { 9507, "boxybld2_sfw", "sfn_rockgrass10" },
+    { 9507, "boxybld2_sfw", "sfw_poshbox1" },
+    { 9507, "boxybld2_sfw", "sfw_poshbox1b" },
+    { 9507, "boxybld2_sfw", "sfw_poshbox1c" },
+    { 9507, "boxybld2_sfw", "sfw_poshbox1d" },
+    { 9507, "boxybld2_sfw", "vengardoor01_SFW" },
+    { 9496, "boxybld_sfw", "boxybox_sf1z" },
+    { 9496, "boxybld_sfw", "boxybox_sf5bz" },
+    { 9496, "boxybld_sfw", "fence1_sfw" },
+    { 9496, "boxybld_sfw", "hospwall1" },
+    { 9496, "boxybld_sfw", "pierbuild_btm1" },
+    { 9496, "boxybld_sfw", "taxi_256" },
+    { 9496, "boxybld_sfw", "ven_house4" },
+    { 9496, "boxybld_sfw", "ws_alley_conc1" },
+    { 9496, "boxybld_sfw", "ws_altz_wall8_bot" },
+    { 3054, "break_ballx", "brk_ball1" },
+    { 3054, "break_ballx", "brk_Ball2" },
+    { 1486, "break_bar", "CJ_bottle" },
+    { 1486, "break_bar", "CJ_bottle2" },
+    { 1453, "break_farm", "CJ_DarkWood" },
+    { 1453, "break_farm", "CJ_HAY" },
+    { 1453, "break_farm", "cj_hay2" },
+    { 1408, "break_fence1", "CJ_W_wood" },
+    { 1408, "break_fence1", "compfence2_LAe" },
+    { 1419, "break_fence3", "CJ_BIN_LID" },
+    { 1419, "break_fence3", "CJ_DUMP" },
+    { 1419, "break_fence3", "CJ_DUMP2" },
+    { 1419, "break_fence3", "CJ_DUMP3" },
+    { 1419, "break_fence3", "CJ_FRAME_Glass" },
+    { 1419, "break_fence3", "CJ_Trafficlights" },
+    { 1419, "break_fence3", "ornatefence" },
+    { 1411, "break_fen_mesh2", "mp_barbedwire" },
+    { 1413, "break_f_mesh", "CJ_CORRIGATED" },
+    { 1413, "break_f_mesh", "meetwalv2" },
+    { 1407, "break_f_w", "CJ_GREENWOOD" },
+    { 1407, "break_f_w", "CJ_SLATEDWOOD" },
+    { 1448, "break_pallet", "Gen_Bin_Bag" },
+    { 1448, "break_pallet", "slated" },
+    { 1422, "break_road", "CJ_DETOUR" },
+    { 1422, "break_road", "CJ_orangebarrier2" },
+    { 1422, "break_road", "CJ_ROAD_SIGN1" },
+    { 1422, "break_road", "cj_S_POLE" },
+    { 1422, "break_road", "CJ_W_BALL" },
+    { 1459, "break_road_ws", "CJ_SHEET2" },
+    { 1426, "break_scaffold", "cheerybox03" },
+    { 1426, "break_scaffold", "CJ_avery" },
+    { 1426, "break_scaffold", "CJ_BLUE_WOOD" },
+    { 1426, "break_scaffold", "CJ_NET" },
+    { 1414, "break_street1", "cj_crates" },
+    { 1414, "break_street1", "CJ_TV_SCREEN" },
+    { 1355, "break_s_bins", "CJ_RED_LEATHER" },
+    { 1355, "break_s_bins", "CJ_SF_BUCKET" },
+    { 1355, "break_s_bins", "CJ_SKIP2" },
+    { 1355, "break_s_bins", "CJ_TABLE_TOP" },
+    { 1355, "break_s_bins", "CJ_WOOD_DARK" },
+    { 1355, "break_s_bins", "dirt64b" },
+    { 1355, "break_s_bins", "Gen_Box" },
+    { 1355, "break_s_bins", "marble1" },
+    { 1443, "break_s_fillers", "cj_burger" },
+    { 1443, "break_s_fillers", "CJ_SEX_SIGN1" },
+    { 1444, "break_s_sf", "CJ_FERRY_MAP" },
+    { 1365, "break_s_ws", "CJ_SKIP" },
+    { 1210, "breifcase", "briefcase" },
+    { 10864, "bridgeland_sfse", "prolaps02" },
+    { 10864, "bridgeland_sfse", "ws_altz_wall1" },
+    { 946, "bskball_standext", "bballboard128" },
+    { 946, "bskball_standext", "drkbrownmetal" },
+    { 4593, "buildblk55", "downtwin1" },
+    { 4593, "buildblk55", "drugstore256" },
+    { 4593, "buildblk55", "GB_nastybar03" },
+    { 4593, "buildblk55", "holpac01_law" },
+    { 4593, "buildblk55", "lawshop4" },
+    { 4593, "buildblk55", "sl_plazatile01" },
+    { 4593, "buildblk55", "snpdsqdoor" },
+    { 4593, "buildblk55", "ws_oldershop1" },
+    { 4593, "buildblk55", "ws_oldershop2" },
+    { 4604, "buildblk555", "gm_labuld5_a" },
+    { 4604, "buildblk555", "gm_labuld5_b" },
+    { 4604, "buildblk555", "gm_labuld5_c" },
+    { 4604, "buildblk555", "sl_sfngrssdrt01" },
+    { 8869, "buildingsitevge", "boardgate_law" },
+    { 8869, "buildingsitevge", "telepole2128" },
+    { 8869, "buildingsitevge", "ws_floodlight" },
+    { 8869, "buildingsitevge", "ws_generatorside" },
+    { 8869, "buildingsitevge", "ws_oldpaintedyello" },
+    { 8869, "buildingsitevge", "ws_woodenscreen1" },
+    { 5819, "buildtestlawn", "alleydoor8" },
+    { 5819, "buildtestlawn", "lawshopwall4" },
+    { 1243, "buoy", "buoyrust_128" },
+    { 1243, "buoy", "yellowrust_64" },
+    { 11092, "burgalrystore_sfse", "Bow_LoadingBayDoor" },
+    { 11092, "burgalrystore_sfse", "ws_altz_wall2bluetop" },
+    { 11092, "burgalrystore_sfse", "ws_HARRYPLUMS" },
+    { 11092, "burgalrystore_sfse", "ws_peeling_ceiling2" },
+    { 11092, "burgalrystore_sfse", "ws_warehswin1" },
+    { 11092, "burgalrystore_sfse", "ws_warehswin2" },
+    { 11092, "burgalrystore_sfse", "ws_whousedoor1" },
+    { 2212, "burger_tray", "bkidside" },
+    { 2212, "burger_tray", "btdeck256" },
+    { 2212, "burger_tray", "burgerfries" },
+    { 2212, "burger_tray", "burgerfront" },
+    { 2212, "burger_tray", "burgerfront2" },
+    { 2212, "burger_tray", "burgerkids" },
+    { 2212, "burger_tray", "burgerside" },
+    { 2212, "burger_tray", "burgertop" },
+    { 2212, "burger_tray", "chickenskin" },
+    { 2212, "burger_tray", "drinktop_cb" },
+    { 2212, "burger_tray", "fries_cb" },
+    { 2212, "burger_tray", "pplate" },
+    { 2212, "burger_tray", "salad" },
+    { 2212, "burger_tray", "sprinkler" },
+    { 2212, "burger_tray", "sprinkles" },
+    { 2212, "burger_tray", "sprunk_cb" },
+    { 6257, "burgsh01_law", "burgroof01_LAw" },
+    { 6257, "burgsh01_law", "fastfd01_LA" },
+    { 6257, "burgsh01_law", "newall2" },
+    { 14383, "burg_1", "burglry_wall3" },
+    { 14383, "burg_1", "carpet4kb" },
+    { 14383, "burg_1", "curtain_sink2" },
+    { 14383, "burg_1", "gragedoorkb1" },
+    { 14383, "burg_1", "hospital_wall2" },
+    { 14383, "burg_1", "kb_kit_wal1" },
+    { 14383, "burg_1", "kit_windo_12" },
+    { 14383, "burg_1", "la_carp3" },
+    { 14383, "burg_1", "mp_diner_woodwall" },
+    { 14383, "burg_1", "wallpapkb1" },
+    { 17958, "burnsalpha", "plantb256" },
+    { 17545, "burnsground", "ahoodgardr" },
+    { 17545, "burnsground", "bluapartwall1_256" },
+    { 17545, "burnsground", "dirtyredwall512" },
+    { 17545, "burnsground", "indund_64" },
+    { 17545, "burnsground", "LAroad_offroad1" },
+    { 17545, "burnsground", "newall1-1128" },
+    { 17545, "burnsground", "newall10_seamless" },
+    { 1257, "bustopm", "bus shelter" },
+    { 1257, "bustopm", "CJ_BS_MENU5" },
+    { 1257, "bustopm", "CJ_GREENMETAL" },
+    { 10012, "cables_sfe", "dt_overwire_t" },
+    { 10143, "calfed_sfe", "calfederal1" },
+    { 10143, "calfed_sfe", "calfederal2" },
+    { 10143, "calfed_sfe", "calfederal3" },
+    { 10143, "calfed_sfe", "calfederal6" },
+    { 10143, "calfed_sfe", "calfederal7" },
+    { 10143, "calfed_sfe", "slidingdoor01_128" },
+    { 6094, "canalsg_law", "block2bb" },
+    { 6094, "canalsg_law", "Bow_church_grass_gen" },
+    { 6094, "canalsg_law", "sw_brewbrick01" },
+    { 6094, "canalsg_law", "venicearch1" },
+    { 6094, "canalsg_law", "ws_sheetwood_clean" },
+    { 642, "canopy", "kb_canopybse64" },
+    { 642, "canopy", "weathered wood2 64HV" },
+    { 642, "canopy", "wood02" },
+    { 5766, "capitol_lawn", "alleygroundb256" },
+    { 5766, "capitol_lawn", "capitol1_LAwN" },
+    { 5766, "capitol_lawn", "capitol2_LAwN" },
+    { 5766, "capitol_lawn", "capitol3_LAwN" },
+    { 5766, "capitol_lawn", "capitolwin1_LAwN" },
+    { 5766, "capitol_lawn", "hilcouwall2" },
+    { 5766, "capitol_lawn", "lasjmscruffwall3" },
+    { 5766, "capitol_lawn", "vgs_whitewall_128" },
+    { 9276, "caravanprk_sfn", "desertgryard256" },
+    { 9276, "caravanprk_sfn", "sfn_rocktbrn128" },
+    { 9276, "caravanprk_sfn", "sl_sfndirt01" },
+    { 9276, "caravanprk_sfn", "sl_sfngrass01" },
+    { 10051, "carimpound_sfe", "poundroofblock_sfe" },
+    { 10051, "carimpound_sfe", "poundroofsupport_sfe" },
+    { 10051, "carimpound_sfe", "poundwall1_sfe" },
+    { 14478, "carlsflr", "carlscock" },
+    { 14476, "carlslounge", "ah_bantisto" },
+    { 14476, "carlslounge", "AH_barpole1" },
+    { 14476, "carlslounge", "ah_blu_paper" },
+    { 14476, "carlslounge", "ah_blu_paper2" },
+    { 14476, "carlslounge", "AH_cheapredcarpet" },
+    { 14476, "carlslounge", "AH_plnskirting" },
+    { 14476, "carlslounge", "breezewallbse" },
+    { 14476, "carlslounge", "burg_curt_1" },
+    { 14489, "carlspics", "ah_bdflwd" },
+    { 14489, "carlspics", "AH_flroortile7" },
+    { 14489, "carlspics", "AH_landscap1" },
+    { 14489, "carlspics", "AH_landscap3" },
+    { 14489, "carlspics", "AH_picture2" },
+    { 14489, "carlspics", "AH_picture3" },
+    { 14489, "carlspics", "AH_picture4" },
+    { 14489, "carlspics", "AH_wdpanelend" },
+    { 14471, "carls_kit1", "barbersflr1" },
+    { 14471, "carls_kit1", "kit_table" },
+    { 14471, "carls_kit1", "wall1" },
+    { 14471, "carls_kit1", "wall3" },
+    { 14471, "carls_kit1", "wall7" },
+    { 14472, "carls_kit2", "curtain_sinkb" },
+    { 14472, "carls_kit2", "fridge_1b" },
+    { 14472, "carls_kit2", "micro1" },
+    { 14472, "carls_kit2", "stove_1" },
+    { 14472, "carls_kit2", "wall2b" },
+    { 14472, "carls_kit2", "wall4b" },
+    { 14472, "carls_kit2", "wall5b" },
+    { 8420, "carpark3_lvs", "Corner1_128" },
+    { 8420, "carpark3_lvs", "greyground12802" },
+    { 8420, "carpark3_lvs", "greystones01_128" },
+    { 8420, "carpark3_lvs", "newgrnd1_128" },
+    { 8420, "carpark3_lvs", "Pave02_128" },
+    { 9254, "carparkssfn", "decoacwallbtm1_256" },
+    { 9254, "carparkssfn", "parking2" },
+    { 9254, "carparkssfn", "parking2plain" },
+    { 9254, "carparkssfn", "sf_junction1" },
+    { 9254, "carparkssfn", "sf_junction2" },
+    { 11145, "carrierint_sfs", "ab_ACcarrierDoor" },
+    { 11145, "carrierint_sfs", "ab_BoltPanel" },
+    { 11145, "carrierint_sfs", "chainlinkac1_128" },
+    { 11145, "carrierint_sfs", "noodpot_64" },
+    { 11145, "carrierint_sfs", "ws_accables" },
+    { 11145, "carrierint_sfs", "ws_cogtrack" },
+    { 11145, "carrierint_sfs", "ws_doorfront" },
+    { 11145, "carrierint_sfs", "ws_floor2" },
+    { 11145, "carrierint_sfs", "ws_shipmetal3" },
+    { 11145, "carrierint_sfs", "ws_shipmetal4" },
+    { 3113, "carrierxr", "ws_carrierdeckbase" },
+    { 3113, "carrierxr", "ws_controlpanel1" },
+    { 3113, "carrierxr", "ws_decklines" },
+    { 3113, "carrierxr", "ws_shipmetal1" },
+    { 10770, "carrier_sfse", "ws_bridgewins" },
+    { 10770, "carrier_sfse", "ws_carrierdecals" },
+    { 10770, "carrier_sfse", "ws_hulltemp2" },
+    { 3850, "carshowglass_sfsx", "ws_carshowwin1" },
+    { 3850, "carshowglass_sfsx", "ws_glass_balustrade_better" },
+    { 11301, "carshow_sfse", "concpanel_la" },
+    { 11301, "carshow_sfse", "concreteslab_small" },
+    { 11301, "carshow_sfse", "laspryshpsig1" },
+    { 11301, "carshow_sfse", "ws_basheddoor1" },
+    { 11301, "carshow_sfse", "ws_carshowdoor1" },
+    { 11301, "carshow_sfse", "ws_officy_ceiling" },
+    { 11301, "carshow_sfse", "ws_rollerdoor_silver" },
+    { 11301, "carshow_sfse", "ws_Transfender_dirty" },
+    { 11301, "carshow_sfse", "ws_wangcar1" },
+    { 11301, "carshow_sfse", "ws_wangcar2" },
+    { 1458, "cart", "CJ_GENER_WHEEL" },
+    { 1458, "cart", "CJ_tyre" },
+    { 14407, "carter_block", "ab_corFloor" },
+    { 14407, "carter_block", "ab_stripped_floor2" },
+    { 14407, "carter_block", "black256" },
+    { 14407, "carter_block", "dt_ind_door" },
+    { 14407, "carter_block", "firestation_rollerdoor2" },
+    { 14407, "carter_block", "mp_carter_bars" },
+    { 14407, "carter_block", "mp_carter_bwall" },
+    { 14407, "carter_block", "mp_carter_ceiling" },
+    { 14407, "carter_block", "mp_carter_gangway" },
+    { 14407, "carter_block", "mp_carter_girder" },
+    { 14407, "carter_block", "mp_carter_light" },
+    { 14407, "carter_block", "mp_carter_partyspot" },
+    { 14407, "carter_block", "mp_carter_sep" },
+    { 14407, "carter_block", "mp_carter_smoothwall" },
+    { 14407, "carter_block", "mp_carter_tramp" },
+    { 14407, "carter_block", "mp_carter_tramp1" },
+    { 14407, "carter_block", "mp_carter_wall" },
+    { 14407, "carter_block", "mp_carter_wallbot" },
+    { 14407, "carter_block", "mp_carter_whitewall" },
+    { 14407, "carter_block", "mp_carter_windows" },
+    { 14407, "carter_block", "zebra_skin" },
+    { 14415, "carter_block_2", "cd_wall1" },
+    { 14415, "carter_block_2", "cl_of_wltemp" },
+    { 14415, "carter_block_2", "mp_carter_cage" },
+    { 14415, "carter_block_2", "mp_carter_cuffs" },
+    { 14415, "carter_block_2", "mp_carter_floor" },
+    { 14415, "carter_block_2", "mp_carter_pcarpet" },
+    { 14415, "carter_block_2", "mp_carter_statue" },
+    { 14415, "carter_block_2", "mp_carter_wallpaper" },
+    { 14415, "carter_block_2", "mp_gs_woodpanel" },
+    { 14415, "carter_block_2", "mp_gs_woodpanel1" },
+    { 14415, "carter_block_2", "mp_motel_carpet1" },
+    { 14415, "carter_block_2", "mp_shop_floor2" },
+    { 14415, "carter_block_2", "walp29S" },
+    { 14415, "carter_block_2", "ws_doormat" },
+    { 17933, "carter_mainmap", "mp_apt1_brokedoor" },
+    { 17933, "carter_mainmap", "mp_carter_carpet" },
+    { 17933, "carter_mainmap", "mp_carter_doorway" },
+    { 17933, "carter_mainmap", "mp_carter_greenwall" },
+    { 14466, "carter_outside", "comptwall22" },
+    { 14466, "carter_outside", "gangwin2_LAe" },
+    { 14466, "carter_outside", "mp_carter_corrwall" },
+    { 7088, "casinoshops1", "247sign1" },
+    { 7088, "casinoshops1", "247sign2" },
+    { 7088, "casinoshops1", "crapdoor1_256" },
+    { 7088, "casinoshops1", "fakestone1_LA" },
+    { 7088, "casinoshops1", "GB_nastybar19" },
+    { 7088, "casinoshops1", "hosp02_law" },
+    { 7088, "casinoshops1", "inwindow1shdw64" },
+    { 7088, "casinoshops1", "LAredwall" },
+    { 7088, "casinoshops1", "sexsign1_256" },
+    { 7088, "casinoshops1", "venshade01_law" },
+    { 7088, "casinoshops1", "vgnbordpnk1_256" },
+    { 7088, "casinoshops1", "vgshopwndw01_128" },
+    { 7088, "casinoshops1", "vgsn_yelwall" },
+    { 7088, "casinoshops1", "vinesign1_LAw" },
+    { 14577, "casinovault01", "ab_concrete" },
+    { 14577, "casinovault01", "ab_corWallLwr" },
+    { 14577, "casinovault01", "ab_corWallUpr" },
+    { 14577, "casinovault01", "ab_loadbayMark01" },
+    { 14577, "casinovault01", "ab_mottleSteps" },
+    { 14577, "casinovault01", "ab_shutter1" },
+    { 14577, "casinovault01", "carp04S" },
+    { 14577, "casinovault01", "cof_wood1" },
+    { 14577, "casinovault01", "compound_roof1" },
+    { 14577, "casinovault01", "conc_wall_128H" },
+    { 14577, "casinovault01", "copbtm_brown" },
+    { 14577, "casinovault01", "dts_elevator_door" },
+    { 14577, "casinovault01", "vaultFloor" },
+    { 14577, "casinovault01", "vaultWall" },
+    { 14577, "casinovault01", "wallTrim2" },
+    { 2176, "casino_props", "flameOptic" },
+    { 2176, "casino_props", "marblebox" },
+    { 14582, "casmafbar", "ab_CasRomCeil" },
+    { 14582, "casmafbar", "ab_CasRomTile1" },
+    { 14582, "casmafbar", "beerfridge128" },
+    { 14582, "casmafbar", "bottlestacked256" },
+    { 14582, "casmafbar", "ginoptic128" },
+    { 14582, "casmafbar", "martinioptic128" },
+    { 14582, "casmafbar", "opticbracket128" },
+    { 14582, "casmafbar", "vodkaoptic128" },
+    { 14582, "casmafbar", "whiskyoptic128" },
+    { 8501, "casroyale", "royale02_128" },
+    { 8501, "casroyale", "royaledoor01_128" },
+    { 8501, "casroyale", "royaleledge01" },
+    { 8501, "casroyale", "royaleroof01_64" },
+    { 8501, "casroyale", "royalesign02_256" },
+    { 8501, "casroyale", "royalewall01_128" },
+    { 8501, "casroyale", "royalewall02_128" },
+    { 8501, "casroyale", "royalewall03_128" },
+    { 8501, "casroyale", "royalewindow01_128" },
+    { 2799, "castable", "chrome_pipe_32" },
+    { 2799, "castable", "cl_ashtray" },
+    { 2799, "castable", "cl_cig" },
+    { 2799, "castable", "cl_cigar_1" },
+    { 2799, "castable", "cl_hiball2" },
+    { 2799, "castable", "cl_knif_fork" },
+    { 2799, "castable", "cl_napkin" },
+    { 2799, "castable", "cl_redwine_gls" },
+    { 2799, "castable", "cl_seat2temp" },
+    { 2799, "castable", "cl_s_and_p" },
+    { 2799, "castable", "cl_table_top_256" },
+    { 2799, "castable", "cl_tble_lamp" },
+    { 2799, "castable", "cl_tbl_shado2a" },
+    { 2799, "castable", "cl_winebtl1" },
+    { 2799, "castable", "cl_winebtl2" },
+    { 10368, "cathedral_sfs", "dirt64b2" },
+    { 10368, "cathedral_sfs", "ws_bigwooddoor" },
+    { 10368, "cathedral_sfs", "ws_coppersheet" },
+    { 10368, "cathedral_sfs", "ws_woodyhedge" },
+    { 2343, "cb_bar_bits", "CJ_POLISHED" },
+    { 2767, "cb_details", "100%fowl_cb" },
+    { 2767, "cb_details", "CJ_cbell_top" },
+    { 2767, "cb_details", "CJ_cb_bin1" },
+    { 2767, "cb_details", "cluckinbig_cb" },
+    { 2767, "cb_details", "fillets_cb" },
+    { 2767, "cb_details", "fillet_cb" },
+    { 2767, "cb_details", "kidsfront_cb" },
+    { 2767, "cb_details", "pattern1_cb" },
+    { 2767, "cb_details", "wrapfood_cb" },
+    { 2767, "cb_details", "wrapper_cb" },
+    { 3462, "ceaserangel", "ceaser_angel01_256" },
+    { 8618, "ceasersign", "Caligulasign01_256" },
+    { 8618, "ceasersign", "ceaserspillar01_128" },
+    { 8618, "ceasersign", "ceaserssign01_128" },
+    { 8618, "ceasersign", "ceaserssign02_256" },
+    { 8618, "ceasersign", "mexreast1_256" },
+    { 13139, "cecuntetunnel", "ab_walllite" },
+    { 13139, "cecuntetunnel", "airportwall_2_2" },
+    { 13139, "cecuntetunnel", "conc_wall_stripd128H" },
+    { 13139, "cecuntetunnel", "dirtywall_256" },
+    { 13139, "cecuntetunnel", "hangingwires2" },
+    { 13139, "cecuntetunnel", "Pave04_128" },
+    { 3741, "cehillhse14", "comptonbrij1" },
+    { 3741, "cehillhse14", "comptwindo4" },
+    { 3741, "cehillhse14", "glassblocks1" },
+    { 3741, "cehillhse14", "ladukfeen1" },
+    { 3741, "cehillhse14", "swimpoolbtm1_128" },
+    { 3741, "cehillhse14", "swimpoolside1_128" },
+    { 3048, "cemenx", "ct_hole" },
+    { 5710, "cemetery_law", "brickgrey" },
+    { 5710, "cemetery_law", "cemebuild01_law" },
+    { 5710, "cemetery_law", "cemebuild02_law" },
+    { 5710, "cemetery_law", "cemewall04_law" },
+    { 5710, "cemetery_law", "churcharch_law" },
+    { 5710, "cemetery_law", "conc_wall2_128H" },
+    { 5710, "cemetery_law", "desmud" },
+    { 5710, "cemetery_law", "desmudgrass" },
+    { 5710, "cemetery_law", "Grass_path_law" },
+    { 5710, "cemetery_law", "grave01_law" },
+    { 5710, "cemetery_law", "hottop6_law" },
+    { 5710, "cemetery_law", "mausdoor01_law" },
+    { 5710, "cemetery_law", "mauswall01_law" },
+    { 5710, "cemetery_law", "mauswall02_law" },
+    { 5710, "cemetery_law", "mauswall03_law" },
+    { 5710, "cemetery_law", "ppinkwallb512" },
+    { 5712, "cemetint_law", "crypttv_law" },
+    { 5712, "cemetint_law", "lw_seat2_law" },
+    { 5712, "cemetint_law", "pizzabox" },
+    { 1597, "centralresac1", "blueash" },
+    { 1597, "centralresac1", "fuzzyplant256" },
+    { 1597, "centralresac1", "hedge2_128" },
+    { 1597, "centralresac1", "kbbark_test1" },
+    { 1597, "centralresac1", "kbtree3_test" },
+    { 1597, "centralresac1", "kbtree4_test" },
+    { 13363, "cephotoblockcs_t", "alleydoor3" },
+    { 13363, "cephotoblockcs_t", "BigS01_law" },
+    { 13363, "cephotoblockcs_t", "dustyjade_128" },
+    { 13363, "cephotoblockcs_t", "lampost_16clr" },
+    { 13363, "cephotoblockcs_t", "sw_door16" },
+    { 13363, "cephotoblockcs_t", "sw_wall_05" },
+    { 13363, "cephotoblockcs_t", "sw_wind23" },
+    { 13363, "cephotoblockcs_t", "wallwashv128" },
+    { 3335, "ceroadsigns", "stormdrain3_nt" },
+    { 3335, "ceroadsigns", "sw_barberpole" },
+    { 3335, "ceroadsigns", "sw_mailbox" },
+    { 3335, "ceroadsigns", "sw_roadsign" },
+    { 13364, "cetown3cs_t", "des_cafesign" },
+    { 13364, "cetown3cs_t", "floor_tileone_256" },
+    { 13364, "cetown3cs_t", "pierboards_la" },
+    { 13364, "cetown3cs_t", "sw_barnwood2" },
+    { 13364, "cetown3cs_t", "sw_door17" },
+    { 13364, "cetown3cs_t", "sw_door18" },
+    { 13364, "cetown3cs_t", "sw_slate01" },
+    { 13364, "cetown3cs_t", "sw_storewin01" },
+    { 13364, "cetown3cs_t", "sw_wall03" },
+    { 13364, "cetown3cs_t", "sw_wind10" },
+    { 13364, "cetown3cs_t", "sw_wind15" },
+    { 13364, "cetown3cs_t", "sw_wind18" },
+    { 13364, "cetown3cs_t", "taxitop01" },
+    { 13364, "cetown3cs_t", "ws_sandstone2" },
+    { 13078, "cewrehse", "corr_roof1" },
+    { 13078, "cewrehse", "sw_wind13" },
+    { 12946, "ce_bankalley1", "alleywall3" },
+    { 12946, "ce_bankalley1", "Bow_abbmetaldoor" },
+    { 12946, "ce_bankalley1", "hospunder_law" },
+    { 12946, "ce_bankalley1", "lalightledge" },
+    { 12946, "ce_bankalley1", "newindow13" },
+    { 12946, "ce_bankalley1", "pizza_wellstacked" },
+    { 12946, "ce_bankalley1", "sjmALLEY" },
+    { 12946, "ce_bankalley1", "sw_brick03" },
+    { 12946, "ce_bankalley1", "sw_dicksounds" },
+    { 12946, "ce_bankalley1", "sw_door09" },
+    { 12946, "ce_bankalley1", "sw_furnisign" },
+    { 12946, "ce_bankalley1", "sw_stairs1" },
+    { 12946, "ce_bankalley1", "sw_stereosign" },
+    { 12946, "ce_bankalley1", "sw_storewin02" },
+    { 12946, "ce_bankalley1", "sw_warewall" },
+    { 12946, "ce_bankalley1", "sw_warewin" },
+    { 12946, "ce_bankalley1", "sw_wind05" },
+    { 12946, "ce_bankalley1", "ws_ammu-awning" },
+    { 12946, "ce_bankalley1", "ws_basheddoor2" },
+    { 12946, "ce_bankalley1", "ws_boxhouse_wins1" },
+    { 12944, "ce_bankalley2", "newall5-2" },
+    { 12944, "ce_bankalley2", "sw_awningsx4" },
+    { 12944, "ce_bankalley2", "sw_brick04" },
+    { 12944, "ce_bankalley2", "sw_dryclean" },
+    { 12944, "ce_bankalley2", "sw_genx4" },
+    { 12944, "ce_bankalley2", "sw_jazz" },
+    { 12944, "ce_bankalley2", "sw_litlad" },
+    { 12944, "ce_bankalley2", "sw_wind08" },
+    { 12822, "ce_bankalley3", "bankside_256" },
+    { 12822, "ce_bankalley3", "Metal1_128" },
+    { 12822, "ce_bankalley3", "sffront5_256" },
+    { 12822, "ce_bankalley3", "sw_Fleishberg01" },
+    { 3378, "ce_breweryref", "sw_keg01" },
+    { 3378, "ce_breweryref", "sw_keg02" },
+    { 3314, "ce_burbhouse", "black_128" },
+    { 3314, "ce_burbhouse", "notice02" },
+    { 3314, "ce_burbhouse", "shingles4" },
+    { 3314, "ce_burbhouse", "sw_door13" },
+    { 3314, "ce_burbhouse", "sw_lattice" },
+    { 3314, "ce_burbhouse", "sw_shedwindow1" },
+    { 3314, "ce_burbhouse", "sw_wallbrick_06" },
+    { 3314, "ce_burbhouse", "ventc64" },
+    { 3314, "ce_burbhouse", "wallbeigenew256" },
+    { 13060, "ce_fact01", "airconfrnt1_128" },
+    { 13060, "ce_fact01", "airportmetalwall256" },
+    { 13060, "ce_fact01", "des_hooswin2" },
+    { 13060, "ce_fact01", "des_sherrifwall1" },
+    { 13060, "ce_fact01", "glassblock_law" },
+    { 13060, "ce_fact01", "puttywall1" },
+    { 13059, "ce_fact03", "GB_truckdepot19" },
+    { 13059, "ce_fact03", "Ind_PKabin" },
+    { 13059, "ce_fact03", "shitydoor1_256" },
+    { 13059, "ce_fact03", "sw_corrugtile" },
+    { 13059, "ce_fact03", "sw_garwind" },
+    { 13059, "ce_fact03", "sw_newcorrug" },
+    { 13059, "ce_fact03", "sw_shedwall01" },
+    { 3374, "ce_farmxref", "desertstones256" },
+    { 3374, "ce_farmxref", "forestfloor256" },
+    { 3374, "ce_farmxref", "forestfloorbranch256" },
+    { 3374, "ce_farmxref", "sw_barndoor1" },
+    { 3374, "ce_farmxref", "sw_barndoor2" },
+    { 3374, "ce_farmxref", "sw_barnfloor1" },
+    { 3374, "ce_farmxref", "sw_barnwind01" },
+    { 3374, "ce_farmxref", "sw_barnwood1" },
+    { 3374, "ce_farmxref", "sw_barnwood4" },
+    { 3374, "ce_farmxref", "sw_barnwood5" },
+    { 3374, "ce_farmxref", "sw_woodflloorsplat" },
+    { 12871, "ce_ground01", "cs_rockdetail2" },
+    { 12871, "ce_ground01", "cw2_mountrock" },
+    { 12871, "ce_ground01", "desertgravelgrassroad" },
+    { 12871, "ce_ground01", "desgreengrassmix" },
+    { 12871, "ce_ground01", "des_dirt1Grass" },
+    { 12871, "ce_ground01", "dirttracksforest" },
+    { 12871, "ce_ground01", "dirttracksgrass256" },
+    { 12871, "ce_ground01", "forestfloorgrass" },
+    { 12871, "ce_ground01", "grassbrn2rockbrnG" },
+    { 12871, "ce_ground01", "grassbrn2rockbrnG2" },
+    { 12871, "ce_ground01", "rocktbrn128" },
+    { 12871, "ce_ground01", "sw_rockgrass1" },
+    { 12871, "ce_ground01", "sw_rockgrassB1" },
+    { 12871, "ce_ground01", "sw_rockgrassB2" },
+    { 12871, "ce_ground01", "sw_stones" },
+    { 12871, "ce_ground01", "sw_stonesgrass" },
+    { 12823, "ce_ground02", "desertgravelgrass256" },
+    { 12823, "ce_ground02", "sw_sandgrass" },
+    { 12823, "ce_ground02", "sw_warewall2" },
+    { 12870, "ce_ground03", "carpark_256128" },
+    { 12870, "ce_ground03", "desclifftypebs" },
+    { 12870, "ce_ground03", "desclifftypebsmix" },
+    { 12870, "ce_ground03", "desmudtrail" },
+    { 12870, "ce_ground03", "sw_grass01" },
+    { 12870, "ce_ground03", "sw_grass01a" },
+    { 12869, "ce_ground04", "carpark_128" },
+    { 12869, "ce_ground04", "desertgryard256grs2" },
+    { 12869, "ce_ground04", "grassgrnbrn256" },
+    { 12869, "ce_ground04", "rocktbrn128blnd" },
+    { 12866, "ce_ground07", "brngrss2stones" },
+    { 12866, "ce_ground07", "desgrassbrn" },
+    { 12866, "ce_ground07", "sw_crops" },
+    { 12866, "ce_ground07", "sw_grassB01" },
+    { 12825, "ce_ground08", "brngrss2stonesB" },
+    { 12825, "ce_ground08", "cw2_mountdirt" },
+    { 12825, "ce_ground08", "cw2_mountdirt2grass" },
+    { 12825, "ce_ground08", "desgrassbrn_grn" },
+    { 12825, "ce_ground08", "dirtblendlit" },
+    { 12825, "ce_ground08", "grassbrn2rockbrn" },
+    { 12825, "ce_ground08", "sw_rock1a" },
+    { 13235, "ce_ground09", "des_ranchwall1" },
+    { 13206, "ce_ground10", "desgreengrasstrckend" },
+    { 13206, "ce_ground10", "des_dirt2 trackl" },
+    { 13206, "ce_ground10", "des_dirt2" },
+    { 13206, "ce_ground10", "des_dirt2grass" },
+    { 13206, "ce_ground10", "des_dirt2track" },
+    { 13206, "ce_ground10", "des_shingles" },
+    { 12908, "ce_ground11", "grassdead1" },
+    { 12908, "ce_ground11", "grassdead1blnd" },
+    { 12908, "ce_ground11", "sw_dirt01" },
+    { 12908, "ce_ground11", "sw_farmroad01" },
+    { 13081, "ce_ground13", "concretedust2_line" },
+    { 13081, "ce_ground13", "dustyconcrete" },
+    { 13035, "ce_ground14", "desertstones256grass" },
+    { 13035, "ce_ground14", "desmuddesgrsblend" },
+    { 12805, "ce_loadbay", "sw_container" },
+    { 12805, "ce_loadbay", "sw_container2" },
+    { 12805, "ce_loadbay", "sw_container3" },
+    { 12805, "ce_loadbay", "sw_corrug" },
+    { 12805, "ce_loadbay", "sw_pal" },
+    { 12805, "ce_loadbay", "sw_shutters2" },
+    { 12805, "ce_loadbay", "sw_smlite" },
+    { 12805, "ce_loadbay", "sw_trailer" },
+    { 12805, "ce_loadbay", "sw_trailerred" },
+    { 12805, "ce_loadbay", "sw_waredoor" },
+    { 12805, "ce_loadbay", "sw_warewall3" },
+    { 12805, "ce_loadbay", "sw_warewin2" },
+    { 12805, "ce_loadbay", "sw_wheel1" },
+    { 12805, "ce_loadbay", "sw_wheelT" },
+    { 13461, "ce_nitelite", "ws_boxhouse_wins6nite" },
+    { 12992, "ce_oldbridge", "banding8_64" },
+    { 12992, "ce_oldbridge", "BLOCK2_high" },
+    { 12992, "ce_oldbridge", "Gen_Rusty_Poll" },
+    { 12992, "ce_oldbridge", "Gen_Scrap_Wheel_Rim" },
+    { 12978, "ce_payspray", "airvent2_128" },
+    { 12978, "ce_payspray", "sf_spray2" },
+    { 12978, "ce_payspray", "sf_spray3" },
+    { 12978, "ce_payspray", "sf_spray_floor1" },
+    { 12978, "ce_payspray", "sf_spray_floor2" },
+    { 12978, "ce_payspray", "spraypipegz1" },
+    { 12978, "ce_payspray", "sw_shedwall03" },
+    { 13361, "ce_pizza", "brickred2" },
+    { 13361, "ce_pizza", "comptwall36" },
+    { 13361, "ce_pizza", "FastFood1_LAe" },
+    { 13361, "ce_pizza", "Parking1_LAe2" },
+    { 13361, "ce_pizza", "pizzasign2LA" },
+    { 13361, "ce_pizza", "pizzasign_LAe" },
+    { 13003, "ce_racestart", "CJ_TARTAN" },
+    { 13003, "ce_racestart", "lw_seat2" },
+    { 13003, "ce_racestart", "sa_wood07_128" },
+    { 3411, "ce_railbridge", "rusta256128" },
+    { 13295, "ce_terminal", "cabin3" },
+    { 13295, "ce_terminal", "des_adobewall2" },
+    { 13295, "ce_terminal", "Gen_Metal" },
+    { 13295, "ce_terminal", "grass4dirtyb" },
+    { 13295, "ce_terminal", "mp_gimp_oilfloor" },
+    { 13295, "ce_terminal", "sw_truckterm" },
+    { 13295, "ce_terminal", "whitewall256" },
+    { 13295, "ce_terminal", "ws_peeling_ceiling1" },
+    { 12831, "ce_traintrack1", "sw_traingravelB1" },
+    { 12831, "ce_traintrack1", "sw_tunnel01" },
+    { 12831, "ce_traintrack1", "sw_tunnel02bmp" },
+    { 12831, "ce_traintrack1", "ws_traintrax1" },
+    { 12832, "ce_traintrack2", "sw_backdoor02" },
+    { 11089, "cf_metals_sfse", "ws_altz_wall8_top" },
+    { 1594, "chairsntable", "mallfloor6" },
+    { 5986, "chateau_lawn", "backstagefloor1_256" },
+    { 5986, "chateau_lawn", "chatarc01_law" },
+    { 5986, "chateau_lawn", "chatbalc01_law" },
+    { 5986, "chateau_lawn", "chatbalc02_law" },
+    { 5986, "chateau_lawn", "chatbalc03_law" },
+    { 5986, "chateau_lawn", "chatshade02_law" },
+    { 5986, "chateau_lawn", "chatwall01_law" },
+    { 5986, "chateau_lawn", "chatwall03_law" },
+    { 5986, "chateau_lawn", "chatwin01_law" },
+    { 5986, "chateau_lawn", "chatwin02_law" },
+    { 5986, "chateau_lawn", "doorkb_1_256" },
+    { 5123, "chemgrnd_las2", "newall1-1" },
+    { 5123, "chemgrnd_las2", "newall1-3seamless" },
+    { 5123, "chemgrnd_las2", "sanpedock997" },
+    { 5123, "chemgrnd_las2", "sanpedock999" },
+    { 5123, "chemgrnd_las2", "sjmhicut5las" },
+    { 5123, "chemgrnd_las2", "Was_side" },
+    { 10252, "chgatedes", "corrugated2" },
+    { 2930, "chgatex", "NOPARK" },
+    { 5444, "chicano10_lae", "compfence1_LAe" },
+    { 5444, "chicano10_lae", "comptsign4_LAe" },
+    { 5444, "chicano10_lae", "comptsign5_LAe" },
+    { 5444, "chicano10_lae", "comptsign8_LAe" },
+    { 5444, "chicano10_lae", "comptwall10" },
+    { 5444, "chicano10_lae", "comptwall15" },
+    { 5444, "chicano10_lae", "comptwall32" },
+    { 5444, "chicano10_lae", "comptwall5" },
+    { 5444, "chicano10_lae", "crakwall1_LAe2" },
+    { 5444, "chicano10_lae", "desmuddesgrsblend_sw" },
+    { 5444, "chicano10_lae", "downtwin16" },
+    { 5444, "chicano10_lae", "downtwin4" },
+    { 5444, "chicano10_lae", "eris_5" },
+    { 5444, "chicano10_lae", "frame_LA" },
+    { 5444, "chicano10_lae", "gangshop2_LAe" },
+    { 5444, "chicano10_lae", "gangshop8_LAe" },
+    { 5444, "chicano10_lae", "gangsign5_LAe" },
+    { 5444, "chicano10_lae", "GB_nastybar22" },
+    { 5444, "chicano10_lae", "gm_labuld2_d" },
+    { 5444, "chicano10_lae", "grassdeadbrn256" },
+    { 5444, "chicano10_lae", "g_256" },
+    { 5444, "chicano10_lae", "heat_04" },
+    { 5444, "chicano10_lae", "newall7" },
+    { 5444, "chicano10_lae", "santall4" },
+    { 5444, "chicano10_lae", "ws_garagedoor2_green" },
+    { 5449, "chicanotr1_lae", "eb_firesc1_LAe2" },
+    { 5449, "chicanotr1_lae", "eb_firesc2_LAe2" },
+    { 5449, "chicanotr1_lae", "fireesc1_LAe" },
+    { 5449, "chicanotr1_lae", "lasjmfnce1" },
+    { 5449, "chicanotr1_lae", "sunsfire1b_LAw" },
+    { 5449, "chicanotr1_lae", "sunsfire1_LAw" },
+    { 2215, "chick_tray", "bucket_cb" },
+    { 2215, "chick_tray", "dip32" },
+    { 2215, "chick_tray", "friesbox_cb" },
+    { 2215, "chick_tray", "plaincup_cb" },
+    { 2215, "chick_tray", "strawroof_cb" },
+    { 10031, "chinatown2", "patio1" },
+    { 10031, "chinatown2", "rooftiles4" },
+    { 10031, "chinatown2", "rooftiles4b" },
+    { 10031, "chinatown2", "ws_plasterwall2" },
+    { 10031, "chinatown2", "ws_red_wood2" },
+    { 10031, "chinatown2", "ws_trans_window1" },
+    { 8639, "chinatownmall", "ctmall01_128" },
+    { 8639, "chinatownmall", "ctmall02_64" },
+    { 8639, "chinatownmall", "ctmall03_64" },
+    { 8639, "chinatownmall", "ctmall04_64" },
+    { 8639, "chinatownmall", "ctmall05" },
+    { 8639, "chinatownmall", "ctmall06" },
+    { 8639, "chinatownmall", "ctmall07" },
+    { 8639, "chinatownmall", "ctmall08" },
+    { 8639, "chinatownmall", "ctmall10_64" },
+    { 8639, "chinatownmall", "ctmall11_64" },
+    { 8639, "chinatownmall", "ctmall12_128" },
+    { 8639, "chinatownmall", "ctmall13" },
+    { 8639, "chinatownmall", "ctmall15_128" },
+    { 8639, "chinatownmall", "ctmall16_128" },
+    { 8639, "chinatownmall", "ctmall17_128" },
+    { 8639, "chinatownmall", "ctmall18_64" },
+    { 8639, "chinatownmall", "ctmall19_128" },
+    { 8639, "chinatownmall", "ctmallsign01_128" },
+    { 8639, "chinatownmall", "ziplogo1_128" },
+    { 9494, "chinatownsfe", "awning1_SFe" },
+    { 9494, "chinatownsfe", "awning2T_SFe" },
+    { 9494, "chinatownsfe", "awning3_SFe" },
+    { 9494, "chinatownsfe", "chtown4_sf" },
+    { 9494, "chinatownsfe", "chtown5_sf" },
+    { 9494, "chinatownsfe", "chtown6_sf" },
+    { 9494, "chinatownsfe", "chtown7_sf" },
+    { 9494, "chinatownsfe", "chtown8_sf" },
+    { 9494, "chinatownsfe", "chtown9_sf" },
+    { 9494, "chinatownsfe", "chtown_brightcarcafe" },
+    { 9494, "chinatownsfe", "chtown_todaydayrestaurant" },
+    { 9494, "chinatownsfe", "partition_gz" },
+    { 9494, "chinatownsfe", "rooftop_gz1" },
+    { 9494, "chinatownsfe", "sf_chinashop1" },
+    { 9494, "chinatownsfe", "sf_chinashopground" },
+    { 9494, "chinatownsfe", "sf_windos_11a" },
+    { 9494, "chinatownsfe", "sf_windos_11b" },
+    { 9494, "chinatownsfe", "sf_windos_11wall" },
+    { 9494, "chinatownsfe", "sf_windos_12a" },
+    { 9494, "chinatownsfe", "sf_windos_12b" },
+    { 9494, "chinatownsfe", "sf_windos_12_wall" },
+    { 9494, "chinatownsfe", "sf_windos_13a" },
+    { 9494, "chinatownsfe", "sf_windos_13b" },
+    { 9494, "chinatownsfe", "sf_windos_14b" },
+    { 9494, "chinatownsfe", "wallwash128" },
+    { 9494, "chinatownsfe", "Was_scrpyd_baler_floor" },
+    { 9494, "chinatownsfe", "woozie_hall" },
+    { 1568, "china_light", "chinlite_sfe" },
+    { 14571, "chinese_furn", "ab_tv_noise" },
+    { 14571, "chinese_furn", "ab_tv_tricas1" },
+    { 14571, "chinese_furn", "ab_tv_tricas2" },
+    { 14571, "chinese_furn", "chinese9" },
+    { 14571, "chinese_furn", "chinese9b" },
+    { 1859, "chips2", "chip_stck1" },
+    { 1859, "chips2", "chip_stck2" },
+    { 1859, "chips2", "chip_stck3" },
+    { 1859, "chips2", "chip_stck4" },
+    { 1859, "chips2", "chip_stck5" },
+    { 1859, "chips2", "chip_stck6" },
+    { 1859, "chips2", "indx_chip132" },
+    { 1859, "chips2", "indx_chip164" },
+    { 1859, "chips2", "indx_chip232" },
+    { 1859, "chips2", "indx_chip264" },
+    { 1859, "chips2", "indx_chip332" },
+    { 1859, "chips2", "indx_chip364" },
+    { 1859, "chips2", "indx_chip432" },
+    { 1859, "chips2", "indx_chip464" },
+    { 1859, "chips2", "indx_chip532" },
+    { 1859, "chips2", "indx_chip564" },
+    { 1859, "chips2", "indx_chip632" },
+    { 1859, "chips2", "indx_chip664" },
+    { 8680, "chnatwnfnce", "ctmallfence" },
+    { 3007, "chopcopx", "LAPDM2" },
+    { 9931, "churchsfe", "church_sfe1" },
+    { 9931, "churchsfe", "church_sfe2" },
+    { 9931, "churchsfe", "church_sfe3" },
+    { 9931, "churchsfe", "church_sfe4" },
+    { 9931, "churchsfe", "church_sfe5" },
+    { 9931, "churchsfe", "gravelkb_128" },
+    { 9931, "churchsfe", "pier69_roof1" },
+    { 9931, "churchsfe", "posh_eagle3_sfe" },
+    { 3044, "ciggarx", "ciggy_burn" },
+    { 3044, "ciggarx", "CJ_bark" },
+    { 3044, "ciggarx", "CJ_KITCHDOOR" },
+    { 3027, "ciggyx", "ciggy" },
+    { 17851, "cinemart_alpha", "autoarrow_lae2" },
+    { 17851, "cinemart_alpha", "carwash_sign" },
+    { 17851, "cinemart_alpha", "kb_ivy2_256" },
+    { 17851, "cinemart_alpha", "lasjmslumwud2" },
+    { 17851, "cinemart_alpha", "shadow_law" },
+    { 3980, "cityhall_lan", "bevdoor03_law" },
+    { 3980, "cityhall_lan", "cityhalldoor1" },
+    { 3980, "cityhall_lan", "cityhallroof" },
+    { 3980, "cityhall_lan", "cityhalltow1" },
+    { 3980, "cityhall_lan", "cityhalltow2" },
+    { 3980, "cityhall_lan", "citywall1" },
+    { 3980, "cityhall_lan", "citywall2" },
+    { 3980, "cityhall_lan", "citywall3" },
+    { 3980, "cityhall_lan", "citywall4" },
+    { 3980, "cityhall_lan", "citywall5" },
+    { 3980, "cityhall_lan", "citywin1" },
+    { 3980, "cityhall_lan", "LAcityhwal1" },
+    { 3980, "cityhall_lan", "LAcityhwin1" },
+    { 3980, "cityhall_lan", "LAcityhwin2" },
+    { 3980, "cityhall_lan", "man_cellarfloor128" },
+    { 3980, "cityhall_lan", "sl_LAbedingsoil" },
+    { 10377, "cityhall_sfs", "banding4_64HV" },
+    { 10377, "cityhall_sfs", "ws_artgallery" },
+    { 10377, "cityhall_sfs", "ws_artgallery3" },
+    { 10377, "cityhall_sfs", "ws_bigblackdoor" },
+    { 10377, "cityhall_sfs", "ws_cityhall1" },
+    { 10377, "cityhall_sfs", "ws_cityhall2" },
+    { 10377, "cityhall_sfs", "ws_cityhall3" },
+    { 10377, "cityhall_sfs", "ws_cityhall4" },
+    { 10377, "cityhall_sfs", "ws_cityhall5" },
+    { 10377, "cityhall_sfs", "ws_cityhall6" },
+    { 10377, "cityhall_sfs", "ws_cityhall7" },
+    { 10377, "cityhall_sfs", "ws_cityhall8" },
+    { 10377, "cityhall_sfs", "ws_cityhall9" },
+    { 10377, "cityhall_sfs", "ws_concretenew_step" },
+    { 10377, "cityhall_sfs", "ws_copart1" },
+    { 10377, "cityhall_sfs", "ws_copart2" },
+    { 10377, "cityhall_sfs", "ws_copart3" },
+    { 10377, "cityhall_sfs", "ws_oldoffice2" },
+    { 10377, "cityhall_sfs", "ws_oldoffice4" },
+    { 10947, "cityhall_sfse", "ws_oldoffice5" },
+    { 10947, "cityhall_sfse", "ws_oldoffice6" },
+    { 10947, "cityhall_sfse", "ws_oldoffice7" },
+    { 4003, "cityhall_tr_lan", "foliage256" },
+    { 4003, "cityhall_tr_lan", "mc_flags1" },
+    { 4003, "cityhall_tr_lan", "planta256" },
+    { 4003, "cityhall_tr_lan", "sl_griddyfence_sml" },
+    { 3979, "civic01_lan", "airportwall_256128" },
+    { 3979, "civic01_lan", "bonavenlif_LAn" },
+    { 3979, "civic01_lan", "crazy paving" },
+    { 3979, "civic01_lan", "nt_bonav1" },
+    { 3979, "civic01_lan", "nt_bonav1_refl" },
+    { 3979, "civic01_lan", "parking1plain" },
+    { 3979, "civic01_lan", "sl_concretewall1" },
+    { 3979, "civic01_lan", "sl_dwntwndr1" },
+    { 3979, "civic01_lan", "sl_dwntwnshpfrnt1" },
+    { 3979, "civic01_lan", "sl_flagstone1" },
+    { 3979, "civic01_lan", "sl_laexporail" },
+    { 3979, "civic01_lan", "sl_laglasswall1" },
+    { 3979, "civic01_lan", "sl_laglasswall2" },
+    { 3979, "civic01_lan", "sl_laoffblok2wall1" },
+    { 14674, "civic02cj", "ab_hosWallUpr" },
+    { 14674, "civic02cj", "hotcarp01_LA" },
+    { 14674, "civic02cj", "hotelarch1_LAn" },
+    { 14674, "civic02cj", "kb_balcony_ferns" },
+    { 14674, "civic02cj", "sl_hoteldr1" },
+    { 14674, "civic02cj", "sl_hotelwall1" },
+    { 14674, "civic02cj", "sl_hotelwallplain1" },
+    { 4001, "civic03_lan", "bailbonds1_LAn" },
+    { 4001, "civic03_lan", "bailbonds2_LAn" },
+    { 4001, "civic03_lan", "downtshop2_LAn" },
+    { 4001, "civic03_lan", "downtshop5_LAn" },
+    { 4001, "civic03_lan", "downtshop6_LAn" },
+    { 4001, "civic03_lan", "downtsign2_LA" },
+    { 4001, "civic03_lan", "downtsign8_LA" },
+    { 4001, "civic03_lan", "downtwin10" },
+    { 4001, "civic03_lan", "downtwin11" },
+    { 4001, "civic03_lan", "downtwin2" },
+    { 4001, "civic03_lan", "downtwin2b" },
+    { 4001, "civic03_lan", "downtwin6" },
+    { 4001, "civic03_lan", "gymshop2_LAe" },
+    { 4001, "civic03_lan", "pediments1" },
+    { 4001, "civic03_lan", "sidelatino1_LAe" },
+    { 4001, "civic03_lan", "sl_shopshttr1" },
+    { 4001, "civic03_lan", "twintWall2_LAn" },
+    { 4001, "civic03_lan", "ws_rottenwall" },
+    { 3998, "civic04_lan", "alleydoor6" },
+    { 3998, "civic04_lan", "hosdoor01_law" },
+    { 3998, "civic04_lan", "officblokA2_LAn" },
+    { 3998, "civic04_lan", "sl_crthoosedg1" },
+    { 3998, "civic04_lan", "sl_crthooswall1" },
+    { 3998, "civic04_lan", "sl_crthooswall2" },
+    { 3998, "civic04_lan", "sl_dtwn1win1" },
+    { 3998, "civic04_lan", "sl_dtwn1win2" },
+    { 3998, "civic04_lan", "sl_prisongate1" },
+    { 3998, "civic04_lan", "twintconc_LAn" },
+    { 3998, "civic04_lan", "twintWall1_LAn" },
+    { 3998, "civic04_lan", "twintWin1_LAn" },
+    { 3998, "civic04_lan", "twintWin2_LAn" },
+    { 3988, "civic06_lan", "awningsides1" },
+    { 3988, "civic06_lan", "Bow_stained_wall" },
+    { 3988, "civic06_lan", "casinobulb2_128" },
+    { 3988, "civic06_lan", "discware1_LAe2" },
+    { 3988, "civic06_lan", "downtshop4_LAn" },
+    { 3988, "civic06_lan", "downtsign1_LA" },
+    { 3988, "civic06_lan", "downtsign4_LA" },
+    { 3988, "civic06_lan", "downtsign5_LA" },
+    { 3988, "civic06_lan", "downtsign6_LA" },
+    { 3988, "civic06_lan", "downtsign7_LA" },
+    { 3988, "civic06_lan", "downtwin3" },
+    { 3988, "civic06_lan", "downtwin5" },
+    { 3988, "civic06_lan", "downtwin6det" },
+    { 3988, "civic06_lan", "downtwin7" },
+    { 3988, "civic06_lan", "downtwin8" },
+    { 3988, "civic06_lan", "downtwin9" },
+    { 3988, "civic06_lan", "LAcityhwal2" },
+    { 3988, "civic06_lan", "pediments2" },
+    { 3988, "civic06_lan", "shopawning1_LAn" },
+    { 3988, "civic06_lan", "tradecentre1" },
+    { 4004, "civic07_lan", "badmarb1_LAn" },
+    { 4004, "civic07_lan", "column1_LAn" },
+    { 4004, "civic07_lan", "downtshop10_LAn" },
+    { 4004, "civic07_lan", "downtshop8_LAn" },
+    { 4004, "civic07_lan", "downtshop9_LAn" },
+    { 4004, "civic07_lan", "downtsign10_LA" },
+    { 4004, "civic07_lan", "downtsign11_LA" },
+    { 4004, "civic07_lan", "downtsign9_LA" },
+    { 4004, "civic07_lan", "downtwin12" },
+    { 4004, "civic07_lan", "downtwin14" },
+    { 4004, "civic07_lan", "downtwin14det" },
+    { 4004, "civic07_lan", "downtwin15" },
+    { 4004, "civic07_lan", "downtwin9det" },
+    { 4004, "civic07_lan", "hollywin02_LAw" },
+    { 4004, "civic07_lan", "odddoor1_LAn" },
+    { 4004, "civic07_lan", "oldbrwall1_LA" },
+    { 4004, "civic07_lan", "oldbrwall2_LA" },
+    { 4004, "civic07_lan", "restrauntfront1_256" },
+    { 4004, "civic07_lan", "sf_windos_10" },
+    { 4004, "civic07_lan", "sl_dwntwncanpy1" },
+    { 4004, "civic07_lan", "sl_rotnbrik" },
+    { 4569, "civic1_lan2", "posh_eagle10_sfe" },
+    { 4569, "civic1_lan2", "posh_eagle11_sfe" },
+    { 4569, "civic1_lan2", "posh_eagle12_sfe" },
+    { 4569, "civic1_lan2", "posh_eagle13_sfe" },
+    { 4569, "civic1_lan2", "posh_eagle14_sfe" },
+    { 4569, "civic1_lan2", "posh_eagle1_sfe" },
+    { 4569, "civic1_lan2", "posh_eagle2_sfe" },
+    { 4569, "civic1_lan2", "posh_eagle4_sfe" },
+    { 3776, "ci_studio", "aircon" },
+    { 3776, "ci_studio", "bdoor" },
+    { 3776, "ci_studio", "cdoor" },
+    { 3776, "ci_studio", "stageside1" },
+    { 3776, "ci_studio", "studioroof" },
+    { 5706, "ci_studio5", "astagesign" },
+    { 5706, "ci_studio5", "Bow_sidewalk" },
+    { 5706, "ci_studio5", "ci_entrwind1" },
+    { 5706, "ci_studio5", "corugwall1" },
+    { 5706, "ci_studio5", "rustytank" },
+    { 5706, "ci_studio5", "studcov01_law" },
+    { 5706, "ci_studio5", "studiowall1" },
+    { 5706, "ci_studio5", "studiowall3_law" },
+    { 5706, "ci_studio5", "studoor01_law" },
+    { 5706, "ci_studio5", "tw@t_wall1" },
+    { 1738, "cjtemp", "CJ_bed1" },
+    { 1738, "cjtemp", "CJ_BED_BASE" },
+    { 1738, "cjtemp", "CJ_MAT1" },
+    { 1738, "cjtemp", "cj_Mattress2" },
+    { 1738, "cjtemp", "cj_Mattress5" },
+    { 1738, "cjtemp", "cj_radiatorOLD" },
+    { 1738, "cjtemp", "CJ_SWEETS" },
+    { 3967, "cj_airprt", "bigbrick" },
+    { 3967, "cj_airprt", "ceiling_256" },
+    { 3967, "cj_airprt", "CJ_BLACK_RUB2" },
+    { 3967, "cj_airprt", "CJ_G_CHROME" },
+    { 3967, "cj_airprt", "cj_juank_1" },
+    { 3967, "cj_airprt", "CJ_RUBBER" },
+    { 3967, "cj_airprt", "CJ_SHELF_WHITE" },
+    { 3967, "cj_airprt", "CJ_tubeside" },
+    { 3967, "cj_airprt", "dts_elevator_carpet2" },
+    { 3967, "cj_airprt", "new road" },
+    { 3967, "cj_airprt", "Road_blank256HV" },
+    { 3967, "cj_airprt", "Slabs" },
+    { 1736, "cj_ammo", "CJ_Black_metal" },
+    { 1736, "cj_ammo", "CJ_BULLETBOX1" },
+    { 1736, "cj_ammo", "CJ_CANVAS2" },
+    { 1736, "cj_ammo", "CJ_Deer1" },
+    { 1736, "cj_ammo", "CJ_GENERATOR3" },
+    { 1736, "cj_ammo", "CJ_LIGHTWOOD(E)" },
+    { 1736, "cj_ammo", "CJ_mantarget" },
+    { 1736, "cj_ammo", "CJ_OIL_DRUM_L0" },
+    { 1736, "cj_ammo", "cj_pail" },
+    { 1736, "cj_ammo", "CJ_SHEET2HOLES" },
+    { 1736, "cj_ammo", "CJ_SLATEDWOOD2" },
+    { 1736, "cj_ammo", "CJ_SPEAKER_c" },
+    { 1736, "cj_ammo", "CJ_WHEEL1" },
+    { 1736, "cj_ammo", "flametin" },
+    { 1736, "cj_ammo", "flametin2" },
+    { 1736, "cj_ammo", "Star aluminuim" },
+    { 2059, "cj_ammo2", "cj_don_post_1" },
+    { 2059, "cj_ammo2", "CJ_gunbook1" },
+    { 2059, "cj_ammo2", "CJ_gunbook2" },
+    { 2059, "cj_ammo2", "cj_rubbish2" },
+    { 2068, "cj_ammo_net", "CJ_cammonet" },
+    { 2047, "cj_ammo_posters", "CJ_Coltposter" },
+    { 2047, "cj_ammo_posters", "cj_flag1" },
+    { 2047, "cj_ammo_posters", "cj_flag2" },
+    { 2047, "cj_ammo_posters", "CJ_TARGET1" },
+    { 2047, "cj_ammo_posters", "CJ_TARGET2" },
+    { 2047, "cj_ammo_posters", "CJ_TARGET3" },
+    { 18034, "cj_ammun_extra", "CJ_BULLETBOX2" },
+    { 18034, "cj_ammun_extra", "CJ_BULLETBOX2b" },
+    { 18034, "cj_ammun_extra", "CJ_BULLETBOX2c" },
+    { 18034, "cj_ammun_extra", "CJ_BULLETBOX3" },
+    { 18034, "cj_ammun_extra", "CJ_BULLETBOXB" },
+    { 18034, "cj_ammun_extra", "CJ_BULLETBOXB2" },
+    { 18034, "cj_ammun_extra", "CJ_GRIZ" },
+    { 18034, "cj_ammun_extra", "CJ_NAIL_AMMO" },
+    { 18034, "cj_ammun_extra", "CJ_TAR1" },
+    { 18034, "cj_ammun_extra", "mp_gun_box" },
+    { 18034, "cj_ammun_extra", "mp_gun_neon" },
+    { 2783, "cj_bandit", "slot6" },
+    { 2783, "cj_bandit", "slot_bit3" },
+    { 2655, "cj_banner", "CJ_ERIS1" },
+    { 2655, "cj_banner", "CJ_HEAT1" },
+    { 2655, "cj_banner", "CJ_HEAT2" },
+    { 2655, "cj_banner", "CJ_MERC_LOGO" },
+    { 2655, "cj_banner", "CJ_PRO_2" },
+    { 2655, "cj_banner", "CJ_SUBURBAN_1" },
+    { 2692, "cj_banner2", "BASE5_1" },
+    { 2692, "cj_banner2", "CJ_CARDBOARD" },
+    { 2692, "cj_banner2", "CJ_WHEEL_CHAIR1" },
+    { 2719, "cj_banner3", "CJ_BINC_1" },
+    { 2719, "cj_banner3", "CJ_BINC_2" },
+    { 2719, "cj_banner3", "CJ_BINC_3" },
+    { 1455, "cj_bar", "CJ_BAR_BOTTLE1" },
+    { 1455, "cj_bar", "CJ_BAR_TAP1" },
+    { 1455, "cj_bar", "CJ_BAR_TAP2" },
+    { 1455, "cj_bar", "CJ_B_TOWEL" },
+    { 1455, "cj_bar", "cj_b_tray" },
+    { 1455, "cj_bar", "CJ_old_pish" },
+    { 1455, "cj_bar", "CJ_SK_Bar" },
+    { 1455, "cj_bar", "CJ_SK_DIET_Bar" },
+    { 18028, "cj_bar2", "bbar_stuff2" },
+    { 18028, "cj_bar2", "CJ_nastybar_D" },
+    { 18028, "cj_bar2", "CJ_nastybar_D2" },
+    { 18028, "cj_bar2", "CJ_nastybar_D3" },
+    { 18028, "cj_bar2", "CJ_nastybar_D4" },
+    { 18028, "cj_bar2", "CJ_nastybar_D5" },
+    { 18028, "cj_bar2", "CJ_nastybar_D6" },
+    { 18028, "cj_bar2", "GB_nastybar01" },
+    { 18028, "cj_bar2", "GB_nastybar02" },
+    { 18028, "cj_bar2", "GB_nastybar04" },
+    { 18028, "cj_bar2", "GB_nastybar05" },
+    { 18028, "cj_bar2", "GB_nastybar06" },
+    { 18028, "cj_bar2", "GB_nastybar07" },
+    { 18028, "cj_bar2", "GB_nastybar08" },
+    { 18028, "cj_bar2", "GB_nastybar09" },
+    { 18028, "cj_bar2", "GB_nastybar10" },
+    { 18028, "cj_bar2", "GB_nastybar13" },
+    { 18028, "cj_bar2", "GB_nastybar15" },
+    { 18028, "cj_bar2", "GB_nastybar17" },
+    { 18081, "cj_barb", "ab_drawer_unit2" },
+    { 18081, "cj_barb", "ab_leather_strips" },
+    { 18081, "cj_barb", "ab_marble_checks" },
+    { 18081, "cj_barb", "ab_panel_woodgrime" },
+    { 18081, "cj_barb", "ab_sink_barber" },
+    { 18081, "cj_barb", "ab_window_plastic" },
+    { 18081, "cj_barb", "barberschr1" },
+    { 18081, "cj_barb", "barberschr2" },
+    { 18081, "cj_barb", "barberschr3" },
+    { 18081, "cj_barb", "barberschr4" },
+    { 18081, "cj_barb", "barberschr5" },
+    { 18081, "cj_barb", "barberschr6" },
+    { 18081, "cj_barb", "barberschr7b" },
+    { 18081, "cj_barb", "barberspic1" },
+    { 18081, "cj_barb", "barberspic2" },
+    { 18081, "cj_barb", "barberspic3" },
+    { 18081, "cj_barb", "CJ_TILES_5" },
+    { 18081, "cj_barb", "cj_white_wall" },
+    { 18081, "cj_barb", "whiteceil_int" },
+    { 18027, "cj_barb2", "BLOCK2low" },
+    { 18027, "cj_barb2", "CJ_BARB_WIN_1" },
+    { 18027, "cj_barb2", "cj_socket" },
+    { 18027, "cj_barb2", "interiordoor1_256" },
+    { 18027, "cj_barb2", "tile_test3" },
+    { 66, "cj_barr_set_1", "banding_blue_64HV" },
+    { 66, "cj_barr_set_1", "Stop2_64" },
+    { 2691, "cj_base5", "base5_2" },
+    { 2691, "cj_base5", "base5_6" },
+    { 2691, "cj_base5", "base5_8" },
+    { 2514, "cj_bathroom", "CJ_CANVAS" },
+    { 2514, "cj_bathroom", "CJ_PILLOWCASE" },
+    { 2514, "cj_bathroom", "cj_toilet" },
+    { 1700, "cj_beds", "bed_test" },
+    { 1700, "cj_beds", "CJ_MATRESS2" },
+    { 1700, "cj_beds", "kbedhead" },
+    { 1700, "cj_beds", "kbedside" },
+    { 1700, "cj_beds", "kb_sheet_pilay2" },
+    { 2729, "cj_binc_sign", "BINC_hooded" },
+    { 2729, "cj_binc_sign", "BINC_pshirts" },
+    { 2729, "cj_binc_sign", "BINC_tshirt" },
+    { 1343, "cj_bins", "Miamibin" },
+    { 1344, "cj_bins2", "CJ_RUBBISH1" },
+    { 2659, "cj_bobo", "cj_bobo" },
+    { 2659, "cj_bobo", "CJ_BOBO_BAN" },
+    { 2430, "cj_burg_sign", "CJ_BS_BAG" },
+    { 2430, "cj_burg_sign", "cj_bs_cup" },
+    { 2430, "cj_burg_sign", "CJ_BS_MENU1" },
+    { 2430, "cj_burg_sign", "CJ_BS_MENU2" },
+    { 2430, "cj_burg_sign", "CJ_BS_MENU3" },
+    { 2430, "cj_burg_sign", "CJ_BS_MENU4" },
+    { 2765, "cj_cb_sign", "CJ_CB_POST1" },
+    { 2765, "cj_cb_sign", "CJ_PIZZA_MENU2" },
+    { 958, "cj_chip_maker", "CJ_CHIP_M" },
+    { 958, "cj_chip_maker", "CJ_Y_GENERATORDETAIL" },
+    { 2669, "cj_chris", "Bow_Fence_Metal" },
+    { 2669, "cj_chris", "CJ_Floral" },
+    { 2669, "cj_chris", "CJ_Grate" },
+    { 2669, "cj_chris", "cj_metalplate2" },
+    { 2669, "cj_chris", "CJ_plating3" },
+    { 2669, "cj_chris", "Gen_Chain" },
+    { 2681, "cj_coin_op", "CJ_COINOP1" },
+    { 2681, "cj_coin_op", "CJ_COINOP2" },
+    { 2681, "cj_coin_op", "CJ_COINOP3" },
+    { 2640, "cj_coin_op_2", "CJ_POKERSCREEN" },
+    { 2640, "cj_coin_op_2", "CJ_POKERSCREEN2" },
+    { 2640, "cj_coin_op_2", "CJ_TV1" },
+    { 1733, "cj_commercial", "CJ_DRINKS_CHOICE" },
+    { 1733, "cj_commercial", "CJ_SPRUNK_FRONT" },
+    { 1733, "cj_commercial", "CJ_S_VENDOR" },
+    { 2941, "cj_commerciax", "Gen_Till" },
+    { 960, "cj_crate_will", "CJ_FLIGHT_CASE" },
+    { 960, "cj_crate_will", "CJ_FLIGHT_CASE2" },
+    { 936, "cj_dfext", "ws_cf_lamp" },
+    { 18102, "cj_dl2", "CJ_DISCO(L1)64" },
+    { 18102, "cj_dl2", "CJ_DISCO(L2)64" },
+    { 18102, "cj_dl2", "CJ_DISCO(L3)64" },
+    { 18102, "cj_dl2", "CJ_DISCO(L4)64" },
+    { 2432, "cj_don_sign", "cj_don_post_2" },
+    { 2432, "cj_don_sign", "cj_don_post_3" },
+    { 2879, "cj_ds_door", "CJ_DS_DOOR_256_" },
+    { 1349, "cj_dyn_prop", "CJ_AIRPLOGO" },
+    { 1349, "cj_dyn_prop", "CJ_STROLLY" },
+    { 1718, "cj_electrical", "CJ_MONITER1" },
+    { 1718, "cj_electrical", "cj_video3(TOP)" },
+    { 1718, "cj_electrical", "CJ_VIDEOFRONTS" },
+    { 1718, "cj_electrical", "spbx_big" },
+    { 1718, "cj_electrical", "spbx_big2" },
+    { 18031, "cj_exp", "chinosbiege" },
+    { 18031, "cj_exp", "chinosblue" },
+    { 18031, "cj_exp", "CJ_DS_WINDOW" },
+    { 18031, "cj_exp", "mp_cloth_ds3" },
+    { 18031, "cj_exp", "mp_cloth_ds4" },
+    { 18031, "cj_exp", "mp_cloth_wall" },
+    { 18031, "cj_exp", "mp_furn_floor" },
+    { 1370, "cj_exp_props", "CJ_GAS_CAN" },
+    { 955, "cj_ext_vend", "CJ_SPRUNK_DIRTY" },
+    { 2415, "cj_ff", "CJ_cooker4" },
+    { 2415, "cj_ff", "CJ_KITCHEN_DETAIL" },
+    { 2420, "cj_ff_acc1", "CJ_Bbq" },
+    { 2420, "cj_ff_acc1", "CJ_BS_MENU4s" },
+    { 2420, "cj_ff_acc1", "CJ_MICROPANEL" },
+    { 2420, "cj_ff_acc1", "CJ_OPEN" },
+    { 2420, "cj_ff_acc1", "CJ_TILL1" },
+    { 2420, "cj_ff_acc1", "pepperonip" },
+    { 2718, "cj_ff_acc2", "CJ_FLY_TUBE" },
+    { 2718, "cj_ff_acc2", "GRATE" },
+    { 2423, "cj_ff_counters", "CJ_COUNTER2" },
+    { 2423, "cj_ff_counters", "CJ_COUNTER_TILES" },
+    { 2423, "cj_ff_counters", "CJ_Laminate1" },
+    { 2423, "cj_ff_counters", "CJ_TILES_3" },
+    { 2423, "cj_ff_counters", "CJ_worktop" },
+    { 2423, "cj_ff_counters", "shop_floor1" },
+    { 1730, "cj_furniture", "CJ-COUCHL2" },
+    { 1730, "cj_furniture", "CJ_books" },
+    { 1730, "cj_furniture", "CJ_WOOD5" },
+    { 2028, "cj_games", "CJ_CONSOLETOP" },
+    { 2028, "cj_games", "cj_console_cont1" },
+    { 2028, "cj_games", "cj_console_cont2" },
+    { 2028, "cj_games", "CJ_speaker4" },
+    { 2875, "cj_gash", "CJ_ZIP_3" },
+    { 2749, "cj_hair", "cj_spec" },
+    { 2749, "cj_hair", "HAIR_STUFF" },
+    { 1809, "cj_hi_fi", "CJ_HI_FI" },
+    { 1809, "cj_hi_fi", "CJ_HI_FI_1" },
+    { 1809, "cj_hi_fi", "CJ_SPEAKER1" },
+    { 1809, "cj_hi_fi", "CJ_speaker_6" },
+    { 1809, "cj_hi_fi", "cj_speaker_s" },
+    { 2225, "cj_hi_fi2", "CJ_SPEAKER2" },
+    { 2225, "cj_hi_fi2", "CJ_SPEAKER3" },
+    { 2570, "cj_hotel", "nt_phone1" },
+    { 2570, "cj_hotel", "nt_phone2" },
+    { 2575, "cj_hotel_poor", "CJ_mattress" },
+    { 2562, "cj_hotel_sw", "CJ-COUCHL1" },
+    { 2098, "cj_int", "CJ_CHINA_SCRIPT" },
+    { 2098, "cj_int", "CJ_GREEN_WOOD" },
+    { 2098, "cj_int", "CJ_RED_WOOD" },
+    { 2425, "cj_jucie", "CJ_SPRUNK_F" },
+    { 2425, "cj_jucie", "CJ_SPRUNK_FRONT2" },
+    { 2127, "cj_kitchen", "CJ_RED" },
+    { 2127, "cj_kitchen", "FORMICA2" },
+    { 2127, "cj_kitchen", "marble2" },
+    { 1731, "cj_lighting", "CJ_BASKET" },
+    { 1731, "cj_lighting", "CJ_FILLIMENT" },
+    { 1731, "cj_lighting", "CJ_lightshade" },
+    { 1731, "cj_lighting", "cj_plantpot" },
+    { 1731, "cj_lighting", "CJ_PLANT_POT" },
+    { 1731, "cj_lighting", "CJ_WICKER1" },
+    { 2803, "cj_meaty", "CJ_Canvas3" },
+    { 2803, "cj_meaty", "CJ_FLESH_1" },
+    { 2803, "cj_meaty", "CJ_FLESH_2" },
+    { 1701, "cj_med_beds", "CJ_BROWN_WOOL" },
+    { 1701, "cj_med_beds", "CJ_DUVET1" },
+    { 1701, "cj_med_beds", "CJ_LINEN1" },
+    { 1701, "cj_med_beds", "kb_bed_final2" },
+    { 1550, "cj_money_bags", "CJ_KIT_BAG" },
+    { 1550, "cj_money_bags", "money_128" },
+    { 1570, "cj_noodle_1", "CJ_Canvas2" },
+    { 1371, "cj_novelty_bins", "CJ_HIPPO" },
+    { 1714, "cj_office", "beige_64" },
+    { 1714, "cj_office", "BLUE_FABRIC" },
+    { 1714, "cj_office", "chromepipe2_32hv" },
+    { 1714, "cj_office", "cj_binders" },
+    { 1714, "cj_office", "CJ_chiller" },
+    { 1714, "cj_office", "CJ_CUSHION2" },
+    { 1714, "cj_office", "CJ_DESK" },
+    { 1714, "cj_office", "CJ_FILE" },
+    { 1714, "cj_office", "CJ_photocopier" },
+    { 1714, "cj_office", "CJ_PLASTIC" },
+    { 1714, "cj_office", "cl_highbak" },
+    { 1714, "cj_office", "est_chair" },
+    { 1714, "cj_office", "filing_cab_mtl" },
+    { 1714, "cj_office", "la_kitch1" },
+    { 1714, "cj_office", "la_kitch2" },
+    { 1714, "cj_office", "la_kitch3" },
+    { 1714, "cj_office", "of_key_256" },
+    { 1714, "cj_office", "of_monitor_256" },
+    { 1714, "cj_office", "redFabric" },
+    { 1714, "cj_office", "white32" },
+    { 2065, "cj_off_new", "CJ_FILLING2" },
+    { 2065, "cj_off_new", "filling" },
+    { 2065, "cj_off_new", "filling3" },
+    { 2645, "cj_piz_sign", "CJ_PIZZA_MEN1" },
+    { 2645, "cj_piz_sign", "CJ_PIZZA_MEN2" },
+    { 2645, "cj_piz_sign", "CJ_PIZZA_MEN3" },
+    { 2645, "cj_piz_sign", "CJ_PIZZA_MENU1" },
+    { 1360, "cj_plant_props", "Bucket_bump" },
+    { 1360, "cj_plant_props", "CJ_PLANT" },
+    { 2876, "cj_pro", "CJ_PRO_DOOR_256_" },
+    { 2347, "cj_reels", "cj_wheel_69256" },
+    { 2347, "cj_reels", "cj_wheel_B1256" },
+    { 2347, "cj_reels", "cj_wheel_B2256" },
+    { 2347, "cj_reels", "cj_wheel_Bell256" },
+    { 2347, "cj_reels", "cj_wheel_Cherry256" },
+    { 2347, "cj_reels", "cj_wheel_Grape256" },
+    { 1716, "cj_seating", "bras2_base" },
+    { 1716, "cj_seating", "cj_cushion1" },
+    { 1716, "cj_seating", "CJ_RED_FABRIC" },
+    { 1716, "cj_seating", "CJ_SHINYWOOD" },
+    { 2577, "cj_sex", "CJ_PAINTING9" },
+    { 2577, "cj_sex", "CJ_PORNO_VIDS" },
+    { 2577, "cj_sex", "CJ_PORNO_VIDS2" },
+    { 2577, "cj_sex", "CJ_PORNO_VIDS3" },
+    { 2577, "cj_sex", "CJ_PORNO_VIDS4" },
+    { 2577, "cj_sex", "CJ_PORN_SIGNS" },
+    { 2577, "cj_sex", "CJ_PORN_SIGNS2" },
+    { 2577, "cj_sex", "CJ_videos" },
+    { 2577, "cj_sex", "gun_dildo1" },
+    { 2577, "cj_sex", "gun_dildo2" },
+    { 2577, "cj_sex", "gun_dildo3" },
+    { 2577, "cj_sex", "gun_dildo4" },
+    { 1746, "cj_sofa", "CJ_FAB1" },
+    { 1746, "cj_sofa", "CJ_FAB2" },
+    { 1746, "cj_sofa", "cj_fab3" },
+    { 1746, "cj_sofa", "CJ_FAB4" },
+    { 1746, "cj_sofa", "CJ_WOOD_RUN" },
+    { 2541, "cj_ss_1", "CJ_7_11_edge" },
+    { 2541, "cj_ss_1", "CJ_BBQ_BAG" },
+    { 2541, "cj_ss_1", "CJ_CEREAL" },
+    { 2541, "cj_ss_1", "cj_juice" },
+    { 2541, "cj_ss_1", "cj_juice2" },
+    { 2541, "cj_ss_1", "cj_juice_can" },
+    { 2541, "cj_ss_1", "CJ_LUBE_1" },
+    { 2541, "cj_ss_1", "GB_foodwrap01" },
+    { 2538, "cj_ss_2", "CJ_ICECREAM" },
+    { 2538, "cj_ss_2", "CJ_milk" },
+    { 2538, "cj_ss_2", "CJ_milk2" },
+    { 2538, "cj_ss_2", "CJ_MILK_BOTTLE" },
+    { 2538, "cj_ss_2", "pizzalid" },
+    { 2543, "cj_ss_3", "CJ_DOG_FOOD2" },
+    { 2543, "cj_ss_3", "CJ_DOOG_FOOD" },
+    { 2535, "cj_ss_4", "CJ_FISHY" },
+    { 1348, "cj_street_props", "CJ_o2Tank" },
+    { 1795, "cj_s_beds", "CJ_MATRESS3" },
+    { 1737, "cj_tables", "FORMICA1" },
+    { 1350, "cj_traffic", "CJ_sign6" },
+    { 1717, "cj_tv", "CJ_STEEL" },
+    { 1717, "cj_tv", "CJ_TV2" },
+    { 1717, "cj_tv", "green_glass_64" },
+    { 1717, "cj_tv", "tv_1" },
+    { 2624, "cj_urb", "cj_bricks" },
+    { 2624, "cj_urb", "CJ_PRO_1" },
+    { 2624, "cj_urb", "cj_sport_counter1" },
+    { 2624, "cj_urb", "counter2" },
+    { 2878, "cj_vic", "CJ_VICT_DOOR" },
+    { 1782, "cj_video", "CJ_VIDEO5" },
+    { 2732, "cj_zip_sign", "CJ_ZIP_1" },
+    { 2732, "cj_zip_sign", "CJ_ZIP_2" },
+    { 2732, "cj_zip_sign", "CJ_ZIP_4" },
+    { 2381, "cloth_trackies", "trackTr" },
+    { 2381, "cloth_trackies", "trackTrblue" },
+    { 2381, "cloth_trackies", "tracktrgang" },
+    { 2381, "cloth_trackies", "trackTrpro" },
+    { 2374, "cloth_track_t", "shirtshortblu" },
+    { 2374, "cloth_track_t", "sweatrstar" },
+    { 2374, "cloth_track_t", "trackytop1pro" },
+    { 2374, "cloth_track_t", "trackytop2eris" },
+    { 2374, "cloth_track_t", "tshirterisyell" },
+    { 10606, "cluckbell_sfs", "roof04L256" },
+    { 10606, "cluckbell_sfs", "tgogg4_256" },
+    { 10606, "cluckbell_sfs", "vgncarwash3_256" },
+    { 10606, "cluckbell_sfs", "vgndwntwnrf1_256" },
+    { 10606, "cluckbell_sfs", "ws_nicepave" },
+    { 10606, "cluckbell_sfs", "ws_reinforcedbutwonky_small" },
+    { 3093, "cntdrrkx", "sjmbigold4" },
+    { 3093, "cntdrrkx", "sjmbigold5" },
+    { 11550, "cn_nwbrigstuff", "blendrock2grgrass" },
+    { 11550, "cn_nwbrigstuff", "dam_genbeam" },
+    { 11550, "cn_nwbrigstuff", "desbar" },
+    { 11550, "cn_nwbrigstuff", "des_facmetal" },
+    { 11550, "cn_nwbrigstuff", "rocktbrn128blndlit" },
+    { 11550, "cn_nwbrigstuff", "Tar_1linefreewy" },
+    { 11558, "cn_substation", "des_pylon2" },
+    { 9902, "coastground", "coasty_bit4_sfe" },
+    { 9902, "coastground", "coasty_bit_sfe" },
+    { 9902, "coastground", "coasty_fencet_sfe" },
+    { 9902, "coastground", "pierbuild_btm2" },
+    { 9902, "coastground", "pierbuild_btm3" },
+    { 9902, "coastground", "pierbuild_roof1" },
+    { 9902, "coastground", "pierbuild_top1" },
+    { 9902, "coastground", "pierbuild_top2" },
+    { 17562, "coast_apts", "apartmentwin5_256" },
+    { 17562, "coast_apts", "Concrete_rough_256" },
+    { 17562, "coast_apts", "forlease_law" },
+    { 17562, "coast_apts", "highshopwall1256" },
+    { 17562, "coast_apts", "otb_floor1" },
+    { 17562, "coast_apts", "pave_dirty" },
+    { 17562, "coast_apts", "scumtiles1_LAe" },
+    { 17562, "coast_apts", "sjmhoodoor1" },
+    { 17562, "coast_apts", "sjmhoodwin" },
+    { 17562, "coast_apts", "skategrnd2" },
+    { 17562, "coast_apts", "sl_concslabgrey_64" },
+    { 17562, "coast_apts", "snpdhus4" },
+    { 17562, "coast_apts", "stonewalls1" },
+    { 17562, "coast_apts", "sunpillar01_law" },
+    { 17562, "coast_apts", "sunsetmall03b_law" },
+    { 17562, "coast_apts", "vendoor01_law" },
+    { 17562, "coast_apts", "ws_garagedoor2_yello" },
+    { 17562, "coast_apts", "ws_garagedoor4_peach" },
+    { 17562, "coast_apts", "yardgrass1" },
+    { 5133, "coast_las2", "cos_hiwayout_256" },
+    { 5133, "coast_las2", "greyground256sand" },
+    { 12846, "coe_offtrackshop", "des_pylon1" },
+    { 12846, "coe_offtrackshop", "des_signframe" },
+    { 12846, "coe_offtrackshop", "otb_bigsignf" },
+    { 3063, "col_wall1x", "ab_wood1" },
+    { 3063, "col_wall1x", "motel_wall4" },
+    { 3063, "col_wall1x", "mp_burn_wall1" },
+    { 3063, "col_wall1x", "mp_burn_wall4" },
+    { 3063, "col_wall1x", "mp_diner_ceilingdirt" },
+    { 3098, "col_wall2x", "mp_burn_wall2" },
+    { 3097, "col_wall3x", "kitchen-wall1" },
+    { 2950, "col_wallx", "gangwall2" },
+    { 3698, "comedbarrio1_la", "compdoor1_LAe" },
+    { 3698, "comedbarrio1_la", "compdoor5_LAe" },
+    { 3698, "comedbarrio1_la", "comptwall18" },
+    { 3698, "comedbarrio1_la", "comptwall9" },
+    { 3698, "comedbarrio1_la", "greenwall2" },
+    { 3555, "comedhos1_la", "Bow_dlct_plstrb_gen" },
+    { 3555, "comedhos1_la", "Bow_dlct_plstr_cnrb" },
+    { 3555, "comedhos1_la", "Bow_dryclean_bricks" },
+    { 3555, "comedhos1_la", "Bow_dryclean_wall_upr_crk" },
+    { 3555, "comedhos1_la", "Bow_dryclean_wall_upr_crnr" },
+    { 3555, "comedhos1_la", "comptdoor1" },
+    { 3555, "comedhos1_la", "comptroof1" },
+    { 3555, "comedhos1_la", "comptroof2" },
+    { 3555, "comedhos1_la", "comptroof3" },
+    { 3555, "comedhos1_la", "comptwall2" },
+    { 3555, "comedhos1_la", "comptwall4" },
+    { 3555, "comedhos1_la", "comptwall6" },
+    { 3555, "comedhos1_la", "comptwindo1" },
+    { 3555, "comedhos1_la", "comptwindo3" },
+    { 3555, "comedhos1_la", "dock1" },
+    { 3584, "comedprj1_la", "waljundirt1" },
+    { 3584, "comedprj1_la", "walljunkdet1" },
+    { 3584, "comedprj1_la", "whiwind1" },
+    { 3583, "compapartb_la", "compcouwall3" },
+    { 3583, "compapartb_la", "comphosdet1" },
+    { 3580, "compapart_la", "awniningsides1" },
+    { 3580, "compapart_la", "comptwall11" },
+    { 3580, "compapart_la", "crencoudet1" },
+    { 3580, "compapart_la", "gableends1" },
+    { 3580, "compapart_la", "tancolum1" },
+    { 17862, "compomark_lae2", "beachwall3_256" },
+    { 17862, "compomark_lae2", "beachwall4_256" },
+    { 17862, "compomark_lae2", "grassdirtblend" },
+    { 17862, "compomark_lae2", "grasstype7" },
+    { 17862, "compomark_lae2", "lasbadwaz3" },
+    { 17862, "compomark_lae2", "lasbadwaz4" },
+    { 17862, "compomark_lae2", "lasbadwaz6" },
+    { 17862, "compomark_lae2", "lasbadwaz9" },
+    { 17862, "compomark_lae2", "lasbadwaz9a" },
+    { 17862, "compomark_lae2", "sanpshop2" },
+    { 17862, "compomark_lae2", "sanpshop6" },
+    { 17862, "compomark_lae2", "sanpshop6z" },
+    { 17862, "compomark_lae2", "snpedmat92" },
+    { 3630, "compthotrans_la", "nbarlid" },
+    { 3630, "compthotrans_la", "sanpedock993" },
+    { 3630, "compthotrans_la", "sanpedock994" },
+    { 3630, "compthotrans_la", "sjmlawarplt" },
+    { 3630, "compthotrans_la", "sjmlawarplt3" },
+    { 3241, "conhooses", "des_adobedoor1" },
+    { 3241, "conhooses", "des_door1" },
+    { 3241, "conhooses", "des_dustconc" },
+    { 3241, "conhooses", "des_greyboards" },
+    { 3241, "conhooses", "des_greyslats" },
+    { 3241, "conhooses", "des_hooswin1" },
+    { 3241, "conhooses", "des_hooswinwee1" },
+    { 3241, "conhooses", "des_whitewin1" },
+    { 3241, "conhooses", "des_woodfence1" },
+    { 3241, "conhooses", "sanruf" },
+    { 3241, "conhooses", "trail_door" },
+    { 3241, "conhooses", "trail_wall1" },
+    { 3241, "conhooses", "trail_wall2" },
+    { 3241, "conhooses", "trail_wheel" },
+    { 3241, "conhooses", "trail_win2" },
+    { 3241, "conhooses", "ws_corr_metal1" },
+    { 17566, "contachou1_lae2", "4winscurt_law" },
+    { 17566, "contachou1_lae2", "compdet1" },
+    { 17566, "contachou1_lae2", "comptwall26" },
+    { 17566, "contachou1_lae2", "comptwall27" },
+    { 17566, "contachou1_lae2", "gangwin1_LAe" },
+    { 17566, "contachou1_lae2", "gangwin5_LAe" },
+    { 17566, "contachou1_lae2", "mp_apt1_woodpanel" },
+    { 17566, "contachou1_lae2", "pierplanks02_128" },
+    { 17566, "contachou1_lae2", "shingles5" },
+    { 17566, "contachou1_lae2", "shingles6" },
+    { 17566, "contachou1_lae2", "weelecbox" },
+    { 17566, "contachou1_lae2", "woodwarewall1" },
+    { 17566, "contachou1_lae2", "ws_peeling2" },
+    { 6000, "con_drivein", "Desrtmetal" },
+    { 6000, "con_drivein", "drvin_back" },
+    { 6000, "con_drivein", "drvin_door1" },
+    { 6000, "con_drivein", "drvin_door2" },
+    { 6000, "con_drivein", "drvin_front" },
+    { 6000, "con_drivein", "drvin_panel" },
+    { 6000, "con_drivein", "drvin_screen" },
+    { 6000, "con_drivein", "drvin_sign1" },
+    { 6000, "con_drivein", "drvin_sign2" },
+    { 6000, "con_drivein", "drvin_stuct" },
+    { 6000, "con_drivein", "drvin_stuct2" },
+    { 6000, "con_drivein", "drvin_wind1" },
+    { 6000, "con_drivein", "drvin_wind2" },
+    { 11420, "con_stuff", "quarry_ground1" },
+    { 17934, "coochieghous", "comptwall16" },
+    { 17934, "coochieghous", "sanpednhus1r" },
+    { 1977, "cooler1", "kb_cooler2" },
+    { 1977, "cooler1", "kb_vend1" },
+    { 1977, "cooler1", "kb_vend2" },
+    { 1977, "cooler1", "koen_win" },
+    { 1977, "cooler1", "shelf_stuff1" },
+    { 10028, "copshop_sfe", "dt_cops_US_flag" },
+    { 10028, "copshop_sfe", "dt_fire_escape_shit_texture" },
+    { 10028, "copshop_sfe", "dt_scyscrap_door2" },
+    { 11395, "corvinsign_sfse", "rustb256128" },
+    { 11395, "corvinsign_sfse", "shutters" },
+    { 12844, "cos_liquorstore", "b_wtilesreflect" },
+    { 12844, "cos_liquorstore", "cos_beercab" },
+    { 12844, "cos_liquorstore", "cos_berboxes" },
+    { 12844, "cos_liquorstore", "cos_liqbots" },
+    { 12844, "cos_liquorstore", "cos_liqcounter" },
+    { 12844, "cos_liquorstore", "ham_radio" },
+    { 12844, "cos_liquorstore", "ws_cleanblock" },
+    { 12841, "cos_pizzaplace", "roughmotwall1" },
+    { 12841, "cos_pizzaplace", "shutter_64" },
+    { 6487, "councl_law2", "711shop1" },
+    { 6487, "councl_law2", "asanpdshpsh1a" },
+    { 6487, "councl_law2", "grassdeep256" },
+    { 6487, "councl_law2", "Grass_lawn_128HV" },
+    { 6487, "councl_law2", "lanlabra1_M" },
+    { 6487, "councl_law2", "rodeo3sjm" },
+    { 6487, "councl_law2", "rodeo4sjm" },
+    { 6487, "councl_law2", "rodeo5sjm" },
+    { 6487, "councl_law2", "rodwall11_LAw2" },
+    { 6487, "councl_law2", "rodwall12_LAw2" },
+    { 6487, "councl_law2", "stonewall2_la" },
+    { 6487, "councl_law2", "tarmacplain2_bank" },
+    { 6487, "councl_law2", "tenniscourt1_256" },
+    { 6487, "councl_law2", "tennisnet_64" },
+    { 12909, "counte_b2", "sw_barnwood3" },
+    { 12909, "counte_b2", "sw_fence03" },
+    { 12909, "counte_b2", "sw_watower01" },
+    { 3178, "counthousmisc", "corrugated5_64HV" },
+    { 3178, "counthousmisc", "shackdoor01" },
+    { 3178, "counthousmisc", "shackwall01" },
+    { 3178, "counthousmisc", "shackwall02" },
+    { 3178, "counthousmisc", "shackwall03" },
+    { 3178, "counthousmisc", "shackwood01" },
+    { 10399, "countryclbgnd_sfs", "road2_256" },
+    { 10399, "countryclbgnd_sfs", "ws_tantiles1btm" },
+    { 10396, "countryclbtnis_sfs", "golf_lamp1" },
+    { 10396, "countryclbtnis_sfs", "golf_pylon" },
+    { 10396, "countryclbtnis_sfs", "Grass_path_128HV" },
+    { 10396, "countryclbtnis_sfs", "monobloc_16" },
+    { 10396, "countryclbtnis_sfs", "pinkpave" },
+    { 10398, "countryclub_sfs", "ferry_build4" },
+    { 10398, "countryclub_sfs", "hc_brickwall1" },
+    { 10398, "countryclub_sfs", "hc_brickwall2" },
+    { 10398, "countryclub_sfs", "hc_roofslates" },
+    { 10398, "countryclub_sfs", "hc_wall1" },
+    { 10398, "countryclub_sfs", "hc_wall2" },
+    { 10398, "countryclub_sfs", "hc_whitewall1" },
+    { 10398, "countryclub_sfs", "hc_windos1" },
+    { 10398, "countryclub_sfs", "hc_windos2" },
+    { 17003, "countrys", "rustc256128" },
+    { 17003, "countrys", "topbitwall256" },
+    { 17004, "countrys_pch", "des_dam_conc" },
+    { 3221, "country_breakable", "banding7_64HV" },
+    { 3221, "country_breakable", "BroWFence" },
+    { 3221, "country_breakable", "drvin_cable" },
+    { 3221, "country_breakable", "drvin_spkr" },
+    { 10987, "coveredpath_sfs", "ws_sheetwood" },
+    { 11013, "crackdrive_sfse", "ws_asphalt2" },
+    { 11013, "crackdrive_sfse", "ws_carskidmarks" },
+    { 11088, "crackfactdem_sfs", "ws_altz_wall7burn" },
+    { 11088, "crackfactdem_sfs", "ws_altz_wall7_top_burn" },
+    { 11088, "crackfactdem_sfs", "ws_dampdoubledoor" },
+    { 11010, "crackfact_sfse", "ws_emptywarehouse" },
+    { 11010, "crackfact_sfse", "ws_fuckedwin2" },
+    { 11085, "crack_intkb", "dt_ammu_flr5" },
+    { 11085, "crack_intkb", "ws_metalrafter1" },
+    { 1279, "craigpackage", "drugs" },
+    { 1381, "cranes_dyn2", "ws_dudelogo" },
+    { 1381, "cranes_dyn2", "ws_finalbuild" },
+    { 1381, "cranes_dyn2", "ws_oldpaintedyello_b" },
+    { 1381, "cranes_dyn2", "ws_sheetsteel" },
+    { 1376, "cranes_dyn2_cj", "freighttexpage" },
+    { 1376, "cranes_dyn2_cj", "ws_cablehang" },
+    { 1376, "cranes_dyn2_cj", "ws_oldpaintedblue" },
+    { 2924, "crash3doorx", "villagreen128256" },
+    { 916, "crates_n_stuffext", "CJ_CABLEWRAP" },
+    { 14477, "crlsbits", "CJ_PLANTPOT" },
+    { 14477, "crlsbits", "kb_lightshade" },
+    { 14477, "crlsbits", "lightbulb" },
+    { 14477, "crlsbits", "newtreeleavesb128" },
+    { 13625, "crowds", "ahsjmlabeam" },
+    { 13625, "crowds", "ahsjmpostbarx" },
+    { 13625, "crowds", "ahstandside" },
+    { 13625, "crowds", "crowd" },
+    { 4595, "crparkgm_lan2", "gm_LAcarpark1" },
+    { 4595, "crparkgm_lan2", "gm_LAcarpark2" },
+    { 4595, "crparkgm_lan2", "gm_LAcarparkmuckt" },
+    { 4595, "crparkgm_lan2", "parking01_law" },
+    { 4595, "crparkgm_lan2", "pavetilealley256128" },
+    { 4595, "crparkgm_lan2", "paystation" },
+    { 4595, "crparkgm_lan2", "sl_cparkbarrier1" },
+    { 4595, "crparkgm_lan2", "sl_dtcparklines1" },
+    { 3013, "cr_boxes", "ammo_bx" },
+    { 3013, "cr_boxes", "guns_wood" },
+    { 2979, "cr_slotsx", "slot5_ind" },
+    { 2979, "cr_slotsx", "slot_fr_1" },
+    { 2979, "cr_slotsx", "slot_fr_2" },
+    { 2979, "cr_slotsx", "slot_fr_3" },
+    { 2979, "cr_slotsx", "slot_fr_4" },
+    { 2979, "cr_slotsx", "slot_fr_5" },
+    { 2979, "cr_slotsx", "slot_fr_6" },
+    { 2979, "cr_slotsx", "slot_fr_7" },
+    { 2979, "cr_slotsx", "slot_fr_8" },
+    { 2979, "cr_slotsx", "slot_fr_9" },
+    { 8481, "csrsfence01", "ceasergate01_256" },
+    { 8481, "csrsfence01", "ceaserwall03_256" },
+    { 8481, "csrsfence01", "ceaserwall06_128" },
+    { 8481, "csrsfence01", "ceaserwall08_256" },
+    { 8481, "csrsfence01", "sign_Caligulas" },
+    { 8480, "csrspalace01", "black32" },
+    { 8480, "csrspalace01", "ceasersledge01_128" },
+    { 8480, "csrspalace01", "ceasersledge03_128" },
+    { 8480, "csrspalace01", "ceasersledge04_128" },
+    { 8480, "csrspalace01", "ceaserwall04night_256" },
+    { 8480, "csrspalace01", "ceaserwall04_256" },
+    { 8480, "csrspalace01", "ceaserwall05_256" },
+    { 8480, "csrspalace01", "ceaserwall07_256" },
+    { 8480, "csrspalace01", "ceaserwall09_128" },
+    { 8480, "csrspalace01", "ceaserwindow01_128" },
+    { 8480, "csrspalace01", "vgspawnroof02_128" },
+    { 8482, "csrspalace02", "casinolightsyel_128" },
+    { 8482, "csrspalace02", "ceasertile01_128" },
+    { 8482, "csrspalace02", "ceaserwall10_128" },
+    { 8482, "csrspalace02", "ceaserwall11_128" },
+    { 8482, "csrspalace02", "marble01_128" },
+    { 18231, "cs_coast", "cunt_botrock" },
+    { 18231, "cs_coast", "cunt_toprock" },
+    { 18231, "cs_coast", "des_dirt2blend" },
+    { 18231, "cs_coast", "des_dirt2grgrass" },
+    { 18231, "cs_coast", "des_dirt2trackr" },
+    { 18231, "cs_coast", "grasstype4" },
+    { 18231, "cs_coast", "grasstype4_mudblend" },
+    { 18231, "cs_coast", "rocktq128" },
+    { 18231, "cs_coast", "rocktq128_grass4blend" },
+    { 18449, "cs_ebridge", "stormdrain4_nt" },
+    { 18314, "cs_forest", "cuntbrncliffbtmbmp" },
+    { 18314, "cs_forest", "cuntbrnclifftop" },
+    { 18314, "cs_forest", "cw2_mountdirtscree" },
+    { 18314, "cs_forest", "cw2_mountroad" },
+    { 18314, "cs_forest", "forestfloor256mudblend" },
+    { 18314, "cs_forest", "forestfloor256_blenddirt" },
+    { 18314, "cs_forest", "forestfloorblendb" },
+    { 18314, "cs_forest", "forestfloorblendded" },
+    { 18314, "cs_forest", "grasstype4_forestblend" },
+    { 18314, "cs_forest", "rocktq128_forestblend" },
+    { 18451, "cs_misc", "car1_128" },
+    { 18451, "cs_misc", "car2_128" },
+    { 18293, "cs_mountain", "ffbranch_mountdirt" },
+    { 18447, "cs_mountaindetail", "cs_rockdetail" },
+    { 18368, "cs_mountaintop", "dam_statbase" },
+    { 18368, "cs_mountaintop", "des_flatlogs" },
+    { 18368, "cs_mountaintop", "des_woodrails" },
+    { 18368, "cs_mountaintop", "sw_flag01" },
+    { 18369, "cs_roads", "pavebsand256grassblended" },
+    { 18369, "cs_roads", "Tar_freewyright" },
+    { 3119, "cs_ry_props", "GB_magazine01" },
+    { 3119, "cs_ry_props", "GB_magazine04" },
+    { 3119, "cs_ry_props", "GB_magazine07" },
+    { 3119, "cs_ry_props", "lightgrey" },
+    { 3119, "cs_ry_props", "WhiskyBottle" },
+    { 18364, "cs_scrapyard", "Was_scrpyd_bale_exh" },
+    { 18561, "cs_wbridge", "des_byframe1" },
+    { 5069, "ctscene_las", "cleargraf02_LA" },
+    { 5069, "ctscene_las", "ruffroadlas" },
+    { 3038, "ct_kanx", "ct_lantern" },
+    { 3038, "ct_kanx", "ct_rope" },
+    { 3038, "ct_kanx", "ct_tastle" },
+    { 3039, "ct_salx", "ct_stall1" },
+    { 3039, "ct_salx", "ct_stall_stuff1" },
+    { 3039, "ct_salx", "ct_umbrela" },
+    { 3040, "ct_stabx", "ct_boxes" },
+    { 3040, "ct_stabx", "ct_fruit" },
+    { 3042, "ct_ventx", "liftdoorsac128" },
+    { 6522, "cuntclub_law2", "countclu01_LAw2" },
+    { 6522, "cuntclub_law2", "countclu02_LAw2" },
+    { 6522, "cuntclub_law2", "helipad_grey1" },
+    { 6522, "cuntclub_law2", "marinadoor1_256" },
+    { 6522, "cuntclub_law2", "marinawindow1_256" },
+    { 6522, "cuntclub_law2", "vgschapelwall01_128" },
+    { 15040, "cuntcuts", "AH_pinkcurtain" },
+    { 15040, "cuntcuts", "chrome_tube4" },
+    { 15040, "cuntcuts", "CsCrackpipe01" },
+    { 15040, "cuntcuts", "csnewspaper" },
+    { 15040, "cuntcuts", "csnewspaper02" },
+    { 15040, "cuntcuts", "cszerocupboard" },
+    { 15040, "cuntcuts", "GB_canvas06" },
+    { 15040, "cuntcuts", "GB_canvas15" },
+    { 15040, "cuntcuts", "GB_canvas17" },
+    { 15040, "cuntcuts", "GB_canvas18" },
+    { 15040, "cuntcuts", "GB_mike01" },
+    { 15040, "cuntcuts", "GB_novels06" },
+    { 15040, "cuntcuts", "GB_pendantlmp01" },
+    { 15040, "cuntcuts", "GB_phone01" },
+    { 15040, "cuntcuts", "GB_phone02" },
+    { 15040, "cuntcuts", "GB_swingbin01" },
+    { 15040, "cuntcuts", "GB_tile01" },
+    { 15040, "cuntcuts", "GB_towel02" },
+    { 15040, "cuntcuts", "newspaper1" },
+    { 15040, "cuntcuts", "piratesign01_128" },
+    { 15040, "cuntcuts", "ws_chipboard" },
+    { 13686, "cunte1_lahills", "desmudtrail2" },
+    { 13699, "cunte2_lahills", "bevgate01_law" },
+    { 13699, "cunte2_lahills", "laposhfence3" },
+    { 12809, "cunteroads1", "des_1line256" },
+    { 12809, "cunteroads1", "des_1linetar" },
+    { 12802, "cunteroads2", "roadnew4_512" },
+    { 12802, "cunteroads2", "sw_gasground" },
+    { 12802, "cunteroads2", "sw_gasground2" },
+    { 12877, "cunteroads3", "cos_hiwayins_256" },
+    { 12800, "cunteroads5", "concreteblock_256" },
+    { 12800, "cunteroads5", "hiwayinside5_256" },
+    { 12800, "cunteroads5", "hiwayoutside_256" },
+    { 13077, "cunte_bar1", "alleydoor4" },
+    { 13077, "cunte_bar1", "alleydoorb256" },
+    { 13077, "cunte_bar1", "amity_law" },
+    { 13077, "cunte_bar1", "black16" },
+    { 13077, "cunte_bar1", "newall4-2" },
+    { 12850, "cunte_block1", "ablusrip" },
+    { 12850, "cunte_block1", "awhitest2" },
+    { 12850, "cunte_block1", "des_indsign1" },
+    { 12850, "cunte_block1", "lightwall256" },
+    { 12850, "cunte_block1", "shoptopa128" },
+    { 12850, "cunte_block1", "shph3r1hi" },
+    { 12850, "cunte_block1", "sjmbrwn3" },
+    { 12850, "cunte_block1", "sjmbwall2" },
+    { 12850, "cunte_block1", "sjmhot4" },
+    { 12850, "cunte_block1", "sw_door10" },
+    { 12850, "cunte_block1", "sw_hardware01" },
+    { 12850, "cunte_block1", "sw_hardware02" },
+    { 12850, "cunte_block1", "sw_miller" },
+    { 12850, "cunte_block1", "sw_signs01" },
+    { 12850, "cunte_block1", "sw_window02" },
+    { 12850, "cunte_block1", "ws_ornatewall1" },
+    { 12850, "cunte_block1", "ws_redbrickold" },
+    { 13131, "cunte_blockammo", "decoacwallbtm21_256" },
+    { 13131, "cunte_blockammo", "dt_ammu_sign1" },
+    { 13131, "cunte_blockammo", "dt_ammu_sign2" },
+    { 13131, "cunte_blockammo", "dt_ammu_wall2" },
+    { 13131, "cunte_blockammo", "mp_bluemetaldoor_256" },
+    { 13131, "cunte_blockammo", "mp_gun_targets" },
+    { 13131, "cunte_blockammo", "newall10" },
+    { 13131, "cunte_blockammo", "sw_door15" },
+    { 13131, "cunte_blockammo", "sw_locals" },
+    { 13131, "cunte_blockammo", "wallwindblank_256" },
+    { 13131, "cunte_blockammo", "ws_patchygravel" },
+    { 12855, "cunte_cop", "des_thrails" },
+    { 12855, "cunte_cop", "sjmfrateblu2" },
+    { 12855, "cunte_cop", "sjmgrund2b" },
+    { 12855, "cunte_cop", "sw_bars" },
+    { 12855, "cunte_cop", "sw_brick05" },
+    { 12855, "cunte_cop", "sw_brick05b" },
+    { 12855, "cunte_cop", "sw_copdoor1" },
+    { 12855, "cunte_cop", "sw_copgrass01" },
+    { 12855, "cunte_cop", "sw_path1" },
+    { 12855, "cunte_cop", "sw_PD" },
+    { 12855, "cunte_cop", "sw_PDground" },
+    { 12855, "cunte_cop", "sw_shutters1" },
+    { 12855, "cunte_cop", "sw_wall01" },
+    { 12855, "cunte_cop", "sw_wind01" },
+    { 12855, "cunte_cop", "ws_bigstones" },
+    { 12853, "cunte_gas01", "aroofbit93" },
+    { 12853, "cunte_gas01", "downtsign13_LA" },
+    { 12853, "cunte_gas01", "postcards_law" },
+    { 12853, "cunte_gas01", "starspangban1_256" },
+    { 12853, "cunte_gas01", "sw_floor1" },
+    { 12853, "cunte_gas01", "sw_garagewin" },
+    { 12853, "cunte_gas01", "sw_gasshelves" },
+    { 12853, "cunte_gas01", "sw_gasso" },
+    { 12853, "cunte_gas01", "sw_gasso2" },
+    { 12853, "cunte_gas01", "sw_gasstation1" },
+    { 3306, "cunte_house1", "darkplanks1" },
+    { 3306, "cunte_house1", "des_ntwnwall1" },
+    { 3306, "cunte_house1", "garargeb2" },
+    { 3306, "cunte_house1", "pinkfence_law" },
+    { 3306, "cunte_house1", "sw_patiodoors" },
+    { 3306, "cunte_house1", "tilered" },
+    { 3306, "cunte_house1", "woodwalllight2256" },
+    { 3306, "cunte_house1", "ws_boxhouse_wins6" },
+    { 12843, "cunte_lik", "crencouwall1" },
+    { 12843, "cunte_lik", "des_rosigns1" },
+    { 12843, "cunte_lik", "LAstripmall1" },
+    { 12848, "cunte_town1", "lhav_shops5new" },
+    { 12848, "cunte_town1", "newall9-1" },
+    { 12848, "cunte_town1", "pinkshop" },
+    { 12848, "cunte_town1", "rufwallb256hi" },
+    { 12848, "cunte_town1", "sjmbhus1" },
+    { 12848, "cunte_town1", "sprunk_temp" },
+    { 12848, "cunte_town1", "sw_bakers01" },
+    { 12848, "cunte_town1", "sw_bakers02" },
+    { 12848, "cunte_town1", "sw_lickter" },
+    { 12848, "cunte_town1", "wall256hi" },
+    { 12848, "cunte_town1", "ws_doubledoor3" },
+    { 13096, "cunte_wires", "inwindow1shdw" },
+    { 13096, "cunte_wires", "sw_skids_a" },
+    { 13096, "cunte_wires", "telewireslong2" },
+    { 17025, "cuntrock", "cliffmid1" },
+    { 17025, "cuntrock", "rock_country128" },
+    { 18225, "cuntrockcs_t", "cliffmid4" },
+    { 18552, "cunts_gunclub", "ws_corr_1_tan" },
+    { 17036, "cuntwbt", "bluemetal05" },
+    { 17036, "cuntwbt", "carparkdoor1_256" },
+    { 17036, "cuntwbt", "corugwall2-1" },
+    { 17036, "cuntwbt", "des_woodslats1" },
+    { 17036, "cuntwbt", "des_woodslats2" },
+    { 18234, "cuntwbtxcs_t", "des_cornices" },
+    { 18234, "cuntwbtxcs_t", "des_door2" },
+    { 18234, "cuntwbtxcs_t", "des_thfdoor" },
+    { 18234, "cuntwbtxcs_t", "mp_pinemedical" },
+    { 18234, "cuntwbtxcs_t", "offwhitebrix" },
+    { 18237, "cuntwbtzzcs_t", "corugwallnew6_128" },
+    { 18237, "cuntwbtzzcs_t", "des_dinerwall" },
+    { 18237, "cuntwbtzzcs_t", "metaldoor01_256" },
+    { 17049, "cuntwf", "hay" },
+    { 17049, "cuntwf", "sw_vane01" },
+    { 17049, "cuntwf", "sw_walltile" },
+    { 17049, "cuntwf", "ws_corrugated3" },
+    { 17079, "cuntwland", "forestfloor4" },
+    { 17079, "cuntwland", "forest_rocks" },
+    { 17079, "cuntwland", "grass10dirt" },
+    { 17079, "cuntwland", "grass10forest" },
+    { 17079, "cuntwland", "grassshort2long256" },
+    { 17079, "cuntwland", "grasstype3dirt" },
+    { 17079, "cuntwland", "grasstype4-3" },
+    { 17079, "cuntwland", "grasstype4_staw" },
+    { 17079, "cuntwland", "grasstype5" },
+    { 17079, "cuntwland", "grasstype5_4" },
+    { 17079, "cuntwland", "roadblendcunt" },
+    { 17079, "cuntwland", "rocktq128blender" },
+    { 17079, "cuntwland", "rocktq128_dirt" },
+    { 17079, "cuntwland", "stones256" },
+    { 17079, "cuntwland", "ws_freeway4" },
+    { 17079, "cuntwland", "ws_sub_pen_conc2" },
+    { 17079, "cuntwland", "ws_tunnelwall1" },
+    { 17079, "cuntwland", "ws_tunnelwall2" },
+    { 17092, "cuntwlandcarparks", "sw_sandgrass4" },
+    { 17081, "cuntwlandcent", "grass10des_dirt2" },
+    { 17081, "cuntwlandcent", "grass10_grassdeep1" },
+    { 17081, "cuntwlandcent", "grass10_stones256" },
+    { 17081, "cuntwlandcent", "grassdeep1" },
+    { 17081, "cuntwlandcent", "grasstype510" },
+    { 17081, "cuntwlandcent", "grasstype510_10" },
+    { 17081, "cuntwlandcent", "RAIL_stones256" },
+    { 17081, "cuntwlandcent", "rocktq128_forestblend2" },
+    { 17081, "cuntwlandcent", "sw_dirt01_forestblend" },
+    { 17081, "cuntwlandcent", "ws_traingravel" },
+    { 17101, "cuntwlandse", "cw2_weeroad1" },
+    { 17101, "cuntwlandse", "des_crackeddirt1" },
+    { 17101, "cuntwlandse", "grass4dirtytrans" },
+    { 17101, "cuntwlandse", "grassgrnbrnx256" },
+    { 17101, "cuntwlandse", "grasstype5_dirt" },
+    { 17101, "cuntwlandse", "newcrop3" },
+    { 17075, "cuntwlandwest", "cw2_mounttrailblank" },
+    { 17075, "cuntwlandwest", "desertstones256forestmix" },
+    { 17075, "cuntwlandwest", "des_dirtgrassmixb" },
+    { 17075, "cuntwlandwest", "des_dirtgrassmixbmp" },
+    { 17075, "cuntwlandwest", "des_dirtgrassmixc" },
+    { 17075, "cuntwlandwest", "des_dirtgrassmix_grass4" },
+    { 17075, "cuntwlandwest", "forestfloor3_forest" },
+    { 17075, "cuntwlandwest", "forestfloor_sones256" },
+    { 17075, "cuntwlandwest", "grasstype10_4blend" },
+    { 17075, "cuntwlandwest", "grasstype4blndtodirt" },
+    { 17075, "cuntwlandwest", "mountainskree_stones256" },
+    { 18239, "cuntwrestcs_t", "des_metalwinwee" },
+    { 18239, "cuntwrestcs_t", "mp_Jrest" },
+    { 18239, "cuntwrestcs_t", "shopdoor02_law" },
+    { 17146, "cuntwroad", "Tar_1line256HVblend2" },
+    { 17146, "cuntwroad", "Tar_1line256HVblenddrtdot" },
+    { 17146, "cuntwroad", "Tar_1line256HVgtravel" },
+    { 17146, "cuntwroad", "Tar_1line256HVlightsand" },
+    { 17146, "cuntwroad", "Tar_blenddrtwhiteline" },
+    { 17146, "cuntwroad", "Tar_lineslipway" },
+    { 17146, "cuntwroad", "ws_drain_small" },
+    { 18233, "cuntwshopscs_t", "des_adobedoor3" },
+    { 18233, "cuntwshopscs_t", "des_baitshop" },
+    { 18233, "cuntwshopscs_t", "des_baitsign" },
+    { 18233, "cuntwshopscs_t", "des_ntwnwin2" },
+    { 18233, "cuntwshopscs_t", "des_ntwnwin5" },
+    { 18233, "cuntwshopscs_t", "des_oldtinroof" },
+    { 18233, "cuntwshopscs_t", "des_shopsigns1" },
+    { 18233, "cuntwshopscs_t", "orange1" },
+    { 18233, "cuntwshopscs_t", "snpdwhit3" },
+    { 18233, "cuntwshopscs_t", "vgngewall1_256" },
+    { 2958, "cut_beer", "bottles_kb1" },
+    { 18264, "cw2_cinemablockcs_t", "corporate2" },
+    { 18264, "cw2_cinemablockcs_t", "cw_movieboard" },
+    { 18264, "cw2_cinemablockcs_t", "GB_good men" },
+    { 18264, "cw2_cinemablockcs_t", "GB_Last of Mullets" },
+    { 18264, "cw2_cinemablockcs_t", "LAglaswall1" },
+    { 18264, "cw2_cinemablockcs_t", "newall9" },
+    { 18264, "cw2_cinemablockcs_t", "pcut_band_law" },
+    { 18264, "cw2_cinemablockcs_t", "sw_storewin03" },
+    { 17067, "cw2_logcabins", "cw2_logwall" },
+    { 17067, "cw2_logcabins", "sw_cabinroof" },
+    { 17067, "cw2_logcabins", "trail_win3" },
+    { 17067, "cw2_logcabins", "wilsd_05_la" },
+    { 18261, "cw2_photoblockcs_t", "cw_loansign" },
+    { 18261, "cw2_photoblockcs_t", "sw_wallbrick_04" },
+    { 17064, "cw2_storesnstuff", "comptdoor4" },
+    { 17064, "cw2_storesnstuff", "des_garagedoor1" },
+    { 17064, "cw2_storesnstuff", "LAtranswall1" },
+    { 17012, "cwestfac", "vgnwrehse2_256" },
+    { 17012, "cwestfac", "vgnwrehse3_256" },
+    { 17012, "cwestfac", "vgnwrehse4_256" },
+    { 17012, "cwestfac", "vnghse6_128" },
+    { 17324, "cwsbarn", "des_bullboards" },
+    { 17324, "cwsbarn", "des_ranchwall2" },
+    { 17324, "cwsbarn", "des_redslats" },
+    { 18216, "cw_changemecs_t", "plasfence1_256" },
+    { 18216, "cw_changemecs_t", "plasfence2_256" },
+    { 18250, "cw_junkbuildcs_t", "Was_graffiti" },
+    { 18250, "cw_junkbuildcs_t", "Was_scrpyd_baler_locker" },
+    { 18250, "cw_junkbuildcs_t", "Was_scrpyd_baler_wallgrime" },
+    { 18250, "cw_junkbuildcs_t", "Was_scrpyd_bodywk_edge" },
+    { 18250, "cw_junkbuildcs_t", "Was_scrpyd_fence_wd_stain" },
+    { 18250, "cw_junkbuildcs_t", "Was_scrpyd_hngr_jsts" },
+    { 18250, "cw_junkbuildcs_t", "Was_scrpyd_rustmetal" },
+    { 18250, "cw_junkbuildcs_t", "Was_scrpyd_shack" },
+    { 18250, "cw_junkbuildcs_t", "Was_scrpyd_shack_wall" },
+    { 18250, "cw_junkbuildcs_t", "Was_scrpyd_shack_win" },
+    { 18250, "cw_junkbuildcs_t", "Was_scrpyd_sign_alv" },
+    { 18250, "cw_junkbuildcs_t", "Was_scrpyd_switch" },
+    { 18250, "cw_junkbuildcs_t", "Was_scrpyd_wall_crgated" },
+    { 18246, "cw_junkyard2cs_t", "Was_scrpyd_carbits" },
+    { 18246, "cw_junkyard2cs_t", "Was_scrpyd_carhood" },
+    { 18246, "cw_junkyard2cs_t", "Was_scrpyd_cyl_head" },
+    { 18246, "cw_junkyard2cs_t", "Was_scrpyd_door_dbl_grey" },
+    { 18246, "cw_junkyard2cs_t", "Was_scrpyd_engine" },
+    { 18246, "cw_junkyard2cs_t", "Was_scrpyd_tires" },
+    { 18246, "cw_junkyard2cs_t", "Was_scrpyd_trailer" },
+    { 18246, "cw_junkyard2cs_t", "Was_scrpyd_trailer_door" },
+    { 18246, "cw_junkyard2cs_t", "Was_scrpyd_trailer_edge" },
+    { 18246, "cw_junkyard2cs_t", "Was_scrpyd_trailer_front" },
+    { 18246, "cw_junkyard2cs_t", "Was_scrpyd_trailer_hatch" },
+    { 18246, "cw_junkyard2cs_t", "Was_scrpyd_trailer_join" },
+    { 18246, "cw_junkyard2cs_t", "Was_scrpyd_trailer_stripe" },
+    { 18246, "cw_junkyard2cs_t", "Was_scrpyd_trailer_win_side" },
+    { 18249, "cw_junkyardccs_t", "Was_scrpyd_shredder_side" },
+    { 18249, "cw_junkyardccs_t", "Was_scrpyd_trk_contnr_sd" },
+    { 18247, "cw_junkyarddigcs_t", "Was_scrpyd_axle_end" },
+    { 18247, "cw_junkyarddigcs_t", "Was_scrpyd_crane" },
+    { 18247, "cw_junkyarddigcs_t", "Was_scrpyd_crane_back" },
+    { 18247, "cw_junkyarddigcs_t", "Was_scrpyd_crane_cab" },
+    { 18247, "cw_junkyarddigcs_t", "Was_scrpyd_crane_hyd" },
+    { 18247, "cw_junkyarddigcs_t", "Was_scrpyd_step" },
+    { 18245, "cw_junkyardmachin", "Was_scrpyd_baler_decking" },
+    { 18245, "cw_junkyardmachin", "Was_scrpyd_baler_gen" },
+    { 18245, "cw_junkyardmachin", "Was_scrpyd_baler_gen_ed" },
+    { 18245, "cw_junkyardmachin", "Was_scrpyd_baler_gen_rvt" },
+    { 18245, "cw_junkyardmachin", "Was_scrpyd_baler_locker_edge" },
+    { 18245, "cw_junkyardmachin", "Was_scrpyd_baler_pipes" },
+    { 18245, "cw_junkyardmachin", "Was_scrpyd_baler_pit_dbris" },
+    { 18245, "cw_junkyardmachin", "Was_scrpyd_baler_stepfront" },
+    { 18245, "cw_junkyardmachin", "Was_scrpyd_light_yellow" },
+    { 18245, "cw_junkyardmachin", "Was_scrpyd_wall_grn" },
+    { 18245, "cw_junkyardmachin", "Was_scrpyd_wall_grn_skirt" },
+    { 17041, "cw_motel1", "des_motelsigns1" },
+    { 17041, "cw_motel1", "des_motelsigns3" },
+    { 17041, "cw_motel1", "des_motelwall4" },
+    { 17041, "cw_motel1", "des_motelwall5" },
+    { 18242, "cw_motel2cs_t", "des_motelsigns2" },
+    { 18242, "cw_motel2cs_t", "des_motelwall1" },
+    { 18242, "cw_motel2cs_t", "des_motelwall2" },
+    { 18242, "cw_motel2cs_t", "des_motelwall3" },
+    { 18201, "cw_roofbitcs_t", "aroofbit1" },
+    { 18201, "cw_roofbitcs_t", "aroofbit2" },
+    { 18201, "cw_roofbitcs_t", "aroofbit3" },
+    { 18201, "cw_roofbitcs_t", "aroofbit4" },
+    { 18201, "cw_roofbitcs_t", "aroofbit5" },
+    { 18201, "cw_roofbitcs_t", "aroofbit6" },
+    { 18201, "cw_roofbitcs_t", "aroofbit7" },
+    { 18201, "cw_roofbitcs_t", "aroofbit8" },
+    { 18201, "cw_roofbitcs_t", "aroofbit9" },
+    { 18201, "cw_roofbitcs_t", "aroofbit91" },
+    { 18201, "cw_roofbitcs_t", "aroofbit92" },
+    { 18241, "cw_tempstuffcs_t", "bluemetal03" },
+    { 18241, "cw_tempstuffcs_t", "des_metaldoor1" },
+    { 18241, "cw_tempstuffcs_t", "roof11new" },
+    { 18232, "cw_truckstopcs_t", "des_adobewall3" },
+    { 18232, "cw_truckstopcs_t", "des_roswin3" },
+    { 18232, "cw_truckstopcs_t", "des_wigwamdoor" },
+    { 18232, "cw_truckstopcs_t", "dinerwel" },
+    { 18232, "cw_truckstopcs_t", "wlinebits_law" },
+    { 18232, "cw_truckstopcs_t", "ws_xenon_old_dirty" },
+    { 3193, "cxref_desert", "BIG_COCK" },
+    { 3193, "cxref_desert", "Bow_Roofvent" },
+    { 3193, "cxref_desert", "des_bywall1" },
+    { 3193, "cxref_desert", "des_rustpanel" },
+    { 3193, "cxref_desert", "des_wigwam" },
+    { 3193, "cxref_desert", "drvin_metal" },
+    { 3193, "cxref_desert", "grilldoors1nt" },
+    { 3193, "cxref_desert", "pierplanks_128" },
+    { 3193, "cxref_desert", "swall3256" },
+    { 3193, "cxref_desert", "sw_barnfence01" },
+    { 3193, "cxref_desert", "sw_cabwin01" },
+    { 3193, "cxref_desert", "sw_woodslat01" },
+    { 3336, "cxref_freeway", "mp_aldeasign" },
+    { 3336, "cxref_freeway", "roadsback01_LA" },
+    { 3246, "cxref_oldwest", "des_ntwndoor2" },
+    { 3246, "cxref_oldwest", "des_ntwnwin3" },
+    { 3246, "cxref_oldwest", "des_ntwnwin6" },
+    { 3187, "cxref_quarrytest", "gs_barge1" },
+    { 3187, "cxref_quarrytest", "gs_barge2" },
+    { 3187, "cxref_quarrytest", "gs_door1" },
+    { 3187, "cxref_quarrytest", "gs_iron1" },
+    { 3187, "cxref_quarrytest", "gs_iron2" },
+    { 3187, "cxref_quarrytest", "gs_sign1" },
+    { 3187, "cxref_quarrytest", "gs_wind1" },
+    { 3187, "cxref_quarrytest", "gs_wood1" },
+    { 3187, "cxref_quarrytest", "gs_wood2" },
+    { 3355, "cxref_savhus", "des_brick1" },
+    { 3355, "cxref_savhus", "des_bywall2" },
+    { 3355, "cxref_savhus", "sw_wind07" },
+    { 3286, "cxrf_indstuff", "des_bytower1" },
+    { 3292, "cxrf_payspray", "Alumox64b" },
+    { 3292, "cxrf_payspray", "compressor" },
+    { 3292, "cxrf_payspray", "newindow4" },
+    { 3292, "cxrf_payspray", "panel2_64a" },
+    { 3292, "cxrf_payspray", "sf_spray1" },
+    { 3292, "cxrf_payspray", "sf_spraydoor1" },
+    { 3292, "cxrf_payspray", "walldirtynewa256" },
+    { 3292, "cxrf_payspray", "wallwasdrk128" },
+    { 3292, "cxrf_payspray", "welder" },
+    { 16338, "dam_genroom", "dam_genpanel" },
+    { 16338, "dam_genroom", "dam_genrail" },
+    { 16338, "dam_genroom", "dam_genwin" },
+    { 16338, "dam_genroom", "dam_terazzoedge" },
+    { 16338, "dam_genroom", "dam_turbine" },
+    { 16338, "dam_genroom", "des_dam_wall" },
+    { 16338, "dam_genroom", "ws_drain" },
+    { 1556, "dave_door_2a", "casinodoor1_128" },
+    { 1557, "dave_door_2b", "miragedoor1_256" },
+    { 1555, "dave_door_2c", "vgnhsedor1_256" },
+    { 3092, "deadcopx", "ropes01" },
+    { 3092, "deadcopx", "tied_cop" },
+    { 2905, "dead_mantxd", "billyblood" },
+    { 3866, "dem1_sfxrf", "ws_blistered1" },
+    { 3866, "dem1_sfxrf", "ws_demolishwall2" },
+    { 3866, "dem1_sfxrf", "ws_demolishwall3small" },
+    { 3866, "dem1_sfxrf", "ws_demolishwins1" },
+    { 3866, "dem1_sfxrf", "ws_flooredge" },
+    { 3866, "dem1_sfxrf", "ws_oldoffice3" },
+    { 3866, "dem1_sfxrf", "ws_walledge" },
+    { 3887, "dem4_sfxrf", "ws_apartmenttan1" },
+    { 3887, "dem4_sfxrf", "ws_blistered1smoked" },
+    { 3887, "dem4_sfxrf", "ws_classyshop2" },
+    { 3887, "dem4_sfxrf", "ws_demolishwall4_small" },
+    { 3887, "dem4_sfxrf", "ws_peeling_ceiling2_smoked" },
+    { 10984, "demolished1_sfse", "ws_rubble1b" },
+    { 16175, "des2vegas_join", "des_redrockbot" },
+    { 16175, "des2vegas_join", "des_redrockmid" },
+    { 16175, "des2vegas_join", "des_rocky1" },
+    { 16175, "des2vegas_join", "des_scrub1_dirt1" },
+    { 16175, "des2vegas_join", "rocktbrn_dirt2" },
+    { 16175, "des2vegas_join", "vgs_rockbot1a" },
+    { 16175, "des2vegas_join", "vgs_rockmid1a" },
+    { 16110, "desert", "des_redrock1" },
+    { 16110, "desert", "des_redrock2" },
+    { 11488, "desertdam", "dam_statue" },
+    { 3330, "desertmisc", "des_radiomast" },
+    { 16013, "desn2_alphabits", "des_powerlines" },
+    { 16395, "desn2_minestuff", "cw2_mountboards1" },
+    { 16398, "desn2_peckers", "des_cock1" },
+    { 16398, "desn2_peckers", "des_cockbit" },
+    { 16398, "desn2_peckers", "des_cockdanglybit2" },
+    { 16398, "desn2_peckers", "des_cockhead" },
+    { 16398, "desn2_peckers", "pierwall06_law" },
+    { 16398, "desn2_peckers", "tarp_law" },
+    { 16398, "desn2_peckers", "vgs_shopwall02_128" },
+    { 16388, "desn2_stud", "decorated" },
+    { 16388, "desn2_stud", "des_spreadsig" },
+    { 16388, "desn2_stud", "simplewall256" },
+    { 16360, "desn2_truckstop", "sw_wind17" },
+    { 16360, "desn2_truckstop", "ws_xenon_1" },
+    { 11549, "desn_decocafe", "mp_Jdiner" },
+    { 11549, "desn_decocafe", "wallwhtwind256" },
+    { 11549, "desn_decocafe", "wallwind256" },
+    { 11431, "desn_teepee", "des_tepesign" },
+    { 11464, "desn_trainstuff", "alleydoor1" },
+    { 11464, "desn_trainstuff", "ws_goldengate5" },
+    { 11464, "desn_trainstuff", "ws_tunnelwall2smoked" },
+    { 11545, "desn_truckstop", "ws_xenon_2" },
+    { 11545, "desn_truckstop", "ws_xenon_3" },
+    { 13598, "destructo", "exploder1" },
+    { 13598, "destructo", "knifeAfterDark" },
+    { 13598, "destructo", "pendantlight_128" },
+    { 13598, "destructo", "redband_64" },
+    { 13598, "destructo", "sjmfnce" },
+    { 13598, "destructo", "sunshinebillboard" },
+    { 13598, "destructo", "vsrbanner" },
+    { 16407, "des_airfieldhus", "burglry_wall1" },
+    { 16407, "des_airfieldhus", "grge_corug1" },
+    { 16407, "des_airfieldhus", "kb_flykiller1" },
+    { 16407, "des_airfieldhus", "plane_cable" },
+    { 16407, "des_airfieldhus", "plane_photos1" },
+    { 16407, "des_airfieldhus", "quar_cranerail" },
+    { 16137, "des_bigearstuff", "dirtyledge_law" },
+    { 3303, "des_bighus", "sw_wind09" },
+    { 16098, "des_boneyard", "roucghstone" },
+    { 16098, "des_boneyard", "roucghstonebrt" },
+    { 16098, "des_boneyard", "Was_meshfence" },
+    { 3278, "des_breakwin1", "des_warewin" },
+    { 16326, "des_byoffice", "des_bywin1" },
+    { 16326, "des_byoffice", "plainwoodenfence1_256" },
+    { 16377, "des_byofficeint", "blak_1" },
+    { 16377, "des_byofficeint", "hectics_text" },
+    { 16377, "des_byofficeint", "ufo_pics2" },
+    { 16377, "des_byofficeint", "water_cool1" },
+    { 16377, "des_byofficeint", "water_cool2" },
+    { 16102, "des_cen", "desert_1line256" },
+    { 16102, "des_cen", "desert_1linetar" },
+    { 16102, "des_cen", "desstones_dirt1" },
+    { 16102, "des_cen", "des_dirttrackl" },
+    { 16102, "des_cen", "des_geyser" },
+    { 16102, "des_cen", "des_ripplsand" },
+    { 16102, "des_cen", "des_rocky1_dirt1" },
+    { 16102, "des_cen", "des_scrub1" },
+    { 16102, "des_cen", "sandgrnd128" },
+    { 11425, "des_clifftown", "des_adobedoor2" },
+    { 11425, "des_clifftown", "des_adobewall1" },
+    { 11425, "des_clifftown", "des_adobewin1" },
+    { 11425, "des_clifftown", "des_adobewin2" },
+    { 11425, "des_clifftown", "des_adobewin3" },
+    { 11425, "des_clifftown", "des_cemgates" },
+    { 11425, "des_clifftown", "des_damcamper" },
+    { 11425, "des_clifftown", "des_shfront1" },
+    { 11425, "des_clifftown", "des_shopwin1" },
+    { 11425, "des_clifftown", "ros_thwin1" },
+    { 16132, "des_cn2_dam", "des_dam_detail1" },
+    { 16132, "des_cn2_dam", "des_dam_wins" },
+    { 16364, "des_damquay", "des_creamshopdoor" },
+    { 16364, "des_damquay", "pierdoor01_law" },
+    { 16364, "des_damquay", "sw_dinewin" },
+    { 11499, "des_dinerw", "gate1_LAe" },
+    { 16271, "des_factory", "corr_2_plaintiledblue" },
+    { 16271, "des_factory", "des_facwin" },
+    { 16271, "des_factory", "dish_cylinder_a" },
+    { 16271, "des_factory", "sm_quarry_conv_belt_empty" },
+    { 16271, "des_factory", "sm_quarry_crusher1" },
+    { 16021, "des_geyser", "des_geywin1" },
+    { 16021, "des_geyser", "sjmbigold1" },
+    { 16387, "des_gunclub", "woodenpanels256" },
+    { 16008, "des_n", "des_1lineend" },
+    { 16008, "des_n", "des_roadedge1" },
+    { 16008, "des_n", "drvin_ground1" },
+    { 16008, "des_n", "greycrossing" },
+    { 16008, "des_n", "motocross_256" },
+    { 16008, "des_n", "pavebsandend" },
+    { 16037, "des_nbridge", "girder2_red_64HV" },
+    { 16103, "des_ne", "des_dirt2stones" },
+    { 16103, "des_ne", "des_dirtgravel" },
+    { 16103, "des_ne", "des_dirttrackx" },
+    { 16103, "des_ne", "des_oldrunway" },
+    { 16103, "des_ne", "des_oldrunwayblend" },
+    { 16103, "des_ne", "des_panelconc" },
+    { 16103, "des_ne", "des_yelrock" },
+    { 16103, "des_ne", "Tar_venturasjoin" },
+    { 16103, "des_ne", "venturas_fwend" },
+    { 16103, "des_ne", "vgs_rockwall01_128" },
+    { 16010, "des_nstuff", "des_metalwinbig" },
+    { 16011, "des_ntown", "des_creamshopwin" },
+    { 16011, "des_ntown", "des_ntwndoor1" },
+    { 16011, "des_ntown", "des_ntwndoor3" },
+    { 16011, "des_ntown", "des_ntwnskirt1" },
+    { 16011, "des_ntown", "des_ntwnwin4" },
+    { 11429, "des_nw", "des_grass2dirt1" },
+    { 11429, "des_nw", "des_grass2scrub" },
+    { 11429, "des_nw", "des_roadedge2" },
+    { 11506, "des_nw2", "cuntroad01_law" },
+    { 11506, "des_nw2", "des_dirt2gygrass" },
+    { 11496, "des_nwstuff", "brdwalkwater_la" },
+    { 11450, "des_nwtown", "des_greendoor" },
+    { 11450, "des_nwtown", "des_greenwin" },
+    { 11450, "des_nwtown", "des_hotelsigns" },
+    { 11450, "des_nwtown", "des_nwmed" },
+    { 11450, "des_nwtown", "des_nwwatower" },
+    { 11450, "des_nwtown", "des_woodshopdoor1" },
+    { 11450, "des_nwtown", "des_woodshopwin1" },
+    { 11450, "des_nwtown", "gymtop1b_LAe" },
+    { 11450, "des_nwtown", "gymtop1c_LAe" },
+    { 11450, "des_nwtown", "gymtop1_LAe" },
+    { 11450, "des_nwtown", "mp_cnbarbers" },
+    { 11451, "des_nwtownpolice", "des_sheriffsign" },
+    { 11449, "des_nwtownw", "des_loungesign" },
+    { 11449, "des_nwtownw", "des_rosmot1" },
+    { 16087, "des_oilfield", "des_reftower2" },
+    { 16055, "des_quarry", "desertgravel256" },
+    { 16055, "des_quarry", "desgrns256" },
+    { 16055, "des_quarry", "des_quarryrd" },
+    { 16055, "des_quarry", "des_quarryrdl" },
+    { 16055, "des_quarry", "des_quarryrdr" },
+    { 16055, "des_quarry", "des_rockyfill" },
+    { 16055, "des_quarry", "lasdkcrtgr1111" },
+    { 16055, "des_quarry", "lasdkcrtgr1ssss" },
+    { 16071, "des_quarrybelts", "sjmlawarwall5" },
+    { 16071, "des_quarrybelts", "sm_quarry_belt_bad" },
+    { 16071, "des_quarrybelts", "sm_quarry_conv_belt" },
+    { 16071, "des_quarrybelts", "sm_quarry_crusher2" },
+    { 16071, "des_quarrybelts", "sm_quarry_handrail" },
+    { 16076, "des_quarrybits", "redvertical_64HV" },
+    { 16076, "des_quarrybits", "sm_crusher_rollers" },
+    { 16076, "des_quarrybits", "sm_quarry_Rusty" },
+    { 16328, "des_quarrycrane", "ws_cranehook" },
+    { 11490, "des_ranch", "des_logwall" },
+    { 11490, "des_ranch", "des_ranchwin" },
+    { 11490, "des_ranch", "des_trellis" },
+    { 11490, "des_ranch", "newindow11128" },
+    { 16213, "des_s", "des_pave_trackstart" },
+    { 16109, "des_se1", "Tar_2line128" },
+    { 16232, "des_se2", "des_dirt2dedgrass" },
+    { 16234, "des_se3", "grasstype5_desdirt" },
+    { 11469, "des_steakhouse", "des_bull" },
+    { 11469, "des_steakhouse", "des_bullheid" },
+    { 11469, "des_steakhouse", "des_bullsign" },
+    { 16006, "des_stownmain1", "des_roswin4" },
+    { 16006, "des_stownmain1", "des_thwin2" },
+    { 16005, "des_stownmain2", "des_roswin2" },
+    { 16005, "des_stownmain2", "sw_door19" },
+    { 16385, "des_stownmain3", "newall11-1" },
+    { 16067, "des_stownmots1", "des_bowlingsig" },
+    { 16067, "des_stownmots1", "des_rosigns2" },
+    { 16067, "des_stownmots1", "kb_diner_2b" },
+    { 16067, "des_stownmots1", "LAtranswall2" },
+    { 16069, "des_stownstrip1", "sw_metalgate1" },
+    { 16064, "des_stownstrip2", "kingothering" },
+    { 16064, "des_stownstrip2", "yellowall_LA" },
+    { 16434, "des_stwnsigns1", "des_banksign" },
+    { 11430, "des_sw", "pav_brngrass" },
+    { 11430, "des_sw", "Tar_1line256HVtodirt" },
+    { 16136, "des_telescopestuff", "carparkdoor3_256" },
+    { 16136, "des_telescopestuff", "dish_holemetal_t" },
+    { 16136, "des_telescopestuff", "dish_panel_B" },
+    { 16136, "des_telescopestuff", "dish_panel_c" },
+    { 16136, "des_telescopestuff", "dish_roundbit_b" },
+    { 16136, "des_telescopestuff", "dish_strut_t" },
+    { 16136, "des_telescopestuff", "poshentrance2_256" },
+    { 16136, "des_telescopestuff", "stoneclad1" },
+    { 16136, "des_telescopestuff", "ws_palebrickwall1" },
+    { 16023, "des_trainstuff", "metpat64shadow" },
+    { 16023, "des_trainstuff", "railxing3" },
+    { 16023, "des_trainstuff", "ws_stoneblock" },
+    { 16060, "des_trees", "Newtreed256" },
+    { 16060, "des_trees", "sm_bark_light" },
+    { 16060, "des_trees", "veg_bevtreebase" },
+    { 16146, "des_ufoinn", "clukpost1_LAe2" },
+    { 16146, "des_ufoinn", "des_probesign" },
+    { 16146, "des_ufoinn", "electricbox256" },
+    { 11484, "des_wdam", "dam_panel" },
+    { 11471, "des_wtownmain", "orange2" },
+    { 3426, "des_xoilfield", "oilband_64" },
+    { 1559, "diamond", "CJ_W_GRAD" },
+    { 1970, "dinerseat1", "diner_seat1" },
+    { 1970, "dinerseat1", "diner_tbl1" },
+    { 1968, "dinerseat2", "diner_tbl2" },
+    { 1968, "dinerseat2", "donut_seat1" },
+    { 3595, "dingbat01_la", "bambowal1_LA" },
+    { 3595, "dingbat01_la", "comptwall20" },
+    { 3595, "dingbat01_la", "dingwin01_LA" },
+    { 3595, "dingbat01_la", "dingwin02_LA" },
+    { 3595, "dingbat01_la", "dingwin03_LA" },
+    { 3595, "dingbat01_la", "LApinkwall1" },
+    { 3595, "dingbat01_la", "mosaic1_LAwn" },
+    { 13633, "dirtouter", "ahbobo_1" },
+    { 13633, "dirtouter", "AH_heat" },
+    { 13633, "dirtouter", "AH_homiessharp" },
+    { 13662, "dirtrack", "AH_chevron" },
+    { 13662, "dirtrack", "ah_ramp" },
+    { 13662, "dirtrack", "bplasticsack" },
+    { 13662, "dirtrack", "plasticsack" },
+    { 13631, "dirtstad", "andymonkey" },
+    { 1972, "display1", "kb_display1" },
+    { 5154, "dkcargoshp_las2", "alarm_64" },
+    { 5154, "dkcargoshp_las2", "bandingblue_64" },
+    { 5154, "dkcargoshp_las2", "boatrailing_128" },
+    { 5154, "dkcargoshp_las2", "boatside2_256" },
+    { 5154, "dkcargoshp_las2", "cargodoor_128" },
+    { 5154, "dkcargoshp_las2", "Diamondp64" },
+    { 5154, "dkcargoshp_las2", "green_64" },
+    { 5154, "dkcargoshp_las2", "jettyfloor02" },
+    { 5154, "dkcargoshp_las2", "mp_cellwalla_256" },
+    { 5154, "dkcargoshp_las2", "mp_cellwall_256" },
+    { 5154, "dkcargoshp_las2", "wallbluetinge256" },
+    { 12932, "dk_midbuilds", "healthcen02_256" },
+    { 13744, "docg01alfa_lahills", "Helipad_H" },
+    { 13744, "docg01alfa_lahills", "plaster256i" },
+    { 13724, "docg01_lahills", "ab_tile2" },
+    { 13724, "docg01_lahills", "Bow_sub_decortop" },
+    { 13724, "docg01_lahills", "chr_flags_256" },
+    { 13724, "docg01_lahills", "glassblock4_law" },
+    { 13724, "docg01_lahills", "marbletile8b" },
+    { 13724, "docg01_lahills", "ston10S" },
+    { 13724, "docg01_lahills", "sw_mansionwin" },
+    { 3621, "dockcargo1_las", "dt_ceiling1" },
+    { 3621, "dockcargo1_las", "lasdkcrtgr1" },
+    { 3621, "dockcargo1_las", "lasdkcrtgr11" },
+    { 3621, "dockcargo1_las", "lasdkcrtgr111" },
+    { 3621, "dockcargo1_las", "lasdkcrtgr1s" },
+    { 3621, "dockcargo1_las", "lasdkcrtgr1ss" },
+    { 3621, "dockcargo1_las", "lasdkcrtgr1sss" },
+    { 3621, "dockcargo1_las", "meshwiny" },
+    { 3621, "dockcargo1_las", "sanpedock1" },
+    { 3621, "dockcargo1_las", "sanpedock2" },
+    { 3621, "dockcargo1_las", "sjmpostback" },
+    { 3564, "dockcargo2_las", "lastran1" },
+    { 3564, "dockcargo2_las", "lastran2" },
+    { 3564, "dockcargo2_las", "lastran3" },
+    { 3564, "dockcargo2_las", "lastran4" },
+    { 3564, "dockcargo2_las", "lastran6" },
+    { 3564, "dockcargo2_las", "lastran7" },
+    { 3564, "dockcargo2_las", "lastran8" },
+    { 3564, "dockcargo2_las", "lastrk1" },
+    { 3564, "dockcargo2_las", "lastrk1aa" },
+    { 3564, "dockcargo2_las", "lastrk1bb" },
+    { 3564, "dockcargo2_las", "lastrk2" },
+    { 3564, "dockcargo2_las", "lastrk3" },
+    { 3564, "dockcargo2_las", "lastrk5" },
+    { 3564, "dockcargo2_las", "lastrk7" },
+    { 3564, "dockcargo2_las", "steelgirder_64V" },
+    { 1278, "docklight", "aascaff" },
+    { 10852, "dockroad_sfse", "dt_bmx_grass" },
+    { 10852, "dockroad_sfse", "sf_junction3" },
+    { 10842, "docks2refl_sfse", "support_256" },
+    { 10842, "docks2refl_sfse", "ws_corr_2_blu" },
+    { 10842, "docks2refl_sfse", "ws_drydockdoors" },
+    { 10842, "docks2refl_sfse", "ws_sub_pen_conc3" },
+    { 10842, "docks2refl_sfse", "ws_sub_pen_conc4" },
+    { 5108, "docks2_las2", "concroadslab_256" },
+    { 5108, "docks2_las2", "dukbrid1_LAS" },
+    { 5108, "docks2_las2", "LASLACMA1" },
+    { 5108, "docks2_las2", "sjmndukwal1" },
+    { 5108, "docks2_las2", "sjmndukwal2" },
+    { 10769, "docks2_sfse", "ws_navystation" },
+    { 10769, "docks2_sfse", "ws_traxonconcdirty" },
+    { 5109, "docks_las2", "adockfn3" },
+    { 5109, "docks_las2", "dukbridmet1_LAS" },
+    { 5109, "docks_las2", "meetwalv1" },
+    { 5109, "docks_las2", "sjmndukwal3" },
+    { 14488, "dogsgym", "AH_bgmartiles" },
+    { 14488, "dogsgym", "ah_grnplstr" },
+    { 14488, "dogsgym", "AH_halfcourt" },
+    { 14488, "dogsgym", "AH_stolewindow" },
+    { 14488, "dogsgym", "ah_yelplnks" },
+    { 1607, "dolphin", "dolphin" },
+    { 9614, "donut_sfw", "donut1_sfw" },
+    { 9614, "donut_sfw", "donut2_sfw" },
+    { 9614, "donut_sfw", "donut3_sfw" },
+    { 9614, "donut_sfw", "grass128hv_blend_" },
+    { 9614, "donut_sfw", "tuff_nut2" },
+    { 9614, "donut_sfw", "TUFF_nut3" },
+    { 9614, "donut_sfw", "ws_alley2_128_dirt" },
+    { 2221, "donut_tray", "bagel_rb" },
+    { 2221, "donut_tray", "coffeetop_rb" },
+    { 2221, "donut_tray", "cupside_rb" },
+    { 2221, "donut_tray", "donut2_rb" },
+    { 2221, "donut_tray", "donut3_rb" },
+    { 2221, "donut_tray", "muffbot_rb" },
+    { 2221, "donut_tray", "mufftop_rb" },
+    { 2221, "donut_tray", "rustycoffeerap_rb" },
+    { 2221, "donut_tray", "rustynap_rb" },
+    { 2221, "donut_tray", "rustyside_rb" },
+    { 4877, "downtown1_las", "ablndwall1_LAE" },
+    { 4877, "downtown1_las", "GB_nastybar14" },
+    { 4877, "downtown1_las", "hotdoor01_law" },
+    { 4880, "downtown3_las", "downtshop1_LAn" },
+    { 4880, "downtown3_las", "downtshop3_LAn" },
+    { 4880, "downtown3_las", "gz_lawbuilda_3" },
+    { 4880, "downtown3_las", "gz_lawbuilda_4" },
+    { 4880, "downtown3_las", "gz_lawbuilda_5" },
+    { 4887, "downtown_las", "decogranite_la" },
+    { 4887, "downtown_las", "holpac02_law" },
+    { 4887, "downtown_las", "nwdwntwn1_LAS" },
+    { 4887, "downtown_las", "nwdwntwn2_LAS" },
+    { 4887, "downtown_las", "nwdwntwn5_LAS" },
+    { 4887, "downtown_las", "pershing1_LAn" },
+    { 4887, "downtown_las", "snpdrlwar1" },
+    { 4887, "downtown_las", "snpedwar4" },
+    { 4887, "downtown_las", "ws_glassnbrassdoor" },
+    { 11014, "drivingschool_sfse", "ws_turningtricks1_small" },
+    { 13654, "drkpoly", "asandockw4" },
+    { 14420, "dr_gsbits", "ah_corn1" },
+    { 14420, "dr_gsbits", "mp_apt1_frame1" },
+    { 14420, "dr_gsbits", "mp_apt1_frame2" },
+    { 14420, "dr_gsbits", "mp_apt1_frame3" },
+    { 14420, "dr_gsbits", "mp_apt1_frame4" },
+    { 14420, "dr_gsbits", "mp_apt1_pic1" },
+    { 14420, "dr_gsbits", "mp_apt1_pic2" },
+    { 14420, "dr_gsbits", "mp_apt1_pic3" },
+    { 14420, "dr_gsbits", "mp_apt1_pic4" },
+    { 14420, "dr_gsbits", "mp_apt1_pic5" },
+    { 14420, "dr_gsbits", "mp_apt1_pic6" },
+    { 14420, "dr_gsbits", "mp_apt1_pic7" },
+    { 14420, "dr_gsbits", "mp_apt1_pic8" },
+    { 14420, "dr_gsbits", "mp_gs_border" },
+    { 14420, "dr_gsbits", "mp_gs_carpet" },
+    { 14420, "dr_gsbits", "mp_gs_libwall" },
+    { 14420, "dr_gsbits", "mp_gs_rose" },
+    { 14420, "dr_gsbits", "mp_shop_window" },
+    { 14391, "dr_gsmix", "auto_tune2" },
+    { 14391, "dr_gsmix", "chromecabinet01side_128" },
+    { 14391, "dr_gsmix", "chromecabinet01_128" },
+    { 14391, "dr_gsmix", "knobs01" },
+    { 14391, "dr_gsmix", "mixingdesk01" },
+    { 14391, "dr_gsmix", "mixingdesk02" },
+    { 14391, "dr_gsmix", "mixingdesk03" },
+    { 14391, "dr_gsmix", "mixingdesk05" },
+    { 14391, "dr_gsmix", "mixingdesk07" },
+    { 14391, "dr_gsmix", "mixingdesk09" },
+    { 14391, "dr_gsmix", "phones_64" },
+    { 14391, "dr_gsmix", "reel01" },
+    { 14391, "dr_gsmix", "speaker04" },
+    { 14391, "dr_gsmix", "speaker05" },
+    { 14391, "dr_gsmix", "studiomonitor01" },
+    { 14391, "dr_gsmix", "white_128" },
+    { 14387, "dr_gsnew", "ab_Fireplace" },
+    { 14387, "dr_gsnew", "ab_wood_pot" },
+    { 14387, "dr_gsnew", "AH_flroortile12" },
+    { 14387, "dr_gsnew", "cd_tex1" },
+    { 14387, "dr_gsnew", "cd_tex2" },
+    { 14387, "dr_gsnew", "la_flair1" },
+    { 14387, "dr_gsnew", "mp_cloth_subwall" },
+    { 14387, "dr_gsnew", "mp_flowerbush" },
+    { 14387, "dr_gsnew", "mp_gs_border1" },
+    { 14387, "dr_gsnew", "mp_gs_flowerwall" },
+    { 14387, "dr_gsnew", "mp_gs_kitchfloor" },
+    { 14387, "dr_gsnew", "mp_gs_kitchwall" },
+    { 14387, "dr_gsnew", "mp_gs_mud" },
+    { 14387, "dr_gsnew", "mp_gs_pooltiles" },
+    { 14387, "dr_gsnew", "mp_gs_wall" },
+    { 14387, "dr_gsnew", "mp_gs_wall1" },
+    { 14387, "dr_gsnew", "mp_gs_wood" },
+    { 14387, "dr_gsnew", "mp_marble" },
+    { 14387, "dr_gsnew", "mp_stonefloor" },
+    { 14392, "dr_gsstudio", "amp01" },
+    { 14392, "dr_gsstudio", "amp02" },
+    { 14392, "dr_gsstudio", "amp03" },
+    { 14392, "dr_gsstudio", "amp04" },
+    { 14392, "dr_gsstudio", "amp05" },
+    { 14392, "dr_gsstudio", "bcwarlock_256" },
+    { 14392, "dr_gsstudio", "cymbal_128" },
+    { 14392, "dr_gsstudio", "drmstnd1_256" },
+    { 14392, "dr_gsstudio", "drumsideblue128" },
+    { 14392, "dr_gsstudio", "flyingv_256" },
+    { 14392, "dr_gsstudio", "golddisc_128" },
+    { 14392, "dr_gsstudio", "la_flair2" },
+    { 14392, "dr_gsstudio", "lesbass2_128" },
+    { 14392, "dr_gsstudio", "monitors_128" },
+    { 14392, "dr_gsstudio", "rec_mix2" },
+    { 14392, "dr_gsstudio", "rec_mix5" },
+    { 14392, "dr_gsstudio", "rec_mix5b" },
+    { 14392, "dr_gsstudio", "rec_mix5c" },
+    { 14392, "dr_gsstudio", "speaker07" },
+    { 14392, "dr_gsstudio", "stagemic_128" },
+    { 14392, "dr_gsstudio", "studiopanel02" },
+    { 14392, "dr_gsstudio", "woodcabinet01_128" },
+    { 2727, "ds_sign", "CJ_DS_light" },
+    { 4682, "dtbuil1_lan2", "arsebottom" },
+    { 4682, "dtbuil1_lan2", "barbershop_256" },
+    { 4682, "dtbuil1_lan2", "coinlaundry1_256" },
+    { 4682, "dtbuil1_lan2", "greenshop256hi" },
+    { 4682, "dtbuil1_lan2", "greenshoptop1_256" },
+    { 4682, "dtbuil1_lan2", "grocer1_kb256" },
+    { 4682, "dtbuil1_lan2", "jewel03_128" },
+    { 4682, "dtbuil1_lan2", "jewlers1_256" },
+    { 4682, "dtbuil1_lan2", "LAInside_Tracksign1" },
+    { 4682, "dtbuil1_lan2", "LAInside_Tracksign2" },
+    { 4682, "dtbuil1_lan2", "lascourtsc2" },
+    { 4682, "dtbuil1_lan2", "laspedhus2" },
+    { 4682, "dtbuil1_lan2", "laspedhus3" },
+    { 4682, "dtbuil1_lan2", "laspedhus7" },
+    { 4682, "dtbuil1_lan2", "sl_shopwall1" },
+    { 1942, "dum1", "weight4" },
+    { 1654, "dynamite", "blueflt64" },
+    { 1654, "dynamite", "clock64" },
+    { 1654, "dynamite", "redcan" },
+    { 1217, "dynbarrels", "hotcoals_64HV" },
+    { 1217, "dynbarrels", "redallu" },
+    { 1227, "dynbuket", "Metal4_256" },
+    { 1237, "dyncones", "Cone02_64" },
+    { 1211, "dynhydrent", "firehydrant_yell" },
+    { 1208, "dynjunk", "junk_tv2" },
+    { 1208, "dynjunk", "junk_washer1" },
+    { 1293, "dynnewstnd2", "news_128" },
+    { 2925, "dyno_box", "dyno_crate" },
+    { 1216, "dynphn", "phoneboxmiami" },
+    { 1258, "dynpostbx", "mailbox2_64" },
+    { 1258, "dynpostbx", "postbox" },
+    { 1258, "dynpostbx", "white64" },
+    { 1236, "dynrecycle", "bincover_64HV" },
+    { 1236, "dynrecycle", "recycle01_64" },
+    { 1315, "dyntraffic", "Alumox64e" },
+    { 1315, "dyntraffic", "trafficlight_64" },
+    { 1575, "dyn_drugs", "drugs1" },
+    { 1575, "dyn_drugs", "drugs2" },
+    { 1575, "dyn_drugs", "drugs3" },
+    { 1575, "dyn_drugs", "drugs4" },
+    { 1575, "dyn_drugs", "drugs5" },
+    { 1575, "dyn_drugs", "drugs6" },
+    { 1508, "dyn_garage", "CJ_metalDOOR1" },
+    { 1581, "dyn_keycard", "keycard" },
+    { 1488, "dyn_objects", "CJ_bottle3" },
+    { 1574, "dyn_trash", "binend" },
+    { 1574, "dyn_trash", "trash" },
+    { 1552, "dyn_vegas", "vgnfence1_256" },
+    { 17550, "eastbeach09_lae2", "Sprunksign1_LAe2" },
+    { 17550, "eastbeach09_lae2", "sprunkwall1_LAe2" },
+    { 17550, "eastbeach09_lae2", "sprunkwall2_LAe2" },
+    { 17550, "eastbeach09_lae2", "sprunkwall3_LAe2" },
+    { 17550, "eastbeach09_lae2", "sprunkwall4_LAe2" },
+    { 17541, "eastbeach2a_lae2", "airportwind02" },
+    { 17541, "eastbeach2a_lae2", "craproad5_LAe" },
+    { 17541, "eastbeach2a_lae2", "downtwin17" },
+    { 17541, "eastbeach2a_lae2", "gangshop5_LAe" },
+    { 17541, "eastbeach2a_lae2", "gangsign1_LAe" },
+    { 17541, "eastbeach2a_lae2", "hedge1" },
+    { 17541, "eastbeach2a_lae2", "lights_64HV" },
+    { 17541, "eastbeach2a_lae2", "sfe_nicearch6" },
+    { 17541, "eastbeach2a_lae2", "towaway" },
+    { 17555, "eastbeach3c_lae2", "compfence3_LAe" },
+    { 17555, "eastbeach3c_lae2", "compnews3lae" },
+    { 17555, "eastbeach3c_lae2", "decobuild2d_LAn" },
+    { 17555, "eastbeach3c_lae2", "deisel_2sfs" },
+    { 17555, "eastbeach3c_lae2", "eastwall1_LAe2" },
+    { 17555, "eastbeach3c_lae2", "gradient128" },
+    { 17555, "eastbeach3c_lae2", "LASLACMA992" },
+    { 17555, "eastbeach3c_lae2", "lastat1" },
+    { 17555, "eastbeach3c_lae2", "metpull_law" },
+    { 17555, "eastbeach3c_lae2", "vgs_shpfrnt03_128" },
+    { 17555, "eastbeach3c_lae2", "yelowmankypatio_lae2" },
+    { 17555, "eastbeach3c_lae2", "yelowmankywall_lae2" },
+    { 17555, "eastbeach3c_lae2", "yelowmankywin_lae2" },
+    { 17547, "eastbeach4a_lae2", "aptsforrent_lae2" },
+    { 17547, "eastbeach4a_lae2", "bluestucco1" },
+    { 17547, "eastbeach4a_lae2", "dryhedge_128" },
+    { 17547, "eastbeach4a_lae2", "greywallb256" },
+    { 17547, "eastbeach4a_lae2", "LAdtbuilding3" },
+    { 17547, "eastbeach4a_lae2", "LAdtbuilding5" },
+    { 17547, "eastbeach4a_lae2", "lastaco6" },
+    { 17547, "eastbeach4a_lae2", "ltgreenwallc1" },
+    { 17547, "eastbeach4a_lae2", "policeha02_128" },
+    { 17547, "eastbeach4a_lae2", "sand256" },
+    { 17547, "eastbeach4a_lae2", "snpedwen2" },
+    { 17533, "eastbeach7_lae2", "apartmentwin2blank_256" },
+    { 17533, "eastbeach7_lae2", "apartmentwin2_256" },
+    { 17533, "eastbeach7_lae2", "apartmentwin3_256" },
+    { 17533, "eastbeach7_lae2", "bluewin1" },
+    { 17533, "eastbeach7_lae2", "shopwindowlow2_256" },
+    { 17549, "eastbeach8_lae2", "beachshop1_LAe2" },
+    { 17549, "eastbeach8_lae2", "beachshop2_LAe2" },
+    { 17549, "eastbeach8_lae2", "beachsigns1_LAe2" },
+    { 13710, "easthills_lahills", "sjmoran4" },
+    { 17542, "eastls1b_lae2", "bricksign1_LAe" },
+    { 17542, "eastls1b_lae2", "comptwall25" },
+    { 17542, "eastls1b_lae2", "comptwall3" },
+    { 17542, "eastls1b_lae2", "gangshop3_LAe" },
+    { 17542, "eastls1b_lae2", "gangshop4_LAe" },
+    { 17542, "eastls1b_lae2", "gangshop7_LAe" },
+    { 17542, "eastls1b_lae2", "gangshTop1_LAe" },
+    { 17542, "eastls1b_lae2", "papershop_law" },
+    { 17542, "eastls1b_lae2", "tanstucco1_LA" },
+    { 17542, "eastls1b_lae2", "vendr01_law" },
+    { 17526, "eastls1_lae2", "alleywall1" },
+    { 17526, "eastls1_lae2", "alleywall4" },
+    { 17526, "eastls1_lae2", "alleywall5" },
+    { 17526, "eastls1_lae2", "comptsign1_LAe" },
+    { 17526, "eastls1_lae2", "comptsign2_LAe" },
+    { 17526, "eastls1_lae2", "comptsign3_LAe" },
+    { 17526, "eastls1_lae2", "gangshop6_LAe" },
+    { 17526, "eastls1_lae2", "sanpshop3" },
+    { 17526, "eastls1_lae2", "spanshop2_LAe" },
+    { 17526, "eastls1_lae2", "swapmall1" },
+    { 17552, "eastls3_lae2", "motel_wall1" },
+    { 17552, "eastls3_lae2", "venwins01_law" },
+    { 17537, "eastls4_lae2", "alley256" },
+    { 17537, "eastls4_lae2", "autosign_lae2" },
+    { 17537, "eastls4_lae2", "backalley3_LAe" },
+    { 17537, "eastls4_lae2", "carwash_sign2" },
+    { 17537, "eastls4_lae2", "cinboard_law" },
+    { 17537, "eastls4_lae2", "clothes2_256" },
+    { 17537, "eastls4_lae2", "compcourtrail2" },
+    { 17537, "eastls4_lae2", "compdoor6_LAe" },
+    { 17537, "eastls4_lae2", "comptwall13Bot" },
+    { 17537, "eastls4_lae2", "cwashbboard" },
+    { 17537, "eastls4_lae2", "ja_marketsgnlae2" },
+    { 17537, "eastls4_lae2", "marksgn_lae2" },
+    { 17537, "eastls4_lae2", "momapapa" },
+    { 17537, "eastls4_lae2", "mural04_LA" },
+    { 17537, "eastls4_lae2", "sjmhicut2las" },
+    { 17537, "eastls4_lae2", "spanishwin1_LAe" },
+    { 17537, "eastls4_lae2", "stripsign_lae2" },
+    { 17537, "eastls4_lae2", "sun_plasterwall" },
+    { 17537, "eastls4_lae2", "venblock01c" },
+    { 17848, "eastlstr2_lae2", "antenna1" },
+    { 17848, "eastlstr2_lae2", "deadpalm01" },
+    { 17848, "eastlstr2_lae2", "dead_agave" },
+    { 17848, "eastlstr2_lae2", "dead_fuzzy" },
+    { 17504, "eastlstr_lae2", "brokesign1" },
+    { 17504, "eastlstr_lae2", "compfence4_LAe" },
+    { 17504, "eastlstr_lae2", "comptfurnitsign1" },
+    { 17504, "eastlstr_lae2", "comptfurnitsign2" },
+    { 17504, "eastlstr_lae2", "comptfurnitsign3" },
+    { 17504, "eastlstr_lae2", "mural07_LA" },
+    { 17504, "eastlstr_lae2", "scrapmet1_LAe" },
+    { 5392, "eastshops1_lae", "blueshop2_LAe" },
+    { 5392, "eastshops1_lae", "gardenshop1LAe" },
+    { 5392, "eastshops1_lae", "glasprinshop1LAe" },
+    { 5392, "eastshops1_lae", "petbarshop1LAe" },
+    { 5392, "eastshops1_lae", "roof12L" },
+    { 5392, "eastshops1_lae", "shopdoors1_LAe" },
+    { 5392, "eastshops1_lae", "woodwaresign1" },
+    { 17553, "ebeachcineblok", "3winstone_law" },
+    { 17553, "ebeachcineblok", "downtwin21" },
+    { 17553, "ebeachcineblok", "forlease_lae2" },
+    { 17553, "ebeachcineblok", "ja_santosinvsgn_lae2" },
+    { 17553, "ebeachcineblok", "pizzatop_128" },
+    { 969, "electricgate", "airport1_64" },
+    { 969, "electricgate", "airport2_64" },
+    { 969, "electricgate", "banding6_64HV" },
+    { 969, "electricgate", "binwheel64" },
+    { 969, "electricgate", "KeepOut_64" },
+    { 969, "electricgate", "notice01" },
+    { 3272, "ele_substation", "cabin2" },
+    { 3272, "ele_substation", "des_substa_bit1" },
+    { 3272, "ele_substation", "des_substa_bit2" },
+    { 3272, "ele_substation", "lasjmpow1" },
+    { 3272, "ele_substation", "lasjmpow2" },
+    { 3272, "ele_substation", "lasjmpow6" },
+    { 3272, "ele_substation", "lasjmpow8" },
+    { 3272, "ele_substation", "lasjmpow92" },
+    { 14530, "estate2", "ab_dsWhiteboard" },
+    { 14530, "estate2", "ab_SFmap" },
+    { 14530, "estate2", "Auto_feltzer" },
+    { 14530, "estate2", "Auto_hustler" },
+    { 14530, "estate2", "Auto_monstera" },
+    { 14530, "estate2", "Auto_Slamvan2" },
+    { 14530, "estate2", "Auto_windsor" },
+    { 14530, "estate2", "firextingtemp" },
+    { 14530, "estate2", "man_parquet" },
+    { 14530, "estate2", "mp_bobbie_carpet" },
+    { 1963, "estateprops", "blu_cyl_32" },
+    { 1963, "estateprops", "bnk_ppr_64" },
+    { 1963, "estateprops", "bnk_shdo3a" },
+    { 1963, "estateprops", "grn_cyl_32" },
+    { 1963, "estateprops", "red_cyl_32" },
+    { 8498, "excalibur", "excalibur01" },
+    { 8498, "excalibur", "excalibur02_64" },
+    { 8498, "excalibur", "excalibur03_64" },
+    { 8498, "excalibur", "excalibur04_64" },
+    { 8498, "excalibur", "excalibur05_64" },
+    { 8498, "excalibur", "excalibur06" },
+    { 8498, "excalibur", "excalibur07_64" },
+    { 8498, "excalibur", "excalibur08_64" },
+    { 8498, "excalibur", "excaliburledge01" },
+    { 8498, "excalibur", "excaliburwall01_128" },
+    { 8498, "excalibur", "excaliburwall02_128" },
+    { 8498, "excalibur", "excaliburwall03_128" },
+    { 8498, "excalibur", "excaliburwall04_64" },
+    { 8498, "excalibur", "excaliburwall05_128" },
+    { 8498, "excalibur", "excaliburwall06_64" },
+    { 8498, "excalibur", "excaliburwall07" },
+    { 8498, "excalibur", "excaliburwall08" },
+    { 8498, "excalibur", "excaliburwall09" },
+    { 8498, "excalibur", "excaliburwndw01_128" },
+    { 8498, "excalibur", "vegaspavement2_256" },
+    { 8498, "excalibur", "vegasroad1_256" },
+    { 8620, "excalibursign", "excalibursign01_64" },
+    { 8620, "excalibursign", "excalibursign02" },
+    { 8620, "excalibursign", "excaliburwall10_128" },
+    { 8620, "excalibursign", "exclbrsword" },
+    { 8620, "excalibursign", "imperial05_128" },
+    { 8620, "excalibursign", "vgsclubwall05_128" },
+    { 3525, "excaliburtorch", "northwood3_128" },
+    { 3525, "excaliburtorch", "sw_cabinwall01" },
+    { 3525, "excaliburtorch", "tislndshpillar01_128" },
+    { 8515, "exclibrland", "Bow_grass_gryard" },
+    { 2600, "external", "CJ_LAMPPOST3" },
+    { 2600, "external", "CJ_LAMPPOST4" },
+    { 2600, "external", "CJ_LENS" },
+    { 918, "externalext", "CJ_OIL_DRUM" },
+    { 1495, "ext_doors2", "CJ_SCOR_DOOR" },
+    { 1495, "ext_doors2", "CJ_WOODDOOR4" },
+    { 1495, "ext_doors2", "flat_door01" },
+    { 1498, "ext_doors_old", "CJ_DOOR6" },
+    { 12814, "factorycunte", "dirtgrn128" },
+    { 12814, "factorycunte", "hi_nopark1_256128" },
+    { 12814, "factorycunte", "inddoor1" },
+    { 12814, "factorycunte", "newall3_16c128" },
+    { 17001, "factorycuntw", "frate_doors64128" },
+    { 17001, "factorycuntw", "ladder64" },
+    { 11244, "factorynewsfse", "ws_oldwarehouse10" },
+    { 10775, "factory_sfse", "ws_oldwarehouse8" },
+    { 10775, "factory_sfse", "ws_solarin" },
+    { 1657, "fanani", "man_clnfn_blde" },
+    { 1657, "fanani", "man_sdrm_cfanbdy" },
+    { 17005, "farmhouse", "examwind1_LAe" },
+    { 17005, "farmhouse", "gz_vic3d" },
+    { 17005, "farmhouse", "sjmbigold2" },
+    { 17005, "farmhouse", "sjmbigold6" },
+    { 17005, "farmhouse", "ws_cheapodoor2" },
+    { 3425, "farmstuff", "gs_wind2" },
+    { 8547, "fctrygrnd01", "vgsclubpllr01_64" },
+    { 10610, "fedmint_sfs", "ws_fedmint" },
+    { 10610, "fedmint_sfs", "ws_fed_mint_win1" },
+    { 10610, "fedmint_sfs", "ws_fed_mint_win2" },
+    { 10610, "fedmint_sfs", "ws_rollerdoor_blue" },
+    { 10610, "fedmint_sfs", "ws_security_door" },
+    { 970, "fences", "NoParking_64" },
+    { 970, "fences", "slab256" },
+    { 970, "fences", "wirefence" },
+    { 9901, "ferry_building", "ferry_build1" },
+    { 9901, "ferry_building", "ferry_build10" },
+    { 9901, "ferry_building", "ferry_build11" },
+    { 9901, "ferry_building", "ferry_build12" },
+    { 9901, "ferry_building", "ferry_build13" },
+    { 9901, "ferry_building", "ferry_build2" },
+    { 9901, "ferry_building", "ferry_build3" },
+    { 9901, "ferry_building", "ferry_build5" },
+    { 9901, "ferry_building", "ferry_build6" },
+    { 9901, "ferry_building", "ferry_build76" },
+    { 9901, "ferry_building", "ferry_build8" },
+    { 9901, "ferry_building", "ferry_build9" },
+    { 9901, "ferry_building", "skylight_windows" },
+    { 4020, "fighot", "lasbevcit99xxx" },
+    { 4020, "fighot", "Parking2_LAe2" },
+    { 4020, "fighot", "sl_lavicdtcnr" },
+    { 4020, "fighot", "sl_lavicdtdecor1" },
+    { 4020, "fighot", "sl_lavicdtwin" },
+    { 4020, "fighot", "sl_lavicdtwin2" },
+    { 4020, "fighot", "sl_lavicdtwin3" },
+    { 5705, "filmstud", "golf_heavygrass" },
+    { 5705, "filmstud", "venicewin02" },
+    { 5705, "filmstud", "venwall_la" },
+    { 5705, "filmstud", "Victim_bboard" },
+    { 11008, "firehouse_sfse", "halldoor01_law" },
+    { 11008, "firehouse_sfse", "SFPD" },
+    { 11008, "firehouse_sfse", "SFSE_WRHSE_WNDW" },
+    { 11008, "firehouse_sfse", "ws_usflagcrumpled" },
+    { 2961, "fire_brx", "fire_break" },
+    { 1599, "fish1", "fish2" },
+    { 1600, "fish2", "fish3" },
+    { 1601, "fish3", "fish1" },
+    { 9910, "fishwarf", "gz_vic3b" },
+    { 9910, "fishwarf", "michelle_car4" },
+    { 9910, "fishwarf", "rooftop_gz2" },
+    { 9910, "fishwarf", "sfe_nicearch5" },
+    { 9910, "fishwarf", "sf_backaley3" },
+    { 9910, "fishwarf", "sf_windos_10wall" },
+    { 9910, "fishwarf", "sw_realty" },
+    { 8488, "flamingo1", "casinolights4_128" },
+    { 8488, "flamingo1", "flmngo01_256" },
+    { 8488, "flamingo1", "flmngo04_256" },
+    { 8488, "flamingo1", "flmngo05_256" },
+    { 8488, "flamingo1", "flmngo06_128" },
+    { 8488, "flamingo1", "flmngo07_128" },
+    { 8488, "flamingo1", "flmngo08" },
+    { 8488, "flamingo1", "flmngo09" },
+    { 8488, "flamingo1", "flmngo10_128" },
+    { 8488, "flamingo1", "flmngoledge" },
+    { 8844, "flmngoland", "la_tilered" },
+    { 8844, "flmngoland", "newhedgea" },
+    { 8844, "flmngoland", "vgschurchwall05_128" },
+    { 1340, "foodkarts", "cardbrdplain64" },
+    { 1340, "foodkarts", "chillidog_sign" },
+    { 1340, "foodkarts", "dogcart01" },
+    { 1340, "foodkarts", "dogcart02" },
+    { 1340, "foodkarts", "dogcart03" },
+    { 1340, "foodkarts", "dogcart04" },
+    { 1340, "foodkarts", "dogcart05" },
+    { 1340, "foodkarts", "dogcart06" },
+    { 1340, "foodkarts", "gashob" },
+    { 1340, "foodkarts", "iceyside" },
+    { 1340, "foodkarts", "iceysign" },
+    { 1340, "foodkarts", "noodbox" },
+    { 1340, "foodkarts", "noodcart" },
+    { 1340, "foodkarts", "noodex" },
+    { 1340, "foodkarts", "noodex2" },
+    { 1340, "foodkarts", "noodles_32" },
+    { 5762, "foodlawn", "foodmartla2" },
+    { 9582, "fort_sfw", "club_roofwin_sfw" },
+    { 9582, "fort_sfw", "fortclub_1" },
+    { 9582, "fort_sfw", "fortclub_10" },
+    { 9582, "fort_sfw", "fortclub_11" },
+    { 9582, "fort_sfw", "fortclub_2" },
+    { 9582, "fort_sfw", "fortclub_5" },
+    { 9582, "fort_sfw", "fortclub_6" },
+    { 9582, "fort_sfw", "fortclub_7" },
+    { 9582, "fort_sfw", "fortclub_8" },
+    { 9582, "fort_sfw", "fortclub_9" },
+    { 9582, "fort_sfw", "fortclub_extrabits" },
+    { 9582, "fort_sfw", "mallfloor2" },
+    { 11413, "fosterflowers", "starflower1" },
+    { 11413, "fosterflowers", "starflower3" },
+    { 10940, "fosterroads_sfse", "ws_freeway3" },
+    { 9833, "fountain_sfw", "fountain_sfw" },
+    { 10489, "freeway2_sfs", "ws_freeway2" },
+    { 10489, "freeway2_sfs", "ws_freeway3blend" },
+    { 11135, "freeways2_sfse", "dt_road2grasstype4" },
+    { 10857, "freeways3_sfse", "ws_bridgepavement" },
+    { 10857, "freeways3_sfse", "ws_freeway1" },
+    { 4809, "freeway_las", "metal_stair_64H" },
+    { 4809, "freeway_las", "obhilltex1" },
+    { 4809, "freeway_las", "pavemiddirt_law" },
+    { 4809, "freeway_las", "whitetile_plain_hi" },
+    { 2963, "freezrx", "freeze_door" },
+    { 3474, "freightcrane", "bluecab1_256" },
+    { 3474, "freightcrane", "bluecab2_256" },
+    { 3474, "freightcrane", "bluecab3_256" },
+    { 3474, "freightcrane", "bluecab4_256" },
+    { 3474, "freightcrane", "junk_tyre" },
+    { 3474, "freightcrane", "metalwheel1_256" },
+    { 3474, "freightcrane", "oldpaintyelend_256" },
+    { 3474, "freightcrane", "yellowcabchev_256" },
+    { 10230, "freight_sfe", "freighterhull3" },
+    { 10230, "freight_sfe", "freighterhull4" },
+    { 10230, "freight_sfe", "tyre_ship_sfe" },
+    { 10140, "frieghter2sfe", "sfMAST2" },
+    { 10140, "frieghter2sfe", "sf_shipbulklight" },
+    { 10140, "frieghter2sfe", "sf_ship_ceiling" },
+    { 10140, "frieghter2sfe", "sf_ship_generic17" },
+    { 10140, "frieghter2sfe", "sf_ship_generic26" },
+    { 10140, "frieghter2sfe", "sf_ship_generic6" },
+    { 10140, "frieghter2sfe", "sf_ship_gratet" },
+    { 10140, "frieghter2sfe", "sf_ship_interior" },
+    { 10140, "frieghter2sfe", "sf_ship_pipes" },
+    { 10140, "frieghter2sfe", "sf_ship_steps" },
+    { 17503, "furniture_lae2", "ammu_airvent" },
+    { 17503, "furniture_lae2", "brckwht128" },
+    { 17503, "furniture_lae2", "clukmenu1_LAe2" },
+    { 17503, "furniture_lae2", "comptwall19" },
+    { 17503, "furniture_lae2", "craproad6_LAe" },
+    { 17503, "furniture_lae2", "furndetail1_LAe" },
+    { 17503, "furniture_lae2", "inwindow4" },
+    { 17503, "furniture_lae2", "LAmexfood1" },
+    { 17503, "furniture_lae2", "strpclb4_LAe" },
+    { 17503, "furniture_lae2", "totem64" },
+    { 1824, "gamingtble", "craps-layout" },
+    { 1824, "gamingtble", "crapside_128" },
+    { 17700, "gangblok1_lae2", "GB_doorpur01" },
+    { 17700, "gangblok1_lae2", "gz_vic3c" },
+    { 17700, "gangblok1_lae2", "mural01_LA" },
+    { 17700, "gangblok1_lae2", "pigpen1_LAe" },
+    { 17700, "gangblok1_lae2", "sanpshop4z" },
+    { 17700, "gangblok1_lae2", "strpclb1_LAe" },
+    { 17700, "gangblok1_lae2", "strpclb2_LAe" },
+    { 17700, "gangblok1_lae2", "strpclb3_LAe" },
+    { 17700, "gangblok1_lae2", "tacostand1_LAe" },
+    { 17700, "gangblok1_lae2", "warehouse2" },
+    { 14443, "ganghoos", "ab_wall3" },
+    { 14443, "ganghoos", "ab_wallPanel" },
+    { 14443, "ganghoos", "ah_BADCEIL" },
+    { 14443, "ganghoos", "AH_bathwalls" },
+    { 14443, "ganghoos", "ah_CRAKPLNK" },
+    { 14443, "ganghoos", "ah_curtains1" },
+    { 14443, "ganghoos", "AH_filthtiles" },
+    { 14443, "ganghoos", "AH_filthtiles2" },
+    { 14443, "ganghoos", "ah_FLKWIN" },
+    { 14443, "ganghoos", "ah_mikebindsarse" },
+    { 14443, "ganghoos", "AH_oldwdpan" },
+    { 14443, "ganghoos", "AH_pelmet" },
+    { 14443, "ganghoos", "AH_walltile3" },
+    { 14443, "ganghoos", "ah_yelbadwall" },
+    { 14443, "ganghoos", "motel_bathfloor" },
+    { 14443, "ganghoos", "mp_burn_carpet" },
+    { 14443, "ganghoos", "mp_burn_carpet1" },
+    { 14443, "ganghoos", "mp_burn_carpet2" },
+    { 14443, "ganghoos", "mp_burn_carpet3" },
+    { 14443, "ganghoos", "mp_burn_wall3" },
+    { 3646, "ganghouse1_lax", "aanewd" },
+    { 3646, "ganghouse1_lax", "comptroof4" },
+    { 3646, "ganghouse1_lax", "comptwall14" },
+    { 3646, "ganghouse1_lax", "comptwall7" },
+    { 3646, "ganghouse1_lax", "grille1_LA" },
+    { 3646, "ganghouse1_lax", "snpdhus2" },
+    { 17515, "ganton01_lae2", "comptsign7_LAe" },
+    { 17515, "ganton01_lae2", "yelloplaster1" },
+    { 17577, "ganton02_lae2", "century02_LA" },
+    { 17577, "ganton02_lae2", "greenbot1_LAe2" },
+    { 17577, "ganton02_lae2", "greenbot2_LAe2" },
+    { 5774, "garag3_lawn", "bigblue3" },
+    { 5774, "garag3_lawn", "orngpartwall1_256" },
+    { 5774, "garag3_lawn", "sprysig1" },
+    { 9625, "garage_sfw", "garage1b_sfw" },
+    { 9625, "garage_sfw", "garage2b_sfw" },
+    { 9625, "garage_sfw", "garage3b_sfw" },
+    { 9625, "garage_sfw", "garage_win_sfw" },
+    { 9625, "garage_sfw", "toll_SFw4" },
+    { 10629, "gardencentre_sfs", "ws_uphill" },
+    { 1672, "gasgren", "gun_teargas_2" },
+    { 985, "gategen", "trespasign1_256" },
+    { 10713, "gayclub_sfs", "CJ_GEN_GLASS2" },
+    { 10713, "gayclub_sfs", "CJ_PIZZA_DOOR" },
+    { 10713, "gayclub_sfs", "ws_gaydar" },
+    { 10713, "gayclub_sfs", "ws_plasterwall1" },
+    { 3853, "gay_xref", "metatelepole1" },
+    { 3853, "gay_xref", "teleconect2" },
+    { 3853, "gay_xref", "ws_gayflag1" },
+    { 3853, "gay_xref", "ws_gayflag2" },
+    { 6102, "gazlaw1", "Bow_bar_entrance_door" },
+    { 6102, "gazlaw1", "lawshop2" },
+    { 6102, "gazlaw1", "lawshop3" },
+    { 6102, "gazlaw1", "lawshopwall1" },
+    { 6102, "gazlaw1", "lawshopwall1b" },
+    { 6102, "gazlaw1", "lawshopwall2" },
+    { 6102, "gazlaw1", "lawshopwall2b" },
+    { 6102, "gazlaw1", "lawshopwall3" },
+    { 6102, "gazlaw1", "lawshopwall3b" },
+    { 6102, "gazlaw1", "lawshopwall4b" },
+    { 6102, "gazlaw1", "lawshopwall4c" },
+    { 6102, "gazlaw1", "law_gazgrn1" },
+    { 6102, "gazlaw1", "law_gazgrn4" },
+    { 6102, "gazlaw1", "law_gazgrn7" },
+    { 6102, "gazlaw1", "law_gazwhite1" },
+    { 6102, "gazlaw1", "law_gazwhite2" },
+    { 6102, "gazlaw1", "law_gazwhite4" },
+    { 6102, "gazlaw1", "law_gazwhite5" },
+    { 6102, "gazlaw1", "law_gazwhitefloor" },
+    { 6102, "gazlaw1", "law_gazwhitestep" },
+    { 6102, "gazlaw1", "pawn_door01" },
+    { 6104, "gazlaw2", "gm_labuld4_a" },
+    { 6104, "gazlaw2", "gm_labuld4_b" },
+    { 6104, "gazlaw2", "gm_labuld4_d" },
+    { 6104, "gazlaw2", "gm_labuld4_e" },
+    { 6104, "gazlaw2", "gm_labuld4_f" },
+    { 6104, "gazlaw2", "lawshop1" },
+    { 6104, "gazlaw2", "law_gazbrn1" },
+    { 6104, "gazlaw2", "sw_storewin05" },
+    { 6104, "gazlaw2", "sw_wind19" },
+    { 6157, "gazlaw3", "churchdoor1_LAn" },
+    { 6157, "gazlaw3", "lawbanding1" },
+    { 6157, "gazlaw3", "law_archthing1" },
+    { 6157, "gazlaw3", "law_archthing2" },
+    { 6157, "gazlaw3", "law_archthing3" },
+    { 6157, "gazlaw3", "law_archthing4" },
+    { 6157, "gazlaw3", "law_archthing5" },
+    { 6157, "gazlaw3", "law_archthing6" },
+    { 6157, "gazlaw3", "law_archthing7" },
+    { 6157, "gazlaw3", "mono3_sfe" },
+    { 6157, "gazlaw3", "mono4_sfe" },
+    { 6157, "gazlaw3", "pier69_planter" },
+    { 6157, "gazlaw3", "sfe_bigbuild3" },
+    { 6157, "gazlaw3", "swintops01c_law" },
+    { 6157, "gazlaw3", "swintops01d_law" },
+    { 6157, "gazlaw3", "swintops01_law" },
+    { 9300, "gazsfn1", "fillerbase01_law" },
+    { 9300, "gazsfn1", "fillerbase02_law" },
+    { 9300, "gazsfn1", "fillerbase_law" },
+    { 9300, "gazsfn1", "fillerdoor_law" },
+    { 9300, "gazsfn1", "law_gazcoast1" },
+    { 9300, "gazsfn1", "law_gazcoast2" },
+    { 9301, "gazsfn2", "Bow_Smear_Cement" },
+    { 9301, "gazsfn2", "law_gazgrn2" },
+    { 9278, "gazsfnlite", "cst_bollard_sfw" },
+    { 9278, "gazsfnlite", "fusebox1_128" },
+    { 9278, "gazsfnlite", "sfxref_flagpole" },
+    { 9278, "gazsfnlite", "sfxref_lite2c" },
+    { 2817, "gb_bedrmrugs01", "GB_livingrug03" },
+    { 2817, "gb_bedrmrugs01", "GB_rugbedroom01" },
+    { 2817, "gb_bedrmrugs01", "GB_rugbedroom02" },
+    { 2817, "gb_bedrmrugs01", "GB_rugbedroom03" },
+    { 2819, "gb_bedroomclths01", "GB_clothesbed01" },
+    { 2819, "gb_bedroomclths01", "GB_clothesbed02" },
+    { 2819, "gb_bedroomclths01", "GB_clothesbed03" },
+    { 2819, "gb_bedroomclths01", "GB_clothesbed04" },
+    { 2819, "gb_bedroomclths01", "GB_clothesbed05" },
+    { 2813, "gb_books01", "GB_magazine02" },
+    { 2813, "gb_books01", "GB_magazine05" },
+    { 2813, "gb_books01", "GB_magazine06" },
+    { 2813, "gb_books01", "GB_novels01" },
+    { 2813, "gb_books01", "GB_novels02" },
+    { 2813, "gb_books01", "GB_novels03" },
+    { 2813, "gb_books01", "GB_novels04" },
+    { 2813, "gb_books01", "GB_novels05" },
+    { 2813, "gb_books01", "GB_novels07" },
+    { 2813, "gb_books01", "GB_novels08" },
+    { 2813, "gb_books01", "GB_novels09" },
+    { 2813, "gb_books01", "GB_novels10" },
+    { 2813, "gb_books01", "GB_novels11" },
+    { 2813, "gb_books01", "GB_novels12" },
+    { 2822, "gb_cleancrock01", "cj_plate" },
+    { 2822, "gb_cleancrock01", "cj_plate2" },
+    { 2822, "gb_cleancrock01", "GB_plateclean01" },
+    { 2812, "gb_dirtycrock01", "GB_bowldirty01" },
+    { 2812, "gb_dirtycrock01", "GB_mug01" },
+    { 2812, "gb_dirtycrock01", "GB_platedirty01" },
+    { 2812, "gb_dirtycrock01", "GB_platedirty02" },
+    { 2812, "gb_dirtycrock01", "GB_platedirty03" },
+    { 2821, "gb_foodwrap01", "cj_napkin" },
+    { 2821, "gb_foodwrap01", "GB_foodwrap02" },
+    { 2821, "gb_foodwrap01", "GB_foodwrap03" },
+    { 2821, "gb_foodwrap01", "GB_foodwrap04" },
+    { 2821, "gb_foodwrap01", "midgrey64" },
+    { 2821, "gb_foodwrap01", "sm_marble" },
+    { 2823, "gb_kitchtake", "CJ_BS2" },
+    { 2823, "gb_kitchtake", "deep_red64" },
+    { 2823, "gb_kitchtake", "GB_pizzabox01" },
+    { 2823, "gb_kitchtake", "GB_takeaway01" },
+    { 2823, "gb_kitchtake", "GB_takeaway02" },
+    { 2823, "gb_kitchtake", "GB_takeaway03" },
+    { 2823, "gb_kitchtake", "GB_takeaway04" },
+    { 2816, "gb_magazines01", "GB_magazine03" },
+    { 2811, "gb_ornaments01", "beigehotel_128" },
+    { 2811, "gb_ornaments01", "GB_photo01" },
+    { 2811, "gb_ornaments01", "GB_photo02" },
+    { 2811, "gb_ornaments01", "GB_plant02" },
+    { 2811, "gb_ornaments01", "GB_vase01" },
+    { 2815, "gb_rugs01", "GB_livingrug02" },
+    { 2815, "gb_rugs01", "GB_rug01" },
+    { 1616, "genalley", "gensecuritycam" },
+    { 1616, "genalley", "ventgen128" },
+    { 15034, "genhotelsave", "ab_mottleWhite" },
+    { 15034, "genhotelsave", "AH_windows" },
+    { 15034, "genhotelsave", "andydark2" },
+    { 15034, "genhotelsave", "bathtile04_int" },
+    { 15034, "genhotelsave", "bathtile05_int" },
+    { 15034, "genhotelsave", "CJ_PAINTING8" },
+    { 15034, "genhotelsave", "HS2_2Wall4" },
+    { 15034, "genhotelsave", "lw_desklamp_128_256" },
+    { 15034, "genhotelsave", "walp57S" },
+    { 18025, "genintclothessport", "CJ_PRO_WIN" },
+    { 18025, "genintclothessport", "mp_cloth_pcarp" },
+    { 18025, "genintclothessport", "mp_cloth_prob" },
+    { 18025, "genintclothessport", "mp_cloth_pwall" },
+    { 18025, "genintclothessport", "mp_cop_sep" },
+    { 18012, "genintgeneric", "kb_teracota_pot2_64" },
+    { 18012, "genintgeneric", "planterbox128" },
+    { 14770, "genintgenintint3", "brothredleth" },
+    { 14770, "genintgenintint3", "GB_midbar03" },
+    { 14770, "genintgenintint3", "GB_midbar04" },
+    { 14825, "genintint2_gym", "boxgym_mainlightingmap" },
+    { 14825, "genintint2_gym", "gym_ceiling" },
+    { 14825, "genintint2_gym", "gym_pillar" },
+    { 14825, "genintint2_gym", "plywood3_gym" },
+    { 14665, "genintint711_1", "711_walltemp" },
+    { 14665, "genintint711_1", "interiorwindowglow" },
+    { 14665, "genintint711_1", "mp_gun_mat" },
+    { 18018, "genintintbarb", "GB_midbar01" },
+    { 18018, "genintintbarb", "GB_midbar07" },
+    { 18018, "genintintbarb", "GB_midbar12" },
+    { 18018, "genintintbarb", "Gen_Gantry_Rust" },
+    { 18001, "genintintbarbera", "barbersfurn1" },
+    { 18001, "genintintbarbera", "barberslight1" },
+    { 18001, "genintintbarbera", "barberstill" },
+    { 18001, "genintintbarbera", "barbers_junk2" },
+    { 18001, "genintintbarbera", "barbers_junk3" },
+    { 14776, "genintintcarint3", "ab_steelFrame" },
+    { 14776, "genintintcarint3", "auto_tune1" },
+    { 14776, "genintintcarint3", "auto_tune3" },
+    { 14776, "genintintcarint3", "concretebigc256" },
+    { 14776, "genintintcarint3", "doornvent256128" },
+    { 14776, "genintintcarint3", "Industdoor1128" },
+    { 14776, "genintintcarint3", "joey_shadow_texture" },
+    { 14776, "genintintcarint3", "leccy_cables" },
+    { 14776, "genintintcarint3", "Metal2_256128" },
+    { 14776, "genintintcarint3", "metpat_64" },
+    { 14776, "genintintcarint3", "porta_256128" },
+    { 14776, "genintintcarint3", "posh1_128" },
+    { 14776, "genintintcarint3", "smoketest1a_sfw" },
+    { 14776, "genintintcarint3", "toolwall1" },
+    { 14776, "genintintcarint3", "tool_store" },
+    { 14776, "genintintcarint3", "tool_store2" },
+    { 14776, "genintintcarint3", "tyretread_64H" },
+    { 14776, "genintintcarint3", "yellowvertical_64HV" },
+    { 18022, "genintintfasta", "ceilingtile1_128" },
+    { 18022, "genintintfasta", "CJ_TILE1" },
+    { 18022, "genintintfasta", "diner_wall5" },
+    { 18020, "genintintfastb2", "BS_WINDOW" },
+    { 18020, "genintintfastb2", "cj_burgerwood" },
+    { 18020, "genintintfastb2", "CJ_BURG_WALL" },
+    { 18020, "genintintfastb2", "ws_terratiles" },
+    { 18023, "genintintfastc", "CJ_GREENWOOD2" },
+    { 18023, "genintintfastc", "CJ_PIZZA_WALL" },
+    { 18023, "genintintfastc", "dinerfloor01_128" },
+    { 18023, "genintintfastc", "wellstackedpizza_256" },
+    { 18021, "genintintfastd", "barbers_wall1" },
+    { 18021, "genintintfastd", "CJ_DON_WIN" },
+    { 18021, "genintintfastd", "tile_test3red" },
+    { 14826, "genintintgarage2a", "car_cover4" },
+    { 14826, "genintintgarage2a", "car_jack" },
+    { 14826, "genintintgarage2a", "kb_tyre" },
+    { 14826, "genintintgarage2a", "remingtonkb1" },
+    { 14842, "genintintpolicea", "copcell_bars" },
+    { 14842, "genintintpolicea", "copstuff" },
+    { 14842, "genintintpolicea", "cops_chrome" },
+    { 14842, "genintintpolicea", "cop_notice" },
+    { 14842, "genintintpolicea", "filing_cabnu" },
+    { 14842, "genintintpolicea", "poldesk" },
+    { 14842, "genintintpolicea", "poldesktop" },
+    { 14846, "genintintpoliceb", "breezewall2" },
+    { 14846, "genintintpoliceb", "copbtm_green" },
+    { 14846, "genintintpoliceb", "coptop_blue" },
+    { 14846, "genintintpoliceb", "coptop_brown" },
+    { 14846, "genintintpoliceb", "coptop_pink" },
+    { 14846, "genintintpoliceb", "cop_bench" },
+    { 14846, "genintintpoliceb", "cop_cellfloor" },
+    { 14846, "genintintpoliceb", "cop_cellwall" },
+    { 14846, "genintintpoliceb", "cop_cellwall_btm" },
+    { 14846, "genintintpoliceb", "pol_dor_surr2" },
+    { 14846, "genintintpoliceb", "pol_flr164" },
+    { 14846, "genintintpoliceb", "pol_flr2" },
+    { 14846, "genintintpoliceb", "pol_flr3" },
+    { 14846, "genintintpoliceb", "pol_galss1a" },
+    { 14846, "genintintpoliceb", "pol_stairs2" },
+    { 14846, "genintintpoliceb", "p_countr" },
+    { 14846, "genintintpoliceb", "p_door1" },
+    { 14846, "genintintpoliceb", "p_floor2" },
+    { 14846, "genintintpoliceb", "p_floor3" },
+    { 14846, "genintintpoliceb", "p_floor4" },
+    { 14666, "genintintsex", "backdoor_128" },
+    { 14666, "genintintsex", "CJ_BLUE_DOOR" },
+    { 14666, "genintintsex", "mp_cop_floor2" },
+    { 14666, "genintintsex", "mp_porn_wall" },
+    { 18029, "genintintsmallrest", "GB_restaursmll02" },
+    { 18029, "genintintsmallrest", "GB_restaursmll03" },
+    { 18029, "genintintsmallrest", "GB_restaursmll04" },
+    { 18029, "genintintsmallrest", "GB_restaursmll05" },
+    { 18029, "genintintsmallrest", "GB_restaursmll06" },
+    { 18029, "genintintsmallrest", "GB_restaursmll07" },
+    { 18029, "genintintsmallrest", "GB_restaursmll08" },
+    { 18029, "genintintsmallrest", "GB_restaursmll09" },
+    { 18029, "genintintsmallrest", "GB_restaursmll10" },
+    { 18029, "genintintsmallrest", "GB_restaursmll11" },
+    { 18029, "genintintsmallrest", "GB_restaursmll12" },
+    { 18029, "genintintsmallrest", "GB_restaursmll13" },
+    { 18029, "genintintsmallrest", "GB_restaursmll14" },
+    { 18029, "genintintsmallrest", "GB_restaursmll15" },
+    { 18029, "genintintsmallrest", "GB_restaursmll16b" },
+    { 18029, "genintintsmallrest", "GB_restaursmll19" },
+    { 18029, "genintintsmallrest", "GB_restaursmll20" },
+    { 18029, "genintintsmallrest", "kitchensink_256" },
+    { 2627, "genintint_gym", "bench_test1" },
+    { 2627, "genintint_gym", "bench_test2" },
+    { 2627, "genintint_gym", "bench_test2b" },
+    { 2627, "genintint_gym", "chrome_tube1" },
+    { 2627, "genintint_gym", "cycle1" },
+    { 2627, "genintint_gym", "cycle2" },
+    { 2627, "genintint_gym", "gym_runni" },
+    { 2627, "genintint_gym", "weight1" },
+    { 18009, "genintrestrest1", "adobe_wall1" },
+    { 18009, "genintrestrest1", "rest_cob" },
+    { 18009, "genintrestrest1", "rest_floor2_512" },
+    { 18009, "genintrestrest1", "rest_gravel" },
+    { 18009, "genintrestrest1", "rest_mainlightingmap" },
+    { 18009, "genintrestrest1", "rest_wall5" },
+    { 18010, "genintrestrest2", "ceiling_light64" },
+    { 18010, "genintrestrest2", "kbsofa333c" },
+    { 18010, "genintrestrest2", "kb_canopy128_2" },
+    { 18055, "genintsmlrst_split", "GB_restaursmll01" },
+    { 18055, "genintsmlrst_split", "GB_restaursmll16a" },
+    { 18055, "genintsmlrst_split", "GB_restaursmll17a" },
+    { 18055, "genintsmlrst_split", "GB_restaursmll17b" },
+    { 18055, "genintsmlrst_split", "GB_restaursmll21" },
+    { 18055, "genintsmlrst_split", "GB_restaursmll22" },
+    { 18055, "genintsmlrst_split", "GB_restaursmll23" },
+    { 14784, "genintwarehsint3", "lasjmflood2" },
+    { 14784, "genintwarehsint3", "lastat97" },
+    { 14784, "genintwarehsint3", "lightwallba256" },
+    { 14784, "genintwarehsint3", "sjmdockral1" },
+    { 14784, "genintwarehsint3", "sjmlawardra1" },
+    { 14784, "genintwarehsint3", "sjmlawarwall2" },
+    { 14784, "genintwarehsint3", "sjmlawarwall4" },
+    { 14784, "genintwarehsint3", "sjmpostbar2" },
+    { 14784, "genintwarehsint3", "snpdimwin1" },
+    { 10751, "genroads_sfse", "sf_tramline2" },
+    { 8508, "genshop", "shoptiles01_128" },
+    { 8508, "genshop", "vgs_shpfrnt04_128" },
+    { 10844, "genwhse_sfse", "slab64" },
+    { 18045, "gen_munation", "mp_gun_floor" },
+    { 18045, "gen_munation", "mp_gun_shutter" },
+    { 18047, "gen_mun_counter", "mp_gun_cabinet" },
+    { 18047, "gen_mun_counter", "mp_gun_counter" },
+    { 18047, "gen_mun_counter", "mp_gun_metal" },
+    { 18048, "gen_mun_xtars2", "mp_gun_man" },
+    { 18048, "gen_mun_xtars2", "mp_gun_man2" },
+    { 18048, "gen_mun_xtars2", "mp_gun_man3" },
+    { 18048, "gen_mun_xtars2", "star_spang" },
+    { 14785, "gen_offtrackint", "bluemat_32" },
+    { 14785, "gen_offtrackint", "exitgreen_64" },
+    { 14785, "gen_offtrackint", "otb_mural1" },
+    { 14785, "gen_offtrackint", "otb_mural2" },
+    { 14785, "gen_offtrackint", "otb_mural3" },
+    { 14785, "gen_offtrackint", "otb_mural4" },
+    { 14785, "gen_offtrackint", "otb_rooftile1" },
+    { 14785, "gen_offtrackint", "otb_rooftile2" },
+    { 14800, "gen_otb_bits", "ab_boxStack" },
+    { 1686, "gen_petrol", "vgnptrpump1_256" },
+    { 1686, "gen_petrol", "vgnptrpump2_128" },
+    { 14853, "gen_pol_vegas", "blue_carpet_256" },
+    { 14853, "gen_pol_vegas", "burglry_wall5b" },
+    { 14853, "gen_pol_vegas", "grey_carpet_256" },
+    { 14853, "gen_pol_vegas", "mp_cop_bars" },
+    { 14853, "gen_pol_vegas", "mp_cop_chief" },
+    { 14853, "gen_pol_vegas", "mp_cop_frame" },
+    { 14853, "gen_pol_vegas", "mp_cop_name" },
+    { 14853, "gen_pol_vegas", "mp_cop_panel" },
+    { 14853, "gen_pol_vegas", "mp_cop_pinboard" },
+    { 14853, "gen_pol_vegas", "mp_cop_signs" },
+    { 14853, "gen_pol_vegas", "mp_cop_wall" },
+    { 14853, "gen_pol_vegas", "mp_cop_whiteboard" },
+    { 14853, "gen_pol_vegas", "mp_cop_wood" },
+    { 14853, "gen_pol_vegas", "mp_gun_dirt" },
+    { 14853, "gen_pol_vegas", "mp_police_win" },
+    { 14853, "gen_pol_vegas", "office_wallnu1" },
+    { 14853, "gen_pol_vegas", "pol_win_kb" },
+    { 14859, "gf1", "CJ_MAT2DIRT" },
+    { 14859, "gf1", "mp_apt1_pos1" },
+    { 14859, "gf1", "mp_apt1_pos2" },
+    { 14859, "gf1", "mp_apt1_pos3" },
+    { 14859, "gf1", "mp_apt1_pos4" },
+    { 14859, "gf1", "mp_cooch_carp" },
+    { 14859, "gf1", "mp_cooch_clothes" },
+    { 14859, "gf1", "mp_cooch_frame" },
+    { 14859, "gf1", "mp_cooch_wall" },
+    { 14859, "gf1", "mp_cop_ceiling" },
+    { 14865, "gf2", "mp_bobbie_carpwhite" },
+    { 14865, "gf2", "mp_bobbie_pennant" },
+    { 14865, "gf2", "mp_bobbie_pompom" },
+    { 14865, "gf2", "mp_bobbie_pompom1" },
+    { 14865, "gf2", "mp_bobbie_pompom2" },
+    { 14865, "gf2", "mp_bobbie_wall" },
+    { 14865, "gf2", "mp_bobbie_wood" },
+    { 14871, "gf3", "kickhay" },
+    { 14871, "gf3", "TREE_STUB1" },
+    { 14876, "gf4", "mp_diner_sawdust" },
+    { 14876, "gf4", "mp_gimp_officewall" },
+    { 14876, "gf4", "mp_tank_floor" },
+    { 14881, "gf5", "mp_jail_wall" },
+    { 14888, "gf6", "gm_millie_cock" },
+    { 14888, "gf6", "mp_gimp_basewall" },
+    { 14888, "gf6", "mp_gimp_sponge" },
+    { 14888, "gf6", "mp_gimp_tilefloor" },
+    { 14888, "gf6", "mp_millie_ring" },
+    { 14888, "gf6", "mp_millie_swing" },
+    { 14888, "gf6", "mp_millie_wallwhite" },
+    { 14888, "gf6", "mp_millie_whip" },
+    { 14888, "gf6", "mp_millie_whip1" },
+    { 14888, "gf6", "mp_millie_whip2" },
+    { 14888, "gf6", "mp_millie_wood" },
+    { 14888, "gf6", "mp_millie_woodwall" },
+    { 14888, "gf6", "mp_vicgrill" },
+    { 9608, "ggatepark", "gantsign2_sfw" },
+    { 9608, "ggatepark", "gantsign_sfw" },
+    { 9608, "ggatepark", "gg_sign2_sfw" },
+    { 9608, "ggatepark", "gg_sign_sfw" },
+    { 9608, "ggatepark", "sfe_diner1" },
+    { 9608, "ggatepark", "sfe_diner2" },
+    { 9608, "ggatepark", "sfe_diner3" },
+    { 9608, "ggatepark", "sfe_diner4" },
+    { 9269, "ggbridge_sfn", "stonesandkb2_128" },
+    { 9269, "ggbridge_sfn", "ws_goldengate2" },
+    { 5407, "glenpark1x_lae", "craproad1_LAe" },
+    { 5407, "glenpark1x_lae", "downtsign12_LA" },
+    { 5407, "glenpark1x_lae", "hedgealphad1" },
+    { 5407, "glenpark1x_lae", "lasclean1" },
+    { 5407, "glenpark1x_lae", "lasjmhoodcrb" },
+    { 5407, "glenpark1x_lae", "lasjmscruffwall1" },
+    { 5407, "glenpark1x_lae", "mural06_LA" },
+    { 5407, "glenpark1x_lae", "sanpedton3" },
+    { 5407, "glenpark1x_lae", "savtop" },
+    { 5407, "glenpark1x_lae", "savtopWN" },
+    { 5407, "glenpark1x_lae", "scumtiles3_LAe" },
+    { 5407, "glenpark1x_lae", "sjmhoodlawn4" },
+    { 5407, "glenpark1x_lae", "sl_pornshopla1" },
+    { 5407, "glenpark1x_lae", "sl_pornshopla1b" },
+    { 5443, "glenpark1_lae", "chocolate1" },
+    { 5443, "glenpark1_lae", "concretebig4256" },
+    { 5443, "glenpark1_lae", "mudyforest256" },
+    { 5443, "glenpark1_lae", "transmishop1LAe" },
+    { 5461, "glenpark6d_lae", "downtwin21b" },
+    { 5461, "glenpark6d_lae", "GB_truckdepot20" },
+    { 5461, "glenpark6d_lae", "gymshops1_LAe" },
+    { 5461, "glenpark6d_lae", "gymshops2_LAe" },
+    { 5461, "glenpark6d_lae", "shopint1_LAe" },
+    { 5461, "glenpark6d_lae", "shopint2_LAe" },
+    { 5461, "glenpark6d_lae", "shutter01LA" },
+    { 5461, "glenpark6d_lae", "tiledwall01_LA" },
+    { 5462, "glenpark6_lae", "dirty256" },
+    { 5462, "glenpark6_lae", "girder_red_64HV" },
+    { 5462, "glenpark6_lae", "hillshop2_LA" },
+    { 5462, "glenpark6_lae", "hillshop4_LA" },
+    { 5462, "glenpark6_lae", "hwtopwin01b_law" },
+    { 5462, "glenpark6_lae", "hwtopwin01_law" },
+    { 5462, "glenpark6_lae", "scaffolding_vc" },
+    { 5462, "glenpark6_lae", "wareh3_LAe" },
+    { 5390, "glenpark7_lae", "bboardblank_law" },
+    { 5390, "glenpark7_lae", "compfence5_LAe" },
+    { 5390, "glenpark7_lae", "ganggraf01_LA" },
+    { 2976, "gloopx", "alien_cont2" },
+    { 2976, "gloopx", "alien_glass" },
+    { 2976, "gloopx", "alien_liquid" },
+    { 8409, "gnhotel1", "ap_tarmac" },
+    { 8409, "gnhotel1", "carpark1_64" },
+    { 8409, "gnhotel1", "glass_64" },
+    { 8409, "gnhotel1", "gnhoteldoor01_128" },
+    { 8409, "gnhotel1", "gnhoteldoor03_128" },
+    { 8409, "gnhotel1", "gnhoteldoor04_128" },
+    { 8409, "gnhotel1", "gnhoteldoor05_128" },
+    { 8409, "gnhotel1", "gnhotelpanel01_64" },
+    { 8409, "gnhotel1", "gnhotelpanel02_64" },
+    { 8409, "gnhotel1", "gnhotelpillar01_128" },
+    { 8409, "gnhotel1", "gnhotelstairs01_128" },
+    { 8409, "gnhotel1", "gnhotelwall03_128" },
+    { 8409, "gnhotel1", "gnhotelwall06_128" },
+    { 8409, "gnhotel1", "gnhotelwall07_128" },
+    { 8409, "gnhotel1", "gnhotelwindow01_128" },
+    { 8409, "gnhotel1", "old_corugwal_256" },
+    { 8409, "gnhotel1", "Plaindoorblue_128" },
+    { 8409, "gnhotel1", "redstuff" },
+    { 8409, "gnhotel1", "step_64HV" },
+    { 2993, "goflagx", "GOflag" },
+    { 3070, "gogsx", "nightvision" },
+    { 9683, "goldengate_sfw", "bridge_egg_sfw" },
+    { 9683, "goldengate_sfw", "ws_goldengate1" },
+    { 9683, "goldengate_sfw", "ws_goldengate4" },
+    { 1974, "golfball", "kb_golf" },
+    { 10403, "golf_sfs", "golf_fairway1" },
+    { 10403, "golf_sfs", "golf_fairway2" },
+    { 10403, "golf_sfs", "golf_grassrock" },
+    { 10403, "golf_sfs", "golf_gravelpath" },
+    { 10403, "golf_sfs", "golf_greengrass" },
+    { 10403, "golf_sfs", "rock_country128blnd" },
+    { 4227, "graffiti_lan01", "cleargraf01_LA" },
+    { 3261, "grasshouse", "hoophouse" },
+    { 3261, "grasshouse", "veg_bmarijuana" },
+    { 3261, "grasshouse", "veg_marijuana" },
+    { 13725, "gravblok01_lahills", "dirtybeach01_law" },
+    { 13725, "gravblok01_lahills", "hosp03_law" },
+    { 10442, "graveyard_sfs", "ws_graveydfence" },
+    { 10442, "graveyard_sfs", "ws_grvl_desgrassblend" },
+    { 10442, "graveyard_sfs", "ws_memorial" },
+    { 4810, "griffobs_las", "cornice01_la" },
+    { 4810, "griffobs_las", "Gen_Log" },
+    { 4810, "griffobs_las", "Gen_Log_End" },
+    { 4810, "griffobs_las", "grifnewtex1b" },
+    { 4810, "griffobs_las", "hllblf2_LAE" },
+    { 4810, "griffobs_las", "lasjmslumruf" },
+    { 4810, "griffobs_las", "sm_pinetreebit" },
+    { 4810, "griffobs_las", "wilsd_06_la" },
+    { 4810, "griffobs_las", "wilsd_08_la" },
+    { 4810, "griffobs_las", "ws_neatwoodfence" },
+    { 9919, "grnwht_sfe", "sfe_redwht1" },
+    { 9919, "grnwht_sfe", "sfe_redwht1b" },
+    { 9919, "grnwht_sfe", "sfe_redwht2" },
+    { 9919, "grnwht_sfe", "sfe_redwht3" },
+    { 9919, "grnwht_sfe", "sfe_redwht4" },
+    { 9919, "grnwht_sfe", "sfe_wall_1" },
+    { 9919, "grnwht_sfe", "sf_hospitaldr1" },
+    { 9919, "grnwht_sfe", "sf_hospitaldr2" },
+    { 9919, "grnwht_sfe", "sl_dtdoor1" },
+    { 9919, "grnwht_sfe", "vic01_LA" },
+    { 9919, "grnwht_sfe", "victim_sfe" },
+    { 9919, "grnwht_sfe", "whitgrn_sfe1" },
+    { 9919, "grnwht_sfe", "whitgrn_sfe2" },
+    { 9919, "grnwht_sfe", "whitgrn_sfe3" },
+    { 9919, "grnwht_sfe", "whitgrn_sfe4" },
+    { 9919, "grnwht_sfe", "whitgrn_sfe5" },
+    { 9919, "grnwht_sfe", "whitgrn_sfe6" },
+    { 5111, "ground2_las2", "Grass_dirt_64HV" },
+    { 5111, "ground2_las2", "sanpedcorn1" },
+    { 5111, "ground2_las2", "sanpedpawn1a" },
+    { 5111, "ground2_las2", "sjmlawarhustrim" },
+    { 4849, "ground3_las", "backalley1_LAe" },
+    { 4849, "ground3_las", "floorboard256128" },
+    { 4849, "ground3_las", "hollysign05_LAw" },
+    { 4849, "ground3_las", "lasnude1" },
+    { 4849, "ground3_las", "lasnude2" },
+    { 4849, "ground3_las", "lasnude7" },
+    { 4849, "ground3_las", "lasnude9" },
+    { 4849, "ground3_las", "lasnude9a" },
+    { 4849, "ground3_las", "lasnude9h" },
+    { 4849, "ground3_las", "newcut4_LAS" },
+    { 4849, "ground3_las", "rubbish" },
+    { 4849, "ground3_las", "sanpedowd5" },
+    { 5122, "ground3_las2", "fossiloil_128" },
+    { 5122, "ground3_las2", "Was_alt" },
+    { 5122, "ground3_las2", "Was_crush" },
+    { 5122, "ground3_las2", "Was_dier" },
+    { 5122, "ground3_las2", "Was_engblox" },
+    { 5122, "ground3_las2", "Was_scrpyd_tires_pile" },
+    { 5122, "ground3_las2", "Was__mdedge" },
+    { 4820, "ground4_las", "adet" },
+    { 4820, "ground4_las", "ahoodnewwi2" },
+    { 4820, "ground4_las", "compfence6_LAe" },
+    { 4820, "ground4_las", "driveway2_128" },
+    { 4820, "ground4_las", "driveway_128" },
+    { 4820, "ground4_las", "hedge" },
+    { 4820, "ground4_las", "lasjmscruffwall5" },
+    { 4820, "ground4_las", "sanpednhus2" },
+    { 4820, "ground4_las", "sanpedwall4" },
+    { 4820, "ground4_las", "sjmlahus232" },
+    { 4806, "ground5_las", "combrd1" },
+    { 4806, "ground5_las", "labreplace" },
+    { 4806, "ground5_las", "newcut2_LAS" },
+    { 4806, "ground5_las", "newcut3_LAS" },
+    { 4806, "ground5_las", "roof11L256" },
+    { 10356, "groundbit_sfs", "ws_hextile" },
+    { 10851, "groundbit_sfse", "ws_altz_wall6big" },
+    { 5135, "groundb_las2", "cmpwarhus2" },
+    { 5135, "groundb_las2", "sanpedock95" },
+    { 5135, "groundb_las2", "sanpedock97" },
+    { 5135, "groundb_las2", "snpedwar1" },
+    { 5135, "groundb_las2", "snpedwar2" },
+    { 5138, "ground_las2", "sanpedock3" },
+    { 14406, "gs_mansion_lights", "mp_CJ_Light" },
+    { 14406, "gs_mansion_lights", "mp_CJ_LIGHT_FITTING" },
+    { 726, "gtatreesh", "oakbark64" },
+    { 726, "gtatreesh", "oakleaf1" },
+    { 726, "gtatreesh", "oakleaf2" },
+    { 726, "gtatreesh", "pinebranch2" },
+    { 726, "gtatreesh", "pinewood" },
+    { 727, "gtatreesh04", "spruce1" },
+    { 727, "gtatreesh04", "sprucebark" },
+    { 728, "gtatreeshi", "berrybush1" },
+    { 729, "gtatreeshi7", "cedar1" },
+    { 731, "gtatreeshi9", "bchamae" },
+    { 731, "gtatreeshi9", "cypress1" },
+    { 731, "gtatreeshi9", "cypress2" },
+    { 730, "gtatreeshifir", "bthuja1" },
+    { 730, "gtatreeshifir", "cedar2" },
+    { 650, "gta_cactus", "sjm cactus" },
+    { 674, "gta_deserttrees", "sm_cactus_leaf" },
+    { 674, "gta_deserttrees", "sm_josh_bark" },
+    { 674, "gta_deserttrees", "sm_josh_leaf" },
+    { 630, "gta_potplants", "greekurn" },
+    { 630, "gta_potplants", "kb_teracota_pot64" },
+    { 630, "gta_potplants", "yuka256" },
+    { 858, "gta_procdesert", "sm_des_bush2" },
+    { 858, "gta_procdesert", "sm_des_bush3" },
+    { 817, "gta_procflowers", "gras07Si" },
+    { 825, "gta_proc_bigbush", "veg_bush1" },
+    { 825, "gta_proc_bigbush", "veg_bush4" },
+    { 802, "gta_proc_bushland", "veg_bush3" },
+    { 802, "gta_proc_bushland", "veg_bush3red" },
+    { 801, "gta_proc_ferns", "veg_bush2" },
+    { 801, "gta_proc_ferns", "veg_bushgrn" },
+    { 801, "gta_proc_ferns", "veg_bushred" },
+    { 812, "gta_proc_grassland", "oak2b" },
+    { 804, "gta_proc_grasslanda", "veg_leaf" },
+    { 804, "gta_proc_grasslanda", "veg_leafred" },
+    { 806, "gta_proc_rushes", "gras03Si" },
+    { 806, "gta_proc_rushes", "gras04Si" },
+    { 716, "gta_tree_bevhills", "treegridtop_law" },
+    { 716, "gta_tree_bevhills", "trunk3" },
+    { 716, "gta_tree_bevhills", "trunk5" },
+    { 716, "gta_tree_bevhills", "vegaspalm01_128" },
+    { 615, "gta_tree_boak", "bark04S64" },
+    { 615, "gta_tree_boak", "sm_redwood_bark" },
+    { 654, "gta_tree_oldpine", "pinelo128" },
+    { 654, "gta_tree_oldpine", "tree19Mi" },
+    { 670, "gta_tree_pine", "sm_redwood_branch" },
+    { 17540, "gymblok2_lae2", "gangshop1_LAe" },
+    { 17540, "gymblok2_lae2", "roadsignbackground128" },
+    { 2913, "gym_weights", "cheerybox01" },
+    { 10355, "haight1_sfs", "beigeledge" },
+    { 10355, "haight1_sfs", "drivetile_02" },
+    { 10355, "haight1_sfs", "sl_vic_cornice1" },
+    { 10355, "haight1_sfs", "ws_apartmentmanky1" },
+    { 10355, "haight1_sfs", "ws_apartmentmanky2" },
+    { 10355, "haight1_sfs", "ws_apartmentmankyb1" },
+    { 10355, "haight1_sfs", "ws_apartmentmankyb2" },
+    { 10355, "haight1_sfs", "ws_apartmentmankyblue1" },
+    { 10355, "haight1_sfs", "ws_apartmentmankygreen1" },
+    { 10355, "haight1_sfs", "ws_apartmentmankywhite1" },
+    { 10355, "haight1_sfs", "ws_apartmentpink1" },
+    { 10355, "haight1_sfs", "ws_apartmentpink2" },
+    { 10355, "haight1_sfs", "ws_apartmentred1" },
+    { 10355, "haight1_sfs", "ws_apartmentred2" },
+    { 10355, "haight1_sfs", "ws_apartmentwhite1" },
+    { 10355, "haight1_sfs", "ws_apartmentwhite2" },
+    { 10355, "haight1_sfs", "ws_apartmentwhite3" },
+    { 10355, "haight1_sfs", "ws_dom's" },
+    { 10355, "haight1_sfs", "ws_ed_shop10" },
+    { 10355, "haight1_sfs", "ws_ed_shop12" },
+    { 10355, "haight1_sfs", "ws_ed_shop2" },
+    { 10355, "haight1_sfs", "ws_ed_shop3" },
+    { 10355, "haight1_sfs", "ws_ed_shop4" },
+    { 10355, "haight1_sfs", "ws_hashbanner" },
+    { 10355, "haight1_sfs", "ws_japwin" },
+    { 10428, "hashblock1b_sfs", "gz_vic3a" },
+    { 10428, "hashblock1b_sfs", "ws_haight2btom" },
+    { 10428, "hashblock1b_sfs", "ws_haight2top5" },
+    { 10430, "hashblock1z_sfs", "ws_apartmentblue1" },
+    { 10430, "hashblock1z_sfs", "ws_apartmentmankyc1" },
+    { 10430, "hashblock1z_sfs", "ws_ed_shop13" },
+    { 10430, "hashblock1z_sfs", "ws_ed_shop13_door" },
+    { 10430, "hashblock1z_sfs", "ws_haight2top4" },
+    { 10430, "hashblock1z_sfs", "ws_haightfrontage2" },
+    { 10429, "hashblock1_sfs", "Bow_Concrete_drip" },
+    { 10429, "hashblock1_sfs", "ws_apartmentblue2" },
+    { 10429, "hashblock1_sfs", "ws_haight2top6" },
+    { 10429, "hashblock1_sfs", "ws_haight3btm" },
+    { 10429, "hashblock1_sfs", "ws_haight4" },
+    { 10429, "hashblock1_sfs", "ws_haighttattoo" },
+    { 10429, "hashblock1_sfs", "ws_hippy2" },
+    { 10429, "hashblock1_sfs", "ws_spliff" },
+    { 10429, "hashblock1_sfs", "ws_streak_billbd" },
+    { 10429, "hashblock1_sfs", "ws_suburbansign" },
+    { 10434, "hashblock2b_sfs", "ws_apartmentgrn1" },
+    { 10434, "hashblock2b_sfs", "ws_apartmentgrn2" },
+    { 10434, "hashblock2b_sfs", "ws_emg_awning" },
+    { 10434, "hashblock2b_sfs", "ws_haight2top" },
+    { 10434, "hashblock2b_sfs", "ws_haightshop1alt" },
+    { 10434, "hashblock2b_sfs", "ws_haightshop1altdoor" },
+    { 10434, "hashblock2b_sfs", "ws_mural2" },
+    { 10431, "hashblock2_sfs", "ws_w's_shopfront" },
+    { 10431, "hashblock2_sfs", "ws_w's_shopfront_top" },
+    { 10439, "hashblock3_sfs", "dt_road_to_alley" },
+    { 10439, "hashblock3_sfs", "ws_hs_awning" },
+    { 10439, "hashblock3_sfs", "ws_mural1" },
+    { 10435, "hashblock4_sfs", "redshade2_64" },
+    { 10435, "hashblock4_sfs", "ws_apartmentmint1" },
+    { 10435, "hashblock4_sfs", "ws_apartmentmint2" },
+    { 10435, "hashblock4_sfs", "ws_apartmentmint3" },
+    { 10427, "hashhouses1_sfs", "ws_haight2top1" },
+    { 10427, "hashhouses1_sfs", "ws_haight2top3" },
+    { 10433, "hashmarket1_sfs", "woodboards2" },
+    { 3860, "hashmarket_sfsx", "ws_tarp1" },
+    { 3860, "hashmarket_sfsx", "ws_tarp2" },
+    { 3860, "hashmarket_sfsx", "ws_tarp3" },
+    { 3860, "hashmarket_sfsx", "ws_tarp4" },
+    { 10447, "hashupass_sfs", "Bow_sub_wallGrime" },
+    { 3878, "headstones_sfsx", "ws_wargrave" },
+    { 3878, "headstones_sfsx", "ws_wargrave2" },
+    { 1301, "helimagnet", "Copperoxb64" },
+    { 981, "helixbarrier", "bridgehzrd_kb_128" },
+    { 981, "helixbarrier", "colourboxes" },
+    { 981, "helixbarrier", "curb_64H" },
+    { 14514, "hexi_lite", "ab_hexi_Lite" },
+    { 13734, "hillcliff_lahills", "cobbles_kb_256" },
+    { 3619, "hillhouse14_la", "anwfrntbev4" },
+    { 3619, "hillhouse14_la", "aposhus1" },
+    { 3619, "hillhouse14_la", "aposhus2" },
+    { 3619, "hillhouse14_la", "aposhus3" },
+    { 3619, "hillhouse14_la", "aposhus4" },
+    { 3600, "hillhousex13_6", "courthsewin_128" },
+    { 3600, "hillhousex13_6", "roof01L256" },
+    { 3608, "hillhousex2_us", "mulhuose01_law" },
+    { 3601, "hillhousex4_5", "bevgate02_law" },
+    { 3601, "hillhousex4_5", "inwindow1" },
+    { 3612, "hillhousex_la10_12", "downtwin20" },
+    { 3598, "hillhousex_la1_2", "bevdoor04_law" },
+    { 3598, "hillhousex_la1_2", "plasterLAh" },
+    { 3598, "hillhousex_la1_2", "shinglesLAh" },
+    { 3598, "hillhousex_la1_2", "sunsetwin01_LA" },
+    { 3598, "hillhousex_la1_2", "sunsetwin02_LA" },
+    { 1851, "hi_cutdice", "dice3" },
+    { 5718, "hobos_lawn", "carney01_LAwN" },
+    { 5718, "hobos_lawn", "carney02_LAwN" },
+    { 5718, "hobos_lawn", "carney03_LAwN" },
+    { 5718, "hobos_lawn", "carney04_LAwN" },
+    { 5718, "hobos_lawn", "Smear_CemLAwN" },
+    { 9593, "hosbibalsfw", "2hospital1sfw" },
+    { 9593, "hosbibalsfw", "2hospital2sfw" },
+    { 9593, "hosbibalsfw", "2hospital3sfw" },
+    { 9593, "hosbibalsfw", "2hospital4sfw" },
+    { 9593, "hosbibalsfw", "2hospital5sfw" },
+    { 9593, "hosbibalsfw", "2hospital6sfw" },
+    { 9593, "hosbibalsfw", "2hospital7sfw" },
+    { 9593, "hosbibalsfw", "hospital6_sfw" },
+    { 9593, "hosbibalsfw", "hospital7_sfw" },
+    { 9593, "hosbibalsfw", "hospital8t_sfw" },
+    { 9593, "hosbibalsfw", "paveslab1" },
+    { 2558, "hospital", "CJ_H_CURTAIN1" },
+    { 3899, "hospital2", "airportdoor1" },
+    { 3899, "hospital2", "AmbulanceParking_64" },
+    { 3899, "hospital2", "black" },
+    { 3899, "hospital2", "burnt_faggots64" },
+    { 3899, "hospital2", "concretenew256" },
+    { 3899, "hospital2", "cutscenebank128" },
+    { 3899, "hospital2", "dustyconcrete128" },
+    { 3899, "hospital2", "fire_exit128" },
+    { 3899, "hospital2", "hospitalboard_128a" },
+    { 3899, "hospital2", "HospitalCarPark_64" },
+    { 3899, "hospital2", "ind_hospital1_128" },
+    { 3899, "hospital2", "ind_hospital2_128" },
+    { 3899, "hospital2", "newall15128" },
+    { 3899, "hospital2", "notice01_128" },
+    { 3899, "hospital2", "plainwoodoor2" },
+    { 3899, "hospital2", "runwaylight_64" },
+    { 3899, "hospital2", "sky33_64hv" },
+    { 5402, "hospital_lae", "hospwin1_LAe" },
+    { 5402, "hospital_lae", "hospwin2_LAe" },
+    { 5402, "hospital_lae", "hospwin3_LAe" },
+    { 5708, "hospital_lawn", "allsaints2_law copy" },
+    { 5708, "hospital_lawn", "allsaints_law" },
+    { 5708, "hospital_lawn", "hosp01_law" },
+    { 5708, "hospital_lawn", "hosp03b_law" },
+    { 5708, "hospital_lawn", "rock1b_128" },
+    { 10412, "hotel1", "carpet_red_256" },
+    { 10412, "hotel1", "gold128" },
+    { 10412, "hotel1", "grasslawnfade_256" },
+    { 10412, "hotel1", "ws_awning" },
+    { 10412, "hotel1", "ws_hotel1" },
+    { 10412, "hotel1", "ws_hotel2" },
+    { 10412, "hotel1", "ws_hotel5" },
+    { 10412, "hotel1", "ws_hotel6" },
+    { 10412, "hotel1", "ws_hotelrail" },
+    { 10412, "hotel1", "ws_vankhoffsign" },
+    { 10425, "hotel2_sfs", "ws_hoteldoor1" },
+    { 10444, "hotelbackpool_sfs", "ws_hotel7" },
+    { 10444, "hotelbackpool_sfs", "ws_hotel7b" },
+    { 10615, "hotelback_sfs", "ws_desgreengrass_pave" },
+    { 3432, "hotelcanopy", "gnhotelcanopy01_64" },
+    { 3432, "hotelcanopy", "gnhotelcanopy03_64" },
+    { 9229, "hrbr_sfn", "alleydoor7" },
+    { 9229, "hrbr_sfn", "dt_bridge_rail_texture" },
+    { 11389, "hubint1_sfse", "ws_altz_wall5_BIG" },
+    { 11389, "hubint1_sfse", "ws_altz_wall7_BIG" },
+    { 11389, "hubint1_sfse", "ws_peeling_ceiling1_BIG" },
+    { 11389, "hubint1_sfse", "ws_STDcalendar" },
+    { 11390, "hubint2", "ws_greymetal_small" },
+    { 11390, "hubint2", "ws_lightswitchgrubby" },
+    { 11391, "hubprops2_sfse", "blackbag" },
+    { 11391, "hubprops2_sfse", "CJ_fire" },
+    { 17518, "hub_alpha", "clothline1_LAe" },
+    { 17518, "hub_alpha", "macbrij1_LAe" },
+    { 1246, "icons", "pill_32" },
+    { 1246, "icons", "skull" },
+    { 1274, "icons2", "yellowhi132" },
+    { 1273, "icons3", "greengrad32" },
+    { 1272, "icons4", "diskmetal32" },
+    { 1272, "icons4", "heart" },
+    { 1272, "icons4", "salogo64" },
+    { 1239, "icons6", "lyellow32" },
+    { 1242, "icons7", "cj_para" },
+    { 1247, "icons9", "bribe16" },
+    { 5418, "idlewood3_lae", "lasjmrail1" },
+    { 5418, "idlewood3_lae", "sanpedmot1" },
+    { 5418, "idlewood3_lae", "sanpedmot3" },
+    { 5418, "idlewood3_lae", "sanpedmot4" },
+    { 5418, "idlewood3_lae", "sanpedmotWIN" },
+    { 5418, "idlewood3_lae", "sanpedton1" },
+    { 5418, "idlewood3_lae", "sanpedton5" },
+    { 5474, "idlewood46_lae", "downtwin29" },
+    { 5474, "idlewood46_lae", "redresdoor" },
+    { 5474, "idlewood46_lae", "vengardoor01_law" },
+    { 5411, "idlewood6_detail", "eastwin02_LAe2" },
+    { 5411, "idlewood6_detail", "holwall" },
+    { 5411, "idlewood6_detail", "ladocksig1" },
+    { 5411, "idlewood6_detail", "snpedwar4b" },
+    { 5422, "idlewood6_lae", "barberpole1" },
+    { 5422, "idlewood6_lae", "barbershop1" },
+    { 5422, "idlewood6_lae", "concretebigc256128" },
+    { 5422, "idlewood6_lae", "gangshop9_LAe" },
+    { 5422, "idlewood6_lae", "las69str2" },
+    { 5422, "idlewood6_lae", "lastat4" },
+    { 5422, "idlewood6_lae", "liqdel1" },
+    { 5422, "idlewood6_lae", "reeces_LAe" },
+    { 5422, "idlewood6_lae", "sanpshop4" },
+    { 5422, "idlewood6_lae", "sjmhicut1las" },
+    { 5417, "idlewood6_tr", "ladocksig2" },
+    { 5417, "idlewood6_tr", "ladocksig3" },
+    { 14502, "immy_furn", "ab_pipe" },
+    { 14502, "immy_furn", "mp_motel_bed" },
+    { 14502, "immy_furn", "mp_motel_bed1" },
+    { 14502, "immy_furn", "mp_motel_bed2" },
+    { 14498, "imm_rooms", "venetian_blind" },
+    { 14500, "imm_roomss", "ab_tilehex2" },
+    { 14500, "imm_roomss", "Bow_bar_top" },
+    { 14500, "imm_roomss", "motel_wall2" },
+    { 14500, "imm_roomss", "mp_motel_bluew" },
+    { 14500, "imm_roomss", "mp_motel_bluewALT" },
+    { 14500, "imm_roomss", "mp_motel_carpet" },
+    { 14500, "imm_roomss", "mp_motel_wallpaper" },
+    { 14500, "imm_roomss", "mp_motel_wallpaper1" },
+    { 2986, "imm_roomx", "kb_imvent" },
+    { 5126, "imrancomp_las2", "sanpdconv" },
+    { 5126, "imrancomp_las2", "sanpedock94" },
+    { 5132, "imstuff_las2", "cardbrdirty128" },
+    { 5132, "imstuff_las2", "sjmlawarplt2" },
+    { 5132, "imstuff_las2", "sjmlawarshcrategen" },
+    { 14506, "imy_motel", "ab_tile1" },
+    { 14506, "imy_motel", "Ah_exit" },
+    { 14506, "imy_motel", "mp_motel_numbers" },
+    { 14506, "imy_motel", "mp_motel_pinkw" },
+    { 14506, "imy_motel", "mp_motel_pinkwALT" },
+    { 14506, "imy_motel", "mp_motel_roof" },
+    { 14506, "imy_motel", "mp_motel_rooms" },
+    { 14506, "imy_motel", "mp_motel_whitewall" },
+    { 14506, "imy_motel", "mp_motel_whitewallALT" },
+    { 14525, "imy_motel2", "ah_skylight" },
+    { 14525, "imy_motel2", "mp_motel_reception" },
+    { 2989, "imy_skylx", "skylightkb" },
+    { 3059, "imy_smsx", "niteclb1_LAe" },
+    { 3059, "imy_smsx", "niteclb3_LAe" },
+    { 3091, "imy_trx", "kb_trainbarrier" },
+    { 14515, "im_motelxtras", "wallsocketkb" },
+    { 14516, "im_xtra", "CJ_PAINTING13" },
+    { 3895, "inditaly", "Plaindoor_64V" },
+    { 3895, "inditaly", "stepflat_64HV" },
+    { 3895, "inditaly", "tenwhite128" },
+    { 3895, "inditaly", "tenwhitebrick64" },
+    { 3896, "indust1", "block_maindraga" },
+    { 3896, "indust1", "concretenewb32" },
+    { 3896, "indust1", "firewall" },
+    { 3896, "indust1", "Grass_32" },
+    { 3896, "indust1", "indsmallwall64" },
+    { 3896, "indust1", "ind_tendragblka" },
+    { 3896, "indust1", "ind_tendragblkb" },
+    { 3896, "indust1", "LO1road_128" },
+    { 3896, "indust1", "sandytar_64HV" },
+    { 3896, "indust1", "tarmac_64HV" },
+    { 3901, "indust2", "railplat01" },
+    { 3901, "indust2", "rustybolts64" },
+    { 3901, "indust2", "rustybolts_drk32" },
+    { 3722, "indust2_lax", "Was_grfiti" },
+    { 3722, "indust2_lax", "Was_sd" },
+    { 914, "industrialext", "CJ_PANEL" },
+    { 914, "industrialext", "CJ_Panel2" },
+    { 914, "industrialext", "CJ_SPEC" },
+    { 914, "industrialext", "CJ_VENT1" },
+    { 914, "industrialext", "cj_yellowgenerator" },
+    { 914, "industrialext", "lecybox" },
+    { 5140, "industry3_las2", "lasclean2" },
+    { 5140, "industry3_las2", "santall2" },
+    { 5140, "industry3_las2", "santall5" },
+    { 5140, "industry3_las2", "santall7" },
+    { 5140, "industry3_las2", "santall8" },
+    { 5140, "industry3_las2", "santall8s" },
+    { 5140, "industry3_las2", "sjmhicut4las" },
+    { 5140, "industry3_las2", "sjmlashopsig1" },
+    { 5140, "industry3_las2", "sjmlashopsig2" },
+    { 5140, "industry3_las2", "snpedshptst3" },
+    { 3636, "indust_lax", "lasjmpow4" },
+    { 3636, "indust_lax", "lasjmpow91" },
+    { 3636, "indust_lax", "lasjmpow93" },
+    { 3636, "indust_lax", "lasjmpow94" },
+    { 3636, "indust_lax", "lasjmpow95" },
+    { 13627, "inneroval", "loadbay64" },
+    { 13627, "inneroval", "newgrnd1brntrk_128" },
+    { 13624, "innertrak", "AH_dirt64b2" },
+    { 13624, "innertrak", "AH_dirtmix_128" },
+    { 13624, "innertrak", "dirtgrass" },
+    { 18008, "intclothesa", "chromeffect" },
+    { 18008, "intclothesa", "CJ_VICT_DOOR2" },
+    { 18008, "intclothesa", "CJ_VIC_1" },
+    { 18008, "intclothesa", "CJ_VIC_2" },
+    { 18008, "intclothesa", "mp_cloth_vicfloor" },
+    { 18008, "intclothesa", "mp_cloth_vicgird" },
+    { 18008, "intclothesa", "mp_lightfitting" },
+    { 18008, "intclothesa", "shop_rail" },
+    { 18008, "intclothesa", "shop_rail2" },
+    { 18008, "intclothesa", "shop_shelf11" },
+    { 18008, "intclothesa", "shop_wall3" },
+    { 18008, "intclothesa", "stair_treads" },
+    { 18094, "intclothesa2", "denims" },
+    { 18024, "intclotheshiphop", "CJ_SUBURB_WIN" },
+    { 18024, "intclotheshiphop", "concreteCJ256" },
+    { 18024, "intclotheshiphop", "mp_cloth_sub" },
+    { 18024, "intclotheshiphop", "mp_cop_light" },
+    { 18067, "intclothes_acc", "CJ_VIC_3" },
+    { 18067, "intclothes_acc", "CJ_VIC_4" },
+    { 18067, "intclothes_acc", "mp_cloth_vic" },
+    { 18067, "intclothes_acc", "mp_cloth_vicrug" },
+    { 14783, "intgarage2aint3", "canvas22" },
+    { 14783, "intgarage2aint3", "garagewall1" },
+    { 14783, "intgarage2aint3", "gragedoorkb2" },
+    { 14783, "intgarage2aint3", "hotknifebody2kb" },
+    { 14783, "intgarage2aint3", "hotknifebody3kb" },
+    { 14660, "inttattoobits", "tatoo_chair1" },
+    { 14660, "inttattoobits", "tatoo_chair3" },
+    { 14660, "inttattoobits", "tat_roll1" },
+    { 14660, "inttattoobits", "tat_spray1" },
+    { 14660, "inttattoobits", "tat_tissue3" },
+    { 14660, "inttattoobits", "tissues2" },
+    { 14660, "inttattoobits", "tissues4" },
+    { 14771, "int_brothelint3", "Bow_bar_cooler_lwr" },
+    { 14771, "int_brothelint3", "Bow_bar_cooler_upr" },
+    { 14771, "int_brothelint3", "Bow_bar_panelfront" },
+    { 14771, "int_brothelint3", "carpbroth1" },
+    { 14771, "int_brothelint3", "GB_midbar06" },
+    { 14771, "int_brothelint3", "GB_midbar09" },
+    { 14771, "int_brothelint3", "GB_midbar10" },
+    { 14771, "int_brothelint3", "GB_midbar15" },
+    { 14771, "int_brothelint3", "GB_nastybar12" },
+    { 14771, "int_brothelint3", "sw_backdoor01" },
+    { 14771, "int_brothelint3", "wallpbroth1" },
+    { 14777, "int_casinoint3", "GB_midbar05" },
+    { 14777, "int_casinoint3", "GB_midbar08" },
+    { 14777, "int_casinoint3", "GB_midbar11" },
+    { 14777, "int_casinoint3", "GB_midbar16" },
+    { 18007, "int_cutbar3", "barbers_wall2" },
+    { 18007, "int_cutbar3", "barbers_wall3" },
+    { 1491, "int_doors", "CJ_WOODDOOR1" },
+    { 1491, "int_doors", "CJ_WOODDOOR2" },
+    { 1491, "int_doors", "CJ_WOODDOOR3" },
+    { 1499, "int_doors(cj)", "CJ_DOORSURROUND" },
+    { 14798, "int_kbsgarage3", "ab_wall_flake" },
+    { 14661, "int_tatoo", "counter1" },
+    { 14661, "int_tatoo", "mp_tat_power" },
+    { 14661, "int_tatoo", "mp_tat_tats1" },
+    { 14661, "int_tatoo", "mp_tat_tats2" },
+    { 14661, "int_tatoo", "tattoo_frm1" },
+    { 14661, "int_tatoo", "tattoo_wall1" },
+    { 14661, "int_tatoo", "tat_shadoa" },
+    { 14531, "int_zerosrca", "CJ_RC_WIN" },
+    { 14531, "int_zerosrca", "donut_ceil" },
+    { 14531, "int_zerosrca", "stadium_ground2" },
+    { 14531, "int_zerosrca", "ws_ed_zeroshop" },
+    { 5401, "jeffers4_lae", "flooringwd01_int" },
+    { 5401, "jeffers4_lae", "newall9b_16c128" },
+    { 5401, "jeffers4_lae", "sidewgrass1" },
+    { 5401, "jeffers4_lae", "stainwinLAe" },
+    { 5406, "jeffers5a_lae", "CJ_SUBURBlw_WIN" },
+    { 5406, "jeffers5a_lae", "discwa1_LAe2" },
+    { 5406, "jeffers5a_lae", "gangshop13_LAe" },
+    { 5406, "jeffers5a_lae", "heat_01" },
+    { 5406, "jeffers5a_lae", "lasuburbansgn1" },
+    { 5406, "jeffers5a_lae", "poshentrance1_256" },
+    { 5406, "jeffers5a_lae", "stonemall2_law" },
+    { 5406, "jeffers5a_lae", "vgnshopwal1_256" },
+    { 5406, "jeffers5a_lae", "vgshopwall05_64" },
+    { 1602, "jellyfish1", "jellyfishc" },
+    { 1603, "jellyfish2", "jellyb2" },
+    { 3047, "jetdx", "mp_jet_roof" },
+    { 14404, "jet_interior", "LD_747_cockpitdoor" },
+    { 14404, "jet_interior", "LD_747_door" },
+    { 14404, "jet_interior", "LD_747_floor" },
+    { 14404, "jet_interior", "LD_747_skin" },
+    { 14404, "jet_interior", "LD_747_toiletdoor" },
+    { 14404, "jet_interior", "mp_jet_cockpit" },
+    { 14404, "jet_interior", "mp_jet_wall" },
+    { 3129, "jt_doorbx", "pldoor_envmap" },
+    { 3129, "jt_doorbx", "pldoor_gen" },
+    { 3132, "jt_doorx", "Shamalbody256" },
+    { 3132, "jt_doorx", "trolley02" },
+    { 2601, "juice", "sprunk2dirty2" },
+    { 3852, "jump_sfxref", "rooftop_pipes" },
+    { 3852, "jump_sfxref", "sfgas1" },
+    { 849, "junkpiles", "CJgrass" },
+    { 849, "junkpiles", "ws_oldredbrick" },
+    { 2188, "kbblackjack", "balckjack_txt2a" },
+    { 2188, "kbblackjack", "bj_squrea" },
+    { 2188, "kbblackjack", "chip_tray_1" },
+    { 2188, "kbblackjack", "chip_tray_gry" },
+    { 2188, "kbblackjack", "deck_cards" },
+    { 2188, "kbblackjack", "roulette_4_256" },
+    { 2188, "kbblackjack", "roulette_6_256" },
+    { 2188, "kbblackjack", "roulette_wood" },
+    { 2188, "kbblackjack", "wheel_o_2b" },
+    { 1853, "kbchips1", "indx_chip1" },
+    { 1853, "kbchips1", "indx_chip2" },
+    { 1853, "kbchips1", "indx_chip3" },
+    { 1853, "kbchips1", "indx_chip4" },
+    { 1853, "kbchips1", "indx_chip5" },
+    { 1853, "kbchips1", "indx_chip6" },
+    { 1706, "kbcouch1", "kbcornice_2_128" },
+    { 1706, "kbcouch1", "kbwood_panel4_128" },
+    { 1706, "kbcouch1", "kb_sofa555c" },
+    { 1706, "kbcouch1", "kb_sofa555d" },
+    { 1706, "kbcouch1", "kb_sofaside2" },
+    { 1706, "kbcouch1", "kb_sofa_256" },
+    { 1950, "kbeer", "bottles_kb2" },
+    { 4892, "kbgarage_las", "aanewwin" },
+    { 4892, "kbgarage_las", "ahoodnewdr1" },
+    { 4892, "kbgarage_las", "canvas22sjm" },
+    { 5341, "kbgarage_las2", "sanpedwall2" },
+    { 1826, "kbmiscfrn1", "bank_mny_LR" },
+    { 1826, "kbmiscfrn1", "bank_safe_LR" },
+    { 1826, "kbmiscfrn1", "bnk_dsk_2" },
+    { 1826, "kbmiscfrn1", "man_mny2" },
+    { 1826, "kbmiscfrn1", "wee_blak_32" },
+    { 1825, "kbmiscfrn1cj", "htl_tbltop2" },
+    { 1827, "kbmiscfrn2", "chrome_sheet" },
+    { 1827, "kbmiscfrn2", "man_mny1" },
+    { 1827, "kbmiscfrn2", "safridge_256" },
+    { 627, "kbplantssmz", "plantc256" },
+    { 1978, "kbroul1", "green_beize_128" },
+    { 1978, "kbroul1", "roulette_surf1" },
+    { 1978, "kbroul1", "roulette_surf2" },
+    { 1978, "kbroul1", "roulette_wood3" },
+    { 1929, "kbroul2", "oliveash_256" },
+    { 1929, "kbroul2", "roulet_nosa" },
+    { 1929, "kbroul2", "roul_slotbit2" },
+    { 1929, "kbroul2", "roul_slotbit3" },
+    { 1929, "kbroul2", "roul_slotbit4" },
+    { 1929, "kbroul2", "roul_slotbit5" },
+    { 1929, "kbroul2", "roul_slotbit6" },
+    { 1830, "kbslotmchines", "slot2" },
+    { 1830, "kbslotmchines", "slot3" },
+    { 1830, "kbslotmchines", "slot4" },
+    { 1830, "kbslotmchines", "slot5" },
+    { 1830, "kbslotmchines", "slot7" },
+    { 1830, "kbslotmchines", "slot_bit2" },
+    { 1948, "kbslotnu", "larg_reel1" },
+    { 1948, "kbslotnu", "slot_black" },
+    { 1948, "kbslotnu", "slot_chrome1" },
+    { 1948, "kbslotnu", "slot_steel" },
+    { 1948, "kbslotnu", "wheel_o_tbl1a" },
+    { 1828, "kbtgr_rug", "man_tigr_rug" },
+    { 1707, "kb_carcouch", "kb_car_couch2" },
+    { 2957, "kb_ctdoorx", "garage_docks" },
+    { 1839, "kb_hifi", "blak_speaker" },
+    { 1839, "kb_hifi", "hifi_1" },
+    { 1839, "kb_hifi", "hifi_2" },
+    { 1702, "kb_parker", "kbsofa333e" },
+    { 1702, "kb_parker", "kb_sofaside1" },
+    { 2890, "kb_skip_txd", "skipY" },
+    { 2890, "kb_skip_txd", "skip_peeling1" },
+    { 2890, "kb_skip_txd", "skip_rubble1" },
+    { 1895, "kb_wheel1", "roulette_4drk" },
+    { 1895, "kb_wheel1", "wheel_o_1" },
+    { 1895, "kb_wheel1", "wheel_o_2" },
+    { 1895, "kb_wheel1", "wheel_o_2c" },
+    { 1895, "kb_wheel1", "wheel_o_2d" },
+    { 1895, "kb_wheel1", "wheel_o_2e" },
+    { 1895, "kb_wheel1", "wheel_o_2f" },
+    { 1895, "kb_wheel1", "wheel_o_3" },
+    { 1895, "kb_wheel1", "white256" },
+    { 2988, "kcomp_gx", "kmwood_gate" },
+    { 3116, "kei_wnchx", "trilby04" },
+    { 2886, "keypad", "nt_phone3" },
+    { 13634, "kickarse", "law_blue1" },
+    { 13590, "kickstart", "AH_barpanelM" },
+    { 13590, "kickstart", "ah_bluBADWL" },
+    { 13590, "kickstart", "AH_fitlhskirting" },
+    { 13590, "kickstart", "ah_logend" },
+    { 13590, "kickstart", "carlites64a" },
+    { 13590, "kickstart", "carundera64" },
+    { 13590, "kickstart", "Grass-base-Right" },
+    { 13590, "kickstart", "kickGrass" },
+    { 13590, "kickstart", "midtrack" },
+    { 13590, "kickstart", "rock01_law" },
+    { 13590, "kickstart", "Rocky road" },
+    { 13590, "kickstart", "Upt_Precinct_woodLedge" },
+    { 13590, "kickstart", "yellowrust2_64" },
+    { 14384, "kit3hghg", "AH_greencurtain" },
+    { 2942, "kmb_atmx", "kmb_atm" },
+    { 2942, "kmb_atmx", "kmb_atm_dam" },
+    { 2942, "kmb_atmx", "kmb_atm_sign" },
+    { 2942, "kmb_atmx", "kmb_chip1" },
+    { 2942, "kmb_atmx", "kmb_chip2" },
+    { 2942, "kmb_atmx", "kmb_wiresC" },
+    { 2960, "kmb_beamx", "kmb_beam" },
+    { 2903, "kmb_chute", "chute_coords" },
+    { 2903, "kmb_chute", "kb_lug1" },
+    { 2903, "kmb_chute", "parachute" },
+    { 2922, "kmb_keypadx", "keypad2" },
+    { 2922, "kmb_keypadx", "keypad_glass" },
+    { 2922, "kmb_keypadx", "keypad_light" },
+    { 2949, "kmb_lockdoortxd", "locked_door" },
+    { 2901, "kmb_marijtxd", "kmb_marijuana" },
+    { 2894, "kmb_notebook", "kmb_notebook" },
+    { 2891, "kmb_packet", "kmb_packet" },
+    { 2953, "kmb_paperx", "kmb_write_code" },
+    { 2936, "kmb_rckx", "larock256" },
+    { 3124, "ksnipx", "ak47_all" },
+    { 2972, "k_cratesx", "747_crate" },
+    { 2972, "k_cratesx", "cargo1_128" },
+    { 2972, "k_cratesx", "cargo3_128" },
+    { 2972, "k_cratesx", "tyrecover_256128" },
+    { 2977, "k_militbx", "military_cratee" },
+    { 2964, "k_pool", "blue_pool_table" },
+    { 2964, "k_pool", "poolcue" },
+    { 2964, "k_pool", "pool_table_cloth" },
+    { 14708, "labig1int2", "ab_mottleGrey" },
+    { 14708, "labig1int2", "doorframew" },
+    { 14708, "labig1int2", "GB_restaursmll32" },
+    { 14708, "labig1int2", "GB_restaursmll38" },
+    { 14708, "labig1int2", "GB_restaursmll52" },
+    { 14708, "labig1int2", "GB_restaursmll53" },
+    { 14708, "labig1int2", "HS1_2Wall5" },
+    { 14708, "labig1int2", "HS1_wall5" },
+    { 14708, "labig1int2", "HS2_3Wall2" },
+    { 14708, "labig1int2", "HS2_Artex5" },
+    { 14708, "labig1int2", "HS2_floor2" },
+    { 14708, "labig1int2", "HS2_floor3" },
+    { 14708, "labig1int2", "HS2_floor4" },
+    { 14708, "labig1int2", "HS3_wall9" },
+    { 14708, "labig1int2", "HS_art" },
+    { 14708, "labig1int2", "HS_vase" },
+    { 14708, "labig1int2", "HS_wood1" },
+    { 14708, "labig1int2", "mp_apt1_ceiling" },
+    { 14708, "labig1int2", "skirtingw" },
+    { 14708, "labig1int2", "StudioWall" },
+    { 14708, "labig1int2", "vgsclubdoor01_128" },
+    { 14708, "labig1int2", "WH_skirt" },
+    { 14706, "labig2int2", "banniswd_int" },
+    { 14706, "labig2int2", "carpet1aw" },
+    { 14706, "labig2int2", "flooringwd02_int" },
+    { 14706, "labig2int2", "frenchwind2_int" },
+    { 14706, "labig2int2", "frenchwinds_int" },
+    { 14706, "labig2int2", "HS1_Shade2" },
+    { 14706, "labig2int2", "HS2_2Wall1" },
+    { 14706, "labig2int2", "HS2_3Wall6" },
+    { 14706, "labig2int2", "HS3_wall2" },
+    { 14706, "labig2int2", "HS3_wall5" },
+    { 14706, "labig2int2", "HS3_wall7" },
+    { 14706, "labig2int2", "HS_art2" },
+    { 14706, "labig2int2", "HS_art3" },
+    { 14706, "labig2int2", "HS_art5" },
+    { 14706, "labig2int2", "HS_art7" },
+    { 14706, "labig2int2", "HS_art9" },
+    { 14706, "labig2int2", "lightswitch01_int" },
+    { 14706, "labig2int2", "mp_apt1_kitchwallpaper" },
+    { 14706, "labig2int2", "skirtingb" },
+    { 14706, "labig2int2", "vegdoor1_int" },
+    { 14706, "labig2int2", "wallpnice12" },
+    { 14706, "labig2int2", "whitecarpet01" },
+    { 14706, "labig2int2", "wood14S" },
+    { 14707, "labig3int2", "aptdoor01_int" },
+    { 14707, "labig3int2", "bathtile02_int" },
+    { 14707, "labig3int2", "burglry_wall6" },
+    { 14707, "labig3int2", "cactusL" },
+    { 14707, "labig3int2", "HS2_3Carpet1" },
+    { 14707, "labig3int2", "HS2_3Wall10" },
+    { 14707, "labig3int2", "HS2_3Wall5" },
+    { 14707, "labig3int2", "HS2_3Wall7" },
+    { 14707, "labig3int2", "HS2_3Wall9" },
+    { 14707, "labig3int2", "HS_art4" },
+    { 14707, "labig3int2", "HS_art6" },
+    { 14707, "labig3int2", "HS_art8" },
+    { 14707, "labig3int2", "planPot" },
+    { 14707, "labig3int2", "Soil" },
+    { 14707, "labig3int2", "WH_walls" },
+    { 15048, "labigsave", "ah_carp1" },
+    { 15048, "labigsave", "ah_carpet2kb" },
+    { 15048, "labigsave", "AH_carpet4kb" },
+    { 15048, "labigsave", "ah_curwall" },
+    { 15048, "labigsave", "AH_fancyceil" },
+    { 15048, "labigsave", "AH_flroortile1" },
+    { 15048, "labigsave", "AH_flroortile2" },
+    { 15048, "labigsave", "ah_GRYSKT" },
+    { 15048, "labigsave", "ah_pineceiling" },
+    { 15048, "labigsave", "ah_pluskirt" },
+    { 15048, "labigsave", "ah_posmarskirt" },
+    { 15048, "labigsave", "ah_wallstyle1" },
+    { 15048, "labigsave", "AH_walltile1" },
+    { 15048, "labigsave", "ah_wpaper8" },
+    { 1328, "labins01_la", "bin1_LAe" },
+    { 1328, "labins01_la", "bin2_LAe" },
+    { 1328, "labins01_la", "bins10_LAe2" },
+    { 1328, "labins01_la", "bins1_LAe2" },
+    { 1328, "labins01_la", "bins2_LAe2" },
+    { 1328, "labins01_la", "bins3_LAe2" },
+    { 1328, "labins01_la", "bins4_LAe2" },
+    { 1328, "labins01_la", "bins5_LAe2" },
+    { 1328, "labins01_la", "bins6_LAe2" },
+    { 1328, "labins01_la", "bins7_LAe2" },
+    { 1328, "labins01_la", "bins8_LAe2" },
+    { 1328, "labins01_la", "bins9_LAe2" },
+    { 1328, "labins01_la", "cj_bin2" },
+    { 1328, "labins01_la", "map64" },
+    { 8550, "laconcha", "vegaspawnwall_128" },
+    { 8550, "laconcha", "vgnfirestat2_64" },
+    { 8551, "laconchasign", "laconca01_128" },
+    { 8551, "laconchasign", "laconcasign02_64" },
+    { 17524, "lae2bigblock", "gangsign2_LAe" },
+    { 17524, "lae2bigblock", "hillshop1_LA" },
+    { 17524, "lae2bigblock", "hillshop3_LA" },
+    { 17524, "lae2bigblock", "hollywin03_LAw" },
+    { 17524, "lae2bigblock", "ja_multisign_lae2" },
+    { 17524, "lae2bigblock", "venfood01_law" },
+    { 17524, "lae2bigblock", "wareh1_LAe" },
+    { 17524, "lae2bigblock", "wareh2_LAe" },
+    { 17524, "lae2bigblock", "waresigns1_LAe" },
+    { 17535, "lae2billboards", "billbd1_LAe" },
+    { 17535, "lae2billboards", "SunBillB03" },
+    { 17678, "lae2bridge", "macbrij4_LAe" },
+    { 17678, "lae2bridge", "Newpavement" },
+    { 17588, "lae2coast_alpha", "compcourtrail1_m" },
+    { 17588, "lae2coast_alpha", "east_pacific" },
+    { 17588, "lae2coast_alpha", "golden_palms" },
+    { 17588, "lae2coast_alpha", "LAShad1" },
+    { 17588, "lae2coast_alpha", "plainglass" },
+    { 17925, "lae2fake_int", "burglry_wall4" },
+    { 17925, "lae2fake_int", "carpet1kb" },
+    { 17532, "lae2grnd", "fencebroke256" },
+    { 17532, "lae2grnd", "redcanopything" },
+    { 17532, "lae2grnd", "sw_door14" },
+    { 17519, "lae2newtempbx", "asanpdshpsh1" },
+    { 17519, "lae2newtempbx", "asanpdshpsh1c" },
+    { 17519, "lae2newtempbx", "carlot1" },
+    { 17519, "lae2newtempbx", "lasclean4" },
+    { 17519, "lae2newtempbx", "lasclean5" },
+    { 17519, "lae2newtempbx", "lasclean6" },
+    { 17519, "lae2newtempbx", "LAskyscraper5" },
+    { 17519, "lae2newtempbx", "lastaco1" },
+    { 17519, "lae2newtempbx", "lastripx2" },
+    { 17519, "lae2newtempbx", "lastripx2a" },
+    { 17519, "lae2newtempbx", "sanpedpawn1" },
+    { 17519, "lae2newtempbx", "sanpedpawn1d" },
+    { 17519, "lae2newtempbx", "sanpedpawn2" },
+    { 17519, "lae2newtempbx", "sanpedpawn2c" },
+    { 17519, "lae2newtempbx", "santaco6" },
+    { 17519, "lae2newtempbx", "santaco6za" },
+    { 17519, "lae2newtempbx", "siliconvalleywins4" },
+    { 17519, "lae2newtempbx", "sjmlashop5" },
+    { 17519, "lae2newtempbx", "snpedpost1" },
+    { 17519, "lae2newtempbx", "snpedpost1a" },
+    { 17519, "lae2newtempbx", "snpedpost1b" },
+    { 17505, "lae2roads", "craproad2_LAe" },
+    { 17505, "lae2roads", "craproad3_LAe" },
+    { 17505, "lae2roads", "craproad7_LAe7" },
+    { 17505, "lae2roads", "grassdry_path_128HV" },
+    { 17505, "lae2roads", "macbrij2_LAe" },
+    { 17606, "lae2roadscoast", "concretedust2_256128" },
+    { 17606, "lae2roadscoast", "LAroad_centre1" },
+    { 17606, "lae2roadscoast", "stonewalls1_LA" },
+    { 17606, "lae2roadscoast", "Was_scrpyd_wall_in_hngr" },
+    { 17595, "lae2roadshub", "Grass_concpath2" },
+    { 17595, "lae2roadshub", "sidewgrass2" },
+    { 17595, "lae2roadshub", "sidewgrass3" },
+    { 17595, "lae2roadshub", "sidewgrass5" },
+    { 17595, "lae2roadshub", "sidewgrass_fuked" },
+    { 17595, "lae2roadshub", "trainground1" },
+    { 17595, "lae2roadshub", "trainground3" },
+    { 17563, "lae2tempshit", "wattsstax1_LAe" },
+    { 17563, "lae2tempshit", "wattsstax2_LAe" },
+    { 17563, "lae2tempshit", "wattsstax3_LAe" },
+    { 17563, "lae2tempshit", "wattsstax4_LAe" },
+    { 5395, "laeroads", "hiwaymidlle_256" },
+    { 5395, "laeroads", "macbrij3_LAe" },
+    { 5391, "laeroads2s", "sl_pavebutt2" },
+    { 5391, "laeroads2s", "sl_roadbutt1" },
+    { 5421, "laesmokecnthus", "bballbck_kb" },
+    { 5421, "laesmokecnthus", "greenwall4" },
+    { 5421, "laesmokecnthus", "sl_blustainplanks" },
+    { 3593, "lafuckar", "car3_128" },
+    { 13675, "lahillsgrounds", "bevpool" },
+    { 13675, "lahillsgrounds", "bevr03b_law" },
+    { 13701, "lahillshilhs1c", "ws_garagedoor3_blue" },
+    { 13681, "lahillshilhs1e", "veg_hedge1_256" },
+    { 13678, "lahillslaroads", "roaddgrassblnd" },
+    { 13678, "lahillslaroads", "Tar_1line256HVblend" },
+    { 13706, "lahillsroadscoast", "dt_roadblend" },
+    { 13706, "lahillsroadscoast", "kbpavementblend" },
+    { 13706, "lahillsroadscoast", "sjmhoodlawn42B" },
+    { 13712, "lahillstr_lawn", "kb_ivy2_128" },
+    { 13712, "lahillstr_lawn", "mulhfenc02_LA" },
+    { 13694, "lahillstxd1a", "glasswindow2_256" },
+    { 13816, "lahills_safe1", "dor_slider_16_32" },
+    { 13816, "lahills_safe1", "gry_roof" },
+    { 13816, "lahills_safe1", "koe_girder_128_642" },
+    { 13816, "lahills_safe1", "pool_side_128_256" },
+    { 13816, "lahills_safe1", "pord_conc_128" },
+    { 13816, "lahills_safe1", "white_girdr" },
+    { 13761, "lahills_whisky", "discharger" },
+    { 13761, "lahills_whisky", "lasviper6" },
+    { 13761, "lahills_whisky", "lasviper7" },
+    { 13761, "lahills_whisky", "whisk1" },
+    { 13761, "lahills_whisky", "whisk2" },
+    { 13761, "lahills_whisky", "whisk3" },
+    { 13761, "lahills_whisky", "whisk4" },
+    { 13761, "lahills_whisky", "whisk5" },
+    { 13861, "lahills_wiresnshit3", "antenna2" },
+    { 13861, "lahills_wiresnshit3", "scumtiles2_LAe" },
+    { 13861, "lahills_wiresnshit3", "sjmornfnce" },
+    { 14713, "lahss2aint2", "HS1_2Wall3" },
+    { 14713, "lahss2aint2", "HS1_carpet1" },
+    { 14713, "lahss2aint2", "HS1_Shade" },
+    { 14713, "lahss2aint2", "HS1_wall2" },
+    { 14713, "lahss2aint2", "HS2_Artex2" },
+    { 14713, "lahss2aint2", "HS2_Artex4" },
+    { 14713, "lahss2aint2", "HS2_Blind1" },
+    { 14713, "lahss2aint2", "HS2_Blind3" },
+    { 14713, "lahss2aint2", "HS2_Curt3" },
+    { 14713, "lahss2aint2", "HS2_floor1" },
+    { 14713, "lahss2aint2", "HS2_wall4" },
+    { 14713, "lahss2aint2", "HS2_wall6" },
+    { 14713, "lahss2aint2", "HS3_Light3" },
+    { 14713, "lahss2aint2", "HS_plug" },
+    { 14712, "lahss2bint2", "HS1_2Wall2" },
+    { 14712, "lahss2bint2", "HS1_Shade3" },
+    { 14712, "lahss2bint2", "HS2_Artex6" },
+    { 14712, "lahss2bint2", "HS3_wall8" },
+    { 14712, "lahss2bint2", "WH_carpet2" },
+    { 14701, "lahss2int2", "HS1_Kwall" },
+    { 14701, "lahss2int2", "HS1_Kwall2" },
+    { 14701, "lahss2int2", "HS1_Plug" },
+    { 14701, "lahss2int2", "HS1_wall1" },
+    { 14701, "lahss2int2", "HS1_wall3" },
+    { 14701, "lahss2int2", "HS1_wall4" },
+    { 14701, "lahss2int2", "HS2_Artex1" },
+    { 14701, "lahss2int2", "HS2_Artex3" },
+    { 14701, "lahss2int2", "HS2_Blind2" },
+    { 14701, "lahss2int2", "HS2_Curt1" },
+    { 14701, "lahss2int2", "HS2_Curt4" },
+    { 14701, "lahss2int2", "HS2_Curt5" },
+    { 14701, "lahss2int2", "HS2_wall1" },
+    { 14701, "lahss2int2", "HS2_wall2" },
+    { 14701, "lahss2int2", "WH_carpet1" },
+    { 14701, "lahss2int2", "WH_carpet4" },
+    { 14704, "lahss2_2int2", "HS_lamp1" },
+    { 14704, "lahss2_2int2", "HS_radiator1" },
+    { 14704, "lahss2_2int2", "HS_radiator2" },
+    { 14704, "lahss2_2int2", "HS_vase2" },
+    { 4556, "laland1_lan2", "gm_labuld2_a" },
+    { 4556, "laland1_lan2", "gm_labuld4_c" },
+    { 4556, "laland1_lan2", "sl_blokpave2" },
+    { 14709, "lamidint2", "mp_apt1_bathfloor1" },
+    { 14709, "lamidint2", "mp_apt1_bathtiles" },
+    { 14709, "lamidint2", "mp_apt1_door" },
+    { 14709, "lamidint2", "mp_apt1_floor" },
+    { 14709, "lamidint2", "mp_apt1_kitchfloor" },
+    { 14709, "lamidint2", "mp_apt1_roomwall" },
+    { 14709, "lamidint2", "mp_apt1_win" },
+    { 4653, "lan2freeway", "sl_freew2road1" },
+    { 3781, "lan2office", "glass_office1" },
+    { 3781, "lan2office", "glass_office2" },
+    { 3781, "lan2office", "glass_office3" },
+    { 3781, "lan2office", "glass_office4" },
+    { 3781, "lan2office", "glass_office5" },
+    { 3781, "lan2office", "glass_office6" },
+    { 3781, "lan2office", "glass_office7" },
+    { 3781, "lan2office", "glass_office8" },
+    { 4601, "lan2_gm1", "gm_labuld1_a" },
+    { 4601, "lan2_gm1", "gm_labuld1_b" },
+    { 4601, "lan2_gm1", "gm_labuld1_c" },
+    { 4601, "lan2_gm1", "gm_labuld1_d" },
+    { 4601, "lan2_gm1", "gm_labuld1_e" },
+    { 4601, "lan2_gm1", "pinkgranite" },
+    { 4113, "lanbloka", "newall4-1" },
+    { 4113, "lanbloka", "sl_dwntwndecor1" },
+    { 4113, "lanbloka", "sl_forlease1" },
+    { 4113, "lanbloka", "sl_laoffblokedg1" },
+    { 4113, "lanbloka", "sl_laoffblokwall1" },
+    { 4113, "lanbloka", "sl_laoffblokwin1" },
+    { 4113, "lanbloka", "sl_laspiredecor1" },
+    { 4113, "lanbloka", "sl_laspirewall1" },
+    { 4113, "lanbloka", "sl_laspirewin1" },
+    { 4113, "lanbloka", "sl_laspirewin2" },
+    { 4011, "lanblokb", "sl_cinemasign1" },
+    { 4011, "lanblokb", "sl_regalsgn" },
+    { 4011, "lanblokb", "sl_rotnbrikvent" },
+    { 4011, "lanblokb", "sl_rotnbrikwin1" },
+    { 4010, "lanblokb2", "bluewhitebuild1" },
+    { 4010, "lanblokb2", "bluewhitebuildwall2" },
+    { 4010, "lanblokb2", "bluewhitebuildwall2drt" },
+    { 4010, "lanblokb2", "bluewhitebuildwndbtm" },
+    { 4010, "lanblokb2", "bluewhitewindow" },
+    { 4010, "lanblokb2", "forleasesign" },
+    { 4010, "lanblokb2", "sl_brikdotdecor1" },
+    { 4010, "lanblokb2", "sl_brikdotwin1" },
+    { 4010, "lanblokb2", "sl_lavicdtdecor1b" },
+    { 4007, "lanblokc", "bonavwall1_LAn" },
+    { 4007, "lanblokc", "skyscra1_LAn" },
+    { 4007, "lanblokc", "skyscra2_LAn" },
+    { 4007, "lanblokc", "sl_laoffblok2win1" },
+    { 4007, "lanblokc", "sl_laoffblok2win2" },
+    { 4005, "lanblokd", "decobuild2b_LAn" },
+    { 4005, "lanblokd", "decobuild2c_LAn" },
+    { 4005, "lanblokd", "decobuild2_LAn" },
+    { 4005, "lanblokd", "deptstore1_LAn" },
+    { 4005, "lanblokd", "deptstore2_LAn" },
+    { 4005, "lanblokd", "deptstore4_LAn" },
+    { 3975, "lanbloke", "lasbevcit1" },
+    { 3975, "lanbloke", "lasbevcit2" },
+    { 3975, "lanbloke", "lasbevcit3" },
+    { 3975, "lanbloke", "lasbevcit4" },
+    { 3975, "lanbloke", "lasbevcit5" },
+    { 3975, "lanbloke", "lasbevcit8" },
+    { 3975, "lanbloke", "lasbevcit99" },
+    { 3975, "lanbloke", "lasunion95" },
+    { 3975, "lanbloke", "ottos_SFE" },
+    { 3983, "lanblokg", "Bow_dlct_plstrb_genb" },
+    { 3984, "lanbloki", "bookwindowshigh" },
+    { 3984, "lanbloki", "churchwall1" },
+    { 3984, "lanbloki", "churchwin1_LAn" },
+    { 3984, "lanbloki", "greytile_LA" },
+    { 3984, "lanbloki", "nicewindowsnews" },
+    { 3984, "lanbloki", "ws_sandstone2b" },
+    { 17685, "landcoast_lae2", "rockwall1_LAe2" },
+    { 17685, "landcoast_lae2", "rockwall2_LAe2" },
+    { 17514, "landhub", "grasspatch_64HV" },
+    { 17514, "landhub", "grasspave256" },
+    { 17514, "landhub", "sidewgrass4" },
+    { 17514, "landhub", "yardgrass2" },
+    { 1631, "landjump", "Aascaff128" },
+    { 1631, "landjump", "greywallc128" },
+    { 1631, "landjump", "jumpside1_256" },
+    { 1631, "landjump", "jumpside2_256" },
+    { 1631, "landjump", "jumptop1_128" },
+    { 1631, "landjump", "plasticdrum1_128" },
+    { 1631, "landjump", "skipdirt_128" },
+    { 17634, "landlae2b", "compfence4b_LAe" },
+    { 17634, "landlae2b", "compfence5b_LAe" },
+    { 17539, "landlae2c", "conc_slab_256" },
+    { 17539, "landlae2c", "roughwall_kb_semless" },
+    { 17513, "landlae2e", "basketballcourt1" },
+    { 10903, "landsfe", "GB_nastybar20" },
+    { 9483, "landsfw", "rock1_128" },
+    { 4100, "lanfireesc_tr", "barbwire1" },
+    { 4100, "lanfireesc_tr", "sl_metaledge" },
+    { 4558, "lanlacmab_lan2", "lasbrwnhus3" },
+    { 4558, "lanlacmab_lan2", "LASLACMA9" },
+    { 4558, "lanlacmab_lan2", "LASLACMA98" },
+    { 4558, "lanlacmab_lan2", "LASLACMA99" },
+    { 4558, "lanlacmab_lan2", "LASLACMA991" },
+    { 4558, "lanlacmab_lan2", "LASLACMA998" },
+    { 4558, "lanlacmab_lan2", "sjmmetrail" },
+    { 4558, "lanlacmab_lan2", "sl_galleryplaza1" },
+    { 4558, "lanlacmab_lan2", "sl_gallerywall1" },
+    { 4558, "lanlacmab_lan2", "sl_plazatile02" },
+    { 4558, "lanlacmab_lan2", "sl_stapldoor1" },
+    { 4559, "lanlacma_lan2", "LASLACMA2" },
+    { 4559, "lanlacma_lan2", "LASLACMA5" },
+    { 4559, "lanlacma_lan2", "LASLACMA7" },
+    { 4559, "lanlacma_lan2", "LASLACMA91" },
+    { 4559, "lanlacma_lan2", "LASLACMA94" },
+    { 4559, "lanlacma_lan2", "LASLACMA95" },
+    { 4559, "lanlacma_lan2", "LASLACMA97" },
+    { 4559, "lanlacma_lan2", "LASLACMA996" },
+    { 4559, "lanlacma_lan2", "LASLACMA997" },
+    { 4714, "lanlacma_tr_lan2", "sl_galleryrail1" },
+    { 3977, "lanriver", "stormdrain1b_sl" },
+    { 3977, "lanriver", "stormdrain1_nt" },
+    { 3990, "lanroad", "lakerbcol" },
+    { 3990, "lanroad", "sl_pavebutt1" },
+    { 5149, "lasground2_las2", "driveway4_128" },
+    { 5149, "lasground2_las2", "garage_roof" },
+    { 5149, "lasground2_las2", "gragewinkb1" },
+    { 5149, "lasground2_las2", "rooftoprd128" },
+    { 5113, "lasground_las2", "general01_law" },
+    { 5113, "lasground_las2", "sjmbarber21" },
+    { 5142, "lashops1b_las2", "lasjmslumwall" },
+    { 5142, "lashops1b_las2", "lasplaza2" },
+    { 5142, "lashops1b_las2", "lasplaza3" },
+    { 5142, "lashops1b_las2", "lasplaza5" },
+    { 5142, "lashops1b_las2", "lasplaza8" },
+    { 5142, "lashops1b_las2", "lasplaza91" },
+    { 5142, "lashops1b_las2", "lasplaza92" },
+    { 5142, "lashops1b_las2", "mural03_LA" },
+    { 5142, "lashops1b_las2", "sanpedshpito" },
+    { 5142, "lashops1b_las2", "sjmhoodaab" },
+    { 5142, "lashops1b_las2", "sjmhoodaac" },
+    { 5142, "lashops1b_las2", "snpdwhit2" },
+    { 5110, "lashops1_las2", "crenhous2" },
+    { 5110, "lashops1_las2", "sanpshop5z" },
+    { 5110, "lashops1_las2", "sjmhicut3las" },
+    { 5168, "lashops6_las2", "sw_wind12" },
+    { 5168, "lashops6_las2", "yellow2_128" },
+    { 5267, "lashops91_las2", "laspowrec2" },
+    { 5180, "lashops93_las2", "snpedshptst1" },
+    { 5180, "lashops93_las2", "snpedshptst2" },
+    { 5180, "lashops93_las2", "Window1164HV" },
+    { 14718, "lasmall1int2", "burglry_wall7" },
+    { 14718, "lasmall1int2", "cooker1" },
+    { 14718, "lasmall1int2", "hob_1" },
+    { 14718, "lasmall1int2", "kb_sink2" },
+    { 14718, "lasmall1int2", "la_kitch4" },
+    { 14718, "lasmall1int2", "washmchne_1" },
+    { 15031, "lasmallsave", "ab_tile4" },
+    { 5106, "lasraodnshops", "sanpedmot2" },
+    { 5106, "lasraodnshops", "sanpedton2" },
+    { 4807, "lasroads_las", "newall8-1" },
+    { 5120, "lasroads_las2", "lasunion994" },
+    { 5120, "lasroads_las2", "snpedtest1BLND" },
+    { 3620, "lasxrefdock", "boatcables_128" },
+    { 3620, "lasxrefdock", "sanpedock6" },
+    { 3620, "lasxrefdock", "sanpedock96" },
+    { 3620, "lasxrefdock", "sjmlawarlit" },
+    { 3620, "lasxrefdock", "sjmlawarlit1" },
+    { 3620, "lasxrefdock", "ws_goldengate5b" },
+    { 3761, "lasxrefdockbox", "shadow1shelfd" },
+    { 3761, "lasxrefdockbox", "sjmlawarshel" },
+    { 3761, "lasxrefdockbox", "sjmlawarshel2" },
+    { 3749, "law2misc_lax", "cemewall01_law" },
+    { 3749, "law2misc_lax", "sanwel1" },
+    { 3749, "law2misc_lax", "sanwel4" },
+    { 6291, "law2_roadsb", "anwfrntbev6" },
+    { 6291, "law2_roadsb", "nicepavegras_LA" },
+    { 6205, "lawartg", "luxorwall01_128" },
+    { 1980, "lawest1", "fillertop01_law" },
+    { 1980, "lawest1", "fillertop02_law" },
+    { 1980, "lawest1", "shoptop01_law" },
+    { 1980, "lawest1", "sunsetmall05_law" },
+    { 6293, "lawland2", "asanlithus1" },
+    { 6293, "lawland2", "asanlithus2" },
+    { 6293, "lawland2", "asanlithus3" },
+    { 6293, "lawland2", "asanmonhrbwal1" },
+    { 6293, "lawland2", "compcourtrail1" },
+    { 6293, "lawland2", "lasjmflat1" },
+    { 6293, "lawland2", "lightglass" },
+    { 5813, "lawnabv", "bargainpawn1_256" },
+    { 5813, "lawnabv", "dwntwnvgn1_128]" },
+    { 5813, "lawnabv", "nudexxxsign1_256" },
+    { 5813, "lawnabv", "vgnwstshop1_256" },
+    { 5813, "lawnabv", "vgnwstshop4_256" },
+    { 5813, "lawnabv", "vgnwstshoptop_256" },
+    { 5813, "lawnabv", "ws_corr_wall1" },
+    { 3684, "lawnapartxref", "genroof03_128" },
+    { 3684, "lawnapartxref", "vgnbalcony1_256" },
+    { 3684, "lawnapartxref", "vnghse4_256" },
+    { 3684, "lawnapartxref", "vnghse5_256" },
+    { 5728, "lawnbit", "frostedglass256128" },
+    { 5857, "lawnbuy", "ws_starballs" },
+    { 5713, "lawnest2", "concrete_64HV" },
+    { 5713, "lawnest2", "grave02_law" },
+    { 5713, "lawnest2", "grave03_law" },
+    { 5713, "lawnest2", "grave04_law" },
+    { 5713, "lawnest2", "grave05_law" },
+    { 5810, "lawnstripm", "papercuts" },
+    { 5810, "lawnstripm", "savsig1" },
+    { 5810, "lawnstripm", "savsig4" },
+    { 5810, "lawnstripm", "sodom_law" },
+    { 3676, "lawnxref", "lasthoose1" },
+    { 3676, "lawnxref", "lasthoose1blue" },
+    { 3676, "lawnxref", "lasthoose2" },
+    { 3676, "lawnxref", "lasthoose3" },
+    { 3676, "lawnxref", "lasthoose4" },
+    { 3676, "lawnxref", "lasthoose4blue" },
+    { 3676, "lawnxref", "lasthoose5" },
+    { 3676, "lawnxref", "lasthoose6" },
+    { 6038, "lawwhitebuilds", "buzzer_law" },
+    { 6038, "lawwhitebuilds", "gasstopwall1_256" },
+    { 6038, "lawwhitebuilds", "GB_blend01" },
+    { 6038, "lawwhitebuilds", "musk3" },
+    { 6038, "lawwhitebuilds", "planterend_law" },
+    { 6038, "lawwhitebuilds", "planterside_law" },
+    { 6038, "lawwhitebuilds", "plantertop_law" },
+    { 6038, "lawwhitebuilds", "venwin03_lawlit" },
+    { 6038, "lawwhitebuilds", "wilsa_01b_lalit" },
+    { 6038, "lawwhitebuilds", "wilsc_01_la" },
+    { 6064, "law_beach1", "avenpol4" },
+    { 6064, "law_beach1", "beachwalk_law" },
+    { 6064, "law_beach1", "musk1" },
+    { 6064, "law_beach1", "musk2" },
+    { 6064, "law_beach1", "musk4" },
+    { 6064, "law_beach1", "musk5" },
+    { 6049, "law_beach2", "beachut1back256" },
+    { 6049, "law_beach2", "blueshade3_64" },
+    { 6049, "law_beach2", "glasses2_law" },
+    { 6049, "law_beach2", "greenshade_64" },
+    { 6049, "law_beach2", "law_gazcoast3" },
+    { 6049, "law_beach2", "law_gazcoast4" },
+    { 6049, "law_beach2", "lombard_build2_3" },
+    { 6049, "law_beach2", "Lombard_door1" },
+    { 6049, "law_beach2", "luxorwall02_128" },
+    { 6040, "law_cnrtplaz", "creamshop1_LAe" },
+    { 6040, "law_cnrtplaz", "off01bot_law" },
+    { 6040, "law_cnrtplaz", "off01mid_law" },
+    { 6040, "law_cnrtplaz", "off01top_law" },
+    { 2895, "law_coffinfl", "hot_flowers1" },
+    { 2895, "law_coffinfl", "hot_flowers2" },
+    { 2898, "law_coffintu", "faketurf_law" },
+    { 2896, "law_coffintxd", "caskdrape_law" },
+    { 2896, "law_coffintxd", "caskhandle_law" },
+    { 2896, "law_coffintxd", "caskside2_law" },
+    { 2896, "law_coffintxd", "casktop_law" },
+    { 2896, "law_coffintxd", "metleg_32_law" },
+    { 6052, "law_doontoon", "gz_lawbuilda_1" },
+    { 6052, "law_doontoon", "gz_lawbuilda_2" },
+    { 6052, "law_doontoon", "gz_lawbuilda_6" },
+    { 6052, "law_doontoon", "gz_lawbuilda_7" },
+    { 6052, "law_doontoon", "sfe_nicearch2" },
+    { 6052, "law_doontoon", "sfe_nicearch3" },
+    { 6052, "law_doontoon", "sf_windos_10b" },
+    { 6052, "law_doontoon", "sf_window_mod1" },
+    { 6052, "law_doontoon", "stepshoptop_law" },
+    { 3586, "la_props1", "shutters2" },
+    { 14802, "lee_bdupsflat", "Bdup_Bed" },
+    { 14802, "lee_bdupsflat", "Bdup_cabinet" },
+    { 14802, "lee_bdupsflat", "Bdup_Clock" },
+    { 14802, "lee_bdupsflat", "Bdup_Cooker" },
+    { 14802, "lee_bdupsflat", "Bdup_door" },
+    { 14802, "lee_bdupsflat", "Bdup_Fridge" },
+    { 14802, "lee_bdupsflat", "Bdup_GhettoB" },
+    { 14802, "lee_bdupsflat", "Bdup_KitchDoor" },
+    { 14802, "lee_bdupsflat", "Bdup_KitchSink" },
+    { 14802, "lee_bdupsflat", "Bdup_lamp" },
+    { 14802, "lee_bdupsflat", "Bdup_Light" },
+    { 14802, "lee_bdupsflat", "Bdup_NetCurtains" },
+    { 14802, "lee_bdupsflat", "Bdup_news" },
+    { 14802, "lee_bdupsflat", "Bdup_phone" },
+    { 14802, "lee_bdupsflat", "Bdup_Pillow" },
+    { 14802, "lee_bdupsflat", "Bdup_Pizza" },
+    { 14802, "lee_bdupsflat", "Bdup_plate" },
+    { 14802, "lee_bdupsflat", "Bdup_Poster" },
+    { 14802, "lee_bdupsflat", "Bdup_punters" },
+    { 14802, "lee_bdupsflat", "Bdup_Rug" },
+    { 14802, "lee_bdupsflat", "Bdup_Sofa" },
+    { 14802, "lee_bdupsflat", "Bdup_table" },
+    { 14802, "lee_bdupsflat", "Bdup_TV" },
+    { 14802, "lee_bdupsflat", "Bdup_VCR" },
+    { 14802, "lee_bdupsflat", "Bdup_Wine" },
+    { 14802, "lee_bdupsflat", "CJ_LID" },
+    { 14802, "lee_bdupsflat", "mp_Gen_Bin_Bag" },
+    { 14802, "lee_bdupsflat", "mp_sprunk2dirty" },
+    { 14802, "lee_bdupsflat", "USAflag" },
+    { 14801, "lee_bdupsmain", "ahomcarpet" },
+    { 14801, "lee_bdupsmain", "ahomcarpet2" },
+    { 14801, "lee_bdupsmain", "Bdup_Blinds" },
+    { 14801, "lee_bdupsmain", "Bdup_graf1" },
+    { 14801, "lee_bdupsmain", "Bdup_graf2" },
+    { 14801, "lee_bdupsmain", "Bdup_graf3" },
+    { 14801, "lee_bdupsmain", "Bdup_graf4" },
+    { 14801, "lee_bdupsmain", "Bdup_graf5" },
+    { 14801, "lee_bdupsmain", "Bdup_KitchFloor" },
+    { 14801, "lee_bdupsmain", "lasjmslumwin1" },
+    { 14801, "lee_bdupsmain", "subindwall2" },
+    { 2776, "lee_chair1", "Strip_Chair" },
+    { 2776, "lee_chair1", "strip_metal" },
+    { 3961, "lee_kitch", "ChipPan" },
+    { 3961, "lee_kitch", "ChoppingBoard" },
+    { 3961, "lee_kitch", "Cooker" },
+    { 3961, "lee_kitch", "Cooker_Dial" },
+    { 3961, "lee_kitch", "Freezer" },
+    { 3961, "lee_kitch", "Grater" },
+    { 3961, "lee_kitch", "KitchenUnits" },
+    { 3961, "lee_kitch", "Knive1" },
+    { 3961, "lee_kitch", "metal1" },
+    { 3961, "lee_kitch", "metal2" },
+    { 3961, "lee_kitch", "metal5" },
+    { 3961, "lee_kitch", "metal6" },
+    { 3961, "lee_kitch", "metal7" },
+    { 3961, "lee_kitch", "Microwave" },
+    { 3961, "lee_kitch", "Oil" },
+    { 3961, "lee_kitch", "Oil2" },
+    { 3961, "lee_kitch", "Pepper" },
+    { 3961, "lee_kitch", "Pot1" },
+    { 3961, "lee_kitch", "Pot3" },
+    { 3961, "lee_kitch", "rack" },
+    { 3961, "lee_kitch", "Roast" },
+    { 3961, "lee_kitch", "SinkL" },
+    { 3961, "lee_kitch", "Spatula" },
+    { 3961, "lee_kitch", "Spices" },
+    { 3961, "lee_kitch", "Steak" },
+    { 14808, "lee_strip2", "HS3_wall1" },
+    { 14808, "lee_strip2", "Strip_Carpet" },
+    { 14808, "lee_strip2", "strip_carpet2" },
+    { 14808, "lee_strip2", "Strip_Ceiling" },
+    { 14808, "lee_strip2", "Strip_Chand" },
+    { 14808, "lee_strip2", "Strip_curtain" },
+    { 14808, "lee_strip2", "Strip_Dresser" },
+    { 14808, "lee_strip2", "Strip_Gold" },
+    { 14808, "lee_strip2", "strip_lights" },
+    { 14808, "lee_strip2", "Strip_neon1" },
+    { 14808, "lee_strip2", "Strip_neon2" },
+    { 14808, "lee_strip2", "strip_neon_Curtain" },
+    { 14808, "lee_strip2", "strip_neon_Flat" },
+    { 14808, "lee_strip2", "strip_table" },
+    { 14808, "lee_strip2", "Strip_Throne" },
+    { 14808, "lee_strip2", "strip_wall" },
+    { 14808, "lee_strip2", "Strip_wood" },
+    { 14808, "lee_strip2", "WH_Hbed" },
+    { 14808, "lee_strip2", "WH_Hbo1" },
+    { 14811, "lee_strip2_1", "BeerGlass" },
+    { 14811, "lee_strip2_1", "BeerGlass2" },
+    { 14811, "lee_strip2_1", "BeerTap" },
+    { 14811, "lee_strip2_1", "CJ_NEON_HEART" },
+    { 14811, "lee_strip2_1", "Liquer" },
+    { 14811, "lee_strip2_1", "till1" },
+    { 14811, "lee_strip2_1", "VodkaBottle" },
+    { 14811, "lee_strip2_1", "Winebottle2" },
+    { 14811, "lee_strip2_1", "WineGlass2" },
+    { 14832, "lee_stripclub", "cl_floornew_256" },
+    { 14832, "lee_stripclub", "mirror_ref1" },
+    { 14832, "lee_stripclub", "Strip_bar_wall1" },
+    { 14832, "lee_stripclub", "Strip_ceiling" },
+    { 14832, "lee_stripclub", "Strip_ladyDoor" },
+    { 14832, "lee_stripclub", "Strip_neon3" },
+    { 14832, "lee_stripclub", "Strip_neon4" },
+    { 14832, "lee_stripclub", "Strip_plant" },
+    { 14832, "lee_stripclub", "Strip_plantBark" },
+    { 14832, "lee_stripclub", "Strip_plantPot" },
+    { 14832, "lee_stripclub", "Strip_podium" },
+    { 14832, "lee_stripclub", "Strip_podium2" },
+    { 14832, "lee_stripclub", "Strip_sofa" },
+    { 14832, "lee_stripclub", "Strip_sofa2" },
+    { 14832, "lee_stripclub", "Strip_wood_floor" },
+    { 14829, "lee_stripclub1", "Strip_light" },
+    { 14839, "lee_strippriv", "Strip_Ashtray" },
+    { 14839, "lee_strippriv", "Strip_DrinkCab" },
+    { 14839, "lee_strippriv", "Strip_Fan" },
+    { 14839, "lee_strippriv", "Strip_Private" },
+    { 14839, "lee_strippriv", "Strip_Sign12" },
+    { 14839, "lee_strippriv", "WH_Chang" },
+    { 14839, "lee_strippriv", "WH_Chang1" },
+    { 14839, "lee_strippriv", "WH_Cpik" },
+    { 14839, "lee_strippriv", "WH_Curtains" },
+    { 14839, "lee_strippriv", "WH_fan" },
+    { 14839, "lee_strippriv", "WH_Sofa" },
+    { 14812, "lee_studhall", "carpet" },
+    { 14812, "lee_studhall", "GoldDisk1" },
+    { 14812, "lee_studhall", "GoldDisk2" },
+    { 14812, "lee_studhall", "GoldDisk3" },
+    { 14812, "lee_studhall", "GoldDisk4" },
+    { 14812, "lee_studhall", "GoldDisk5" },
+    { 14812, "lee_studhall", "GoldDisk6" },
+    { 14812, "lee_studhall", "Papercup" },
+    { 14812, "lee_studhall", "WaterCooler" },
+    { 14812, "lee_studhall", "WaterCooler2" },
+    { 2723, "lee_txd", "Strip_chair" },
+    { 2723, "lee_txd", "Strip_lamp" },
+    { 2723, "lee_txd", "Strip_table_base" },
+    { 2723, "lee_txd", "Strip_table_top" },
+    { 3904, "libertyfar", "buildtall1" },
+    { 3904, "libertyfar", "china6a" },
+    { 3904, "libertyfar", "china6d" },
+    { 3904, "libertyfar", "Chinabuildnew1a" },
+    { 3904, "libertyfar", "Chinabuildnew1b" },
+    { 3904, "libertyfar", "Chinabuildnew1c" },
+    { 3904, "libertyfar", "Chinabuilds06a" },
+    { 3904, "libertyfar", "Chinabuilds06b" },
+    { 3904, "libertyfar", "Chinabuilds06c" },
+    { 3904, "libertyfar", "chinatwnfmrkt" },
+    { 3904, "libertyfar", "chinatwnfmrktb" },
+    { 3904, "libertyfar", "chnaquadhouse1" },
+    { 3904, "libertyfar", "chnaquadhouse2" },
+    { 3904, "libertyfar", "entlev" },
+    { 3904, "libertyfar", "fishroof" },
+    { 3904, "libertyfar", "indhibuild10_l0r" },
+    { 3904, "libertyfar", "indhibuild2a" },
+    { 3904, "libertyfar", "indhibuild2b" },
+    { 3904, "libertyfar", "indhibuild2c" },
+    { 3904, "libertyfar", "indhibuild2d" },
+    { 3904, "libertyfar", "indhibuild3_l0" },
+    { 3904, "libertyfar", "luigiscluba" },
+    { 3904, "libertyfar", "mainten2a" },
+    { 3904, "libertyfar", "mainten2b" },
+    { 3904, "libertyfar", "mainten2c" },
+    { 3904, "libertyfar", "mainten2d" },
+    { 3904, "libertyfar", "mainten364" },
+    { 3904, "libertyfar", "mainten3a" },
+    { 3904, "libertyfar", "mainten3b" },
+    { 3904, "libertyfar", "mainten3c" },
+    { 3904, "libertyfar", "newtenmt1" },
+    { 3904, "libertyfar", "newtenmt2" },
+    { 3904, "libertyfar", "newtenmt3" },
+    { 3904, "libertyfar", "newtenmt4" },
+    { 3904, "libertyfar", "newtenmt6" },
+    { 3904, "libertyfar", "newtenmt7" },
+    { 3904, "libertyfar", "newtenx" },
+    { 3904, "libertyfar", "Paveblank_64hv" },
+    { 3904, "libertyfar", "redbuild06a" },
+    { 3904, "libertyfar", "redbuild06b" },
+    { 3904, "libertyfar", "redbuild12a" },
+    { 3904, "libertyfar", "redbuild12b" },
+    { 3904, "libertyfar", "redbuild12c" },
+    { 3904, "libertyfar", "redbuild12d" },
+    { 3904, "libertyfar", "redlightbuild04b" },
+    { 3904, "libertyfar", "redlightbuild04_dyr_l0" },
+    { 3904, "libertyfar", "redlightbuild06b_l0f" },
+    { 3904, "libertyfar", "redlightbuild06e_l0b" },
+    { 3904, "libertyfar", "redlightbuild06e_l0f" },
+    { 3904, "libertyfar", "redlightbuild06v_l0b" },
+    { 3904, "libertyfar", "redlightbuild06v_l0f" },
+    { 3904, "libertyfar", "redlightbuild08a_l0b" },
+    { 3904, "libertyfar", "redlightbuild08a_l0f" },
+    { 3904, "libertyfar", "redlightbuild09f1" },
+    { 3904, "libertyfar", "redlightbuild09f2" },
+    { 3904, "libertyfar", "redlightbuild10f" },
+    { 3904, "libertyfar", "redlightbuild11_l0f" },
+    { 3904, "libertyfar", "redlightbuild12_l0b" },
+    { 3904, "libertyfar", "rizzo2" },
+    { 3904, "libertyfar", "steps" },
+    { 3904, "libertyfar", "subplat" },
+    { 3904, "libertyfar", "subplatyell" },
+    { 3904, "libertyfar", "support_water256" },
+    { 3904, "libertyfar", "support_water64" },
+    { 3904, "libertyfar", "tallbuild" },
+    { 3904, "libertyfar", "tenblock6" },
+    { 3904, "libertyfar", "towerflat" },
+    { 3897, "libertyhi", "blueshop128" },
+    { 3897, "libertyhi", "bricksoftgrey128" },
+    { 3897, "libertyhi", "concretebuild64" },
+    { 3897, "libertyhi", "greytendetwin256128" },
+    { 3897, "libertyhi", "inddoordark128" },
+    { 3897, "libertyhi", "inddoorway128" },
+    { 3897, "libertyhi", "indtendark64" },
+    { 3897, "libertyhi", "ledge4_64H" },
+    { 3897, "libertyhi", "marcos01_128" },
+    { 3897, "libertyhi", "newallkb1128" },
+    { 3897, "libertyhi", "newallktenb1128" },
+    { 3897, "libertyhi", "newtreea128" },
+    { 3897, "libertyhi", "Newtreeb256" },
+    { 3897, "libertyhi", "railhi_64V" },
+    { 3897, "libertyhi", "railmesh_64" },
+    { 3897, "libertyhi", "railtrack_64" },
+    { 3897, "libertyhi", "Road_yellowline256HV" },
+    { 3897, "libertyhi", "wallmix64HV" },
+    { 3905, "libertyhi2", "alleypave_64V" },
+    { 3905, "libertyhi2", "artgal_128" },
+    { 3905, "libertyhi2", "bank1_64" },
+    { 3905, "libertyhi2", "bank3_64" },
+    { 3905, "libertyhi2", "bankdoor_64a" },
+    { 3905, "libertyhi2", "inddoor7" },
+    { 3905, "libertyhi2", "indtena128" },
+    { 3905, "libertyhi2", "ind_tentop128" },
+    { 3905, "libertyhi2", "ledge_uni_64H" },
+    { 3905, "libertyhi2", "newall_harling_sless128" },
+    { 3905, "libertyhi2", "Pillarbrickgrey_64HV" },
+    { 3905, "libertyhi2", "tenabrick64" },
+    { 3905, "libertyhi2", "tenbeige128" },
+    { 3905, "libertyhi2", "tenbeigebrick64" },
+    { 3902, "libertyhi3", "cafea64" },
+    { 3902, "libertyhi3", "glass2_64" },
+    { 3902, "libertyhi3", "ledgetop_64HV" },
+    { 3902, "libertyhi3", "marcos02_128" },
+    { 3902, "libertyhi3", "metfence2_64HV" },
+    { 3902, "libertyhi3", "newall9-1128" },
+    { 3902, "libertyhi3", "shopdoor3_64" },
+    { 3902, "libertyhi3", "taxi_256128" },
+    { 3906, "libertyhi5", "chipboardgrating64HV" },
+    { 3906, "libertyhi5", "concrete02_64HV" },
+    { 3906, "libertyhi5", "dragtop_64h" },
+    { 3906, "libertyhi5", "grating 64HV" },
+    { 3906, "libertyhi5", "indcleaner128" },
+    { 3906, "libertyhi5", "inddoor3" },
+    { 3906, "libertyhi5", "indnailshop128" },
+    { 3906, "libertyhi5", "indredten128" },
+    { 3906, "libertyhi5", "indten2btm128" },
+    { 3906, "libertyhi5", "indten2top128" },
+    { 3906, "libertyhi5", "indtenbtm128" },
+    { 3906, "libertyhi5", "indtentop128" },
+    { 3906, "libertyhi5", "ind_italdeli128" },
+    { 3906, "libertyhi5", "ind_italywinda128" },
+    { 3906, "libertyhi5", "ind_photo256128" },
+    { 3906, "libertyhi5", "ind_store128" },
+    { 3906, "libertyhi5", "ind_window" },
+    { 3906, "libertyhi5", "italyawalll64" },
+    { 3906, "libertyhi5", "italy_cds128" },
+    { 3906, "libertyhi5", "ledgegreen_64H" },
+    { 3906, "libertyhi5", "ledge_detl_256128" },
+    { 3906, "libertyhi5", "newall9d_16c128" },
+    { 3906, "libertyhi5", "nicewhttop256128" },
+    { 3906, "libertyhi5", "ornatetall256128" },
+    { 3906, "libertyhi5", "shopgrating128H" },
+    { 3906, "libertyhi5", "TENdblue2_128" },
+    { 3906, "libertyhi5", "TENdbrown5_128" },
+    { 3906, "libertyhi5", "tenreditaly128" },
+    { 3906, "libertyhi5", "TENterr2_128" },
+    { 3906, "libertyhi5", "wallbrown02_64HV" },
+    { 3906, "libertyhi5", "walldirtynewa256128" },
+    { 3906, "libertyhi5", "walldirtyneward256128" },
+    { 4726, "libhelipad_lan2", "dt_twinklylites" },
+    { 4726, "libhelipad_lan2", "footplate_gz" },
+    { 4726, "libhelipad_lan2", "helipad_basepanel" },
+    { 4726, "libhelipad_lan2", "helipad_whitelines" },
+    { 4726, "libhelipad_lan2", "helipad_yellowline" },
+    { 17944, "lngblok_lae2", "downtsign14_LA" },
+    { 17944, "lngblok_lae2", "grnboard_law" },
+    { 17944, "lngblok_lae2", "sw_wind22" },
+    { 17944, "lngblok_lae2", "white64bumpy" },
+    { 10052, "lomall", "club_metal_sfw" },
+    { 10052, "lomall", "helipad_leg" },
+    { 10052, "lomall", "lomall_ext1_" },
+    { 10052, "lomall", "lomall_ext3_" },
+    { 10052, "lomall", "tileornateg256" },
+    { 10052, "lomall", "zombiegeddon" },
+    { 9947, "lombard", "lombard_build1_3" },
+    { 9947, "lombard", "lombard_build3_2" },
+    { 9947, "lombard", "lombard_build3_3" },
+    { 9947, "lombard", "lombard_build3_4" },
+    { 9947, "lombard", "lombard_sfe" },
+    { 9947, "lombard", "pier69_ground1" },
+    { 9947, "lombard", "windy_SF" },
+    { 17546, "losflor2_lae2", "hydrowin1_LAe" },
+    { 17538, "losflor4_lae2", "ventc128" },
+    { 17538, "losflor4_lae2", "wallbrown64HV" },
+    { 1255, "lounger", "lounger_back" },
+    { 1255, "lounger", "lounger_bits" },
+    { 8496, "lowbuild03_lvs", "vgshopwall01_128" },
+    { 8496, "lowbuild03_lvs", "vgshopwall02_128" },
+    { 8496, "lowbuild03_lvs", "vgshopwall03_64" },
+    { 8496, "lowbuild03_lvs", "vgshopwall04_64" },
+    { 8496, "lowbuild03_lvs", "vgshopwall06_64" },
+    { 14780, "lring_gmint3", "clamp" },
+    { 14780, "lring_gmint3", "crash_pad" },
+    { 14780, "lring_gmint3", "crash_pad_red" },
+    { 14780, "lring_gmint3", "nuringtest" },
+    { 14780, "lring_gmint3", "nuringtest2" },
+    { 14780, "lring_gmint3", "ringbase" },
+    { 14780, "lring_gmint3", "ROPE_1" },
+    { 8398, "luxorland", "luxorfloor01_256" },
+    { 8398, "luxorland", "luxorfloor02_128" },
+    { 8397, "luxorpillar1", "luxorpillar01_128" },
+    { 3441, "luxorpillar2", "luxorpillar02_256" },
+    { 8589, "lwbldstuff03", "biglips_128" },
+    { 8589, "lwbldstuff03", "filmcase01_64" },
+    { 8589, "lwbldstuff03", "filmstrip01_64" },
+    { 8589, "lwbldstuff03", "lipstick_64" },
+    { 14841, "l_gymers", "ab_boxingFloor" },
+    { 5458, "macpark1tr_lae", "cobbles_kb_edge_128" },
+    { 5458, "macpark1tr_lae", "grasslong256" },
+    { 5458, "macpark1tr_lae", "macpath_LAe" },
+    { 14425, "madbedrooms", "ah_wallstyle2" },
+    { 14389, "madpoolbit", "AH_flroortile4" },
+    { 14623, "mafcasmain", "ab_carpGreenEdge" },
+    { 14623, "mafcasmain", "ab_MarbleDiamond" },
+    { 14623, "mafcasmain", "ab_panel5" },
+    { 14623, "mafcasmain", "ab_tileStar" },
+    { 14623, "mafcasmain", "ab_tileStar2" },
+    { 14623, "mafcasmain", "casino_carp" },
+    { 14623, "mafcasmain", "ele_flr" },
+    { 14623, "mafcasmain", "marble_wall" },
+    { 14623, "mafcasmain", "marble_wall2" },
+    { 14623, "mafcasmain", "sign_managerSuite" },
+    { 14626, "mafcassigns1", "sign_placeYourBets" },
+    { 14642, "mafcasspiral", "sign_CaligulaWin" },
+    { 14590, "mafcastopfoor", "ab_carpet01" },
+    { 14590, "mafcastopfoor", "ab_stairwellLwr" },
+    { 14590, "mafcastopfoor", "cop_ceiling1" },
+    { 14590, "mafcastopfoor", "donut_wall1" },
+    { 3089, "mafcasx", "cof_wind1" },
+    { 14636, "mafcas_signs", "sign_careful" },
+    { 14636, "mafcas_signs", "sign_caution" },
+    { 14636, "mafcas_signs", "sign_donot" },
+    { 14636, "mafcas_signs", "sign_notice" },
+    { 14621, "mafiacasinodl", "sign_bank&change" },
+    { 14576, "mafiacasinovault01", "ab_vaultboxes" },
+    { 14576, "mafiacasinovault01", "ab_vaultmetal" },
+    { 3053, "magnetx", "magnetY" },
+    { 5848, "mainlcawn", "24hoursign1_LAwN" },
+    { 5848, "mainlcawn", "cashdispenser1_256" },
+    { 5848, "mainlcawn", "downtsign16_LA" },
+    { 5848, "mainlcawn", "fakestone2_LA" },
+    { 5848, "mainlcawn", "sexsign1_LAwn" },
+    { 5848, "mainlcawn", "striplight01_128" },
+    { 5848, "mainlcawn", "touristbureauLAwN" },
+    { 14572, "maint1", "ab_maintDoors" },
+    { 14572, "maint1", "main_floor" },
+    { 14572, "maint1", "main_wall" },
+    { 6048, "mall_law", "frostdoor01_law" },
+    { 6048, "mall_law", "lascourtsc1" },
+    { 6048, "mall_law", "malltwr01_law" },
+    { 6048, "mall_law", "malltwr02_law" },
+    { 6048, "mall_law", "mallvent_LAW" },
+    { 6048, "mall_law", "stonemall_law" },
+    { 6048, "mall_law", "veronamall_law" },
+    { 6048, "mall_law", "wolf1" },
+    { 6048, "mall_law", "wolf2" },
+    { 6048, "mall_law", "wolf3" },
+    { 6048, "mall_law", "wolf4" },
+    { 6048, "mall_law", "wolf6b" },
+    { 10973, "mall_sfse", "mallfloor3" },
+    { 10973, "mall_sfse", "ws_grilleshade" },
+    { 10973, "mall_sfse", "ws_shopfront1a" },
+    { 10973, "mall_sfse", "ws_trainstationwin2" },
+    { 14702, "masmall3int2", "HS2_Curt2" },
+    { 14702, "masmall3int2", "HS2_wall3" },
+    { 14702, "masmall3int2", "HS3_Light" },
+    { 14702, "masmall3int2", "HS3_wall3" },
+    { 14702, "masmall3int2", "HS3_wall4" },
+    { 14702, "masmall3int2", "HS3_wall6" },
+    { 5787, "melrose02_lawn", "LAstripmall2" },
+    { 5787, "melrose02_lawn", "melrblu_law" },
+    { 5787, "melrose02_lawn", "melrgr01_law" },
+    { 5787, "melrose02_lawn", "melrgren2_law" },
+    { 5787, "melrose02_lawn", "melrpurp2_law" },
+    { 5787, "melrose02_lawn", "shopfr01_LA" },
+    { 5787, "melrose02_lawn", "shopfr02_LA" },
+    { 5780, "melrose03_lawn", "hollyshop01_LAwn" },
+    { 5780, "melrose03_lawn", "hollyshop02_LAwn" },
+    { 5780, "melrose03_lawn", "hollyshop03_LAwn" },
+    { 5780, "melrose03_lawn", "hollyshop04_LAwn" },
+    { 5780, "melrose03_lawn", "ws_apartmentmankypeach1" },
+    { 5730, "melrose05_lawn", "melrbr01_law" },
+    { 5730, "melrose05_lawn", "melrbr02_law" },
+    { 5704, "melrose07_lawn", "decotop_law" },
+    { 5704, "melrose07_lawn", "shopdeco01b_law" },
+    { 5704, "melrose07_lawn", "shopdeco01_law" },
+    { 5704, "melrose07_lawn", "shopdeco02_law" },
+    { 5704, "melrose07_lawn", "shopdeco03b_law" },
+    { 5704, "melrose07_lawn", "shopdeco03c_law" },
+    { 5704, "melrose07_lawn", "shopdeco03_law" },
+    { 5704, "melrose07_lawn", "shopwall01_law" },
+    { 5704, "melrose07_lawn", "ws_conc_step1" },
+    { 5733, "melrose08_lawn", "base5_1" },
+    { 5733, "melrose08_lawn", "malawn01_LAwN" },
+    { 5733, "melrose08_lawn", "malawn02_LAwN" },
+    { 5733, "melrose08_lawn", "melrdoor01_law" },
+    { 5733, "melrose08_lawn", "melroran2_law" },
+    { 5733, "melrose08_lawn", "melryel_law" },
+    { 5771, "melrose11_lawn", "melrshop05_LAwN" },
+    { 5771, "melrose11_lawn", "melrshop06_LAwN" },
+    { 5771, "melrose11_lawn", "melrshop07_LAwN" },
+    { 5771, "melrose11_lawn", "melrsign04_LA" },
+    { 5771, "melrose11_lawn", "melrsign07_LA" },
+    { 5771, "melrose11_lawn", "melrsign08_LA" },
+    { 5732, "melrose12_lawn", "comptwall39" },
+    { 5732, "melrose12_lawn", "melrshop01_LAwN" },
+    { 5732, "melrose12_lawn", "melrshop03_LAwN" },
+    { 5732, "melrose12_lawn", "melrsign01_LA" },
+    { 5732, "melrose12_lawn", "melrwall01_LAw" },
+    { 5773, "melrose13_lawn", "downtwin19" },
+    { 5773, "melrose13_lawn", "downtwin22" },
+    { 5773, "melrose13_lawn", "LAplaza1" },
+    { 5773, "melrose13_lawn", "recshop01_LA" },
+    { 5773, "melrose13_lawn", "recshop02_LA" },
+    { 5773, "melrose13_lawn", "shopfr03_LA" },
+    { 5731, "melrose15_lawn", "2winsmel_law" },
+    { 5731, "melrose15_lawn", "melrshut01_law" },
+    { 5731, "melrose15_lawn", "melrshut02_law" },
+    { 5731, "melrose15_lawn", "melrshut03_law" },
+    { 5731, "melrose15_lawn", "melrsign03_LA" },
+    { 5731, "melrose15_lawn", "melrsign05_LA" },
+    { 5731, "melrose15_lawn", "melryel02_law" },
+    { 5731, "melrose15_lawn", "yoyojos_law" },
+    { 5737, "melrose16_lawn", "frostwin01_law" },
+    { 5737, "melrose16_lawn", "planterbev01_law" },
+    { 5737, "melrose16_lawn", "shopdeco06_law" },
+    { 5737, "melrose16_lawn", "shopface08_law" },
+    { 5737, "melrose16_lawn", "shoptop02_law" },
+    { 5709, "melrose17_lawn", "shopface01_law" },
+    { 5709, "melrose17_lawn", "shopface02bl_law" },
+    { 5709, "melrose17_lawn", "shopface02c_law" },
+    { 5709, "melrose17_lawn", "shopface06_law" },
+    { 5709, "melrose17_lawn", "shopwin02_law" },
+    { 5709, "melrose17_lawn", "shopwin06_law" },
+    { 5785, "melrosetr1_lawn", "711doors1" },
+    { 5785, "melrosetr1_lawn", "blob1_LAwN" },
+    { 5789, "melrosetr_lawn", "melrsign06_LA" },
+    { 10281, "michgar", "michelle_car1" },
+    { 10281, "michgar", "michelle_car2" },
+    { 10281, "michgar", "michelle_car3" },
+    { 10281, "michgar", "toolwall2" },
+    { 3267, "milbase", "a51_boffstuff2" },
+    { 3267, "milbase", "a51_boffstuff4" },
+    { 3267, "milbase", "a51_light1" },
+    { 3267, "milbase", "CJ_FILLING" },
+    { 3267, "milbase", "lightblue_64" },
+    { 3267, "milbase", "lightred2_32" },
+    { 3267, "milbase", "sam_camobits" },
+    { 2985, "minigx", "mini_base" },
+    { 3056, "minimex", "kmb_dynamite" },
+    { 7630, "miragecasino1", "cparkvgn1_256" },
+    { 7630, "miragecasino1", "cparkvgn2_256" },
+    { 7630, "miragecasino1", "cparkvgn3_256" },
+    { 7630, "miragecasino1", "cparkvgn4_256" },
+    { 7630, "miragecasino1", "maxhead4" },
+    { 7630, "miragecasino1", "ws_carparknew5" },
+    { 7553, "miragecasino2", "miragepillar1_256" },
+    { 7553, "miragecasino2", "miragepillar2_256" },
+    { 7553, "miragecasino2", "miragesign1_256" },
+    { 7553, "miragecasino2", "miragesign2_256" },
+    { 7553, "miragecasino2", "miragewall1" },
+    { 7553, "miragecasino2", "miragewall2" },
+    { 7553, "miragecasino2", "miragewall3" },
+    { 7553, "miragecasino2", "miragewall4_256" },
+    { 7553, "miragecasino2", "miragewall5_256" },
+    { 7553, "miragecasino2", "miragewall6_256" },
+    { 7553, "miragecasino2", "visagesign2_256" },
+    { 3786, "missiles_sfs", "ws_greyfoam" },
+    { 3786, "missiles_sfs", "ws_packingcase1" },
+    { 10982, "mission2apts_sfse", "ws_aptwin" },
+    { 10982, "mission2apts_sfse", "ws_ed_shop5" },
+    { 10982, "mission2apts_sfse", "ws_ed_shop9b" },
+    { 10988, "mission2_sfse", "ws_apartmentyello1" },
+    { 10988, "mission2_sfse", "ws_apartmentyello2" },
+    { 10988, "mission2_sfse", "ws_apartmentyello3" },
+    { 10988, "mission2_sfse", "ws_buildblock1a" },
+    { 10988, "mission2_sfse", "ws_buildblock1b" },
+    { 10988, "mission2_sfse", "ws_fancywallpink" },
+    { 10988, "mission2_sfse", "ws_fancywindowpink" },
+    { 10988, "mission2_sfse", "ws_shopfront1b" },
+    { 10980, "mission3z_sfse", "ws_ed_shop6" },
+    { 10981, "mission3_sfse", "ws_buildblock2a" },
+    { 10981, "mission3_sfse", "ws_buildblock2b" },
+    { 10981, "mission3_sfse", "ws_buildblock2c" },
+    { 10981, "mission3_sfse", "ws_classyshop1" },
+    { 10981, "mission3_sfse", "ws_ed_shop1" },
+    { 10977, "mission_sfse", "ws_apartmentbrown1" },
+    { 10977, "mission_sfse", "ws_apartmentbrown2" },
+    { 10977, "mission_sfse", "ws_ed_shop8" },
+    { 10977, "mission_sfse", "ws_ed_shop8_door" },
+    { 1262, "mitraffic", "lamppost" },
+    { 1262, "mitraffic", "Tafficlights" },
+    { 1952, "mixkb1", "aluminum_1" },
+    { 1952, "mixkb1", "chrome_tube2" },
+    { 1952, "mixkb1", "chrome_tube3" },
+    { 1952, "mixkb1", "deck_rim" },
+    { 1952, "mixkb1", "mixer1" },
+    { 1952, "mixkb1", "mixer2" },
+    { 2967, "mobile93a", "mobile93a" },
+    { 2966, "mobile93b", "mobile93b" },
+    { 9907, "monlith_sfe", "sf_column1" },
+    { 9907, "monlith_sfe", "sf_windos_4" },
+    { 9907, "monlith_sfe", "sf_windos_5" },
+    { 9907, "monlith_sfe", "sf_windos_6" },
+    { 9907, "monlith_sfe", "window5b" },
+    { 1692, "moregenroofstuff", "airvent_shadowT_gz" },
+    { 1692, "moregenroofstuff", "mast_shadow_t" },
+    { 1692, "moregenroofstuff", "skylight_meshed" },
+    { 1692, "moregenroofstuff", "skylight_scum" },
+    { 1692, "moregenroofstuff", "solar_panel_1" },
+    { 3436, "motel01", "vegasfence01_64" },
+    { 3436, "motel01", "vegasmotel01_128" },
+    { 3436, "motel01", "vegasmotel02_128" },
+    { 3436, "motel01", "vegasmotel03_64" },
+    { 3436, "motel01", "vegasmoteldoor01_128" },
+    { 3436, "motel01", "vegasmotelwind01_128" },
+    { 3435, "motel01sign", "vegasmotelsign01_128" },
+    { 3435, "motel01sign", "vegasmotelsign02_128" },
+    { 3435, "motel01sign", "vegasmotelsign03_128" },
+    { 5413, "motel_lae", "crakwindo1_LAe" },
+    { 14482, "motel_skuzwin", "motel_curt1" },
+    { 10386, "mountainsfs", "grass4dirty" },
+    { 10386, "mountainsfs", "ws_stonewall" },
+    { 14742, "mp3", "GB_rapposter02" },
+    { 14742, "mp3", "GB_rapposter05" },
+    { 18056, "mp_diner1", "mp_CJ_CARDBOARD128" },
+    { 18056, "mp_diner1", "mp_cj_sheetmetal" },
+    { 18056, "mp_diner1", "mp_diner_swing" },
+    { 18056, "mp_diner1", "mp_diner_wall" },
+    { 18058, "mp_diner2", "mp_diner_count" },
+    { 18058, "mp_diner2", "mp_diner_counttop" },
+    { 18058, "mp_diner2", "mp_diner_floordirt" },
+    { 18058, "mp_diner2", "mp_diner_seats" },
+    { 18058, "mp_diner2", "mp_diner_slats" },
+    { 18058, "mp_diner2", "mp_diner_table" },
+    { 18058, "mp_diner2", "mp_diner_tilewallALT" },
+    { 14847, "mp_policesf", "mp_cop_carpet" },
+    { 14847, "mp_policesf", "mp_cop_ceilingtile" },
+    { 14847, "mp_policesf", "mp_cop_cell" },
+    { 14847, "mp_policesf", "mp_cop_floor" },
+    { 14847, "mp_policesf", "mp_cop_floor1" },
+    { 14847, "mp_policesf", "mp_cop_lectern" },
+    { 14847, "mp_policesf", "mp_cop_marble" },
+    { 14847, "mp_policesf", "mp_cop_skirt" },
+    { 14847, "mp_policesf", "mp_cop_skirting" },
+    { 14847, "mp_policesf", "mp_cop_tile" },
+    { 14847, "mp_policesf", "mp_cop_vinyl" },
+    { 14847, "mp_policesf", "mp_cop_wallpink" },
+    { 14847, "mp_policesf", "mp_tank_room" },
+    { 14847, "mp_policesf", "mp_tank_roomplain" },
+    { 11631, "mp_ranchcut", "CJ_PAINTING20" },
+    { 11631, "mp_ranchcut", "CJ_PAINTING22" },
+    { 11631, "mp_ranchcut", "CJ_PAINTING6" },
+    { 11631, "mp_ranchcut", "Gen_Quallity_HiFi_Side" },
+    { 11631, "mp_ranchcut", "mpCJ_Black_metal" },
+    { 11631, "mp_ranchcut", "mpCJ_DarkWood" },
+    { 11631, "mp_ranchcut", "mpCJ_Deer1" },
+    { 11631, "mp_ranchcut", "mpCJ_GALVANISEDn" },
+    { 11631, "mp_ranchcut", "mpCJ_HI_FI" },
+    { 11631, "mp_ranchcut", "mpcj_speaker2" },
+    { 11631, "mp_ranchcut", "mpCJ_SPEAKER4" },
+    { 11631, "mp_ranchcut", "mpcj_speaker_6" },
+    { 11631, "mp_ranchcut", "mpCJ_WOOD_DARK" },
+    { 11631, "mp_ranchcut", "mpkbsofa333c" },
+    { 11631, "mp_ranchcut", "mpman_tigr_rug" },
+    { 11631, "mp_ranchcut", "mp_torenoshadA" },
+    { 1726, "mrk_couches2", "kb_sofa5_256" },
+    { 2013, "mrk_kitstuf", "ffrriiddggee__33" },
+    { 2013, "mrk_kitstuf", "fridge_3" },
+    { 18217, "mtbfencecs_t", "steel256256" },
+    { 18217, "mtbfencecs_t", "ws_scaffoldscreen" },
+    { 18268, "mtbtrackcs_t", "palmbark128" },
+    { 3281, "mtb_banners", "xtreme_prolaps" },
+    { 13721, "mulhousclahills", "residentialdoor3_256" },
+    { 13673, "mullho03a_lahills", "desegravelgrassroadLA" },
+    { 13673, "mullho03a_lahills", "gravelkb2_128" },
+    { 13673, "mullho03a_lahills", "sw_wall02" },
+    { 13711, "mullho03_lahills", "shadover_law" },
+    { 13754, "mullholl_lahills", "redslates64_law" },
+    { 9957, "multistory_sfe", "sfe_whitewall" },
+    { 3121, "munchyx", "doughunt" },
+    { 14735, "newcrak", "ab_rug" },
+    { 14735, "newcrak", "ab_wall2" },
+    { 14735, "newcrak", "AH_ArchitraveM" },
+    { 14735, "newcrak", "AH_BLINDSM" },
+    { 14735, "newcrak", "AH_flrwllM" },
+    { 14735, "newcrak", "AH_skirtM" },
+    { 14735, "newcrak", "AH_skirtscum" },
+    { 14735, "newcrak", "AH_stripwallcln" },
+    { 14735, "newcrak", "carp21S" },
+    { 14735, "newcrak", "carp23S" },
+    { 14735, "newcrak", "carpet-tile" },
+    { 14735, "newcrak", "kbdirty_wall1" },
+    { 11388, "newhubgrg1_sfse", "ws_hubbeams1" },
+    { 11388, "newhubgrg1_sfse", "ws_hubbeams2" },
+    { 1245, "newramp", "craneblnk_128" },
+    { 1285, "newstand", "newstandnew256" },
+    { 1285, "newstand", "newstandnew256back" },
+    { 9223, "newstuff_sfn", "carlot1_LAn" },
+    { 9223, "newstuff_sfn", "cm_clothing ad1" },
+    { 9223, "newstuff_sfn", "oldflowerbed" },
+    { 9223, "newstuff_sfn", "sl_preswallbot01" },
+    { 1982, "new_cabinets", "cabinet_grill" },
+    { 1982, "new_cabinets", "cabinet_hi1" },
+    { 1982, "new_cabinets", "cabinet_hi1b" },
+    { 1982, "new_cabinets", "cabinet_hi3" },
+    { 1982, "new_cabinets", "cabinet_hilite" },
+    { 1982, "new_cabinets", "meat1" },
+    { 1982, "new_cabinets", "meat2" },
+    { 1982, "new_cabinets", "shelf4" },
+    { 1983, "new_cabinets2", "cereal2" },
+    { 1983, "new_cabinets2", "cereal3" },
+    { 1983, "new_cabinets2", "cereal4" },
+    { 1983, "new_cabinets2", "powder1_1" },
+    { 1983, "new_cabinets2", "powder1_2" },
+    { 1983, "new_cabinets2", "shop_shelfnu2" },
+    { 1983, "new_cabinets2", "shop_shelfnu3" },
+    { 1983, "new_cabinets2", "shop_shelfnu4" },
+    { 1983, "new_cabinets2", "shop_shelfnu5" },
+    { 1983, "new_cabinets2", "sh_tins1" },
+    { 1983, "new_cabinets2", "sh_tins2" },
+    { 1981, "new_cabinets3", "butter_etc2" },
+    { 1981, "new_cabinets3", "jarsss1" },
+    { 1981, "new_cabinets3", "jarsss2" },
+    { 1981, "new_cabinets3", "sauce1" },
+    { 1981, "new_cabinets3", "shop_shelfnu6" },
+    { 4720, "nightlights1_lan2", "sl_dtwinlights1" },
+    { 4720, "nightlights1_lan2", "sl_dtwinlights3" },
+    { 11410, "nightlights_sfse", "sfnitewindow_alfa" },
+    { 5661, "nightlts_lae", "sl_dtwinlights2" },
+    { 9932, "nitelites", "monlith_win_tex" },
+    { 9932, "nitelites", "sfnitewindows" },
+    { 17954, "nitelites_lae2", "nitwin01_LA" },
+    { 4212, "nitewin_lan", "neonwin1" },
+    { 8431, "nucarpark", "nucarpark01_128" },
+    { 8431, "nucarpark", "nucarpark02_128" },
+    { 8431, "nucarpark", "nucarpark03_128" },
+    { 8431, "nucarpark", "nucarpark04_64" },
+    { 8710, "nuhotel01", "nuhotel01_128" },
+    { 8710, "nuhotel01", "nuhotel02_128" },
+    { 8710, "nuhotel01", "nuhotel03_128" },
+    { 8710, "nuhotel01", "nuhotel04_128" },
+    { 8710, "nuhotel01", "nuhotel05_64" },
+    { 8710, "nuhotel01", "nuhotel07_128" },
+    { 8710, "nuhotel01", "nuhoteldoor01_128" },
+    { 8710, "nuhotel01", "nuhoteldoor02_128" },
+    { 8710, "nuhotel01", "nuhoteldoor03_128" },
+    { 10350, "oc_flats_gnd_sfs", "ws_screenedfence_big" },
+    { 10350, "oc_flats_gnd_sfs", "ws_stucco_red_1" },
+    { 10350, "oc_flats_gnd_sfs", "ws_stucco_yello_1" },
+    { 10350, "oc_flats_gnd_sfs", "ws_woodfence1" },
+    { 1637, "od_beachstuff", "beachtowels" },
+    { 1637, "od_beachstuff", "beachwood" },
+    { 1637, "od_beachstuff", "beach_hut_128" },
+    { 1637, "od_beachstuff", "lotion" },
+    { 1637, "od_beachstuff", "loungertubes" },
+    { 1637, "od_beachstuff", "lounger_matress" },
+    { 1637, "od_beachstuff", "mbhutdr3" },
+    { 1637, "od_beachstuff", "mbhutdr4" },
+    { 1637, "od_beachstuff", "mbhutgre" },
+    { 1637, "od_beachstuff", "mbhutsig" },
+    { 1637, "od_beachstuff", "mbhutwin" },
+    { 1637, "od_beachstuff", "mbhutyel" },
+    { 1637, "od_beachstuff", "vbnet" },
+    { 11326, "oldgarage_sfse", "ws_corr_2_plaintiled" },
+    { 11326, "oldgarage_sfse", "ws_fuckedwin1" },
+    { 11326, "oldgarage_sfse", "ws_xenon_used" },
+    { 4850, "oldshops_las", "lasmulap7" },
+    { 4850, "oldshops_las", "sanpedmark1" },
+    { 4850, "oldshops_las", "sanpedmark2" },
+    { 4850, "oldshops_las", "sanpedmark3" },
+    { 4850, "oldshops_las", "sanpedmark4" },
+    { 4850, "oldshops_las", "sanpedmark5" },
+    { 4850, "oldshops_las", "snpedbutshp1" },
+    { 4850, "oldshops_las", "snpedmat1" },
+    { 4850, "oldshops_las", "snpedmat3" },
+    { 4850, "oldshops_las", "snpedmat4" },
+    { 4850, "oldshops_las", "snpedmat9" },
+    { 16051, "oldwest", "snakefarmsign" },
+    { 16051, "oldwest", "sw_hedstones" },
+    { 8591, "olympic01", "nudedaily_256" },
+    { 8591, "olympic01", "olympic01_128" },
+    { 8591, "olympic01", "olympic02_128" },
+    { 8591, "olympic01", "olympic03_64" },
+    { 8591, "olympic01", "olympic05_64" },
+    { 8591, "olympic01", "olympic06_64" },
+    { 8591, "olympic01", "strippers1_256" },
+    { 8591, "olympic01", "vgscityhwal1" },
+    { 2754, "otb_machine", "ab_shinyPanel" },
+    { 2754, "otb_machine", "lift4" },
+    { 2754, "otb_machine", "mp_CJ_GALVANISED" },
+    { 10249, "ottos2_sfw", "ottos_pics_sfe" },
+    { 10249, "ottos2_sfw", "pinebranch1" },
+    { 3857, "ottos_glass", "carshowroom1" },
+    { 9953, "ottos_sfw", "carshowroom2" },
+    { 9953, "ottos_sfw", "carshowroom3" },
+    { 9953, "ottos_sfw", "carshowroomfloor" },
+    { 9953, "ottos_sfw", "carshowroomrceiling" },
+    { 13602, "ovalsurround", "dresswall1_256" },
+    { 10166, "p69_rocks", "sfe_rock1" },
+    { 10166, "p69_rocks", "sfe_rock2" },
+    { 10166, "p69_rocks", "sfe_rock3" },
+    { 14593, "papaerchaseoffice", "ab_blinds" },
+    { 14593, "papaerchaseoffice", "ab_payphone1" },
+    { 14593, "papaerchaseoffice", "ab_SkirtingGrey" },
+    { 14593, "papaerchaseoffice", "glassPartition" },
+    { 14593, "papaerchaseoffice", "sign_noCamera" },
+    { 14593, "papaerchaseoffice", "sign_outOfOrder" },
+    { 14593, "papaerchaseoffice", "sign_planDept" },
+    { 14593, "papaerchaseoffice", "sign_restroom" },
+    { 14593, "papaerchaseoffice", "spad_tile2_64" },
+    { 14593, "papaerchaseoffice", "wall_stone3_256" },
+    { 14593, "papaerchaseoffice", "wall_stone6_256" },
+    { 14599, "paperchasebits", "ab_blueprint1" },
+    { 14599, "paperchasebits", "ab_blueprint2" },
+    { 14599, "paperchasebits", "ab_blueprint3" },
+    { 14599, "paperchasebits", "ab_blueprint4" },
+    { 14599, "paperchasebits", "sign_firstaid" },
+    { 14600, "paperchase_bits2", "ab_docbox" },
+    { 14600, "paperchase_bits2", "ab_medbag" },
+    { 14600, "paperchase_bits2", "ab_medbottle" },
+    { 14600, "paperchase_bits2", "ab_paperoll" },
+    { 14600, "paperchase_bits2", "ab_plasticBin" },
+    { 3060, "paracx", "parachute_e" },
+    { 3060, "paracx", "ripcord" },
+    { 3060, "paracx", "strings" },
+    { 3026, "parapakx", "parapak" },
+    { 5532, "paynspray_lae", "bigblue1" },
+    { 5532, "paynspray_lae", "bigblue2" },
+    { 5532, "paynspray_lae", "sprysig2" },
+    { 14537, "pdomebar", "ab_weeLite" },
+    { 14537, "pdomebar", "club_beer1SFw" },
+    { 14537, "pdomebar", "club_bottles1_SFW" },
+    { 14537, "pdomebar", "club_floor2_sfwTEST" },
+    { 14537, "pdomebar", "club_wood1_SFw" },
+    { 14539, "pdomes_logo", "pdomes_jizzys" },
+    { 14539, "pdomes_logo", "pdomes_OM" },
+    { 14539, "pdomes_logo", "pdomes_PLEA" },
+    { 14539, "pdomes_logo", "pdomes_SURD" },
+    { 14540, "pdome_extras", "ab_lipSofa" },
+    { 14540, "pdome_extras", "pdomes_flexLite" },
+    { 3985, "pershingsq", "hotelfig2_LAn" },
+    { 3985, "pershingsq", "la_brownhibuildc" },
+    { 3985, "pershingsq", "posh_eagle9_sfe" },
+    { 1244, "petrol", "pumpdial" },
+    { 2702, "pick_up", "CJ_BREAD" },
+    { 2702, "pick_up", "cj_burg_top" },
+    { 2702, "pick_up", "cj_fambly" },
+    { 2702, "pick_up", "cj_fambly2" },
+    { 2702, "pick_up", "CJ_red_FELT" },
+    { 2702, "pick_up", "lwface08" },
+    { 2702, "pick_up", "lwstrap05" },
+    { 2266, "picture_frame", "CJ_PAINTING1" },
+    { 2266, "picture_frame", "CJ_PAINTING10" },
+    { 2266, "picture_frame", "CJ_PAINTING11" },
+    { 2266, "picture_frame", "CJ_PAINTING14" },
+    { 2266, "picture_frame", "CJ_PAINTING16" },
+    { 2266, "picture_frame", "CJ_PAINTING17" },
+    { 2266, "picture_frame", "CJ_PAINTING18" },
+    { 2266, "picture_frame", "CJ_PAINTING19" },
+    { 2266, "picture_frame", "CJ_PAINTING21" },
+    { 2266, "picture_frame", "CJ_PAINTING23" },
+    { 2266, "picture_frame", "CJ_PAINTING28" },
+    { 2266, "picture_frame", "CJ_PAINTING29" },
+    { 2266, "picture_frame", "CJ_PAINTING3" },
+    { 2266, "picture_frame", "CJ_PAINTING30" },
+    { 2266, "picture_frame", "CJ_PAINTING31" },
+    { 2266, "picture_frame", "CJ_PAINTING32" },
+    { 2266, "picture_frame", "CJ_PAINTING33" },
+    { 2266, "picture_frame", "CJ_PAINTING34" },
+    { 2266, "picture_frame", "CJ_PAINTING35" },
+    { 2266, "picture_frame", "CJ_PAINTING36" },
+    { 2266, "picture_frame", "CJ_PAINTING37" },
+    { 2266, "picture_frame", "CJ_PAINTING5" },
+    { 2266, "picture_frame", "CJ_PAINTING7" },
+    { 2254, "picture_frame_clip", "CJ_PAINTING12" },
+    { 2254, "picture_frame_clip", "CJ_PAINTING15" },
+    { 2254, "picture_frame_clip", "CJ_PAINTING2" },
+    { 2254, "picture_frame_clip", "CJ_PAINTING24" },
+    { 2254, "picture_frame_clip", "CJ_PAINTING26" },
+    { 2254, "picture_frame_clip", "CJ_PAINTING27" },
+    { 2254, "picture_frame_clip", "CJ_PAINTING4" },
+    { 9903, "pier69", "pier69_blue1" },
+    { 9903, "pier69", "pier69_blue2" },
+    { 9903, "pier69", "pier69_blue3" },
+    { 9903, "pier69", "pier69_blue4" },
+    { 9903, "pier69", "pier69_blue5" },
+    { 9903, "pier69", "pier69_blue6" },
+    { 9903, "pier69", "pier69_blue7" },
+    { 9903, "pier69", "pier69_brown1" },
+    { 9903, "pier69", "pier69_brown2" },
+    { 9903, "pier69", "pier69_brown3" },
+    { 9903, "pier69", "pier69_brown4" },
+    { 9903, "pier69", "pier69_brown5" },
+    { 9903, "pier69", "pier69_brown6" },
+    { 9903, "pier69", "pier69_brown7" },
+    { 9903, "pier69", "pier69_catwalkside" },
+    { 9903, "pier69", "pier69_sign2" },
+    { 9903, "pier69", "rooftop_gz4" },
+    { 6448, "piera_law2", "beachpiersign1_256" },
+    { 6448, "piera_law2", "Gen_Crain_Mast" },
+    { 6283, "pierb_law2", "brownstar_law" },
+    { 6283, "pierb_law2", "pierbild02_law" },
+    { 6283, "pierb_law2", "pierbild03_law" },
+    { 6283, "pierb_law2", "pierbild05_law" },
+    { 6283, "pierb_law2", "pierbild06_law" },
+    { 6283, "pierb_law2", "pierbild07_law" },
+    { 6283, "pierb_law2", "pierbild08_law" },
+    { 6283, "pierb_law2", "pierends_law" },
+    { 6283, "pierb_law2", "pierfenc_LAw2" },
+    { 6283, "pierb_law2", "pierlegbot_law" },
+    { 6283, "pierb_law2", "pierlegtop_law" },
+    { 6283, "pierb_law2", "sancorn5" },
+    { 6283, "pierb_law2", "sancorn6" },
+    { 6283, "pierb_law2", "sancorn7" },
+    { 6283, "pierb_law2", "sanice1" },
+    { 6283, "pierb_law2", "sanice2" },
+    { 6283, "pierb_law2", "sanice3" },
+    { 6283, "pierb_law2", "sanice4" },
+    { 6283, "pierb_law2", "sanice5" },
+    { 6283, "pierb_law2", "sanpiz4" },
+    { 6283, "pierb_law2", "santall8s1" },
+    { 6283, "pierb_law2", "sanwel5" },
+    { 6283, "pierb_law2", "sanwel6" },
+    { 6283, "pierb_law2", "sanwel7" },
+    { 6283, "pierb_law2", "wilsd_02_la" },
+    { 6287, "pierc_law2", "beachawning1_256" },
+    { 6287, "pierc_law2", "beachwall1_256" },
+    { 6287, "pierc_law2", "beachwall2_256" },
+    { 6287, "pierc_law2", "beachwall5_256" },
+    { 6287, "pierc_law2", "beachwall6_256" },
+    { 6287, "pierc_law2", "beachwall7_256" },
+    { 6287, "pierc_law2", "blueroof_128" },
+    { 6287, "pierc_law2", "pierbild09_law" },
+    { 6287, "pierc_law2", "pierwin02_law" },
+    { 6287, "pierc_law2", "sancorn1" },
+    { 6287, "pierc_law2", "sancorn2" },
+    { 6287, "pierc_law2", "sancorn3" },
+    { 6287, "pierc_law2", "sancorn4" },
+    { 6287, "pierc_law2", "sanpiz3" },
+    { 6287, "pierc_law2", "sanpiz5" },
+    { 6287, "pierc_law2", "shoptop05_law" },
+    { 6287, "pierc_law2", "stormdrain3b_nt" },
+    { 6188, "pier_law", "pierlegTEST" },
+    { 6188, "pier_law", "piermetalt_LAW" },
+    { 6188, "pier_law", "pierside_LAW" },
+    { 9949, "pier_sfe", "pierhead1_sfe" },
+    { 9949, "pier_sfe", "pierhead2_sfe" },
+    { 9949, "pier_sfe", "pierhead3_sfe" },
+    { 9949, "pier_sfe", "pierhead4_sfe" },
+    { 10621, "pinkcarpark_sfs", "vegparking2_256" },
+    { 10621, "pinkcarpark_sfs", "ws_fmaparking" },
+    { 8421, "pirateland", "pirates01_128" },
+    { 8421, "pirateland", "pirates02_128" },
+    { 8421, "pirateland", "pirates03_64" },
+    { 8421, "pirateland", "pirates04_64" },
+    { 8421, "pirateland", "pirates05_64" },
+    { 8421, "pirateland", "tislandbanister" },
+    { 8421, "pirateland", "tislandledge01_64" },
+    { 8421, "pirateland", "tislandledge03_128" },
+    { 8421, "pirateland", "tislndrock01_128" },
+    { 8421, "pirateland", "tislndrock02_128" },
+    { 8421, "pirateland", "tislndskullrock_256" },
+    { 8423, "pirateship01", "old_carpet_dvdr" },
+    { 8423, "pirateship01", "pirates07_128" },
+    { 8423, "pirateship01", "tislandfront01_128" },
+    { 8423, "pirateship01", "tislandfront02_128" },
+    { 8423, "pirateship01", "tislandfront03_128" },
+    { 8423, "pirateship01", "tislandshpback_256" },
+    { 8423, "pirateship01", "tislandwall01_128" },
+    { 8423, "pirateship01", "tislandwall02_128" },
+    { 8423, "pirateship01", "tislandwall04_64" },
+    { 8423, "pirateship01", "tislandwall05_128" },
+    { 8423, "pirateship01", "tislandwdbox01_128" },
+    { 8423, "pirateship01", "tislandwdbox02_64" },
+    { 8423, "pirateship01", "tislndshpmast" },
+    { 2635, "pizza_furn", "CJ_TART_TABLE" },
+    { 2218, "pizza_tray", "pboxside" },
+    { 2218, "pizza_tray", "pfries" },
+    { 2218, "pizza_tray", "pizzaslice" },
+    { 2218, "pizza_tray", "tray_cb" },
+    { 2247, "plants_galss", "CJ_willow" },
+    { 2246, "plants_office", "cooker3" },
+    { 4562, "plaza1_lan2", "sl_blokpave1" },
+    { 14533, "pleas_dome", "ab_carpethexi" },
+    { 14533, "pleas_dome", "ab_clubloungewall" },
+    { 14533, "pleas_dome", "ab_litepetal" },
+    { 14533, "pleas_dome", "ab_metaldisc" },
+    { 14533, "pleas_dome", "ab_velvor" },
+    { 14533, "pleas_dome", "club_floor1_sfwTEST" },
+    { 14533, "pleas_dome", "club_metal2_sfw" },
+    { 14533, "pleas_dome", "club_wall4_SFw" },
+    { 14533, "pleas_dome", "club_zeb_SFW1" },
+    { 14533, "pleas_dome", "club_zeb_SFW2" },
+    { 14533, "pleas_dome", "mallfence_law" },
+    { 14533, "pleas_dome", "ornate_ceiling1_sfw" },
+    { 14533, "pleas_dome", "pdome_arch1" },
+    { 14533, "pleas_dome", "pdome_wall1" },
+    { 14533, "pleas_dome", "scaffold_stuff" },
+    { 14533, "pleas_dome", "sfw_clublight1" },
+    { 14533, "pleas_dome", "timber_gz" },
+    { 14533, "pleas_dome", "toaty_lite_SFW" },
+    { 14533, "pleas_dome", "ws_corner_iron1" },
+    { 9900, "pointysfe", "pointy_sfe" },
+    { 9900, "pointysfe", "transam_2_sfe" },
+    { 9900, "pointysfe", "ws_trans_block" },
+    { 2602, "police_props_un", "GUS" },
+    { 2965, "pool_blsx", "poolballsa1" },
+    { 2965, "pool_blsx", "poolballsa2" },
+    { 2965, "pool_blsx", "poolballscue" },
+    { 1684, "portakabin", "ws_portacabin1" },
+    { 1684, "portakabin", "ws_portacabin2" },
+    { 1684, "portakabin", "ws_portacabin3" },
+    { 9918, "posh2_sfe", "poshsfe1" },
+    { 9918, "posh2_sfe", "poshsfe2" },
+    { 9918, "posh2_sfe", "poshsfe3" },
+    { 10049, "posh_sfe", "posh_eagle5_sfe" },
+    { 10049, "posh_sfe", "posh_eagle6_sfe" },
+    { 10049, "posh_sfe", "posh_eagle7_sfe" },
+    { 10049, "posh_sfe", "ws_alley2_128_plain" },
+    { 2984, "potax", "chemtoilet1256" },
+    { 2984, "potax", "chemtoilet2256" },
+    { 9259, "presidio01_sfn", "sl_clayroof01" },
+    { 9259, "presidio01_sfn", "sl_presdoor01" },
+    { 9259, "presidio01_sfn", "sl_presdoor02" },
+    { 9259, "presidio01_sfn", "sl_presroofedg01" },
+    { 9259, "presidio01_sfn", "sl_preswin04" },
+    { 9259, "presidio01_sfn", "sl_preswin06" },
+    { 9259, "presidio01_sfn", "sl_preswindbl01" },
+    { 9259, "presidio01_sfn", "sl_whitewood01" },
+    { 9259, "presidio01_sfn", "stainwin_law" },
+    { 9259, "presidio01_sfn", "yelloconc_LA" },
+    { 3262, "privatesign", "sign_tresspass1" },
+    { 3262, "privatesign", "sign_tresspass2" },
+    { 3262, "privatesign", "sw_hairpinL" },
+    { 3262, "privatesign", "sw_hairpinR" },
+    { 2670, "proc_rub", "CJ_CERT_1" },
+    { 2670, "proc_rub", "CJ_CERT_2" },
+    { 2670, "proc_rub", "CJ_CERT_3" },
+    { 2670, "proc_rub", "CJ_CERT_4" },
+    { 2670, "proc_rub", "CJ_FAG_BUT" },
+    { 2670, "proc_rub", "sprunk2dirty" },
+    { 3661, "projects_la", "ws_boxhouse_wins2" },
+    { 1664, "propbarstuff", "kb_vodka_64_256" },
+    { 1985, "punchbag2", "punchbag2" },
+    { 8395, "pyramid", "luxorwindow01_128" },
+    { 3049, "qrydrx", "Was_scrpyd_barbwire" },
+    { 3049, "qrydrx", "ws_corr_1_red" },
+    { 3214, "quarry", "lasjmflood3" },
+    { 3214, "quarry", "Was_swr_trolleycage" },
+    { 10628, "queens1_sfs", "ws_cinemasign1" },
+    { 10628, "queens1_sfs", "ws_fancyshop1" },
+    { 10628, "queens1_sfs", "ws_fancyshop1b" },
+    { 10628, "queens1_sfs", "ws_fancyshop1c" },
+    { 10628, "queens1_sfs", "ws_fancyshop1e" },
+    { 10628, "queens1_sfs", "ws_lights_in_marble" },
+    { 10628, "queens1_sfs", "ws_queens1" },
+    { 10626, "queens2_sfs", "ws_apartmentmankyblue2" },
+    { 10626, "queens2_sfs", "ws_apartmentmankyblue3" },
+    { 10626, "queens2_sfs", "ws_apartmentmankygreen3" },
+    { 10626, "queens2_sfs", "ws_apartmentmankypeach2" },
+    { 10626, "queens2_sfs", "ws_apartmentmankypeach3" },
+    { 10626, "queens2_sfs", "ws_awning_plum" },
+    { 10626, "queens2_sfs", "WS_barberspole" },
+    { 10626, "queens2_sfs", "ws_beenflick1" },
+    { 10626, "queens2_sfs", "ws_beenflick2" },
+    { 10626, "queens2_sfs", "ws_dirty_awning2b" },
+    { 10626, "queens2_sfs", "WS_ED_shop3b" },
+    { 10626, "queens2_sfs", "WS_ED_shop3c" },
+    { 10626, "queens2_sfs", "ws_gazeglasses" },
+    { 10626, "queens2_sfs", "ws_lesbeans" },
+    { 10626, "queens2_sfs", "ws_newvicapt_blu" },
+    { 10626, "queens2_sfs", "ws_newvicapt_blu2" },
+    { 10626, "queens2_sfs", "ws_newvicapt_blu3" },
+    { 10626, "queens2_sfs", "ws_newvicapt_pnk" },
+    { 10626, "queens2_sfs", "ws_newvicapt_pnk_2" },
+    { 10626, "queens2_sfs", "ws_newvicapt_pnk_3" },
+    { 10626, "queens2_sfs", "ws_plainshop" },
+    { 10631, "queensammo_sfs", "ammu_boots" },
+    { 10631, "queensammo_sfs", "ammu_camo1" },
+    { 10631, "queensammo_sfs", "CJ_SUB_DOORS" },
+    { 10631, "queensammo_sfs", "ws_ammu-posh" },
+    { 11252, "railbridge_sfse", "ws_goldengate5bnoalpha" },
+    { 5394, "railtracklae", "trainground2" },
+    { 17283, "railwaycuntw", "grasstype10_rail" },
+    { 4860, "railway_las", "lasjmroof" },
+    { 4860, "railway_las", "lasunion2" },
+    { 4860, "railway_las", "lasunion5" },
+    { 4860, "railway_las", "lasunion7" },
+    { 4860, "railway_las", "railplatformwall" },
+    { 4860, "railway_las", "sjmscorclawn3" },
+    { 1660, "ramp2", "chemsign2_64" },
+    { 18036, "range_main", "gun_galss1" },
+    { 18036, "range_main", "gun_xtra6" },
+    { 18036, "range_main", "range_mainlightingmap" },
+    { 1636, "rcbomb", "rcbomb" },
+    { 3947, "rczero_track", "grassdeep1blnd" },
+    { 2464, "rc_shop_acc", "CJ_BIPLANE1" },
+    { 2464, "rc_shop_acc", "CJ_RC_1" },
+    { 2464, "rc_shop_acc", "CJ_RC_13" },
+    { 2464, "rc_shop_acc", "CJ_RC_2" },
+    { 2464, "rc_shop_acc", "CJ_RC_3" },
+    { 2464, "rc_shop_acc", "CJ_RC_4" },
+    { 2464, "rc_shop_acc", "CJ_RC_5" },
+    { 2464, "rc_shop_acc", "CJ_RC_6" },
+    { 2464, "rc_shop_acc", "CJ_RC_7" },
+    { 2464, "rc_shop_acc", "CJ_TRAIN_SET" },
+    { 2464, "rc_shop_acc", "CJ_WING" },
+    { 2362, "rc_shop_figure", "CJ_RC_10" },
+    { 2362, "rc_shop_figure", "CJ_RC_11" },
+    { 2362, "rc_shop_figure", "CJ_RC_12" },
+    { 2362, "rc_shop_figure", "CJ_RC_9" },
+    { 2487, "rc_shop_hanger", "CJ_kite" },
+    { 2487, "rc_shop_hanger", "CJ_kite2" },
+    { 2487, "rc_shop_hanger", "CJ_kite3" },
+    { 2487, "rc_shop_hanger", "CJ_kite4" },
+    { 2484, "rc_shop_toy", "CJ_SAIL_1" },
+    { 2484, "rc_shop_toy", "CJ_SAIL_2" },
+    { 2471, "rc_shop_trains", "CJ_RC_14" },
+    { 2471, "rc_shop_trains", "CJ_RC_15" },
+    { 2471, "rc_shop_trains", "CJ_trains" },
+    { 1960, "record1", "record1" },
+    { 1960, "record1", "record2" },
+    { 1960, "record1", "record3" },
+    { 3255, "refinery", "des_refpipes" },
+    { 3255, "refinery", "des_reftower1" },
+    { 8437, "residential01", "residential01_256" },
+    { 8437, "residential01", "residential02_256" },
+    { 8437, "residential01", "residential03_256" },
+    { 8437, "residential01", "residentialsign01_256" },
+    { 8433, "residnce01", "residence01_256" },
+    { 8433, "residnce01", "residence02_256" },
+    { 8433, "residnce01", "residence03_128" },
+    { 8433, "residnce01", "residence04_128" },
+    { 8433, "residnce01", "residence05_256" },
+    { 8433, "residnce01", "residence06_128" },
+    { 13715, "richman02_lahills", "monobloc_256128" },
+    { 13626, "road", "sidetrack" },
+    { 13626, "road", "trackroadside" },
+    { 10294, "road2sfe", "sf_pave3" },
+    { 10294, "road2sfe", "sf_pave4" },
+    { 10294, "road2sfe", "sf_pave5" },
+    { 10820, "roadbridge_sfse", "drain" },
+    { 1346, "roadside", "CJ_PHONEBOX1" },
+    { 1346, "roadside", "CJ_phoneboxmiami" },
+    { 1346, "roadside", "CJ_PHONESEXADD" },
+    { 13713, "roadslahills", "roadnew4blend_256" },
+    { 13323, "roads_cunte", "paveb256" },
+    { 13717, "roads_lahills", "pavebsand256blueblend" },
+    { 13717, "roads_lahills", "snpedtest1blend" },
+    { 6035, "roads_law", "crossing2_law" },
+    { 5703, "roads_lawn", "sidewalk4_LAe" },
+    { 5703, "roads_lawn", "starpaveb_law" },
+    { 5703, "roads_lawn", "starpave_law" },
+    { 5703, "roads_lawn", "starpave_lawblend" },
+    { 13676, "roads_tunnellahills", "tunwill1law2" },
+    { 9743, "rock_coastsfw", "cst_rocksea_sfw" },
+    { 9743, "rock_coastsfw", "cst_rock_undersea_sfw" },
+    { 6332, "rodeo01_law2", "arodeo1sj" },
+    { 6332, "rodeo01_law2", "bevhot01b_law" },
+    { 6332, "rodeo01_law2", "bevhot01_law" },
+    { 6332, "rodeo01_law2", "ceaserpillar01_256" },
+    { 6332, "rodeo01_law2", "clothes01_128" },
+    { 6332, "rodeo01_law2", "glassentrace2" },
+    { 6332, "rodeo01_law2", "prada_256" },
+    { 6332, "rodeo01_law2", "rodeowind3" },
+    { 6332, "rodeo01_law2", "rodesign01_LA" },
+    { 6332, "rodeo01_law2", "rodesign02_LA" },
+    { 6332, "rodeo01_law2", "rodwall01_LAw2" },
+    { 6332, "rodeo01_law2", "rodwall02_LAw2" },
+    { 6332, "rodeo01_law2", "rodwall04_LAw2" },
+    { 6332, "rodeo01_law2", "rodwall05_LAw2" },
+    { 6332, "rodeo01_law2", "rodwall06_LAw2" },
+    { 6332, "rodeo01_law2", "rodwall07_LAw2" },
+    { 6332, "rodeo01_law2", "rodwall08_LAw2" },
+    { 6332, "rodeo01_law2", "rodwall09_LAw2" },
+    { 6332, "rodeo01_law2", "rodwall10_LAw2" },
+    { 6332, "rodeo01_law2", "shopface05b_law" },
+    { 6332, "rodeo01_law2", "shopface05c_law" },
+    { 6351, "rodeo02_law2", "bevhiwin_01" },
+    { 6351, "rodeo02_law2", "dirtwall128" },
+    { 6351, "rodeo02_law2", "helmutwall1_LAw" },
+    { 6351, "rodeo02_law2", "hollywall02_law" },
+    { 6351, "rodeo02_law2", "oranconc01_LA" },
+    { 6351, "rodeo02_law2", "ortilwall_LAw" },
+    { 6351, "rodeo02_law2", "prolsign01_LA" },
+    { 6351, "rodeo02_law2", "rodesign03_LA" },
+    { 6351, "rodeo02_law2", "woodboards1" },
+    { 6341, "rodeo03_law2", "century01_LA" },
+    { 6341, "rodeo03_law2", "sl_hirisergrnconc" },
+    { 6344, "rodeo04_law2", "golf_hedge1" },
+    { 6340, "rodeo05_law2", "airportwind04" },
+    { 6340, "rodeo05_law2", "badmarb2_LAn" },
+    { 6340, "rodeo05_law2", "citywall6" },
+    { 6340, "rodeo05_law2", "gnocchiston_LA" },
+    { 6340, "rodeo05_law2", "rodeowin02" },
+    { 6340, "rodeo05_law2", "siliconvalleywins1" },
+    { 2992, "roulx", "roulette_glow" },
+    { 3074, "runwayx", "kb_bckdrp" },
+    { 14744, "rybath", "AH_rywood" },
+    { 14744, "rybath", "tiletop" },
+    { 3694, "ryderholes", "ryder_mud" },
+    { 3694, "ryderholes", "ryd_holes" },
+    { 14743, "ryhall", "AH_ryskirt" },
+    { 14743, "ryhall", "GB_midbarand" },
+    { 14746, "rylounge", "AH_rykitiles" },
+    { 14745, "rystuff", "mp_apt1_bathfloor" },
+    { 14745, "rystuff", "mp_apt1_bathwall" },
+    { 14745, "rystuff", "mp_apt1_bathwall1" },
+    { 14745, "rystuff", "mp_apt1_sofatest" },
+    { 14745, "rystuff", "mp_CJ_bottle" },
+    { 14745, "rystuff", "mp_CJ_bottle2" },
+    { 14745, "rystuff", "mp_CJ_CHROME2" },
+    { 14745, "rystuff", "mp_CJ_FILLIMENT" },
+    { 14745, "rystuff", "mp_CJ_HI_FI" },
+    { 14740, "rywins", "mp_CJ_WOODDOOR2" },
+    { 3884, "samsite_sfxrf", "sam_camo-navy" },
+    { 3884, "samsite_sfxrf", "sam_camobits-navy" },
+    { 3717, "sanclifbal1_lax", "glasfenc1_LA" },
+    { 3717, "sanclifbal1_lax", "sanmonwin01" },
+    { 3717, "sanclifbal1_lax", "whiteconc01" },
+    { 3717, "sanclifbal1_lax", "yelloconcW_LA" },
+    { 6388, "sancliff02_law2", "oranconcwin_LA" },
+    { 6390, "sancliff_law2", "bluepat_LAw2" },
+    { 6390, "sancliff_law2", "pharmacy1_1256" },
+    { 6390, "sancliff_law2", "windblind_law" },
+    { 1610, "sandcastle", "whitesand_256" },
+    { 3783, "sanpedh22_1x", "snpdhus3" },
+    { 3588, "sanpedhse_1x", "ctdoon1_LAS" },
+    { 3588, "sanpedhse_1x", "lasmulap4" },
+    { 3588, "sanpedhse_1x", "lasmulap5" },
+    { 3588, "sanpedhse_1x", "laspedhus8" },
+    { 3588, "sanpedhse_1x", "laspedhus9" },
+    { 3588, "sanpedhse_1x", "laspedhus91" },
+    { 3588, "sanpedhse_1x", "snpedflatt2" },
+    { 3588, "sanpedhse_1x", "snpedflatt7" },
+    { 6294, "santamonhus", "pierbuild10b_law" },
+    { 6294, "santamonhus", "pierbuild11b_law" },
+    { 6294, "santamonhus", "pierbuild11c_law" },
+    { 6294, "santamonhus", "pierbuild11d_law" },
+    { 6294, "santamonhus", "pierbuild11_law" },
+    { 6294, "santamonhus", "pierhouse4_law" },
+    { 6294, "santamonhus", "pierwall04_law" },
+    { 6286, "santamonhus1", "fivewins_law" },
+    { 6286, "santamonhus1", "lasmulap1" },
+    { 6286, "santamonhus1", "lasmulap2" },
+    { 6286, "santamonhus1", "lasmulap3" },
+    { 6286, "santamonhus1", "pierbuild9_law" },
+    { 6286, "santamonhus1", "pierwin08c_law" },
+    { 6286, "santamonhus1", "pierwin09b_law" },
+    { 6286, "santamonhus1", "pierwin09_law" },
+    { 6286, "santamonhus1", "pierwin9_law" },
+    { 6281, "santamonicalaw2", "asanwall1" },
+    { 6280, "santamonicalaw2a", "asanmonstat1" },
+    { 6280, "santamonicalaw2a", "sandypath_law" },
+    { 6296, "santamopollaw2", "avenpol1" },
+    { 6296, "santamopollaw2", "avenpol2" },
+    { 6296, "santamopollaw2", "avenpol3" },
+    { 6042, "santavenice3", "concretebig3_256128" },
+    { 6042, "santavenice3", "psychic_law" },
+    { 6042, "santavenice3", "venblock01" },
+    { 6042, "santavenice3", "venblock01b" },
+    { 6042, "santavenice3", "venwalkway_law" },
+    { 1595, "satdish", "generatorfront1_256" },
+    { 1595, "satdish", "wallwhitetinge256" },
+    { 15054, "savesfmid", "AH_blackmar" },
+    { 15054, "savesfmid", "AH_flroortile8" },
+    { 15054, "savesfmid", "ah_pnwainscot" },
+    { 15054, "savesfmid", "AH_walltile5" },
+    { 15054, "savesfmid", "AH_wdpanel" },
+    { 15054, "savesfmid", "cspornmag" },
+    { 18365, "sawmillcs_t", "bricklayerdark_hi64HV" },
+    { 18365, "sawmillcs_t", "dirtyframe64HVa" },
+    { 18365, "sawmillcs_t", "electricity_64" },
+    { 18365, "sawmillcs_t", "inwindow3" },
+    { 18365, "sawmillcs_t", "mp_sawmill" },
+    { 18365, "sawmillcs_t", "sprinklersign64" },
+    { 3867, "scaffolding_sfx", "Gen_Scaffold_Wood" },
+    { 10388, "scum2_sfs", "ws_carparkmanky1" },
+    { 10388, "scum2_sfs", "ws_carparkmanky2" },
+    { 10388, "scum2_sfs", "ws_cobrasign_small" },
+    { 10388, "scum2_sfs", "ws_devop_temp" },
+    { 18026, "scummy", "CJ_BINC_WIN" },
+    { 10969, "scum_sfse", "ws_jaunk_billbd" },
+    { 10969, "scum_sfse", "ws_mistys_bar" },
+    { 10226, "sfeship1", "sf_shipcomp" },
+    { 10226, "sfeship1", "sf_shipcomp2" },
+    { 10226, "sfeship1", "sf_ship_door" },
+    { 10226, "sfeship1", "sf_ship_generic1" },
+    { 10226, "sfeship1", "sf_ship_generic11" },
+    { 10226, "sfeship1", "sf_ship_generic12" },
+    { 10226, "sfeship1", "sf_ship_generic14" },
+    { 10226, "sfeship1", "sf_ship_generic15" },
+    { 10226, "sfeship1", "sf_ship_generic16" },
+    { 10226, "sfeship1", "sf_ship_generic18" },
+    { 10226, "sfeship1", "sf_ship_generic19" },
+    { 10226, "sfeship1", "sf_ship_generic20" },
+    { 10226, "sfeship1", "sf_ship_generic21" },
+    { 10226, "sfeship1", "sf_ship_generic22" },
+    { 10226, "sfeship1", "sf_ship_generic23" },
+    { 10226, "sfeship1", "sf_ship_generic24" },
+    { 10226, "sfeship1", "sf_ship_generic25" },
+    { 10226, "sfeship1", "sf_ship_generic27" },
+    { 10226, "sfeship1", "sf_ship_generic28" },
+    { 10226, "sfeship1", "sf_ship_generic3" },
+    { 10226, "sfeship1", "sf_ship_generic4" },
+    { 10226, "sfeship1", "sf_ship_generic5" },
+    { 10226, "sfeship1", "sf_ship_generic8" },
+    { 10226, "sfeship1", "sf_ship_generic9" },
+    { 10226, "sfeship1", "sf_ship_handrail" },
+    { 10226, "sfeship1", "sf_ship_screen1" },
+    { 9906, "sfe_builda", "blindZIP_law" },
+    { 9906, "sfe_builda", "deisel_1sfs" },
+    { 9906, "sfe_builda", "deisel_3sfs" },
+    { 9906, "sfe_builda", "sl_dwntwallvic1" },
+    { 9906, "sfe_builda", "sl_dwntwnvic1" },
+    { 9906, "sfe_builda", "sl_dwntwnvic2" },
+    { 9906, "sfe_builda", "sl_dwntwnvic3" },
+    { 9906, "sfe_builda", "sl_dwntwnvic4" },
+    { 9906, "sfe_builda", "sl_dwntwnvic5" },
+    { 9906, "sfe_builda", "sl_dwntwnvicconc" },
+    { 10029, "sfe_copchop", "helipad_base" },
+    { 9915, "sfe_park1", "samtue_test" },
+    { 9958, "sfe_sub", "sfe_sub_1" },
+    { 9958, "sfe_sub", "sfe_sub_2" },
+    { 9958, "sfe_sub", "sfe_sub_3" },
+    { 10044, "sfe_swank1", "sf_shop1" },
+    { 14760, "sfhosemed2", "AH_blucurtain" },
+    { 14760, "sfhosemed2", "AH_Ironbal" },
+    { 14760, "sfhosemed2", "ah_marcorn1" },
+    { 14760, "sfhosemed2", "ah_pnwainscot3" },
+    { 14760, "sfhosemed2", "ah_pnwainskt" },
+    { 14760, "sfhosemed2", "ah_poshwdflr1" },
+    { 14760, "sfhosemed2", "ah_RFPLSTR" },
+    { 14760, "sfhosemed2", "AH_walltile2" },
+    { 14760, "sfhosemed2", "ah_whtcorn" },
+    { 14760, "sfhosemed2", "ah_wpaper5" },
+    { 14760, "sfhosemed2", "carp19S" },
+    { 14760, "sfhosemed2", "walp40S" },
+    { 14757, "sfhsb2bits", "AH_bigcurtains1" },
+    { 14757, "sfhsb2bits", "AH_bigcurtains2" },
+    { 14754, "sfhsb3", "ah_flrtile1" },
+    { 14754, "sfhsb3", "ah_halltiles" },
+    { 14754, "sfhsb3", "ah_plnks1" },
+    { 14754, "sfhsb3", "ah_pnwainscotbroon" },
+    { 14754, "sfhsb3", "ah_skrtmorebroon" },
+    { 14754, "sfhsb3", "ah_wpaper10" },
+    { 14754, "sfhsb3", "ah_wpaper4" },
+    { 14754, "sfhsb3", "ah_wpaper6" },
+    { 14748, "sfhsm1", "AH_bartilegreen" },
+    { 14748, "sfhsm1", "AH_bigwoodthing" },
+    { 14748, "sfhsm1", "AH_orncorn" },
+    { 14748, "sfhsm1", "ah_pnwainscot5" },
+    { 14748, "sfhsm1", "ah_pnwainscot6" },
+    { 14748, "sfhsm1", "AH_windows1" },
+    { 14748, "sfhsm1", "carpet3kb" },
+    { 14748, "sfhsm1", "diner_wall1" },
+    { 14750, "sfhsm2", "ston09S" },
+    { 14750, "sfhsm2", "wallpnice06" },
+    { 14751, "sfhsm2bits", "AH_redcurtain" },
+    { 14759, "sfhsmedium1", "ah_wpaper1" },
+    { 14759, "sfhsmedium1", "ah_wpaper3" },
+    { 14755, "sfhss2", "ah_pnwainscot12" },
+    { 14755, "sfhss2", "ah_rotwindow" },
+    { 14755, "sfhss2", "ah_utilbor4" },
+    { 14755, "sfhss2", "mcstraps_wall2" },
+    { 14758, "sfmansion1", "AH_cornice" },
+    { 14758, "sfmansion1", "AH_flroortile6" },
+    { 14758, "sfmansion1", "ah_pnwainscot4" },
+    { 14758, "sfmansion1", "ah_stainglass" },
+    { 9220, "sfn_apart02sfn", "concreteslab" },
+    { 9220, "sfn_apart02sfn", "fencewhta256" },
+    { 9220, "sfn_apart02sfn", "newindow10" },
+    { 9220, "sfn_apart02sfn", "newindow12" },
+    { 9220, "sfn_apart02sfn", "newindow6" },
+    { 9227, "sfn_caravansfn", "trail_side1" },
+    { 9227, "sfn_caravansfn", "trail_vent" },
+    { 9227, "sfn_caravansfn", "trail_wall3" },
+    { 9227, "sfn_caravansfn", "trail_wall4" },
+    { 9227, "sfn_caravansfn", "trail_win" },
+    { 9292, "sfn_crashbar", "sfn_crashbar" },
+    { 9241, "sfn_helipad", "genwndw01_128" },
+    { 9241, "sfn_helipad", "office01_law" },
+    { 9361, "sfn_office", "law_gazwhite3" },
+    { 9206, "sfn_sfn", "sfncn_rockgrass3" },
+    { 9206, "sfn_sfn", "sfncn_rockgrass4" },
+    { 9206, "sfn_sfn", "sfn_rockhole" },
+    { 10452, "sfsroadshotel", "ws_biffins" },
+    { 10452, "sfsroadshotel", "ws_biffinsback" },
+    { 9909, "sfvictorian", "gz_sf_door12b" },
+    { 9909, "sfvictorian", "GZ_vic7c" },
+    { 9909, "sfvictorian", "GZ_vic7d" },
+    { 9909, "sfvictorian", "GZ_vic8a" },
+    { 9909, "sfvictorian", "steepsign2_SF" },
+    { 9909, "sfvictorian", "steepsign_SF" },
+    { 9482, "sfw_victemp2", "ws_chinagate" },
+    { 9482, "sfw_victemp2", "ws_conc_block2" },
+    { 3801, "sfxref", "hangplant1_sf" },
+    { 3801, "sfxref", "sfxref_aircon1" },
+    { 3801, "sfxref", "sfxref_aircon2" },
+    { 3801, "sfxref", "sfxref_aircon3" },
+    { 3801, "sfxref", "sfxref_aircon4" },
+    { 3801, "sfxref", "sfxref_alarm1" },
+    { 3801, "sfxref", "sfxref_alarm2" },
+    { 3801, "sfxref", "sfxref_ironthingt1" },
+    { 3801, "sfxref", "sfxref_lite1a" },
+    { 3801, "sfxref", "sfxref_lite1b" },
+    { 3801, "sfxref", "sfxref_lite1d" },
+    { 3801, "sfxref", "sfxref_lite2a" },
+    { 3801, "sfxref", "sfxref_shadb" },
+    { 3801, "sfxref", "windowbox_SF1" },
+    { 3801, "sfxref", "windowbox_SF2" },
+    { 3448, "shamcpark", "concretewall1_256" },
+    { 1608, "shark", "sharky" },
+    { 9818, "ship_brijsfw", "blchr_seat2b" },
+    { 9818, "ship_brijsfw", "fusebox2_128" },
+    { 9818, "ship_brijsfw", "sf_ship_generic10" },
+    { 9818, "ship_brijsfw", "sf_ship_generic13" },
+    { 9818, "ship_brijsfw", "sf_ship_generic2" },
+    { 9818, "ship_brijsfw", "sf_ship_generic29" },
+    { 9818, "ship_brijsfw", "ship_greenscreen1" },
+    { 9818, "ship_brijsfw", "ship_screen1sfw" },
+    { 8432, "shop06_lvs", "vegashops01_256" },
+    { 8432, "shop06_lvs", "vegashops02_128" },
+    { 8432, "shop06_lvs", "vegashops03_128" },
+    { 8507, "shop09", "sidewalkmarket01_128" },
+    { 8507, "shop09", "sidewalkmarket02_128" },
+    { 5040, "shopliquor_las", "labombshop" },
+    { 5040, "shopliquor_las", "las69str4" },
+    { 5040, "shopliquor_las", "lasjmbrsig4" },
+    { 5040, "shopliquor_las", "lasjmliq1" },
+    { 5040, "shopliquor_las", "lasjmliq2" },
+    { 5040, "shopliquor_las", "lasjmliq3" },
+    { 5040, "shopliquor_las", "mural02_LA" },
+    { 2366, "shopping", "cj_ziptop" },
+    { 6095, "shops01_law", "bankoff01_law" },
+    { 6095, "shops01_law", "GB_canopy01b" },
+    { 6095, "shops01_law", "GB_chatwall03b" },
+    { 6095, "shops01_law", "GB_shop01" },
+    { 6095, "shops01_law", "GB_shopdoor01" },
+    { 6095, "shops01_law", "GB_sign02" },
+    { 6095, "shops01_law", "GB_sign04" },
+    { 6095, "shops01_law", "GB_venflat02" },
+    { 6095, "shops01_law", "GB_yellow01" },
+    { 6095, "shops01_law", "greenshade2_64" },
+    { 6095, "shops01_law", "hotwall1_law" },
+    { 6095, "shops01_law", "lasmflat3" },
+    { 6095, "shops01_law", "topsm01drk_law" },
+    { 6095, "shops01_law", "venflat02" },
+    { 6060, "shops2_law", "atmflat" },
+    { 6060, "shops2_law", "biffoffwin_law" },
+    { 6060, "shops2_law", "hotbasetop_law" },
+    { 6060, "shops2_law", "hottop2_law" },
+    { 6060, "shops2_law", "newall8-1blue" },
+    { 6060, "shops2_law", "shoptop08_law" },
+    { 6060, "shops2_law", "venshade03_law" },
+    { 6060, "shops2_law", "ws_alley4_128_plain" },
+    { 10925, "shopszz_sfse", "buymorejeans" },
+    { 10925, "shopszz_sfse", "ws_newshop" },
+    { 10926, "shops_sfse", "ws_oldtowerbottom" },
+    { 10926, "shops_sfse", "ws_oldtowertop" },
+    { 10926, "shops_sfse", "ws_woodenscreen2" },
+    { 1493, "shop_doors", "CJ_SHOPDOOR1" },
+    { 1842, "shop_shelf1", "formica" },
+    { 1842, "shop_shelf1", "shelf3" },
+    { 1842, "shop_shelf1", "shelf5" },
+    { 1842, "shop_shelf1", "shelf6" },
+    { 1842, "shop_shelf1", "shelf7" },
+    { 1842, "shop_shelf1", "shelf8" },
+    { 1842, "shop_shelf1", "shelf9" },
+    { 1229, "signs", "busschedule64" },
+    { 1229, "signs", "bus_stop64" },
+    { 1229, "signs", "NoParking2_128" },
+    { 1229, "signs", "parkmeter_128" },
+    { 1229, "signs", "phonesign_128" },
+    { 1229, "signs", "redparkmeter" },
+    { 1229, "signs", "roadsign01_128" },
+    { 10941, "silicon2_sfse", "siliconvalleywins2" },
+    { 10941, "silicon2_sfse", "siliconvalleywins3" },
+    { 10941, "silicon2_sfse", "siliconvalleywins5" },
+    { 10941, "silicon2_sfse", "ws_badplaster" },
+    { 10941, "silicon2_sfse", "ws_girderhole" },
+    { 10939, "silicon_sfse", "pavementhexagon" },
+    { 10939, "silicon_sfse", "ws_traingravelblend" },
+    { 10061, "simcondo_sfe", "sl_hiriserail1" },
+    { 10061, "simcondo_sfe", "sl_hiriserail2" },
+    { 3576, "sjmla_las", "lasdockbar" },
+    { 3576, "sjmla_las", "SJMLAWEPCRAT1" },
+    { 3576, "sjmla_las", "SJMLAWEPCRAT2" },
+    { 2411, "skate_shop", "CJ_PRO_3" },
+    { 3524, "skullpillar", "pirateskull02_128" },
+    { 3434, "skullsign", "pirates06_64" },
+    { 3434, "skullsign", "pirates08_128" },
+    { 3434, "skullsign", "pirates09_128" },
+    { 3434, "skullsign", "pirateskull01_128" },
+    { 3434, "skullsign", "piratesword_64" },
+    { 3434, "skullsign", "vegasstripsign1_256" },
+    { 3434, "skullsign", "vegasstripsign2_256" },
+    { 3434, "skullsign", "vgsn_scrollsgn" },
+    { 14479, "skuzzy_motelmain", "burglry_wall5" },
+    { 14479, "skuzzy_motelmain", "motel_mirror2" },
+    { 14479, "skuzzy_motelmain", "mp_CJ_Laminate1" },
+    { 4550, "skyscr1_lan2", "ablndwall2_LAE" },
+    { 4550, "skyscr1_lan2", "downtwin24" },
+    { 4550, "skyscr1_lan2", "gm_labuld2_b" },
+    { 4550, "skyscr1_lan2", "gm_labuld3_a" },
+    { 4550, "skyscr1_lan2", "gm_labuld3_b" },
+    { 4550, "skyscr1_lan2", "sl_librarycolmn1" },
+    { 4550, "skyscr1_lan2", "sl_librarycolmn2" },
+    { 4550, "skyscr1_lan2", "sl_librarydoor1" },
+    { 4550, "skyscr1_lan2", "sl_librarygdoor1" },
+    { 4550, "skyscr1_lan2", "sl_librarywall1" },
+    { 4550, "skyscr1_lan2", "sl_librarywin1" },
+    { 4550, "skyscr1_lan2", "sl_librarywin2" },
+    { 4550, "skyscr1_lan2", "sl_librarywin3" },
+    { 4550, "skyscr1_lan2", "sl_skyscprbtm1" },
+    { 4550, "skyscr1_lan2", "sl_skyscprwall1" },
+    { 4550, "skyscr1_lan2", "sl_skyscrpr02" },
+    { 4550, "skyscr1_lan2", "sl_skyscrpr02wall1" },
+    { 4550, "skyscr1_lan2", "sl_skyscrpr03" },
+    { 4568, "skyscrap2_lan2", "sl_marblewall2" },
+    { 4586, "skyscrap3_lan2", "sl_dthotelwin1" },
+    { 4586, "skyscrap3_lan2", "sl_skyscrpr05" },
+    { 4586, "skyscrap3_lan2", "sl_skyscrpr05b" },
+    { 4586, "skyscrap3_lan2", "sl_skyscrpr05wall1" },
+    { 5740, "skyscrapelawn", "glasswindow3_256" },
+    { 10948, "skyscrapper_sfs", "ws_skywins4" },
+    { 10938, "skyscrap_sfse", "ws_rollerdoor_alu_noentry" },
+    { 10938, "skyscrap_sfse", "ws_skyscraperwin1" },
+    { 10053, "slapart01sfe", "sl_brwnaprtwall1" },
+    { 10053, "slapart01sfe", "sl_brwnaprtwin1" },
+    { 10053, "slapart01sfe", "sl_brwnaprtwin2" },
+    { 10053, "slapart01sfe", "sl_brwnaprtwin3" },
+    { 10053, "slapart01sfe", "sl_grngarage1" },
+    { 10053, "slapart01sfe", "sl_hirise2win1" },
+    { 10053, "slapart01sfe", "sl_hirise2_conc" },
+    { 10053, "slapart01sfe", "sl_hirisegrn1" },
+    { 10053, "slapart01sfe", "sl_hirisepnk1" },
+    { 10053, "slapart01sfe", "sl_hiriseredconc" },
+    { 10053, "slapart01sfe", "sl_hirisewhite1" },
+    { 9908, "smallertxd", "bigpark_sfe" },
+    { 9908, "smallertxd", "hotel_bit1" },
+    { 9908, "smallertxd", "hotel_win1" },
+    { 9908, "smallertxd", "pizzabot_64" },
+    { 9908, "smallertxd", "sfe_bigbuild4" },
+    { 9908, "smallertxd", "sf_backaley4" },
+    { 9908, "smallertxd", "sf_downtown_1097b" },
+    { 9908, "smallertxd", "sf_shop3" },
+    { 9908, "smallertxd", "sf_windos_15c" },
+    { 9908, "smallertxd", "wash_grnd_mess1_128" },
+    { 14756, "smallsfhs", "AH_flroortiledirt1" },
+    { 14756, "smallsfhs", "ah_whitiles" },
+    { 3587, "snpedhusxref", "lasjmscum2a" },
+    { 3587, "snpedhusxref", "lasjmslumgrnd" },
+    { 3587, "snpedhusxref", "sanpednhusd1" },
+    { 3587, "snpedhusxref", "sanpednhusd4" },
+    { 3587, "snpedhusxref", "sjmlababit" },
+    { 3587, "snpedhusxref", "sjmlawood" },
+    { 3587, "snpedhusxref", "sjmlawood2" },
+    { 3587, "snpedhusxref", "vgsclubwall08_128" },
+    { 8396, "sphinx01", "luxorceiling01_128" },
+    { 8396, "sphinx01", "luxorceiling02_128" },
+    { 8396, "sphinx01", "luxorledge02_128" },
+    { 8396, "sphinx01", "luxormural01_256" },
+    { 8396, "sphinx01", "sphinxbody01_128" },
+    { 8396, "sphinx01", "sphinxface01_256" },
+    { 2689, "sport_cloth", "BB_TOPS" },
+    { 2689, "sport_cloth", "oran12" },
+    { 2689, "sport_cloth", "rockstarhood" },
+    { 12847, "sprunkworks", "bigsprunkcan" },
+    { 12847, "sprunkworks", "bigsprunkends" },
+    { 12847, "sprunkworks", "coe_factry1" },
+    { 11095, "stadbridge_sfs", "ws_footbridge" },
+    { 17511, "stadium_lae2", "compmallsign1" },
+    { 17511, "stadium_lae2", "formumsgn_lae2" },
+    { 17511, "stadium_lae2", "forum1" },
+    { 17511, "stadium_lae2", "grassdeep2" },
+    { 17511, "stadium_lae2", "hotring1" },
+    { 17511, "stadium_lae2", "hotring2" },
+    { 17511, "stadium_lae2", "kickbarrier" },
+    { 17511, "stadium_lae2", "stadtbludoors_lae2" },
+    { 17511, "stadium_lae2", "stadtcorrugate_lae2" },
+    { 17511, "stadium_lae2", "stadtdoors_lae2" },
+    { 17511, "stadium_lae2", "stadtpaytwin_lae2" },
+    { 17511, "stadium_lae2", "stadt_banner1" },
+    { 17511, "stadium_lae2", "stadt_banner2" },
+    { 17511, "stadium_lae2", "stadt_banner3" },
+    { 17511, "stadium_lae2", "ticketsnprice_lae2" },
+    { 10954, "stadium_sfse", "ws_stadiumgates" },
+    { 13603, "stad_tag", "Was_swr_wall_blue" },
+    { 4101, "stapl", "sl_Laexpomtl1" },
+    { 4101, "stapl", "sl_laexpowall1" },
+    { 4101, "stapl", "sl_laexpowin1" },
+    { 4101, "stapl", "sl_Laexpowin2" },
+    { 4101, "stapl", "sl_stapldoor2" },
+    { 14818, "starps_ext", "kb_pathgras" },
+    { 3900, "station", "ledge2_64H" },
+    { 3900, "station", "ledgetop2_64HV" },
+    { 3900, "station", "newall2_16c128" },
+    { 3900, "station", "rustd64" },
+    { 3900, "station", "stairstep01_64" },
+    { 11352, "stationsfse_1", "sfsestationsigns" },
+    { 5772, "stationtunnel", "market_LAwN" },
+    { 10932, "station_sfse", "neon" },
+    { 4573, "stolenbuild01", "sl_dtbuild1door1" },
+    { 4573, "stolenbuild01", "sl_dtbuild1wall1" },
+    { 4573, "stolenbuild01", "sl_dtbuild1win1" },
+    { 4573, "stolenbuild01", "sl_dtbuild1win2" },
+    { 4573, "stolenbuild01", "sl_dtbuild1win3" },
+    { 4573, "stolenbuild01", "sl_dtwn2edge1" },
+    { 4573, "stolenbuild01", "sl_dtwn2wall1" },
+    { 4573, "stolenbuild01", "sl_dtwn2win1" },
+    { 4572, "stolenbuild02", "sl_skyscrpr04" },
+    { 4572, "stolenbuild02", "sl_zippendant1" },
+    { 4570, "stolenbuild03", "girdygird" },
+    { 4570, "stolenbuild03", "sl_concretewin1" },
+    { 4570, "stolenbuild03", "sl_dtbuild2edge1" },
+    { 4570, "stolenbuild03", "sl_dtbuild2wall1" },
+    { 4570, "stolenbuild03", "sl_dtbuild2win1" },
+    { 4570, "stolenbuild03", "sl_dtbuild2win2" },
+    { 4570, "stolenbuild03", "sl_dtbuild2win3" },
+    { 5404, "stormdra1_lae", "lasrmd2_sjm" },
+    { 5404, "stormdra1_lae", "lasrmd3_sjm" },
+    { 5404, "stormdra1_lae", "lasrmd4_sjm" },
+    { 5105, "stormdrain_las2", "abeybrid" },
+    { 14819, "straps_int", "speakerkb1" },
+    { 1294, "streetlights", "Lamphead" },
+    { 6977, "stripshop1", "vgnstripwall1_256" },
+    { 5735, "studio01_lawn", "studoff01_law" },
+    { 5735, "studio01_lawn", "studoff02_law" },
+    { 5735, "studio01_lawn", "studoff03_law" },
+    { 5735, "studio01_lawn", "studoff04_law" },
+    { 9239, "stuff2_sfn", "cm_SFN_warehousewall" },
+    { 9239, "stuff2_sfn", "sl_preswin02" },
+    { 9239, "stuff2_sfn", "sl_preswindbl02" },
+    { 10824, "subpen1_sfse", "ws_sub_pen_conc" },
+    { 10375, "subshops_sfs", "ws_archangels_dirty" },
+    { 10375, "subshops_sfs", "ws_fancyshop1d" },
+    { 10375, "subshops_sfs", "ws_fancywindaes2" },
+    { 10375, "subshops_sfs", "ws_rollerdoor_silver2" },
+    { 13608, "sumoback", "dirtmix_128" },
+    { 6349, "sunbill_law2", "SunBillB01" },
+    { 6349, "sunbill_law2", "SunBillB02" },
+    { 5722, "sunrise01_lawn", "hair01_law" },
+    { 5722, "sunrise01_lawn", "holshop_law" },
+    { 5722, "sunrise01_lawn", "tileshoptop1_law" },
+    { 5722, "sunrise01_lawn", "venshade02_law" },
+    { 5716, "sunrise02_lawn", "mann01_law" },
+    { 5716, "sunrise02_lawn", "mann02_law" },
+    { 5716, "sunrise02_lawn", "mann03_law" },
+    { 5716, "sunrise02_lawn", "Mannblok1_LAn" },
+    { 5716, "sunrise02_lawn", "manndoorb_law" },
+    { 5716, "sunrise02_lawn", "manndoorc_law" },
+    { 5716, "sunrise02_lawn", "manndoor_law" },
+    { 5716, "sunrise02_lawn", "manns01_LAwN" },
+    { 5716, "sunrise02_lawn", "mannwallb_law" },
+    { 5716, "sunrise02_lawn", "mannwallc_law" },
+    { 5716, "sunrise02_lawn", "mannwall_law" },
+    { 5727, "sunrise04_lawn", "decodet1_LAwn" },
+    { 5727, "sunrise04_lawn", "decodet2_LAwn" },
+    { 5727, "sunrise04_lawn", "fredwall1_LAwN" },
+    { 5727, "sunrise04_lawn", "fredwall2_LAwN" },
+    { 5727, "sunrise04_lawn", "fredwall3_LAwN" },
+    { 5727, "sunrise04_lawn", "holbuild10b_law" },
+    { 5727, "sunrise04_lawn", "holbuild10_law" },
+    { 5727, "sunrise04_lawn", "lasjmflood1" },
+    { 5727, "sunrise04_lawn", "mosaic2_LAwn" },
+    { 5727, "sunrise04_lawn", "windowbot01_law" },
+    { 5768, "sunrise05_lawn", "hollysign01_LAw" },
+    { 5768, "sunrise05_lawn", "hollywin01_LAw" },
+    { 5768, "sunrise05_lawn", "hollywin04_LAw" },
+    { 5725, "sunrise08_lawn", "cornice02_la" },
+    { 5725, "sunrise08_lawn", "holbuild06b_law" },
+    { 5725, "sunrise08_lawn", "holbuild06dr_law" },
+    { 5725, "sunrise08_lawn", "holbuild06_law" },
+    { 5725, "sunrise08_lawn", "hwbig01b_law" },
+    { 5725, "sunrise08_lawn", "hwbig01c_law" },
+    { 5725, "sunrise08_lawn", "hwbig01_law" },
+    { 5725, "sunrise08_lawn", "motpic_law" },
+    { 5725, "sunrise08_lawn", "pillarstone_law" },
+    { 5725, "sunrise08_lawn", "tikboxwall_law" },
+    { 5725, "sunrise08_lawn", "tikboxwin_law" },
+    { 5725, "sunrise08_lawn", "topgrill01_law" },
+    { 5725, "sunrise08_lawn", "weeregal" },
+    { 5769, "sunrise09_lawn", "hollydoor01_law" },
+    { 5769, "sunrise09_lawn", "hollysign03_LAw" },
+    { 5769, "sunrise09_lawn", "hollysign04_LAw" },
+    { 5769, "sunrise09_lawn", "hollywall01_law" },
+    { 5769, "sunrise09_lawn", "hollywin05_LAw" },
+    { 5769, "sunrise09_lawn", "vinedet1_LAwN" },
+    { 5769, "sunrise09_lawn", "vinesign2_LAw" },
+    { 5769, "sunrise09_lawn", "vinewall01_law" },
+    { 5719, "sunrise10_lawn", "compcouwall2" },
+    { 5719, "sunrise10_lawn", "eldritch_law" },
+    { 5719, "sunrise10_lawn", "eld_box2_law" },
+    { 5719, "sunrise10_lawn", "eld_box3_law" },
+    { 5719, "sunrise10_lawn", "eld_box_law" },
+    { 5719, "sunrise10_lawn", "holbuild01c_law" },
+    { 5719, "sunrise10_lawn", "holbuild01_law" },
+    { 5719, "sunrise10_lawn", "holbuild02b_law" },
+    { 5719, "sunrise10_lawn", "holbuild02c_law" },
+    { 5719, "sunrise10_lawn", "holbuild02d_law" },
+    { 5719, "sunrise10_lawn", "holbuild02_law" },
+    { 5719, "sunrise10_lawn", "holbuild03b_law" },
+    { 5719, "sunrise10_lawn", "holbuild03c_law" },
+    { 5719, "sunrise10_lawn", "holbuild03d_law" },
+    { 5719, "sunrise10_lawn", "holbuild03_law" },
+    { 5719, "sunrise10_lawn", "holbuild04_law" },
+    { 5719, "sunrise10_lawn", "pillarbase_law" },
+    { 5719, "sunrise10_lawn", "pillartop_law" },
+    { 5719, "sunrise10_lawn", "pillar_law" },
+    { 5719, "sunrise10_lawn", "starland01_law" },
+    { 5719, "sunrise10_lawn", "startours01_law" },
+    { 5717, "sunrise11_lawn", "ShopWall1_LAn" },
+    { 5717, "sunrise11_lawn", "ShopWall2_LAn" },
+    { 5717, "sunrise11_lawn", "ShopWindo1_LAn" },
+    { 6338, "sunset01_law2", "downtwin18" },
+    { 6338, "sunset01_law2", "melrorg_law" },
+    { 6338, "sunset01_law2", "sffront24_256" },
+    { 5775, "sunset01_lawn", "comptwindo5" },
+    { 5775, "sunset01_lawn", "standardet1_LA" },
+    { 5775, "sunset01_lawn", "stanwin01_LAwN" },
+    { 5775, "sunset01_lawn", "stanwin02_LAwN" },
+    { 6336, "sunset02_law2", "bank01_LAw" },
+    { 6336, "sunset02_law2", "rodeowin01" },
+    { 6336, "sunset02_law2", "SunBillB07" },
+    { 6336, "sunset02_law2", "SunBillB08" },
+    { 6354, "sunset03_law2", "billLA01" },
+    { 6354, "sunset03_law2", "billLA02" },
+    { 6354, "sunset03_law2", "coinlaundry2_256" },
+    { 6354, "sunset03_law2", "streetsign1_256" },
+    { 6354, "sunset03_law2", "SunBillB04" },
+    { 6354, "sunset03_law2", "SunBillB06" },
+    { 6328, "sunset04_law2", "pawnsigns01_128" },
+    { 4551, "sunset1_lan2", "Bow_road_nomark_b" },
+    { 4551, "sunset1_lan2", "emptyshop" },
+    { 4551, "sunset1_lan2", "snpedpurtrm" },
+    { 5870, "sunst18_lawn", "argwin1_LA" },
+    { 5870, "sunst18_lawn", "greenwall3" },
+    { 5870, "sunst18_lawn", "laspowrec3" },
+    { 5870, "sunst18_lawn", "laspowrec6" },
+    { 6357, "sunstrans_law2", "dogbill01" },
+    { 6357, "sunstrans_law2", "SunBillB05" },
+    { 6357, "sunstrans_law2", "SunBillB10" },
+    { 5998, "sunstr_lawn", "eldneoLAwN" },
+    { 5998, "sunstr_lawn", "ganggraf02_LA" },
+    { 5998, "sunstr_lawn", "manns02_LAwN" },
+    { 5998, "sunstr_lawn", "neon01_LAwN" },
+    { 5998, "sunstr_lawn", "neon02_LAwN" },
+    { 5998, "sunstr_lawn", "neon04_LAwN" },
+    { 5998, "sunstr_lawn", "neon05_LAwN" },
+    { 5998, "sunstr_lawn", "sunneon01" },
+    { 5998, "sunstr_lawn", "sunneon02" },
+    { 2404, "surf_boards", "CJ_SURFBOARDS" },
+    { 15046, "svcunthoose", "ab_flakeywall" },
+    { 15046, "svcunthoose", "AH_carpet5kb" },
+    { 15046, "svcunthoose", "csGarageTrolley01psd" },
+    { 15046, "svcunthoose", "csheistbox01" },
+    { 15046, "svcunthoose", "GB_fireplace02" },
+    { 15046, "svcunthoose", "GB_plug01" },
+    { 15046, "svcunthoose", "GB_toilet01" },
+    { 15046, "svcunthoose", "mplid02" },
+    { 15055, "svlamid", "ah_blindfana" },
+    { 15055, "svlamid", "AH_flroortile3" },
+    { 15042, "svsfsm", "AH_filthrug1" },
+    { 15042, "svsfsm", "chin_carp2" },
+    { 15042, "svsfsm", "GB_rapposter01" },
+    { 15042, "svsfsm", "GB_rapposter03" },
+    { 15042, "svsfsm", "strip_carpet" },
+    { 15058, "svvgmid", "AH_flroortile11" },
+    { 15058, "svvgmid", "AH_walltile4" },
+    { 14493, "sweetsbits", "ab_cusion1" },
+    { 14493, "sweetsbits", "ab_cusion2" },
+    { 14528, "sweetshads", "andydark3" },
+    { 14495, "sweetshall", "ab_rollerblind" },
+    { 14495, "sweetshall", "ab_wall4" },
+    { 14495, "sweetshall", "AH_dirtywalls8bit2" },
+    { 14495, "sweetshall", "ah_wpaper13" },
+    { 14495, "sweetshall", "GB_nastybar25" },
+    { 14495, "sweetshall", "mcstraps_ceiling" },
+    { 14495, "sweetshall", "mcstraps_door1" },
+    { 14495, "sweetshall", "mp_cooker1" },
+    { 14527, "sweetslites", "mp_diner_fan" },
+    { 14526, "sweetsmain", "ab_kitchunit2" },
+    { 14526, "sweetsmain", "ab_tilekitch" },
+    { 14526, "sweetsmain", "ah_whitpanelceil" },
+    { 14526, "sweetsmain", "ah_wpaper12" },
+    { 14526, "sweetsmain", "gb_binbag01" },
+    { 14526, "sweetsmain", "GB_Pan01" },
+    { 14526, "sweetsmain", "Metal3_64_hole" },
+    { 14526, "sweetsmain", "mp_CJ_BIG_TELLY1" },
+    { 14526, "sweetsmain", "mp_cooker2" },
+    { 14526, "sweetsmain", "mp_cooker3" },
+    { 14526, "sweetsmain", "wall2" },
+    { 14526, "sweetsmain", "wall5" },
+    { 14481, "sweets_bit2", "ab_curtain_shwr" },
+    { 12962, "sw_apartflat", "sw_genstore2" },
+    { 12962, "sw_apartflat", "sw_hardware" },
+    { 12962, "sw_apartflat", "sw_realtywin" },
+    { 12962, "sw_apartflat", "wal0256hi" },
+    { 13012, "sw_apartflat5", "des_donutwall" },
+    { 13012, "sw_apartflat5", "sjmfad1" },
+    { 13012, "sw_apartflat5", "sw_lastdrop" },
+    { 12938, "sw_apartments", "sjmrufhus3" },
+    { 12938, "sw_apartments", "sw_policeline" },
+    { 13007, "sw_bankint", "bank_wall1" },
+    { 13007, "sw_bankint", "bank_wall4" },
+    { 13007, "sw_bankint", "closed_temp" },
+    { 13007, "sw_bankint", "comdore_pet256" },
+    { 13007, "sw_bankint", "kbcornice_1_128" },
+    { 13007, "sw_bankint", "spad_tile5_256" },
+    { 13007, "sw_bankint", "type_128" },
+    { 13007, "sw_bankint", "woodfloor1" },
+    { 13008, "sw_block01", "sw_cafedoor1" },
+    { 13008, "sw_block01", "ws_smoked" },
+    { 12862, "sw_block03", "sw_barb" },
+    { 12862, "sw_block03", "sw_bigmike" },
+    { 12862, "sw_block03", "sw_cashstore" },
+    { 12862, "sw_block03", "sw_door03" },
+    { 12862, "sw_block03", "sw_door04" },
+    { 12862, "sw_block03", "sw_door05" },
+    { 12862, "sw_block03", "sw_garagedoor" },
+    { 12862, "sw_block03", "sw_lintl01" },
+    { 12862, "sw_block03", "sw_roofbit1" },
+    { 12862, "sw_block03", "sw_watson" },
+    { 12862, "sw_block03", "sw_wind02" },
+    { 12862, "sw_block03", "sw_wind04" },
+    { 12862, "sw_block03", "sw_woodwall1" },
+    { 12862, "sw_block03", "sw_woodwall2" },
+    { 13014, "sw_block04", "GB_nastybar21" },
+    { 13014, "sw_block04", "sw_wallbrick_03" },
+    { 13014, "sw_block04", "sw_wind06" },
+    { 12923, "sw_block05", "sw_door08" },
+    { 12923, "sw_block05", "sw_walltopx3" },
+    { 12923, "sw_block05", "sw_woodslats1" },
+    { 12924, "sw_block06", "sw_wallbrick_07" },
+    { 12964, "sw_block09", "GB_truckdepot18" },
+    { 12964, "sw_block09", "sjmbwall1" },
+    { 12964, "sw_block09", "sw_genstore" },
+    { 12980, "sw_block10", "sw_wind20" },
+    { 12980, "sw_block10", "sw_woodslats2" },
+    { 12984, "sw_block11", "shoptopb128" },
+    { 13011, "sw_block12", "gwfrontpan_law" },
+    { 12979, "sw_block9", "sw_bikeshed" },
+    { 12979, "sw_block9", "sw_wind14" },
+    { 12931, "sw_brewery", "sw_brewbrickwin01" },
+    { 12931, "sw_brewery", "sw_brewbrickwin02" },
+    { 12960, "sw_church", "sw_confess" },
+    { 12960, "sw_church", "sw_confessthru" },
+    { 12960, "sw_church", "sw_trellis" },
+    { 12960, "sw_church", "sw_winshutr" },
+    { 12976, "sw_diner1", "huspnk256hi" },
+    { 12976, "sw_diner1", "SW_dinersigns" },
+    { 12976, "sw_diner1", "sw_oldpump" },
+    { 12976, "sw_diner1", "sw_pump" },
+    { 12976, "sw_diner1", "sw_roof01" },
+    { 12988, "sw_fact02", "sw_bioeng" },
+    { 13065, "sw_fact02alt", "spandLoadingDoor" },
+    { 13065, "sw_fact02alt", "ws_oldwall1" },
+    { 12911, "sw_farm1", "sw_farmsign01" },
+    { 12863, "sw_genstore1", "sw_awning2" },
+    { 12959, "sw_library", "airportwind01" },
+    { 12959, "sw_library", "sw_library" },
+    { 12959, "sw_library", "sw_libwin" },
+    { 12983, "sw_med1", "sw_med01" },
+    { 12937, "sw_oldshack", "hilltest2_LAS" },
+    { 12937, "sw_oldshack", "sw_cabshut01" },
+    { 12937, "sw_oldshack", "sw_hubcaps" },
+    { 12937, "sw_oldshack", "sw_pelts01" },
+    { 12910, "sw_railbridge1", "sw_rock1b" },
+    { 13296, "sw_roadgas", "bballboard3_256" },
+    { 12925, "sw_sheds", "sw_barnframe" },
+    { 12986, "sw_well1", "Bio_64" },
+    { 1490, "tags2_lalae", "frontyard" },
+    { 1490, "tags2_lalae", "grove" },
+    { 1531, "tags_laazteca", "aztecas" },
+    { 1525, "tags_lakilo", "kilotray" },
+    { 1526, "tags_larifa", "rifa" },
+    { 1527, "tags_larollin", "rollin" },
+    { 1528, "tags_laseville", "seville" },
+    { 1529, "tags_latemple", "temple" },
+    { 1530, "tags_lavagos", "vagos" },
+    { 3018, "targetmx", "target4" },
+    { 1583, "targets", "5parttarget" },
+    { 1583, "targets", "target1" },
+    { 1583, "targets", "target2" },
+    { 1583, "targets", "target3" },
+    { 1583, "targets", "targetframe1" },
+    { 1583, "targets", "targetframe2" },
+    { 3762, "tcecen4law", "lasjmwinny" },
+    { 3762, "tcecen4law", "mulhuose01c_law" },
+    { 5764, "telewirelawn", "donutLAwN" },
+    { 17517, "templae2land", "bincoslae2_128" },
+    { 17517, "templae2land", "bincowin" },
+    { 17517, "templae2land", "LAglaswall2" },
+    { 5408, "tempstuff_lae", "examball1_LAe" },
+    { 5408, "tempstuff_lae", "examintp2_LAS" },
+    { 5408, "tempstuff_lae", "examintp_LAS" },
+    { 5408, "tempstuff_lae", "examroof1_LAe" },
+    { 5408, "tempstuff_lae", "examwall1_LAe" },
+    { 5408, "tempstuff_lae", "sl_metalbndrust1" },
+    { 1885, "temp_shop", "basket_1" },
+    { 1975, "texttest", "kb_blue" },
+    { 1975, "texttest", "kb_red" },
+    { 4600, "theatrelan2", "flmngo03_128" },
+    { 4600, "theatrelan2", "gm_labuld2_c" },
+    { 4600, "theatrelan2", "sl_pendant1" },
+    { 4600, "theatrelan2", "sl_whitewash1" },
+    { 4600, "theatrelan2", "wolf1 copy" },
+    { 962, "ticket_sub", "CJ_TICKM" },
+    { 8532, "tikigrass", "vgsndivebrd" },
+    { 8534, "tikimotel", "sa_wood01_128" },
+    { 8534, "tikimotel", "sa_wood03_128" },
+    { 8534, "tikimotel", "sa_wood04_128" },
+    { 8534, "tikimotel", "sa_wood05_128" },
+    { 8534, "tikimotel", "tikidoor01_128" },
+    { 8534, "tikimotel", "tikitriangle_128" },
+    { 8536, "tikisign", "tikireed01_128" },
+    { 8536, "tikisign", "tikisign01_128" },
+    { 8536, "tikisign", "tikisign02_128" },
+    { 9623, "toll_sfw", "toll_SFw1" },
+    { 9623, "toll_sfw", "toll_SFw3" },
+    { 977, "towerdoor", "Front_Door" },
+    { 14570, "traidaqua", "ab_aqua_anenome" },
+    { 14570, "traidaqua", "ab_aqua_bubbles" },
+    { 14570, "traidaqua", "ab_aqua_coral" },
+    { 14570, "traidaqua", "ab_aqua_kelp" },
+    { 14570, "traidaqua", "ab_aqua_sand" },
+    { 14570, "traidaqua", "ab_aqua_starfish" },
+    { 14570, "traidaqua", "ab_aqua_tubeweed" },
+    { 14570, "traidaqua", "ab_aqua_urchin" },
+    { 14570, "traidaqua", "ab_tv" },
+    { 14570, "traidaqua", "sa_wood06_128" },
+    { 14569, "traidman", "ab_aquarium" },
+    { 14569, "traidman", "chinese3" },
+    { 14569, "traidman", "chinese8" },
+    { 14569, "traidman", "darkgrey_carpet_256" },
+    { 14569, "traidman", "luxebrown_law" },
+    { 14569, "traidman", "pagodaroof4" },
+    { 14569, "traidman", "walpaper_dragn" },
+    { 14385, "trailerkb", "tr_floor1" },
+    { 14385, "trailerkb", "tr_floor2" },
+    { 14385, "trailerkb", "tr_kit_1a" },
+    { 14385, "trailerkb", "tr_kit_2ba" },
+    { 14385, "trailerkb", "tr_kit_3a" },
+    { 14385, "trailerkb", "tr_kit_4b" },
+    { 14385, "trailerkb", "tr_wall2" },
+    { 14385, "trailerkb", "tr_wall3" },
+    { 14385, "trailerkb", "tr_wood1" },
+    { 3167, "trailers", "sm_airstreamside" },
+    { 3167, "trailers", "sm_airstreamside2" },
+    { 1373, "traincross", "railxing" },
+    { 1373, "traincross", "rednwhite" },
+    { 1373, "traincross", "trainwarninglight" },
+    { 10931, "traingen_sfse", "metpatshadow32" },
+    { 4817, "traintrack_las", "sjmlascumpth" },
+    { 10752, "traintunnel1_sfse", "wallwashvc128" },
+    { 9680, "tramstatsfw", "sf_tramcross" },
+    { 9680, "tramstatsfw", "tramdoors_sfw" },
+    { 9680, "tramstatsfw", "tramstation1_sfw" },
+    { 9680, "tramstatsfw", "tramstation2_sfw" },
+    { 9680, "tramstatsfw", "tramstation3_sfw" },
+    { 1375, "tramstop", "tramstop_sf" },
+    { 767, "tree1", "bzelka1" },
+    { 767, "tree1", "elmtreered" },
+    { 767, "tree1", "Elm_treegrn" },
+    { 767, "tree1", "Elm_treegrn2" },
+    { 767, "tree1", "Elm_treegrn4" },
+    { 764, "tree2", "bgleda0" },
+    { 764, "tree2", "bpiced1" },
+    { 764, "tree2", "cedarbare" },
+    { 764, "tree2", "cedarwee" },
+    { 764, "tree2", "elmdead" },
+    { 764, "tree2", "Locustbra" },
+    { 764, "tree2", "sprucbr" },
+    { 764, "tree2", "weeelm" },
+    { 763, "tree3", "ashbrnch" },
+    { 763, "tree3", "bcorya0" },
+    { 763, "tree3", "bfraxa1" },
+    { 763, "tree3", "bpinud2" },
+    { 763, "tree3", "hazelbranch" },
+    { 763, "tree3", "hazelbrnch" },
+    { 763, "tree3", "pinebrnch1" },
+    { 3910, "treeshad", "railshadowdif" },
+    { 8663, "triadcasino", "FourDragons01_256" },
+    { 8663, "triadcasino", "imperial01_64" },
+    { 8663, "triadcasino", "imperial02_64" },
+    { 8663, "triadcasino", "imperial03_128" },
+    { 8663, "triadcasino", "imperial04_128" },
+    { 14562, "triadinteriorn", "vgnchinlion1_512" },
+    { 3531, "triadprops_lvs", "casinowall1" },
+    { 3531, "triadprops_lvs", "chinese1" },
+    { 3531, "triadprops_lvs", "GB_restaursmll58" },
+    { 14560, "triad_bar", "pagoda3" },
+    { 14560, "triad_bar", "pagodaroof2" },
+    { 14560, "triad_bar", "pagodaroof3" },
+    { 14560, "triad_bar", "triad_decor1" },
+    { 14565, "triad_bar2", "shaker128" },
+    { 14608, "triad_big", "buddha_gold" },
+    { 14608, "triad_big", "silver_coins2" },
+    { 14564, "triad_ext", "ab_spotlite" },
+    { 14563, "triad_main", "chinese5" },
+    { 14563, "triad_main", "chin_carp3" },
+    { 14563, "triad_main", "sign_maintenance" },
+    { 14561, "triad_neon", "ab_neon_wof" },
+    { 14561, "triad_neon", "kbneon" },
+    { 14561, "triad_neon", "lightalp1a" },
+    { 14561, "triad_neon", "sign_Restaurant" },
+    { 14561, "triad_neon", "sign_wheelofrtne2" },
+    { 14605, "tricas_neon", "sign_hotel&casino" },
+    { 14605, "tricas_neon", "sign_neondollar&star" },
+    { 14605, "tricas_neon", "SIGN_playAgain" },
+    { 14605, "tricas_neon", "sign_the4dragons" },
+    { 8577, "trnstnground", "concretenew256128" },
+    { 2994, "trolex", "trolley01" },
+    { 2994, "trolex", "trolley03" },
+    { 17072, "truckedepotlawn", "GB_truckdepot01" },
+    { 17072, "truckedepotlawn", "GB_truckdepot02" },
+    { 17072, "truckedepotlawn", "GB_truckdepot03" },
+    { 17072, "truckedepotlawn", "GB_truckdepot04" },
+    { 17072, "truckedepotlawn", "GB_truckdepot05" },
+    { 17072, "truckedepotlawn", "GB_truckdepot07" },
+    { 17072, "truckedepotlawn", "GB_truckdepot08" },
+    { 972, "tunnel", "corugwall1128" },
+    { 972, "tunnel", "panlantic_128" },
+    { 972, "tunnel", "tunnel_128" },
+    { 1609, "turtle", "turtlebit" },
+    { 1609, "turtle", "turtlehead" },
+    { 1609, "turtle", "turtletop" },
+    { 6490, "tvstudio_law2", "tvstud01_LAw2" },
+    { 6490, "tvstudio_law2", "tvstud02_LAw2" },
+    { 6490, "tvstudio_law2", "tvstud03_LAw2" },
+    { 10357, "tvtower_sfs", "ws_transmit_red" },
+    { 10357, "tvtower_sfs", "ws_transmit_wht" },
+    { 16150, "ufo_bar", "des_fanshadow" },
+    { 16150, "ufo_bar", "des_intufowin" },
+    { 16150, "ufo_bar", "ufo_pics1" },
+    { 896, "underwater", "coral" },
+    { 896, "underwater", "greyrockbig" },
+    { 896, "underwater", "rocktr128" },
+    { 896, "underwater", "starfish64" },
+    { 4821, "union_las", "lasunion1" },
+    { 4821, "union_las", "lasunion96" },
+    { 4821, "union_las", "lasunion98" },
+    { 4821, "union_las", "lasunion995" },
+    { 7979, "vegasairprtland", "blackshadow3" },
+    { 7979, "vegasairprtland", "hangerlight01_64" },
+    { 430, "vegasbooth", "vendor01_lvs_128" },
+    { 430, "vegasbooth", "vendor02_lvs_128" },
+    { 430, "vegasbooth", "vendor04_lvs_64" },
+    { 430, "vegasbooth", "vendor05_lvs_128" },
+    { 7419, "vegasbuild", "Bow_church_dirt_to_grass_side" },
+    { 7419, "vegasbuild", "vegparking1_256" },
+    { 7419, "vegasbuild", "vgnwoodenwall_256" },
+    { 6871, "vegascourtbld", "courthse1_256" },
+    { 6871, "vegascourtbld", "courthse2_256" },
+    { 6871, "vegascourtbld", "courthse3_256" },
+    { 6871, "vegascourtbld", "courthsedor2_256" },
+    { 6871, "vegascourtbld", "courthsewin2_128" },
+    { 6871, "vegascourtbld", "courthse_128" },
+    { 6871, "vegascourtbld", "marbletilewal1_256" },
+    { 6871, "vegascourtbld", "vegaselecbloc_256" },
+    { 7488, "vegasdwntwn1", "dangersign256" },
+    { 7488, "vegasdwntwn1", "dwntwnvgn2_256" },
+    { 7488, "vegasdwntwn1", "dwntwnvgn3_256" },
+    { 7488, "vegasdwntwn1", "dwntwnvgn4_256" },
+    { 7488, "vegasdwntwn1", "dwntwnvgnawn1_128" },
+    { 7488, "vegasdwntwn1", "gen_gym1_256" },
+    { 7488, "vegasdwntwn1", "savsig2" },
+    { 7488, "vegasdwntwn1", "vgncprkdoor1_256" },
+    { 7488, "vegasdwntwn1", "vgnstonewall1_256" },
+    { 7488, "vegasdwntwn1", "villainnwall02_128" },
+    { 7488, "vegasdwntwn1", "warning-strip64" },
+    { 3449, "vegashse2", "airconditioner02_128" },
+    { 3449, "vegashse2", "badhousewall01_128" },
+    { 3449, "vegashse2", "badhousewalld01_128" },
+    { 3449, "vegashse2", "badhousewalld02_128" },
+    { 3449, "vegashse2", "badhousewalld04_128" },
+    { 3449, "vegashse2", "badhousewalld05_128" },
+    { 3449, "vegashse2", "badhousewalld06_128" },
+    { 3449, "vegashse2", "hseconcblend1_256" },
+    { 3449, "vegashse2", "pinkwall01_64" },
+    { 3449, "vegashse2", "studiowall_law" },
+    { 3446, "vegashse3", "starhedge2" },
+    { 3446, "vegashse3", "vgnhseledgw1_64" },
+    { 3442, "vegashse4", "Est_corridor_ceiling" },
+    { 3442, "vegashse4", "Est_Gen_stone" },
+    { 3442, "vegashse4", "mallint01" },
+    { 3442, "vegashse4", "vgnlowbuild3_256" },
+    { 3484, "vegashse5", "newindow14" },
+    { 3484, "vegashse5", "vegashousewal1_256" },
+    { 3484, "vegashse5", "vegashousewal2_256" },
+    { 3484, "vegashse5", "vegashousewal7_256" },
+    { 3484, "vegashse5", "vegashousewal8_256" },
+    { 3484, "vegashse5", "vgnhsepsh4_256" },
+    { 3445, "vegashse6", "vegashousewal3_256" },
+    { 3445, "vegashse6", "vegashousewal4_256" },
+    { 3445, "vegashse6", "vgnhsepsh1_256" },
+    { 3483, "vegashse7", "black128" },
+    { 3483, "vegashse7", "vegashousewal5_256" },
+    { 3483, "vegashse7", "vegashousewal6_256" },
+    { 3483, "vegashse7", "vgnhsepsh7_128" },
+    { 3444, "vegashse8", "airconditioner01_128" },
+    { 3444, "vegashse8", "badhousegttrng03_128" },
+    { 3444, "vegashse8", "badhousewall02_256" },
+    { 3444, "vegashse8", "badhousewall03_256" },
+    { 3444, "vegashse8", "badhousewall04_256" },
+    { 3444, "vegashse8", "badhousewall05_256" },
+    { 3444, "vegashse8", "badhousewall07_128" },
+    { 3444, "vegashse8", "badhousewallb01_256" },
+    { 3444, "vegashse8", "badhousewallb02_128" },
+    { 3444, "vegashse8", "badhousewallc01_128" },
+    { 3444, "vegashse8", "badhousewallc02_128" },
+    { 3444, "vegashse8", "redstones01_256" },
+    { 3444, "vegashse8", "venbuildwh_law2" },
+    { 6875, "vegasnbuild1", "brickglasvgn1_256" },
+    { 6875, "vegasnbuild1", "brickglasvgn2_128" },
+    { 6875, "vegasnbuild1", "brickvgn1_128" },
+    { 7367, "vegasnefnc", "ws_griddyfence_64" },
+    { 7541, "vegasneon", "vgntelewires1" },
+    { 15033, "vegassavesmal", "ah_corn2" },
+    { 15033, "vegassavesmal", "ah_wallstyle3" },
+    { 8373, "vegass_jetty", "coasty_bit6_sfe" },
+    { 6869, "vegastemp1", "casinobase1_256" },
+    { 6869, "vegastemp1", "casinobase2_256" },
+    { 6869, "vegastemp1", "casinowall1_128" },
+    { 6869, "vegastemp1", "vgnbarb1_256" },
+    { 6869, "vegastemp1", "vgnbarb2_256" },
+    { 6869, "vegastemp1", "vgnbarb3_256" },
+    { 6869, "vegastemp1", "vgnbarbtex1_256" },
+    { 6869, "vegastemp1", "vgnbarbwall6_256" },
+    { 6869, "vegastemp1", "vgnbarbwall7_256" },
+    { 6869, "vegastemp1", "vgnbarb_wall_128" },
+    { 7916, "vegaswaterfall", "newaterfal1_256" },
+    { 7497, "vegaswrehse1", "roof05L256" },
+    { 7497, "vegaswrehse1", "sjmbarblas" },
+    { 18038, "vegas_munation", "mp_gun_floorred" },
+    { 18038, "vegas_munation", "mp_gun_range" },
+    { 18038, "vegas_munation", "mp_gun_wallbreeze" },
+    { 3469, "vegenmotel", "vgnmotel4_256" },
+    { 3467, "vegstreetsign", "streetsign2_256" },
+    { 734, "vegtresshi9b", "oakb" },
+    { 1209, "vend", "veding1_64" },
+    { 1209, "vend", "veding2_64" },
+    { 6057, "venicegb02_law", "bbalcony03_law" },
+    { 6057, "venicegb02_law", "hedge1_law" },
+    { 6057, "venicegb02_law", "mottwin_law" },
+    { 6057, "venicegb02_law", "venw01b_law" },
+    { 6057, "venicegb02_law", "venw01_law" },
+    { 6056, "venice_law", "jettylounge_law" },
+    { 6056, "venice_law", "law_blue2" },
+    { 6056, "venice_law", "law_blue3" },
+    { 6056, "venice_law", "law_blue4" },
+    { 6056, "venice_law", "law_blue5" },
+    { 6056, "venice_law", "law_blue6" },
+    { 6056, "venice_law", "law_blue7" },
+    { 6056, "venice_law", "law_terra2" },
+    { 6056, "venice_law", "law_terra4" },
+    { 6056, "venice_law", "law_terra5" },
+    { 6056, "venice_law", "law_yellow2" },
+    { 6056, "venice_law", "law_yellow4" },
+    { 6056, "venice_law", "law_yellow5" },
+    { 6056, "venice_law", "law_yellow6" },
+    { 6056, "venice_law", "newlawdoor" },
+    { 6056, "venice_law", "stonewalls2" },
+    { 6056, "venice_law", "wdpanel01b_law" },
+    { 6056, "venice_law", "wdpanel01_law" },
+    { 9106, "vgeamun", "blueroof_64" },
+    { 9106, "vgeamun", "hirisedoor1_256" },
+    { 9106, "vgeamun", "vgnammuwal1" },
+    { 9106, "vgeamun", "vgnammuwal2" },
+    { 9106, "vgeamun", "vgnammuwal3" },
+    { 9184, "vgebillboards", "cokopops_2" },
+    { 9184, "vgebillboards", "eris_4" },
+    { 8849, "vgeretail1", "alleywallyell" },
+    { 8849, "vgeretail1", "casinoshop31_256" },
+    { 8849, "vgeretail1", "zippizzaco_256" },
+    { 9029, "vgetrainfnce", "wire_sm" },
+    { 14703, "vghsb3int2", "HS2_2Wall2" },
+    { 14703, "vghsb3int2", "HS2_3Wall1" },
+    { 14703, "vghsb3int2", "HS4_Wall7" },
+    { 14703, "vghsb3int2", "HS4_Wall8" },
+    { 14714, "vghss1int2", "HS1_2Floor1" },
+    { 14714, "vghss1int2", "HS2_2Wall3" },
+    { 14714, "vghss1int2", "HS2_2Wall5" },
+    { 14714, "vghss1int2", "HS2_3Wall4" },
+    { 14714, "vghss1int2", "HS4_Wall5" },
+    { 14714, "vghss1int2", "HS4_Wall6" },
+    { 6959, "vgnbasktball", "yellowbball" },
+    { 7416, "vgnbball", "actopblank_256" },
+    { 7416, "vgnbball", "banditsign_256" },
+    { 7416, "vgnbball", "vgngewall2_256" },
+    { 7418, "vgnbballsign2", "autobahn3_256" },
+    { 7418, "vgnbballsign2", "bailbondvg_256" },
+    { 7418, "vgnbballsign2", "bankofSA_law" },
+    { 7418, "vgnbballsign2", "disgraceland1_256" },
+    { 7418, "vgnbballsign2", "frogspawn1_256" },
+    { 7418, "vgnbballsign2", "KACCdepot_256" },
+    { 7418, "vgnbballsign2", "scoreboardvgn_256" },
+    { 7418, "vgnbballsign2", "steakhouse_256" },
+    { 7418, "vgnbballsign2", "tattoosignvgn_256" },
+    { 7418, "vgnbballsign2", "weldwed1_256" },
+    { 7418, "vgnbballsign2", "ws_chipboard2" },
+    { 7232, "vgncastext01", "Clowns_Pocket" },
+    { 7288, "vgncastext02", "vgncasign12_256" },
+    { 7288, "vgncastext02", "vgncasign22_256" },
+    { 7288, "vgncastext02", "vgncasign42_256" },
+    { 6993, "vgncircir", "circirc1_256" },
+    { 6993, "vgncircir", "circirc2_256" },
+    { 6993, "vgncircir", "circirctex1_128" },
+    { 6993, "vgncircir", "circirctex2_64" },
+    { 6993, "vgncircir", "circirctex3_128" },
+    { 6993, "vgncircir", "circirctex4_256" },
+    { 6993, "vgncircir", "circirctex4_neon" },
+    { 6993, "vgncircir", "gasstopwall1_128" },
+    { 6993, "vgncircir", "neon_centrala" },
+    { 6993, "vgncircir", "starfish_static_lits" },
+    { 6993, "vgncircir", "vgnbarb1_256na" },
+    { 6993, "vgncircir", "vgncirctent1_256" },
+    { 7231, "vgncircir2", "aluminiumbands64" },
+    { 7231, "vgncircir2", "Clown_Pock_sign1b" },
+    { 7231, "vgncircir2", "Clown_Pock_sign1c2" },
+    { 7231, "vgncircir2", "hairybanjo_256" },
+    { 6866, "vgncnstrct1", "Circus_gls_01" },
+    { 6866, "vgncnstrct1", "Circus_gls_02" },
+    { 6866, "vgncnstrct1", "Circus_gls_03" },
+    { 6866, "vgncnstrct1", "Circus_gls_04" },
+    { 6866, "vgncnstrct1", "Circus_gls_05" },
+    { 6866, "vgncnstrct1", "concretegroundl1b" },
+    { 6866, "vgncnstrct1", "desmudtrail3" },
+    { 6866, "vgncnstrct1", "vegasclubdoor_128" },
+    { 7247, "vgncoast", "concretewall22b" },
+    { 7247, "vgncoast", "metalwheel1_128" },
+    { 7247, "vgncoast", "metalwheel2_128" },
+    { 7247, "vgncoast", "mp_bigmetaldoor_256" },
+    { 7533, "vgncondos1", "casinowall6_256" },
+    { 7533, "vgncondos1", "plantwoodchip_128" },
+    { 7533, "vgncondos1", "vgnmotel1_256" },
+    { 7533, "vgncondos1", "vgnmotel2_256" },
+    { 7533, "vgncondos1", "vgnmotel3_256" },
+    { 7426, "vgncorp1", "brick2" },
+    { 7426, "vgncorp1", "curbred_64H" },
+    { 7426, "vgncorp1", "elcid1_256" },
+    { 7426, "vgncorp1", "elcid2_256" },
+    { 7426, "vgncorp1", "elcid3_256" },
+    { 7426, "vgncorp1", "elcid4_256" },
+    { 7426, "vgncorp1", "elcid5_128" },
+    { 7426, "vgncorp1", "elcid6_128" },
+    { 7426, "vgncorp1", "elcid7_128" },
+    { 7426, "vgncorp1", "elcid8_128" },
+    { 7426, "vgncorp1", "ivorytower1_256" },
+    { 7426, "vgncorp1", "ivorytower2_256" },
+    { 7426, "vgncorp1", "vgnbuild1_256" },
+    { 7426, "vgncorp1", "vgnbuild2_128" },
+    { 7426, "vgncorp1", "vgnbuild3_256" },
+    { 7426, "vgncorp1", "vgndwntwnrf2_128" },
+    { 7009, "vgndwntwn1", "newpolice_sa" },
+    { 7009, "vgndwntwn1", "vgnbankbld1_256" },
+    { 7009, "vgndwntwn1", "vgnbankbld2_256" },
+    { 7009, "vgndwntwn1", "vgnbankbld3_256" },
+    { 7009, "vgndwntwn1", "vgnbankbld4_256" },
+    { 7009, "vgndwntwn1", "vgnbankbld5_256" },
+    { 7009, "vgndwntwn1", "vgnbankbld6_256" },
+    { 7009, "vgndwntwn1", "win_frame" },
+    { 7424, "vgndwntwn2", "gravelkb_128b" },
+    { 7424, "vgndwntwn2", "souveniers1_256" },
+    { 7424, "vgndwntwn2", "vegaswigshop1_256" },
+    { 7424, "vgndwntwn2", "vgnalleywall1_256" },
+    { 7424, "vgndwntwn2", "vgsSshopnew01" },
+    { 6908, "vgndwntwn21", "247sign1_64" },
+    { 6908, "vgndwntwn21", "fighotwin1_LAn" },
+    { 6908, "vgndwntwn21", "newbank" },
+    { 6908, "vgndwntwn21", "vgnbuild5bot_256" },
+    { 6908, "vgndwntwn21", "vgnbuild5top_256" },
+    { 6908, "vgndwntwn21", "vgnlawbuild1_256" },
+    { 6908, "vgndwntwn21", "vgnlawbuild2_256" },
+    { 6908, "vgndwntwn21", "vgnlawbuild3_256" },
+    { 6908, "vgndwntwn21", "vgnlawbuild4_256" },
+    { 6908, "vgndwntwn21", "vgnofic1_256" },
+    { 6908, "vgndwntwn21", "vgnofic2_256" },
+    { 6908, "vgndwntwn21", "vgnshopwal2_256" },
+    { 6908, "vgndwntwn21", "vgnshopwal3_256" },
+    { 6908, "vgndwntwn21", "vgnwstshop3_256" },
+    { 6908, "vgndwntwn21", "vgnwstshoptop2_256" },
+    { 6868, "vgndwntwn22", "vgnlowbuild1_256" },
+    { 6868, "vgndwntwn22", "vgnlowbuild2_128" },
+    { 6868, "vgndwntwn22", "vgnlowbuild4_256" },
+    { 6868, "vgndwntwn22", "vgnlowbuild5_256" },
+    { 6868, "vgndwntwn22", "vgnlowbuild6_256" },
+    { 6868, "vgndwntwn22", "vgnlowbuild7_256" },
+    { 6865, "vgndwntwn23", "steaksign1_256" },
+    { 6865, "vgndwntwn23", "steaksign2_256" },
+    { 6865, "vgndwntwn23", "Stekullvegas2" },
+    { 6865, "vgndwntwn23", "vgnbordpnk2_256" },
+    { 6865, "vgndwntwn23", "vgnpawnshrt_256" },
+    { 6865, "vgndwntwn23", "vgnwstshop2_256" },
+    { 6865, "vgndwntwn23", "ws_corr_wall2" },
+    { 6872, "vgndwntwn5", "artsoul1_256" },
+    { 6872, "vgndwntwn5", "fitzwallvgn2_256" },
+    { 6872, "vgndwntwn5", "fountain6_256" },
+    { 6872, "vgndwntwn5", "glasswindow5_256" },
+    { 6872, "vgndwntwn5", "glasswindow6_256" },
+    { 6872, "vgndwntwn5", "venetfount1_256" },
+    { 6872, "vgndwntwn5", "venetfount2_256" },
+    { 6872, "vgndwntwn5", "venetfount3_128" },
+    { 6872, "vgndwntwn5", "vgnledge1_128" },
+    { 7525, "vgnfirestat", "desertgravelsand" },
+    { 7525, "vgnfirestat", "hangersign01_256" },
+    { 7525, "vgnfirestat", "vegasfiredept1_256" },
+    { 7525, "vgnfirestat", "vgnfirestat1_256" },
+    { 7525, "vgnfirestat", "vgnfirestat4_256" },
+    { 7525, "vgnfirestat", "vgnwrehse1_256" },
+    { 7525, "vgnfirestat", "vgn_pinkfirestat_256" },
+    { 7490, "vgnfrates", "resaurantsign1_256" },
+    { 7490, "vgnfrates", "sanpshop1" },
+    { 7490, "vgnfrates", "vgnwrehsewal1_256" },
+    { 7490, "vgnfrates", "vgnwrehsewal2_256" },
+    { 6988, "vgnfremnt1", "casinobulb2_128n" },
+    { 6988, "vgnfremnt1", "casinodoor_frmnt" },
+    { 6988, "vgnfremnt1", "casinofront_256" },
+    { 6988, "vgnfremnt1", "casinohotel5_256" },
+    { 6988, "vgnfremnt1", "casinolights1b_128n" },
+    { 6988, "vgnfremnt1", "casinolights1_128" },
+    { 6988, "vgnfremnt1", "casinolights2_128" },
+    { 6988, "vgnfremnt1", "casinolights2_128n" },
+    { 6988, "vgnfremnt1", "casinolights3_128" },
+    { 6988, "vgnfremnt1", "casinolights3_128n" },
+    { 6988, "vgnfremnt1", "casinolights5_256" },
+    { 6988, "vgnfremnt1", "casinolights6lit3_256" },
+    { 6988, "vgnfremnt1", "casinolights6_256" },
+    { 6988, "vgnfremnt1", "casinolights7_256" },
+    { 6988, "vgnfremnt1", "casinolights9_256" },
+    { 6988, "vgnfremnt1", "casinolit2_128" },
+    { 6988, "vgnfremnt1", "casinopillar1_256" },
+    { 6988, "vgnfremnt1", "casinoshop32_256" },
+    { 6988, "vgnfremnt1", "casinoside2_256" },
+    { 6988, "vgnfremnt1", "casinosign1_128" },
+    { 6988, "vgnfremnt1", "casinosign1_256" },
+    { 6988, "vgnfremnt1", "casinosign2_128" },
+    { 6988, "vgnfremnt1", "casinowall1_256" },
+    { 6988, "vgnfremnt1", "casinowall2_256" },
+    { 6988, "vgnfremnt1", "casinowall5_256" },
+    { 6988, "vgnfremnt1", "freemontsign1_256" },
+    { 6988, "vgnfremnt1", "goldframe_256" },
+    { 6988, "vgnfremnt1", "hotelsignvgn1_256" },
+    { 6988, "vgnfremnt1", "scmgarage1_128" },
+    { 6988, "vgnfremnt1", "vgnhotelwin1" },
+    { 6988, "vgnfremnt1", "vgnhotelwin2" },
+    { 6985, "vgnfremnt2", "casinoawn1_128" },
+    { 6985, "vgnfremnt2", "casinoawn2_256" },
+    { 6985, "vgnfremnt2", "casinobulb3_128" },
+    { 6985, "vgnfremnt2", "casinohotel1_256" },
+    { 6985, "vgnfremnt2", "casinolights8_128" },
+    { 6985, "vgnfremnt2", "casinoshop1_256" },
+    { 6985, "vgnfremnt2", "casinoshop2_256" },
+    { 6985, "vgnfremnt2", "casinoshop4_256" },
+    { 6985, "vgnfremnt2", "casinouper1_256" },
+    { 6985, "vgnfremnt2", "casinouper2_256" },
+    { 6985, "vgnfremnt2", "casinowall42_256" },
+    { 6985, "vgnfremnt2", "casinowall4_128" },
+    { 6985, "vgnfremnt2", "girlsneon_256" },
+    { 6985, "vgnfremnt2", "striplightsblu_256" },
+    { 6985, "vgnfremnt2", "striplightsgreen_256" },
+    { 6985, "vgnfremnt2", "striplightsorange_256" },
+    { 6985, "vgnfremnt2", "striplightspinky_256" },
+    { 6985, "vgnfremnt2", "striplightsred_256" },
+    { 6985, "vgnfremnt2", "striplightsyel_256" },
+    { 6985, "vgnfremnt2", "vegassign1_256" },
+    { 6985, "vgnfremnt2", "vgnbordpurp1_256" },
+    { 6985, "vgnfremnt2", "vgnbordpurp2_256" },
+    { 6985, "vgnfremnt2", "vgndwntwn3_256_256" },
+    { 6985, "vgnfremnt2", "vgnhotelwall1_256" },
+    { 6985, "vgnfremnt2", "vgntext1_256" },
+    { 6985, "vgnfremnt2", "vgsN_casadd01" },
+    { 6985, "vgnfremnt2", "vgs_casino_neon" },
+    { 6985, "vgnfremnt2", "washmallotsd_256" },
+    { 7073, "vgnfremntsgn", "averysign1_256" },
+    { 7073, "vgnfremntsgn", "averysign2_256" },
+    { 7073, "vgnfremntsgn", "averysigneon1a_256" },
+    { 7073, "vgnfremntsgn", "averysigneon2a_256" },
+    { 7073, "vgnfremntsgn", "candysign1_256" },
+    { 7530, "vgngebuild", "vgngewall3_256" },
+    { 7530, "vgngebuild", "vgngewall4_256" },
+    { 7530, "vgngebuild", "vgngewall5_256" },
+    { 7530, "vgngebuild", "vgngewall6_256" },
+    { 7420, "vgnglfcrse1", "des_dirt1_glfhvy" },
+    { 7420, "vgnglfcrse1", "fence_iron_256" },
+    { 7420, "vgnglfcrse1", "glfclbhsesign_256" },
+    { 7420, "vgnglfcrse1", "golf_fairway3" },
+    { 7420, "vgnglfcrse1", "hotel2base1_256" },
+    { 7420, "vgnglfcrse1", "hotel2base2_256" },
+    { 7420, "vgnglfcrse1", "sandstone2_128" },
+    { 7420, "vgnglfcrse1", "seabed" },
+    { 6876, "vgnground", "crossing_law2" },
+    { 6876, "vgnground", "vegasroad3_256" },
+    { 6886, "vgnground3", "crossing_law3" },
+    { 6886, "vgnground3", "vegasdirtypave1_256" },
+    { 6886, "vgnground3", "vegasdirtypave2_256" },
+    { 6886, "vgnground3", "vegasdirtyroad1_256" },
+    { 6886, "vgnground3", "vegasdirtyroad2_256" },
+    { 6886, "vgnground3", "vgsN_road2sand01" },
+    { 6886, "vgnground3", "vgsN_road2sand02" },
+    { 6886, "vgnground3", "ws_carparknew2c" },
+    { 3455, "vgnhseblk1", "vnghse1_256" },
+    { 3455, "vgnhseblk1", "vnghse2_256" },
+    { 3455, "vgnhseblk1", "vnghse3_128" },
+    { 6919, "vgnhseing1", "vgnhseledgw2_64" },
+    { 6919, "vgnhseing1", "vgnwrehse8_256" },
+    { 7518, "vgnhseland", "vgnhsewall1_256" },
+    { 6882, "vgnland", "con2sand1a" },
+    { 6882, "vgnland", "con2sand1b" },
+    { 6882, "vgnland", "con2sand1c" },
+    { 6882, "vgnland", "des_scrub1_dirt1a" },
+    { 6882, "vgnland", "des_scrub1_dirt1b" },
+    { 6882, "vgnland", "hiway2sand1a" },
+    { 6882, "vgnland", "hiwaygravel1_256" },
+    { 6882, "vgnland", "ws_carparknew2b" },
+    { 6882, "vgnland", "ws_oldredbrick64" },
+    { 7526, "vgnlowbild", "24hoursign1_256" },
+    { 7526, "vgnlowbild", "cashloans1_256" },
+    { 7526, "vgnlowbild", "gaygordos_128" },
+    { 7526, "vgnlowbild", "pavedark128" },
+    { 7526, "vgnlowbild", "touristbureau_256" },
+    { 7526, "vgnlowbild", "vegaspillar12_128" },
+    { 7526, "vgnlowbild", "vgnlowbildwal1_256" },
+    { 3460, "vgnlpost", "lamppost2" },
+    { 6947, "vgnmall", "vgncarwash2_128" },
+    { 6947, "vgnmall", "vgnpizzawindow_256" },
+    { 7019, "vgnoutown2", "vgnwrehse5_256" },
+    { 7019, "vgnoutown2", "vgnwrehse6_256" },
+    { 7019, "vgnoutown2", "vgnwrehse7_256" },
+    { 7103, "vgnplantgen", "metalwheel3_128" },
+    { 7103, "vgnplantgen", "metalwheel4_128" },
+    { 7103, "vgnplantgen", "metalwheel5" },
+    { 7103, "vgnplantgen", "metalwheel5_128" },
+    { 6909, "vgnptrlpmp", "soapytitwank_256" },
+    { 6909, "vgnptrlpmp", "vgnstripwal1_128" },
+    { 6867, "vgnpwrmainbld", "hazwaste1_256" },
+    { 6867, "vgnpwrmainbld", "sw_wallbrick_02" },
+    { 6929, "vgnpwroutbld1", "sw_stresswall1" },
+    { 6931, "vgnpwroutbld3", "plant_tank" },
+    { 7024, "vgnpwrwhse", "Bow_Load_Door" },
+    { 6912, "vgnrailroad", "conchev_64HV" },
+    { 6912, "vgnrailroad", "railwy_tun" },
+    { 7506, "vgnretail2", "vgnmetalwall1_256" },
+    { 7506, "vgnretail2", "vgnmetalwall2_256" },
+    { 7506, "vgnretail2", "vgnmetalwall5_256" },
+    { 7506, "vgnretail2", "vgnmetalwall6_256" },
+    { 7508, "vgnretail3", "counter01_law" },
+    { 7508, "vgnretail3", "garageledge01_64" },
+    { 7094, "vgnretail5", "carparksign02_128" },
+    { 7094, "vgnretail5", "sw_trellis_64" },
+    { 7094, "vgnretail5", "vegasclub01_128" },
+    { 7094, "vgnretail5", "vegasclub02_128" },
+    { 7094, "vgnretail5", "vegasclubledge_128" },
+    { 7094, "vgnretail5", "vgsclubwall01_128" },
+    { 7094, "vgnretail5", "VgsN_wedtack1b" },
+    { 6922, "vgnretail6", "marinawindow2_256" },
+    { 6922, "vgnretail6", "vgsn_chplroof" },
+    { 6922, "vgnretail6", "vgsn_chplwall" },
+    { 6922, "vgnretail6", "wddngchapel02_64" },
+    { 6922, "vgnretail6", "wddngchapel03_64" },
+    { 6922, "vgnretail6", "wddngchapelsign03_128" },
+    { 6922, "vgnretail6", "wddngchapelsign04_128" },
+    { 6922, "vgnretail6", "wddngchapelsign08_256" },
+    { 6922, "vgnretail6", "wddngchplldge01_64" },
+    { 6922, "vgnretail6", "wddngchplldge03_64" },
+    { 6924, "vgnretail7", "erotic_wc_256" },
+    { 6924, "vgnretail7", "vgnwedding1_256" },
+    { 6924, "vgnretail7", "vgnwedding2_256" },
+    { 7520, "vgnretail72", "gasstop1_256" },
+    { 7520, "vgnretail72", "solairtyre64" },
+    { 7520, "vgnretail72", "solairwheel64" },
+    { 7520, "vgnretail72", "vgnmetalwall4_256" },
+    { 7015, "vgnscaffold", "vgsnscafold_256" },
+    { 7015, "vgnscaffold", "vgsnscfldclr_256" },
+    { 6873, "vgnshambild1", "cparknumbers1a_128" },
+    { 6873, "vgnshambild1", "fitzwallvgn1_256" },
+    { 6873, "vgnshambild1", "fitzwallvgn3_256" },
+    { 6873, "vgnshambild1", "fitzwallvgn6_256" },
+    { 6873, "vgnshambild1", "glasswindow3b_256" },
+    { 6873, "vgnshambild1", "vgsN_emerald" },
+    { 6971, "vgnshamcpark", "fitzwallvgn4_256" },
+    { 6971, "vgnshamcpark", "fitzwallvgn5_256" },
+    { 6944, "vgnshopnmall", "gaulle_3" },
+    { 6944, "vgnshopnmall", "prolaps01_small" },
+    { 6944, "vgnshopnmall", "vgnmetalwall3_256" },
+    { 6978, "vgnstrfshsign", "vgncasign32_256" },
+    { 7489, "vgntamotel", "Bow_dryclean_floor" },
+    { 7489, "vgntamotel", "freestwall1" },
+    { 7489, "vgntamotel", "gingerwig_128" },
+    { 7489, "vgntamotel", "motelsign2_256" },
+    { 7489, "vgntamotel", "vegmotelsign2_256" },
+    { 7489, "vgntamotel", "vgnacmotel2_256" },
+    { 7489, "vgntamotel", "vgnacmotel5_128" },
+    { 7489, "vgntamotel", "vgncoctart1_256" },
+    { 7511, "vgntrainstat", "awning4256" },
+    { 7511, "vgntrainstat", "metaliron1_128" },
+    { 7511, "vgntrainstat", "venetian15_128" },
+    { 7650, "vgnusedcar", "greenshade4_64" },
+    { 7650, "vgnusedcar", "lightblue2_32" },
+    { 7650, "vgnusedcar", "lightgreen2_32" },
+    { 7650, "vgnusedcar", "lightpurple2_32" },
+    { 7650, "vgnusedcar", "lightyellow2_32" },
+    { 7650, "vgnusedcar", "marinadoor2_256" },
+    { 7650, "vgnusedcar", "shody1_256" },
+    { 6864, "vgnvrock", "ampback_256" },
+    { 6864, "vgnvrock", "ampfront_256" },
+    { 6864, "vgnvrock", "vrocksign1_256" },
+    { 6864, "vgnvrock", "VRockwall_256" },
+    { 6864, "vgnvrock", "VRockwins_256" },
+    { 8044, "vgsairport", "LasVenturasAirport_256" },
+    { 3496, "vgsbballnet1", "bballboard2_256" },
+    { 8136, "vgsbikeschool", "gravelground128" },
+    { 8419, "vgsbldng1", "buildng01wind2_64" },
+    { 8419, "vgsbldng1", "buildng01wind_128" },
+    { 8419, "vgsbldng1", "buildng01_64" },
+    { 8419, "vgsbldng1", "cityplansign01_256" },
+    { 8419, "vgsbldng1", "hotbasebot_law" },
+    { 3431, "vgsclubox", "vgsclubdsply_128" },
+    { 8842, "vgse24hr", "takeaway1" },
+    { 8567, "vgsebuild02", "airconfrnt2_128" },
+    { 8567, "vgsebuild02", "la_brownhibuilda" },
+    { 8567, "vgsebuild02", "la_brownhibuildb" },
+    { 8567, "vgsebuild02", "vgsderelict01_128" },
+    { 8567, "vgsebuild02", "vgsderelict02_128" },
+    { 8567, "vgsebuild02", "vgsderelict03_128" },
+    { 8567, "vgsebuild02", "vgsderelict04_128" },
+    { 8567, "vgsebuild02", "vgsderelict05_128" },
+    { 8567, "vgsebuild02", "vgsderelictdoor_128" },
+    { 8867, "vgsecnstrct01", "concretewall21_256" },
+    { 8870, "vgsecnstrct03", "newscafold_256" },
+    { 8870, "vgsecnstrct03", "scafoldclear_256" },
+    { 8491, "vgseflmngonion", "flmngo11_128" },
+    { 8491, "vgseflmngonion", "flmngosign01" },
+    { 8463, "vgseland", "tiadbuddhagold" },
+    { 8463, "vgseland", "triadcarpet" },
+    { 8463, "vgseland", "triadcarpet2" },
+    { 8438, "vgseroads", "blendpavement2b_256" },
+    { 14711, "vgshm2int2", "HS2_2Carpet1" },
+    { 14711, "vgshm2int2", "HS2_4wall1" },
+    { 14711, "vgshm2int2", "HS2_wall5" },
+    { 14711, "vgshm2int2", "HSV_carpet1" },
+    { 14711, "vgshm2int2", "HSV_carpet2" },
+    { 14711, "vgshm2int2", "HSV_wall1" },
+    { 14711, "vgshm2int2", "HSV_wall2" },
+    { 14711, "vgshm2int2", "HSV_wall4" },
+    { 14710, "vgshm3int2", "HS1_Shade4" },
+    { 14710, "vgshm3int2", "HSV_2carpet1" },
+    { 14710, "vgshm3int2", "HSV_3carpet1" },
+    { 14710, "vgshm3int2", "HSV_3carpet2" },
+    { 14710, "vgshm3int2", "HSV_3wall1" },
+    { 14710, "vgshm3int2", "HSV_3wall2" },
+    { 14710, "vgshm3int2", "HSV_3wall3" },
+    { 14710, "vgshm3int2", "HSV_3wall4" },
+    { 14710, "vgshm3int2", "HSV_3wall5" },
+    { 8401, "vgshpground", "carparksign03_128" },
+    { 8401, "vgshpground", "parkinghut01_128" },
+    { 8401, "vgshpground", "parkinghut02_128" },
+    { 8401, "vgshpground", "parkinghutdoor_128" },
+    { 8401, "vgshpground", "parkingsign01_128" },
+    { 8401, "vgshpground", "vegaspawn01_128" },
+    { 8401, "vgshpground", "vegaspawnwall02_128" },
+    { 8401, "vgshpground", "vgspawnroof01_128" },
+    { 14700, "vgshs2int2", "ah_rouren" },
+    { 14700, "vgshs2int2", "ah_SCMFLR" },
+    { 14700, "vgshs2int2", "ah_wwornskt" },
+    { 8947, "vgslockup", "vegasoffice05_128" },
+    { 8495, "vgsmall", "vgncarwash1_256" },
+    { 6863, "vgsnbuild07", "vegasbank1_256" },
+    { 6863, "vgsnbuild07", "vegasbank2_256" },
+    { 6863, "vgsnbuild07", "vegasbank3_256" },
+    { 6863, "vgsnbuild07", "vgndwntwn1_256_256" },
+    { 6863, "vgsnbuild07", "vgndwntwn2_256_256" },
+    { 3502, "vgsncircon", "woodsuport1_128" },
+    { 3502, "vgsncircon", "woodsuport2_128" },
+    { 7300, "vgsn_billboard", "homies_1_128" },
+    { 3475, "vgsn_fncelec_pst", "ws_oldpainted_64" },
+    { 3505, "vgsn_nitree", "vgsN_rope" },
+    { 3521, "vgsn_rbstiff", "randysign1_256" },
+    { 3521, "vgsn_rbstiff", "randysign2_256" },
+    { 8434, "vgsoffice1", "vegasoffice01_128" },
+    { 8434, "vgsoffice1", "vegasoffice02_128" },
+    { 8434, "vgsoffice1", "vegasoffice03_128" },
+    { 8434, "vgsoffice1", "vegasoffice04_256" },
+    { 8434, "vgsoffice1", "vegasoffice06" },
+    { 7978, "vgssairport", "aascaff_yellow" },
+    { 7978, "vgssairport", "airportwindow02_128" },
+    { 7978, "vgssairport", "Industdoor9white" },
+    { 7978, "vgssairport", "newall16white" },
+    { 7978, "vgssairport", "newall_harling_sless" },
+    { 7978, "vgssairport", "venturasairsign1" },
+    { 7978, "vgssairport", "weatheredwood64HV" },
+    { 7981, "vgssairport02", "airsign2_64" },
+    { 7981, "vgssairport02", "alleydoorz256" },
+    { 7981, "vgssairport02", "chevronYB_64" },
+    { 7981, "vgssairport02", "danger" },
+    { 7981, "vgssairport02", "drivecare_64" },
+    { 7981, "vgssairport02", "exit_noexit128" },
+    { 7981, "vgssairport02", "metalcopy" },
+    { 7981, "vgssairport02", "ws_airsecurity" },
+    { 8130, "vgsschurch", "vgschapelwall01_64" },
+    { 8130, "vgsschurch", "vgschrchwndow01_128" },
+    { 8130, "vgsschurch", "vgschurchdoor01_128" },
+    { 8130, "vgsschurch", "vgschurchdoor03_128" },
+    { 8130, "vgsschurch", "vgschurchmural01_256" },
+    { 8130, "vgsschurch", "vgschurchroof01_128" },
+    { 8130, "vgsschurch", "vgschurchsign01_256" },
+    { 8130, "vgsschurch", "vgschurchwall03_128" },
+    { 8130, "vgsschurch", "vgschurchwall04_256" },
+    { 8130, "vgsschurch", "vgschurchwall06_256" },
+    { 8147, "vgsselecfence", "vgsSmetalgate01" },
+    { 7993, "vgsshiways", "hiwayinsideblend1_256" },
+    { 8035, "vgsshospshop", "bincoLogo" },
+    { 8035, "vgsshospshop", "desgrassbrnsnd" },
+    { 8035, "vgsshospshop", "hosp_sign01a" },
+    { 8035, "vgsshospshop", "hosp_sign01b" },
+    { 8035, "vgsshospshop", "hosp_sign01c" },
+    { 8035, "vgsshospshop", "vgsShospsign01" },
+    { 8035, "vgsshospshop", "wok&roll1_2256" },
+    { 8006, "vgssland", "desgrasandblend" },
+    { 8006, "vgssland", "hiwayblend1_256" },
+    { 7996, "vgssland01", "greyground2sand" },
+    { 8001, "vgssland03", "Upt_Conc floor" },
+    { 8037, "vgssmulticarprk", "vgsSstonewall01" },
+    { 7987, "vgssroads", "blendpavement2_256" },
+    { 7987, "vgssroads", "road1256" },
+    { 8322, "vgsssignage02", "dirtringtex1_256" },
+    { 8293, "vgsssignage03", "electrics01" },
+    { 8071, "vgsswarehse01", "vgswrehouse01_128" },
+    { 8071, "vgsswarehse01", "vgswrehouse02_128" },
+    { 8057, "vgsswarehse02", "GB_truckdepot10" },
+    { 8057, "vgsswarehse02", "GB_truckdepot16" },
+    { 8057, "vgsswarehse02", "Nu-chem_64" },
+    { 8057, "vgsswarehse02", "shafted01" },
+    { 8057, "vgsswarehse02", "vgsScautionsign01" },
+    { 8057, "vgsswarehse02", "ws_RShaul_transp_M" },
+    { 8057, "vgsswarehse02", "ws_warehousewall1" },
+    { 7985, "vgsswarehse02c", "garageledge02_64" },
+    { 7985, "vgsswarehse02c", "GB_truckdepot12" },
+    { 7985, "vgsswarehse02c", "muddywater" },
+    { 7985, "vgsswarehse02c", "vgsSnewshop03" },
+    { 7985, "vgsswarehse02c", "vgsSpinkshop01" },
+    { 7985, "vgsswarehse02c", "vgsSpinkshop02" },
+    { 7985, "vgsswarehse02c", "vgsSpinkshop03" },
+    { 7985, "vgsswarehse02c", "vgsSpinkshop04" },
+    { 7985, "vgsswarehse02c", "vgsSshopnew02" },
+    { 7985, "vgsswarehse02c", "wddngchapelsign06_128" },
+    { 8034, "vgsswarhse04", "flightschoolwall01_128" },
+    { 8034, "vgsswarhse04", "GB_truckdepot14" },
+    { 8034, "vgsswarhse04", "vgsSfltschool01" },
+    { 8065, "vgsswrehse03", "sumo" },
+    { 8065, "vgsswrehse03", "vgswrhsign01" },
+    { 8399, "vgs_shops", "vegasclubmural_128" },
+    { 8399, "vgs_shops", "vgsclubwall02_128" },
+    { 8399, "vgs_shops", "vgsclubwall03_128" },
+    { 8399, "vgs_shops", "vgsclubwall08_256" },
+    { 8399, "vgs_shops", "vgs_shpfrnt01_128" },
+    { 8399, "vgs_shops", "vgs_shpfrnt02_128" },
+    { 8399, "vgs_shops", "villainn02_256" },
+    { 8399, "vgs_shops", "villainnwall01_128" },
+    { 8201, "vgs_stadium", "dirtringtex2_256" },
+    { 8201, "vgs_stadium", "dirtringtex3_256" },
+    { 7492, "vgwestabats", "vgnabatwal1_256" },
+    { 7492, "vgwestabats", "vgnabatwal2_256" },
+    { 7492, "vgwestabats", "vgnabatwal3_256" },
+    { 7492, "vgwestabats", "vgnabatwal4_256" },
+    { 7448, "vgwestcoast", "golf_hvygras_cpark" },
+    { 7452, "vgwestland", "des_dirt1_grass" },
+    { 7509, "vgwestretail1", "hedge2_256" },
+    { 7681, "vgwsavehses", "carparksignplate_64" },
+    { 7681, "vgwsavehses", "villainnpipe_64" },
+    { 7429, "vgwstdirtyrd", "vegasdirtypaveblend1" },
+    { 7429, "vgwstdirtyrd", "vegasdirtypaveblend2" },
+    { 7429, "vgwstdirtyrd", "vegasdirtyroad3_256" },
+    { 7429, "vgwstdirtyrd", "vgsroadirt1_256" },
+    { 7429, "vgwstdirtyrd", "vgsroadirt2_256" },
+    { 7415, "vgwwelcome", "lvswelcomesign01_512" },
+    { 7415, "vgwwelcome", "lvswelvomesign02" },
+    { 7415, "vgwwelcome", "ws_coppersheet2" },
+    { 2025, "wardrobe_tmp", "wardrobe_1128" },
+    { 5174, "warehus_las2", "cmpwarhus1" },
+    { 5174, "warehus_las2", "las2_dcwal1" },
+    { 5174, "warehus_las2", "las2_dcwal2" },
+    { 5134, "wasteland_las2", "ja_gencheapmx" },
+    { 5134, "wasteland_las2", "ja_sgcombo3" },
+    { 5134, "wasteland_las2", "mural05_LA" },
+    { 5134, "wasteland_las2", "snpedsigx1" },
+    { 5134, "wasteland_las2", "snpedsigx2" },
+    { 8412, "wddngchpl", "wddngchapelsign01_256" },
+    { 8675, "wddngchpl02", "vgschapelwall02_128" },
+    { 8675, "wddngchpl02", "wddngchapeldoor01_128" },
+    { 8675, "wddngchpl02", "wddngchapeldoor02_128" },
+    { 8675, "wddngchpl02", "wddngchapelwndw01_128" },
+    { 8675, "wddngchpl02", "wddngchapelwndw02" },
+    { 8676, "wddngchplsign2", "wddngchapelsign05_256" },
+    { 17298, "weefarmcuntw", "sjmbigold3" },
+    { 17298, "weefarmcuntw", "sjmbigoldgut" },
+    { 17298, "weefarmcuntw", "sjmbigoldwin" },
+    { 17298, "weefarmcuntw", "sjmscruffhut4" },
+    { 3925, "weemap", "skyclouds" },
+    { 1649, "wglass", "carshowwin2" },
+    { 14738, "whorebar", "AH_Architrave" },
+    { 14738, "whorebar", "AH_blueceiling" },
+    { 14738, "whorebar", "AH_cheapwhoremainwall" },
+    { 14738, "whorebar", "AH_cheapwindow" },
+    { 14738, "whorebar", "AH_fbatters" },
+    { 14738, "whorebar", "AH_mirror" },
+    { 14738, "whorebar", "AH_tile" },
+    { 14738, "whorebar", "AH_wdblinds" },
+    { 14738, "whorebar", "AH_whoredoor" },
+    { 14738, "whorebar", "skirting" },
+    { 14739, "whorebits", "AH_barchair" },
+    { 14739, "whorebits", "AH_bartop" },
+    { 14739, "whorebits", "AH_beercabinet2" },
+    { 14739, "whorebits", "AH_cheapbarpan" },
+    { 14739, "whorebits", "AH_speakbig" },
+    { 14739, "whorebits", "AH_wdpanelback" },
+    { 14739, "whorebits", "sink" },
+    { 14736, "whorerooms", "AH_bathbigblu" },
+    { 14736, "whorerooms", "AH_bathmos" },
+    { 14736, "whorerooms", "AH_bathplanks" },
+    { 14736, "whorerooms", "AH_dirt1" },
+    { 14736, "whorerooms", "AH_flrwll" },
+    { 14736, "whorerooms", "AH_grncarpet" },
+    { 14736, "whorerooms", "blu_paper" },
+    { 14736, "whorerooms", "blu_paper2" },
+    { 14737, "whorewallstuff", "AH_dirtypix2" },
+    { 14737, "whorewallstuff", "AH_drinkshelf" },
+    { 14737, "whorewallstuff", "AH_fbatters2" },
+    { 14737, "whorewallstuff", "AH_paintbond" },
+    { 14737, "whorewallstuff", "ah_painting1" },
+    { 14737, "whorewallstuff", "ah_painting2" },
+    { 14737, "whorewallstuff", "Pict1" },
+    { 14816, "whore_furn", "WH_flowers1" },
+    { 14816, "whore_furn", "WH_keys" },
+    { 14815, "whore_main", "WH_carpet3" },
+    { 14815, "whore_main", "WH_tiles" },
+    { 14815, "whore_main", "WH_tiles2" },
+    { 14815, "whore_main", "WH_Wall" },
+    { 14817, "whore_rms", "WH_boa1" },
+    { 14817, "whore_rms", "WH_boots" },
+    { 14817, "whore_rms", "WH_Clit" },
+    { 14817, "whore_rms", "WH_Cpot" },
+    { 14817, "whore_rms", "WH_fan2" },
+    { 14817, "whore_rms", "WH_gown" },
+    { 14817, "whore_rms", "WH_gown2" },
+    { 14817, "whore_rms", "WH_horse" },
+    { 14817, "whore_rms", "WH_netC" },
+    { 14817, "whore_rms", "WH_netC2" },
+    { 14817, "whore_rms", "WH_Rug1" },
+    { 14817, "whore_rms", "WH_stetson" },
+    { 4981, "wiresetc2_las", "ganggraf03_LA" },
+    { 4981, "wiresetc2_las", "lasunionclk" },
+    { 4981, "wiresetc2_las", "unity1" },
+    { 5150, "wiresetc_las2", "ganggraf01_LA_m" },
+    { 5150, "wiresetc_las2", "lastat4_M" },
+    { 10695, "wires_sfs", "ws_telwiresnew1" },
+    { 3031, "wngdishx", "dish1" },
+    { 3031, "wngdishx", "dish_leg" },
+    { 3031, "wngdishx", "metal_leg" },
+    { 3030, "wong_twx", "kb_radiomast_burnt" },
+    { 1675, "wshxrefhse", "decodoor5256" },
+    { 1675, "wshxrefhse", "duskyblue_128" },
+    { 1675, "wshxrefhse", "greygreensubuild_128" },
+    { 1675, "wshxrefhse", "resimexwin4_256" },
+    { 1675, "wshxrefhse", "washdecowall3256" },
+    { 1677, "wshxrefhse2", "awning1256" },
+    { 1677, "wshxrefhse2", "tilestone256" },
+    { 1677, "wshxrefhse2", "yellowbeige_128" },
+    { 1676, "wshxrefpump", "petrolpumpbase_256" },
+    { 1676, "wshxrefpump", "petrolpumptop_128" },
+    { 3879, "ws_jetty_sfx", "northwood3_64" },
+    { 3879, "ws_jetty_sfx", "ws_algae_concrete" },
+    { 3879, "ws_jetty_sfx", "ws_jeepwheel" },
+    { 1319, "ws_roadside_dyn1", "ws_roadpost" },
+    { 1319, "ws_roadside_dyn1", "ws_roadwarnings" },
+    { 18200, "w_town2cs_t", "Bow_door_graffiti_128" },
+    { 18200, "w_town2cs_t", "corrugated02_red" },
+    { 18200, "w_town2cs_t", "dogpillar_128" },
+    { 18200, "w_town2cs_t", "inwindow1128" },
+    { 18200, "w_town2cs_t", "mottled_creme_64HV" },
+    { 18200, "w_town2cs_t", "shoptopc128" },
+    { 18200, "w_town2cs_t", "shoptopd128" },
+    { 18200, "w_town2cs_t", "yellowbuilda256" },
+    { 18265, "w_town3cs_t", "inddoor5" },
+    { 18265, "w_town3cs_t", "sjmscruffhut2" },
+    { 18202, "w_towncs_t", "hatwall256hi" },
+    { 18202, "w_towncs_t", "husdr" },
+    { 18202, "w_towncs_t", "husruf" },
+    { 18202, "w_towncs_t", "mp_pinesheriff" },
+    { 18202, "w_towncs_t", "pax256hi" },
+    { 18202, "w_towncs_t", "sh256hi" },
+    { 18202, "w_towncs_t", "shpbill256hi" },
+    { 18202, "w_towncs_t", "shpcam2561hi" },
+    { 18202, "w_towncs_t", "shphr1hi" },
+    { 18202, "w_towncs_t", "shpton256hi" },
+    { 18202, "w_towncs_t", "sjmroof1" },
+    { 10789, "xenon_sfse", "ws_xenomart" },
+    { 3439, "xrefairtree", "rustadark128" },
+    { 3439, "xrefairtree", "treepropleaf01" }
+};
+
+public OnFilterScriptInit()
+{
+	MAX_TEXTURES = sizeof(ObjectTextures);
+	printf("LOADED %i texture definitions", MAX_TEXTURES);
+	return CallLocalFunction("Texture_ALS_OnFilterScriptInit", "");
+}
+#if defined _ALS_OnFilterScriptInit
+	#undef OnFilterScriptInit
+#else
+	#define _ALS_OnFilterScriptInit
+#endif
+#define OnFilterScriptInit Texture_ALS_OnFilterScriptInit
+
+forward Texture_ALS_OnFilterScriptInit();
+
+public OnGameModeInit()
+{
+	MAX_TEXTURES = sizeof(ObjectTextures);
+	printf("LOADED %i texture definitions", MAX_TEXTURES);
+	return CallLocalFunction("Texture_ALS_OnGameModeInit", "");
+}
+#if defined _ALS_OnGameModeInit
+	#undef OnGameModeInit
+#else
+	#define _ALS_OnGameModeInit
+#endif
+#define OnGameModeInit Texture_ALS_OnGameModeInit
+
+forward Texture_ALS_OnGameModeInit();
+

+ 85 - 0
Texture-Studio-master/filterscripts/tstudio/cmdbuffer.pwn

@@ -0,0 +1,85 @@
+/*
+#define MAX_COMMAND_BUFFER          (20)
+
+new CommandBuffer[MAX_PLAYERS][MAX_COMMAND_BUFFER][128];
+
+#define PRESSED(%0) \
+	(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
+#define RELEASED(%0) \
+	(((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
+
+new bool:HoldKeyPressed;
+*/
+OnPlayerKeyStateChangeCMD(playerid,newkeys,oldkeys)
+{
+	#pragma unused playerid, newkeys, oldkeys
+	/*
+	if(HoldKeyPressed && PRESSED(KEY_CROUCH) && !isnull(CommandBuffer[playerid][0]))
+        Command_ReProcess(playerid, sprintf("/%s", CommandBuffer[playerid][0]), 0); //BroadcastCommand(playerid, CommandBuffer[playerid][0]);
+    
+	if(PRESSED(KEY_WALK))
+        HoldKeyPressed = true;
+	else if(RELEASED(KEY_WALK))
+        HoldKeyPressed = false;
+    */
+    
+    return 0;
+}
+
+public OnPlayerCommandText(playerid, cmdtext[]) 
+{
+	/*
+	//print(cmdtext);
+	
+	// Make every slot, start from slot 2, take the data from the slot before
+	for(new i = MAX_COMMAND_BUFFER - 1; i > 0; --i) {
+		//printf("i = %2i 1, CB[i] = %s, CB[i-1] = %s", i, CommandBuffer[playerid][i], CommandBuffer[playerid][i - 1]);
+		//CommandBuffer[playerid][i] = CommandBuffer[playerid][i - 1];
+		//printf("i = %2i 2, CB[i] = %s, CB[i-1] = %s", i, CommandBuffer[playerid][i], CommandBuffer[playerid][i - 1]);
+		format(CommandBuffer[playerid][i], 128, "%s", CommandBuffer[playerid][i - 1]);
+	}
+	
+	// Insert the command and it's parameters into the buffer
+	//CommandBuffer[playerid][0][0] = EOS;
+	format(CommandBuffer[playerid][0], 128, "%s", cmdtext);
+	*/
+
+	#if defined CB_OnPlayerCommandText
+		CB_OnPlayerCommandText(playerid, cmdtext);
+	#endif
+	
+	return 0;
+}
+#if defined _ALS_OnPlayerCommandText
+	#undef OnPlayerCommandText
+#else
+	#define _ALS_OnPlayerCommandText
+#endif
+#define OnPlayerCommandText CB_OnPlayerCommandText
+#if defined CB_OnPlayerCommandText
+	forward CB_OnPlayerCommandText(playerid, cmdtext[]);
+#endif
+
+public OnPlayerConnect(playerid)
+{
+	/*
+    // Reset the player's buffer
+    new tmpCommandBuffer[MAX_COMMAND_BUFFER][128];
+    CommandBuffer[playerid] = tmpCommandBuffer;
+    */
+
+	#if defined CB_OnPlayerConnect
+		CB_OnPlayerConnect(playerid);
+	#endif
+
+	return 1;
+}
+#if defined _ALS_OnPlayerConnect
+	#undef OnPlayerConnect
+#else
+	#define _ALS_OnPlayerConnect
+#endif
+#define OnPlayerConnect CB_OnPlayerConnect
+#if defined CB_OnPlayerConnect
+	forward CB_OnPlayerConnect(playerid);
+#endif

+ 124 - 0
Texture-Studio-master/filterscripts/tstudio/dayzcars.pwn

@@ -0,0 +1,124 @@
+YCMD:420carexport(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Export current vehicle to 420 DayZ format.");
+		return 1;
+	}
+
+	MapOpenCheck();
+	
+	VehicleCheck(playerid);
+
+	// Ask for a map name
+	inline Export420Car(epid, edialogid, eresponse, elistitem, string:etext[])
+	{
+	    #pragma unused elistitem, edialogid, epid
+	    if(eresponse)
+	    {
+			// Was a map name supplied ?
+			if(!isnull(etext))
+			{
+				new exportcar[256];
+
+				// Check map name length
+				if(strlen(etext) >= 20)
+				{
+					SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+					SendClientMessage(playerid, STEALTH_YELLOW, "Choose a shorter car name to export to...");
+					return 1;
+				}
+
+				// Format the output name
+				format(exportcar, sizeof(exportcar), "tstudio/420ExportCars/%s.txt", etext);
+
+				// Map exists ask to remove
+			    if(fexist(exportcar))
+				{
+					inline RemoveCar(rpid, rdialogid, rresponse, rlistitem, string:rtext[])
+					{
+				        #pragma unused rlistitem, rdialogid, rpid, rtext
+
+						// Remove map and export
+				        if(rresponse)
+				        {
+				            fremove(exportcar);
+				            DayzCarExport(playerid, exportcar);
+				        }
+					}
+					Dialog_ShowCallback(playerid, using inline RemoveCar, DIALOG_STYLE_MSGBOX, "Texture Studio (420 Car Export)", "A export exists with this name replace?", "Ok", "Cancel");
+				}
+				// We can start the export
+				else DayzCarExport(playerid, exportcar);
+			}
+			else
+			{
+				SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_YELLOW, "You can't export a 420 DayZ car with no name");
+				Dialog_ShowCallback(playerid, using inline Export420Car, DIALOG_STYLE_INPUT, "Texture Studio (420 Car Export)", "Enter a export car name", "Ok", "Cancel");
+			}
+		}
+	}
+	Dialog_ShowCallback(playerid, using inline Export420Car, DIALOG_STYLE_INPUT, "Texture Studio (420 Car Export)", "Enter a export car name", "Ok", "Cancel");
+	return 1;
+}
+
+
+/*
+	{
+		VEHICLE_TYPE_LOCKED, 468, 3, 135, 135, -1, 1, 0, 0, 0, 4.0,
+		{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+		{ 3026, 3026, 19477, 18634, 18702, INVALID_OBJECT_ID, INVALID_OBJECT_ID, INVALID_OBJECT_ID, INVALID_OBJECT_ID, INVALID_OBJECT_ID },
+		{
+			2644, 0, 0, 0, 0, 0,
+			2644, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0
+		},
+		{
+			0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0
+		},
+		{ 0,0,1,0,0,0,0,0,0,0 },
+		{ "none|none|Haze |none|none|none|none|none|none|none" },
+		{ 0,0,0,0,0,0,0,0,0,0 },
+		{ 0,0,130,0,0,0,0,0,0,0 },
+		{ 0,0,0,0,0,0,0,0,0,0 },
+		{ 0,0,-16715022,0,0,0,0,0,0,0 },
+		{ 0,0,0,0,0,0,0,0,0,0 },
+		{ 0,0,0,0,0,0,0,0,0,0 },
+		{ 0,0,25,0,0,0,0,0,0,0 },
+		{ -0.100000, 0.089000, 0.085000, -0.128000, 0.108000, 0.0, 0.0, 0.0, 0.0, 0.0 },
+		{ 0.298000, 0.298000, 0.629000, -0.349000, -0.759000, 0.0, 0.0, 0.0, 0.0, 0.0 },
+		{ -0.008000, -0.008000, -0.717000, 0.200000, -1.429000, 0.0, 0.0, 0.0, 0.0, 0.0 },
+		{ 180.000000, 180.000000, -10.000000, 12.899000, 0.000000, 0.0, 0.0, 0.0, 0.0, 0.0 },
+		{ 90.000000, 90.000000, 1.000000, 5.000000, 0.000000, 0.0, 0.0, 0.0, 0.0, 0.0 },
+		{ 450.000000, 270.000000, 363.299011, 176.000000, 0.000000, 0.0, 0.0, 0.0, 0.0, 0.0 }
+	}
+
+
+*/
+
+static DayzCarExport(playerid, exportcar)
+{
+	new File:f = f_open(exportcar, io_write);
+	
+	
+
+
+}

+ 18 - 0
Texture-Studio-master/filterscripts/tstudio/debugging.pwn

@@ -0,0 +1,18 @@
+public OnPlayerCommandText(playerid, cmdtext[]) 
+{
+	print(cmdtext);
+
+	#if defined DB_OnPlayerCommandText
+		DB_OnPlayerCommandText(playerid, cmdtext);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerCommandText
+	#undef OnPlayerCommandText
+#else
+	#define _ALS_OnPlayerCommandText
+#endif
+#define OnPlayerCommandText DB_OnPlayerCommandText
+#if defined DB_OnPlayerCommandText
+	forward DB_OnPlayerCommandText(playerid, cmdtext[]);
+#endif

+ 442 - 0
Texture-Studio-master/filterscripts/tstudio/flymode.pwn

@@ -0,0 +1,442 @@
+//-------------------------------------------------
+//
+// This is an example of using the AttachCameraToObject function
+// to create a no-clip flying camera.
+//
+// h02 2012
+//
+// SA-MP 0.3e and above
+//
+//-------------------------------------------------
+
+
+// Default Move Speed
+#define MOVE_SPEED              100.0
+#define ACCEL_RATE              0.03
+#define ACCEL_MODE              true
+
+// Players Mode
+#define CAMERA_MODE_NONE    	0
+#define CAMERA_MODE_FLY     	1
+
+// Key state definitions
+#define MOVE_FORWARD    		1
+#define MOVE_BACK       		2
+#define MOVE_LEFT       		3
+#define MOVE_RIGHT      		4
+#define MOVE_FORWARD_LEFT       5
+#define MOVE_FORWARD_RIGHT      6
+#define MOVE_BACK_LEFT          7
+#define MOVE_BACK_RIGHT         8
+
+// Enumeration for storing data about the player
+enum noclipenum
+{
+	cameramode,
+	flyobject,
+	mode,
+	lrold,
+	udold,
+	lastmove,
+	Float:accelmul,
+    
+    Float:accelrate,
+    Float:maxspeed,
+    bool:accel
+}
+new noclipdata[MAX_PLAYERS][noclipenum];
+
+new bool:FlyMode[MAX_PLAYERS];
+
+#define InFlyMode(%0) FlyMode[%0]
+
+//--------------------------------------------------
+
+tsfunc IsFlyMode(playerid) { return noclipdata[playerid][cameramode]; }
+
+
+public OnFilterScriptExit()
+{
+	// If any players are still in edit mode, boot them out before the filterscript unloads
+	for(new x; x<MAX_PLAYERS; x++)
+	{
+		if(noclipdata[x][cameramode] == CAMERA_MODE_FLY) CancelFlyMode(x);
+	}
+
+	#if defined FM_OnFilterScriptExit
+		FM_OnFilterScriptExit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptExit
+	#undef OnFilterScriptExit
+#else
+	#define _ALS_OnFilterScriptExit
+#endif
+#define OnFilterScriptExit FM_OnFilterScriptExit
+#if defined FM_OnFilterScriptExit
+	forward FM_OnFilterScriptExit();
+#endif
+
+//--------------------------------------------------
+
+public OnPlayerConnect(playerid)
+{
+	// Reset the data belonging to this player slot
+	noclipdata[playerid][cameramode] 	= CAMERA_MODE_NONE;
+	noclipdata[playerid][lrold]	   	 	= 0;
+	noclipdata[playerid][udold]   		= 0;
+	noclipdata[playerid][mode]   		= 0;
+	noclipdata[playerid][lastmove]   	= 0;
+	noclipdata[playerid][accelmul]   	= 0.0;
+	noclipdata[playerid][accel]   	    = ACCEL_MODE;
+	noclipdata[playerid][accelrate]   	= ACCEL_RATE;
+	noclipdata[playerid][maxspeed]   	= MOVE_SPEED;
+	FlyMode[playerid] = false;
+
+	#if defined FM_OnPlayerConnect
+		FM_OnPlayerConnect(playerid);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerConnect
+	#undef OnPlayerConnect
+#else
+	#define _ALS_OnPlayerConnect
+#endif
+#define OnPlayerConnect FM_OnPlayerConnect
+#if defined FM_OnPlayerConnect
+	forward FM_OnPlayerConnect(playerid);
+#endif
+
+//--------------------------------------------------
+
+public OnPlayerDisconnect(playerid, reason)
+{
+	if(noclipdata[playerid][cameramode] == CAMERA_MODE_FLY) CancelFlyMode(playerid);
+
+	#if defined FM_OnPlayerDisconnect
+		FM_OnPlayerDisconnect(playerid, reason);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerDisconnect
+	#undef OnPlayerDisconnect
+#else
+	#define _ALS_OnPlayerDisconnect
+#endif
+#define OnPlayerDisconnect FM_OnPlayerDisconnect
+#if defined FM_OnPlayerDisconnect
+	forward FM_OnPlayerDisconnect(playerid, reason);
+#endif
+
+//--------------------------------------------------
+
+YCMD:flymode(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Toggle flymode.");
+		return 1;
+	}
+
+    // Place the player in and out of edit mode
+	if(FlyMode[playerid]) CancelFlyMode(playerid);
+	else StartFlyMode(playerid);
+	return 1;
+}
+
+YCMD:fmspeed(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Change flymode speed, must be 5-200.");
+		return 1;
+	}
+
+    new Float:newspeed;
+    sscanf(arg, "F(-1.0)", newspeed);
+    
+    if(newspeed == -1.0)
+        newspeed = MOVE_SPEED;
+    else if(newspeed < 5.0)
+        newspeed = 5.0;
+    else if(newspeed > 200.0)
+        newspeed = 200.0;
+	
+	noclipdata[playerid][maxspeed] = newspeed;
+    SendClientMessage(playerid, STEALTH_GREEN, sprintf("Flymode max speed set to %0.2f", newspeed));
+	return 1;
+}
+
+YCMD:fmaccel(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Change flymode acceleration rate, must be 0.005 - 0.05");
+		return 1;
+	}
+
+    new Float:newacc;
+    sscanf(arg, "F(-1.0)", newacc);
+    
+    if(newacc == -1.0)
+        newacc = ACCEL_RATE;
+    else if(newacc < 0.005)
+        newacc = 0.005;
+    else if(newacc > 0.05)
+        newacc = 0.05;
+	
+	noclipdata[playerid][accelrate] = newacc;
+    SendClientMessage(playerid, STEALTH_GREEN, sprintf("Flymode max speed set to %0.3f", newacc));
+	return 1;
+}
+
+YCMD:fmtoggle(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Toggle flymode acceleration.");
+		return 1;
+	}
+
+	noclipdata[playerid][accel] = !noclipdata[playerid][accel];
+	SendClientMessage(playerid, STEALTH_GREEN, sprintf("Flymode acceleration toggled %s", noclipdata[playerid][accel] ? ("on") : ("off")));
+	return 1;
+}
+
+//--------------------------------------------------
+
+public OnPlayerUpdate(playerid)
+{
+	if(noclipdata[playerid][cameramode] == CAMERA_MODE_FLY)
+	{
+		new keys,ud,lr;
+		GetPlayerKeys(playerid,keys,ud,lr);
+		
+
+		if(noclipdata[playerid][mode] && (GetTickCount() - noclipdata[playerid][lastmove] > 100))
+		{
+		    // If the last move was > 100ms ago, process moving the object the players camera is attached to
+		    MoveCamera(playerid);
+		}
+
+		// Is the players current key state different than their last keystate?
+		if(noclipdata[playerid][udold] != ud || noclipdata[playerid][lrold] != lr)
+		{
+			if((noclipdata[playerid][udold] != 0 || noclipdata[playerid][lrold] != 0) && ud == 0 && lr == 0)
+			{   // All keys have been released, stop the object the camera is attached to and reset the acceleration multiplier
+				StopDynamicObject(noclipdata[playerid][flyobject]);
+				noclipdata[playerid][mode]      = 0;
+				noclipdata[playerid][accelmul]  = 0.0;
+			}
+			else
+			{   // Indicates a new key has been pressed
+
+			    // Get the direction the player wants to move as indicated by the keys
+				noclipdata[playerid][mode] = GetMoveDirectionFromKeys(ud, lr);
+
+				// Process moving the object the players camera is attached to
+				MoveCamera(playerid);
+			}
+		}
+		noclipdata[playerid][udold] = ud; noclipdata[playerid][lrold] = lr; // Store current keys pressed for comparison next update
+
+		#if defined FM_OnPlayerUpdate
+			FM_OnPlayerUpdate(playerid);
+		#endif
+		return 0;
+	}
+
+	#if defined FM_OnPlayerUpdate
+		FM_OnPlayerUpdate(playerid);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerUpdate
+	#undef OnPlayerUpdate
+#else
+	#define _ALS_OnPlayerUpdate
+#endif
+#define OnPlayerUpdate FM_OnPlayerUpdate
+#if defined FM_OnPlayerUpdate
+	forward FM_OnPlayerUpdate(playerid);
+#endif
+
+//--------------------------------------------------
+
+tsfunc GetMoveDirectionFromKeys(ud, lr)
+{
+	new direction = 0;
+	
+    if(lr < 0)
+	{
+		if(ud < 0) 		direction = MOVE_FORWARD_LEFT; 	// Up & Left key pressed
+		else if(ud > 0) direction = MOVE_BACK_LEFT; 	// Back & Left key pressed
+		else            direction = MOVE_LEFT;          // Left key pressed
+	}
+	else if(lr > 0) 	// Right pressed
+	{
+		if(ud < 0)      direction = MOVE_FORWARD_RIGHT;  // Up & Right key pressed
+		else if(ud > 0) direction = MOVE_BACK_RIGHT;     // Back & Right key pressed
+		else			direction = MOVE_RIGHT;          // Right key pressed
+	}
+	else if(ud < 0) 	direction = MOVE_FORWARD; 	// Up key pressed
+	else if(ud > 0) 	direction = MOVE_BACK;		// Down key pressed
+	
+	return direction;
+}
+
+//--------------------------------------------------
+
+tsfunc MoveCamera(playerid)
+{
+	new Float:FV[3], Float:CP[3];
+	//GetPlayerCameraPos(playerid, CP[0], CP[1], CP[2]);          // 	Cameras position in space
+	GetDynamicObjectPos(noclipdata[playerid][flyobject], CP[0], CP[1], CP[2]);          // 	Cameras position in space
+    GetPlayerCameraFrontVector(playerid, FV[0], FV[1], FV[2]);  //  Where the camera is looking at
+
+	// Increases the acceleration multiplier the longer the key is held
+	if(noclipdata[playerid][accelmul] <= 1.0) noclipdata[playerid][accelmul] += noclipdata[playerid][accelrate];
+
+	// Determine the speed to move the camera based on the acceleration multiplier
+	new Float:speed = noclipdata[playerid][maxspeed] * (noclipdata[playerid][accel] ? noclipdata[playerid][accelmul] : 1.0);
+
+	// Calculate the cameras next position based on their current position and the direction their camera is facing
+	new Float:X, Float:Y, Float:Z;
+	GetNextCameraPosition(noclipdata[playerid][mode], CP, FV, X, Y, Z);
+	MoveDynamicObject(noclipdata[playerid][flyobject], X, Y, Z, speed, 0.0, 0.0, 0.0);
+
+    //SendClientMessage(playerid, -1, sprintf("(%0.1f, %0.1f, %0.1f) - (%0.1f, %0.1f, %0.1f) - (%0.1f, %0.1f, %0.1f)", CP[0], CP[1], CP[2], FV[0], FV[1], FV[2], X, Y, Z));
+    
+	// Store the last time the camera was moved as now
+	noclipdata[playerid][lastmove] = GetTickCount();
+	return 1;
+}
+
+tsfunc SetFlyModePos(playerid, Float:x, Float:y, Float:z)
+{
+	if(FlyMode[playerid])
+	{
+		SetDynamicObjectPos(noclipdata[playerid][flyobject], x, y, z);
+		noclipdata[playerid][lastmove] = GetTickCount();
+		return 1;
+	}
+	return 0;
+}
+tsfunc GetFlyModePos(playerid, &Float:x, &Float:y, &Float:z)
+{
+	if(FlyMode[playerid])
+	{
+		GetDynamicObjectPos(noclipdata[playerid][flyobject], x, y, z);
+		return 1;
+	}
+	return 0;
+}
+
+
+//--------------------------------------------------
+
+tsfunc GetNextCameraPosition(move_mode, Float:CP[3], Float:FV[3], &Float:X, &Float:Y, &Float:Z)
+{
+    // Calculate the cameras next position based on their current position and the direction their camera is facing
+    #define OFFSET_X (FV[0]*6000.0)
+	#define OFFSET_Y (FV[1]*6000.0)
+	#define OFFSET_Z (FV[2]*6000.0)
+	switch(move_mode)
+	{
+		case MOVE_FORWARD:
+		{
+			X = CP[0]+OFFSET_X;
+			Y = CP[1]+OFFSET_Y;
+			Z = CP[2]+OFFSET_Z;
+		}
+		case MOVE_BACK:
+		{
+			X = CP[0]-OFFSET_X;
+			Y = CP[1]-OFFSET_Y;
+			Z = CP[2]-OFFSET_Z;
+		}
+		case MOVE_LEFT:
+		{
+			X = CP[0]-OFFSET_Y;
+			Y = CP[1]+OFFSET_X;
+			Z = CP[2];
+		}
+		case MOVE_RIGHT:
+		{
+			X = CP[0]+OFFSET_Y;
+			Y = CP[1]-OFFSET_X;
+			Z = CP[2];
+		}
+		case MOVE_BACK_LEFT:
+		{
+			X = CP[0]+(-OFFSET_X - OFFSET_Y);
+ 			Y = CP[1]+(-OFFSET_Y + OFFSET_X);
+		 	Z = CP[2]-OFFSET_Z;
+		}
+		case MOVE_BACK_RIGHT:
+		{
+			X = CP[0]+(-OFFSET_X + OFFSET_Y);
+ 			Y = CP[1]+(-OFFSET_Y - OFFSET_X);
+		 	Z = CP[2]-OFFSET_Z;
+		}
+		case MOVE_FORWARD_LEFT:
+		{
+			X = CP[0]+(OFFSET_X  - OFFSET_Y);
+			Y = CP[1]+(OFFSET_Y  + OFFSET_X);
+			Z = CP[2]+OFFSET_Z;
+		}
+		case MOVE_FORWARD_RIGHT:
+		{
+			X = CP[0]+(OFFSET_X  + OFFSET_Y);
+			Y = CP[1]+(OFFSET_Y  - OFFSET_X);
+			Z = CP[2]+OFFSET_Z;
+		}
+	}
+}
+//--------------------------------------------------
+
+tsfunc CancelFlyMode(playerid)
+{
+	new Float:x, Float:y, Float:z;
+	GetPlayerCameraPos(playerid, x, y, z);
+
+	SetTimerEx("DelaySetPos", 2000, false, "ifff", playerid, x, y, z);
+
+	FlyMode[playerid] = false;
+	CancelEdit(playerid);
+	TogglePlayerSpectating(playerid, false);
+
+	DestroyDynamicObject(noclipdata[playerid][flyobject]);
+	noclipdata[playerid][cameramode] = CAMERA_MODE_NONE;
+	return 1;
+}
+
+forward DelaySetPos(playerid, Float:x, Float:y, Float:z);
+public DelaySetPos(playerid, Float:x, Float:y, Float:z) { SetPlayerPos(playerid, x, y, z); }
+
+//--------------------------------------------------
+
+tsfunc StartFlyMode(playerid)
+{
+	// Create an invisible object for the players camera to be attached to
+	new Float:X, Float:Y, Float:Z;
+	GetPlayerPos(playerid, X, Y, Z);
+	noclipdata[playerid][flyobject] = CreateDynamicObject(19300, X, Y, Z, 0.0, 0.0, 0.0, .playerid = playerid, .streamdistance = 300.0, .drawdistance = 300.0);
+
+	// Place the player in spectating mode so objects will be streamed based on camera location
+	TogglePlayerSpectating(playerid, true);
+	// Attach the players camera to the created object
+	AttachCameraToDynamicObject(playerid, noclipdata[playerid][flyobject]);
+
+	FlyMode[playerid] = true;
+	noclipdata[playerid][cameramode] = CAMERA_MODE_FLY;
+	return 1;
+}
+
+//--------------------------------------------------

+ 55 - 0
Texture-Studio-master/filterscripts/tstudio/fontdata.pwn

@@ -0,0 +1,55 @@
+// Font Names
+stock const FontNames[][] = {
+	"Ariel",
+	"courier",
+	"Webdings",
+	"Wingdings",
+	"GTAWEAPON3",
+	"Calibri",
+	"Engravers MT",
+	"Quartz MS",
+	"Segoe Keycaps",
+	"Fixedsys"
+};
+
+// Font sizes
+stock const FontSizes[] = {
+	OBJECT_MATERIAL_SIZE_32x32,
+	OBJECT_MATERIAL_SIZE_64x32,
+	OBJECT_MATERIAL_SIZE_64x64,
+	OBJECT_MATERIAL_SIZE_128x32,
+	OBJECT_MATERIAL_SIZE_128x64,
+	OBJECT_MATERIAL_SIZE_128x128,
+	OBJECT_MATERIAL_SIZE_256x32,
+	OBJECT_MATERIAL_SIZE_256x64,
+	OBJECT_MATERIAL_SIZE_256x128,
+	OBJECT_MATERIAL_SIZE_256x256,
+	OBJECT_MATERIAL_SIZE_512x64,
+	OBJECT_MATERIAL_SIZE_512x128,
+	OBJECT_MATERIAL_SIZE_512x256,
+	OBJECT_MATERIAL_SIZE_512x512
+};
+
+// Font Names For Sizes
+stock const FontSizeNames[][] = {
+	"32 x 32",
+	"64 x 32",
+	"64 x 64",
+	"128 x 32",
+	"128 x 64",
+	"128 x 128",
+	"256 x 32",
+	"256 x 64",
+	"256 x 128",
+	"256 x 256",
+	"512 x 64",
+	"512 x 128",
+	"512 x 256",
+	"512 x 512"
+};
+
+stock const AlignmentNames[][] = {
+	"Right",
+	"Left",
+	"Center"
+};

+ 2399 - 0
Texture-Studio-master/filterscripts/tstudio/groups.pwn

@@ -0,0 +1,2399 @@
+
+// Group objects
+new Text3D:GroupObjectText[MAX_PLAYERS][MAX_TEXTURE_OBJECTS];
+new bool:GroupedObjects[MAX_PLAYERS][MAX_TEXTURE_OBJECTS];
+new Float:PivotOffset[MAX_PLAYERS][XYZ];
+new Float:LastPivot[MAX_PLAYERS][XYZR];
+new Float:LastGroupPosition[MAX_PLAYERS][XYZ];
+new bool:PivotReset[MAX_PLAYERS];
+
+public OnFilterScriptInit()
+{
+	for(new i = 0; i < MAX_PLAYERS; i++)
+	{
+		for(new j = 0; j < MAX_TEXTURE_OBJECTS; j++)
+		{
+	        GroupObjectText[i][j] = Text3D:-1;
+	    }
+	}
+
+	#if defined GR_OnFilterScriptInit
+		GR_OnFilterScriptInit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptInit
+	#undef OnFilterScriptInit
+#else
+	#define _ALS_OnFilterScriptInit
+#endif
+#define OnFilterScriptInit GR_OnFilterScriptInit
+#if defined GR_OnFilterScriptInit
+	forward GR_OnFilterScriptInit();
+#endif
+
+
+public OnPlayerDisconnect(playerid, reason)
+{
+	for(new i = 0; i < MAX_TEXTURE_OBJECTS; i++)
+	{
+		if(_:GroupObjectText[playerid][i])
+		{
+			DestroyDynamic3DTextLabel(GroupObjectText[playerid][i]);
+	        GroupObjectText[playerid][i] = Text3D:-1;
+		}
+    }
+	ClearGroup(playerid);
+
+	#if defined GR_OnPlayerDisconnect
+		GR_OnPlayerDisconnect(playerid, reason);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerDisconnect
+	#undef OnPlayerDisconnect
+#else
+	#define _ALS_OnPlayerDisconnect
+#endif
+#define OnPlayerDisconnect GR_OnPlayerDisconnect
+#if defined GR_OnPlayerDisconnect
+	forward GR_OnPlayerDisconnect(playerid, reason);
+#endif
+
+HideGroupLabels(playerid)
+{
+	for(new i = 0; i < MAX_TEXTURE_OBJECTS; i++)
+	{
+		if(_:GroupObjectText[playerid][i])
+		{
+            UpdateDynamic3DTextLabelText(GroupObjectText[playerid][i], 0, "");
+		}
+    }
+}
+
+ShowGroupLabels(playerid)
+{
+	for(new i = 0; i < MAX_TEXTURE_OBJECTS; i++)
+	{
+		if(_:GroupObjectText[playerid][i])
+		{
+            UpdateDynamic3DTextLabelText(GroupObjectText[playerid][i], 0x7D26CDFF, "Grouped");
+		}
+    }
+}
+
+
+
+
+public OnUpdateGroup3DText(index)
+{
+	foreach(new i : Player)
+	{
+		if(_:GroupObjectText[i][index] != -1)
+		{
+			DestroyDynamic3DTextLabel(GroupObjectText[i][index]);
+			GroupObjectText[i][index] = Text3D:-1;
+		}
+
+        if(TextOption[tShowText] && TextOption[tShowGrouped] && GroupedObjects[i][index])
+        {
+			// 3D Text Label (To identify objects)
+			new line[32];
+			format(line, sizeof(line), "Grouped");
+
+			// Shows the models index
+		    GroupObjectText[i][index] = CreateDynamic3DTextLabel(line, 0x7D26CDFF, ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ]+0.5, TEXT3D_DRAW_DIST, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0,  -1, -1, i);
+
+			Streamer_Update(i);
+        }
+	}
+	return 1;
+}
+
+public OnDeleteGroup3DText(index)
+{
+	foreach(new i : Player)
+	{
+        if(GroupedObjects[i][index])
+        {
+			DestroyDynamic3DTextLabel(GroupObjectText[i][index]);
+			GroupObjectText[i][index] = Text3D:-1;
+		}
+	}
+	return 1;
+}
+
+
+public OnPlayerSelectDynamicObject(playerid, objectid, modelid, Float:x, Float:y, Float:z)
+{
+	if(GetEditMode(playerid) == EDIT_MODE_GROUP)
+	{
+	    new Keys,ud,lr,index;
+	    GetPlayerKeys(playerid,Keys,ud,lr);
+
+		// Find edit object
+		foreach(new i : Objects)
+		{
+			// Object found
+		    if(ObjectData[i][oID] == objectid)
+			{
+				index = i;
+			    break;
+			}
+		}
+        
+        if(!CanSelectObject(playerid, index))
+            SendClientMessage(playerid, STEALTH_YELLOW, "You can not select objects in this object's group");
+        else
+        {
+            SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+            // Try and add to group
+            if(Keys & KEY_CTRL_BACK || (InFlyMode(playerid) && (Keys & KEY_SECONDARY_ATTACK)))
+            {
+                if(GroupedObjects[playerid][index]) SendClientMessage(playerid, STEALTH_YELLOW, "Object is already in your group selection");
+                else
+                {
+                    SendClientMessage(playerid, STEALTH_GREEN, "Object added to your group selection");
+                    GroupedObjects[playerid][index] = true;
+                    OnUpdateGroup3DText(index);
+
+                }
+            }
+
+            // Try and remove from group
+            else if(Keys & KEY_WALK)
+            {
+                if(!GroupedObjects[playerid][index]) SendClientMessage(playerid, STEALTH_YELLOW, "Object is not in your group selection");
+                else
+                {
+                    SendClientMessage(playerid, STEALTH_GREEN, "Object removed from your group selection");
+                    GroupedObjects[playerid][index] = false;
+                    OnUpdateGroup3DText(index);
+                }
+            }
+            else
+            {
+                SendClientMessage(playerid, STEALTH_YELLOW, "Hold the 'H' ('Enter' in /flymode) key and click a object to select it");
+                SendClientMessage(playerid, STEALTH_YELLOW, "Hold the 'Walk' key and click a object to deselect it");
+
+            }
+        }
+	}
+
+	#if defined GR_OnPlayerSelectDynamicObject
+		GR_OnPlayerSelectDynamicObject(playerid, objectid, modelid, Float:x, Float:y, Float:z);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerSelectDynamicObj
+	#undef OnPlayerSelectDynamicObject
+#else
+	#define _ALS_OnPlayerSelectDynamicObj
+#endif
+#define OnPlayerSelectDynamicObject GR_OnPlayerSelectDynamicObject
+#if defined GR_OnPlayerSelectDynamicObject
+	forward GR_OnPlayerSelectDynamicObject(playerid, objectid, modelid, Float:x, Float:y, Float:z);
+#endif
+
+OnPlayerKeyStateGroupChange(playerid, newkeys, oldkeys)
+{
+	#pragma unused newkeys
+    if(GetEditMode(playerid) == EDIT_MODE_OBJECTGROUP)
+    {
+		if(oldkeys & KEY_WALK)
+		{
+			if(PivotReset[playerid] == false) return 1;
+			SendClientMessage(playerid, STEALTH_GREEN, "Pivot has been set");
+			PivotReset[playerid] = false;
+			return 1;
+		}
+    }
+    return 0;
+}
+
+OnPlayerEditDOGroup(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
+{
+	#pragma unused objectid
+	if(response == EDIT_RESPONSE_FINAL)
+	{
+		// Get the center (never changes)
+		new Float:gCenterX, Float:gCenterY, Float:gCenterZ;
+		GetGroupCenter(playerid, gCenterX, gCenterY, gCenterZ);
+
+		new time = GetTickCount();
+
+		db_begin_transaction(EditMap);
+		foreach(new i : Objects)
+		{
+	   		if(GroupedObjects[playerid][i])
+			{
+				SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+
+				new Float:offx, Float:offy, Float:offz;
+				offx = (ObjectData[i][oX] + (LastGroupPosition[playerid][xPos] - gCenterX)) - PivotOffset[playerid][xPos];
+				offy = (ObjectData[i][oY] + (LastGroupPosition[playerid][yPos] - gCenterY)) - PivotOffset[playerid][yPos];
+				offz = (ObjectData[i][oZ] + (LastGroupPosition[playerid][zPos] - gCenterZ)) - PivotOffset[playerid][zPos];
+
+                AttachObjectToPoint_GroupEdit(i, offx, offy, offz, x, y, z, rx, ry, rz, ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+				SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+  				SetDynamicObjectRot(ObjectData[i][oID], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+
+			    sqlite_UpdateObjectPos(i);
+
+			    UpdateObject3DText(i);
+			}
+		}
+		db_end_transaction(EditMap);
+
+		EditingMode[playerid] = false;
+		SetEditMode(playerid, EDIT_MODE_NONE);
+
+		DestroyDynamicObject(PivotObject[playerid]);
+	}
+	else if(response == EDIT_RESPONSE_UPDATE)
+	{
+
+		// Get the center (never changes)
+		new Float:gCenterX, Float:gCenterY, Float:gCenterZ;
+		GetGroupCenter(playerid, gCenterX, gCenterY, gCenterZ);
+
+	    new Keys,ud,lr;
+	    GetPlayerKeys(playerid,Keys,ud,lr);
+
+		if(Keys & KEY_WALK)
+		{
+			if(!PivotReset[playerid])
+			{
+		       	SetDynamicObjectPos(PivotObject[playerid], LastGroupPosition[playerid][xPos], LastGroupPosition[playerid][yPos], LastGroupPosition[playerid][zPos]);
+				SendClientMessage(playerid, STEALTH_YELLOW, "Save your object before changing the pivot again");
+			}
+			else
+			{
+				PivotOffset[playerid][xPos] = x - LastPivot[playerid][xPos];
+				PivotOffset[playerid][yPos] = y - LastPivot[playerid][yPos];
+				PivotOffset[playerid][zPos] = z - LastPivot[playerid][zPos];
+
+				SetDynamicObjectRot(PivotObject[playerid], 0.0, 0.0, 0.0);
+			}
+		}
+
+		else
+		{
+			foreach(new i : Objects)
+			{
+		   		if(GroupedObjects[playerid][i])
+				{
+					new Float:offx, Float:offy, Float:offz, Float:newx, Float:newy, Float:newz, Float:newrx, Float:newry, Float:newrz;
+					offx = (ObjectData[i][oX] + (x - gCenterX)) - PivotOffset[playerid][xPos];
+					offy = (ObjectData[i][oY] + (y - gCenterY)) - PivotOffset[playerid][yPos];
+					offz = (ObjectData[i][oZ] + (z - gCenterZ)) - PivotOffset[playerid][zPos];
+
+                    AttachObjectToPoint_GroupEdit(i, offx, offy, offz, x, y, z, rx, ry, rz, newx, newy, newz, newrx, newry, newrz);
+					SetDynamicObjectPos(ObjectData[i][oID], newx, newy, newz);
+	  				SetDynamicObjectRot(ObjectData[i][oID], newrx, newry, newrz);
+				}
+			}
+
+			LastGroupPosition[playerid][xPos] = x - PivotOffset[playerid][xPos];
+			LastGroupPosition[playerid][yPos] = y - PivotOffset[playerid][yPos];
+			LastGroupPosition[playerid][zPos] = z - PivotOffset[playerid][zPos];
+
+			LastPivot[playerid][xPos] = x;
+			LastPivot[playerid][yPos] = y;
+			LastPivot[playerid][zPos] = z;
+
+			LastPivot[playerid][xPos] = rx;
+			LastPivot[playerid][yPos] = ry;
+			LastPivot[playerid][zPos] = rz;
+
+
+			PivotReset[playerid] = false;
+		}
+	}
+
+	else if(response == EDIT_RESPONSE_CANCEL)
+	{
+		foreach(new i : Objects)
+		{
+	   		if(GroupedObjects[playerid][i])
+			{
+				SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+  				SetDynamicObjectRot(ObjectData[i][oID], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+
+				EditingMode[playerid] = false;
+				SetEditMode(playerid, EDIT_MODE_NONE);
+				DestroyDynamicObject(PivotObject[playerid]);
+			}
+		}
+	}
+	return 1;
+}
+
+tsfunc ClearGroup(playerid)
+{
+	for(new i = 0; i < MAX_TEXTURE_OBJECTS; i++)
+	{
+		GroupedObjects[playerid][i] = false;
+		OnUpdateGroup3DText(i);
+	}
+	return 1;
+}
+
+tsfunc GroupUpdate(index)
+{
+	foreach(new i : Player)
+	{
+        GroupedObjects[i][index] = false;
+	}
+	return 1;
+}
+
+#if defined COMPILE_MANGLE
+tsfunc GroupRotate(playerid, Float:rx, Float:ry, Float:rz, update = true)
+{
+	new Float:gCenterX, Float:gCenterY, Float:gCenterZ;
+	GetGroupCenter(playerid, gCenterX, gCenterY, gCenterZ);
+
+	// Loop through all objects and perform rotation calculations
+	db_begin_transaction(EditMap);
+	foreach(new i : Objects)
+	{
+		if(GroupedObjects[playerid][i])
+		{
+			AttachObjectToPoint(i, gCenterX, gCenterY, gCenterZ, rx, ry, rz, ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+			if(update)
+			{
+				SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+				SetDynamicObjectRot(ObjectData[i][oID], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+				UpdateObject3DText(i);
+				sqlite_UpdateObjectPos(i);
+			}
+		}
+	}
+	db_end_transaction(EditMap);
+}
+#endif
+
+YCMD:ginfront(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Move all grouped objects in front of the player.");
+		return 1;
+	}
+	MapOpenCheck();
+	new Float:radius;
+	if(GetGroupRadius(playerid, radius))
+	{
+		radius += 1.0;
+		new Float:x, Float:y, Float:z, Float:gcx, Float:gcy, Float:gcz, count, line[128];
+		GetPlayerPos(playerid, x, y, z);
+		GetPosFaInFrontOfPlayer(playerid, radius, x, y, z, gcz);
+		GetGroupCenter(playerid, gcx, gcy, gcz);
+		
+		x -= gcx;
+		y -= gcy;
+		z -= gcz;
+
+		new time = GetTickCount();
+
+		db_begin_transaction(EditMap);
+		foreach(new i : Objects)
+		{
+			if(GroupedObjects[playerid][i])
+			{
+				SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+				
+				ObjectData[i][oX] += x;
+				ObjectData[i][oY] += y;
+				ObjectData[i][oZ] += z;
+				
+				SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+				UpdateObject3DText(i);
+				sqlite_UpdateObjectPos(i);
+				count++;
+			}
+		}
+		db_end_transaction(EditMap);
+		
+		format(line, sizeof(line), "Moved %i grouped objects to in front", count);
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, line);
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "You do not have any objects grouped");
+	}
+	return 1;
+}
+
+GetGroupRadius(playerid, &Float:radius)
+{
+	new Float:highX = -9999999.0;
+	new Float:highY = -9999999.0;
+	new Float:highZ = -9999999.0;
+
+	new Float:lowX  = 9999999.0;
+	new Float:lowY  = 9999999.0;
+	new Float:lowZ  = 9999999.0;
+
+	new count;
+
+	foreach(new i : Objects)
+	{
+		if(GroupedObjects[playerid][i])
+		{
+			if(ObjectData[i][oX] > highX) highX = ObjectData[i][oX];
+			if(ObjectData[i][oY] > highY) highY = ObjectData[i][oY];
+			if(ObjectData[i][oZ] > highZ) highZ = ObjectData[i][oZ];
+			if(ObjectData[i][oX] < lowX) lowX = ObjectData[i][oX];
+			if(ObjectData[i][oY] < lowY) lowY = ObjectData[i][oY];
+			if(ObjectData[i][oZ] < lowZ) lowZ = ObjectData[i][oZ];
+			count++;
+		}
+	}
+
+	// Not enough objects grouped
+	if(count < 1) return 0;
+
+	radius = floatdiv(getdist3d(highX, highY, highZ, lowX, lowY, lowZ), 2);
+
+	return 1;
+}
+
+tsfunc GetGroupCenter(playerid, &Float:X, &Float:Y, &Float:Z)
+{
+	new Float:highX = -9999999.0;
+	new Float:highY = -9999999.0;
+	new Float:highZ = -9999999.0;
+
+	new Float:lowX  = 9999999.0;
+	new Float:lowY  = 9999999.0;
+	new Float:lowZ  = 9999999.0;
+
+	new count;
+
+	foreach(new i : Objects)
+	{
+		if(GroupedObjects[playerid][i])
+		{
+			if(ObjectData[i][oX] > highX) highX = ObjectData[i][oX];
+			if(ObjectData[i][oY] > highY) highY = ObjectData[i][oY];
+			if(ObjectData[i][oZ] > highZ) highZ = ObjectData[i][oZ];
+			if(ObjectData[i][oX] < lowX) lowX = ObjectData[i][oX];
+			if(ObjectData[i][oY] < lowY) lowY = ObjectData[i][oY];
+			if(ObjectData[i][oZ] < lowZ) lowZ = ObjectData[i][oZ];
+			count++;
+		}
+	}
+
+	// Not enough objects grouped
+	if(count < 1) return 0;
+
+
+	X = (highX + lowX) / 2;
+	Y = (highY + lowY) / 2;
+	Z = (highZ + lowZ) / 2;
+
+	return 1;
+}
+
+YCMD:setgroup(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Sets the group ID of currently selected objects.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    NoEditingMode(playerid);
+
+    if (!(0 <= strval(arg) < MAX_GROUPS))
+		return SendClientMessage(playerid, STEALTH_YELLOW, sprintf("The group id must be from 0 to %d", MAX_GROUPS - 1));
+
+    new groupid = strval(arg);
+
+    new time = GetTickCount();
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+	if(PlayerHasGroup(playerid))
+	{
+		db_begin_transaction(EditMap);
+		foreach(new i : Objects)
+		{
+			if(GroupedObjects[playerid][i])
+			{
+				SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+				ObjectData[i][oGroup] = groupid;
+				OnUpdateGroup3DText(i);
+				UpdateObject3DText(i);
+				sqlite_ObjGroup(i);
+			}
+		}
+		db_end_transaction(EditMap);
+		
+		new line[128];
+		format(line, sizeof(line), "Set all objects in your group to group: %i", groupid);
+		SendClientMessage(playerid, STEALTH_GREEN, line);
+	}
+	else SendClientMessage(playerid, STEALTH_YELLOW, "You have no objects to set to group!");
+
+	return 1;
+}
+
+YCMD:selectgroup(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Select a group of objects by group ID.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    NoEditingMode(playerid);
+
+    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+	new groupid = strval(arg);
+    
+    if(!CanSelectGroup(playerid, groupid))
+        return SendClientMessage(playerid, STEALTH_YELLOW, "You can not select this group");
+
+	if(PlayerHasGroup(playerid)) ClearGroup(playerid);
+
+	new count;
+	foreach(new i : Objects)
+	{
+	    if(ObjectData[i][oGroup] == groupid)
+		{
+		    GroupedObjects[playerid][i] = true;
+			OnUpdateGroup3DText(i);
+			UpdateObject3DText(i);
+		    count++;
+		}
+	}
+	if(count)
+	{
+		new line[128];
+
+		// Update the Group GUI
+		UpdatePlayerGSelText(playerid);
+		format(line, sizeof(line), "Selected group %i Objects: %i", groupid, count);
+		SendClientMessage(playerid, STEALTH_GREEN, line);
+	}
+	else SendClientMessage(playerid, STEALTH_YELLOW, "There are no objects with this group id");
+	return 1;
+}
+
+YCMD:gselmodel(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Select a group of objects by model ID.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    NoEditingMode(playerid);
+
+    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+	new modelid = strval(arg);
+
+	if(PlayerHasGroup(playerid)) ClearGroup(playerid);
+
+	new count;
+	foreach(new i : Objects)
+	{
+        if(!CanSelectObject(playerid, i))
+            continue;
+        
+	    if(ObjectData[i][oModel] == modelid)
+		{
+		    GroupedObjects[playerid][i] = true;
+			OnUpdateGroup3DText(i);
+			UpdateObject3DText(i);
+		    count++;
+		}
+	}
+	if(count)
+	{
+		new line[128];
+
+		// Update the Group GUI
+		UpdatePlayerGSelText(playerid);
+		format(line, sizeof(line), "Selected model %i Objects: %i", modelid, count);
+		SendClientMessage(playerid, STEALTH_GREEN, line);
+	}
+	else SendClientMessage(playerid, STEALTH_YELLOW, "There are no objects with this model id");
+	return 1;
+}
+
+
+PlayerHasGroup(playerid)
+{
+	foreach(new i : Objects)
+	{
+		if(GroupedObjects[playerid][i])
+		{
+			return 1;
+		}
+	}
+	return 0;
+}
+
+
+// Edit a group
+YCMD:editgroup(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Edit currently edited objects simultaneously.");
+		SendClientMessage(playerid, STEALTH_GREEN, "Hold 'Walk Key' to set the group rotation pivot, you can only do this once per edit.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    NoEditingMode(playerid);
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+	if(PlayerHasGroup(playerid))
+	{
+		GetGroupCenter(playerid, LastPivot[playerid][xPos], LastPivot[playerid][yPos], LastPivot[playerid][zPos]);
+
+		LastGroupPosition[playerid][xPos] = LastPivot[playerid][xPos];
+		LastGroupPosition[playerid][yPos] = LastPivot[playerid][yPos];
+		LastGroupPosition[playerid][zPos] = LastPivot[playerid][zPos];
+
+		PivotOffset[playerid][xPos] = 0.0;
+		PivotOffset[playerid][yPos] = 0.0;
+		PivotOffset[playerid][zPos] = 0.0;
+
+		PivotObject[playerid] = CreateDynamicObject(1974, LastPivot[playerid][xPos], LastPivot[playerid][yPos], LastPivot[playerid][zPos], 0.0, 0.0, 0.0, -1, -1, playerid);
+
+		Streamer_SetFloatData(STREAMER_TYPE_OBJECT, PivotObject[playerid], E_STREAMER_DRAW_DISTANCE, 3000.0);
+
+		SetDynamicObjectMaterial(PivotObject[playerid], 0, 10765, "airportgnd_sfse", "white", -256);
+
+		Streamer_Update(playerid);
+
+		EditingMode[playerid] = true;
+		PivotReset[playerid] = true;
+		SetEditMode(playerid, EDIT_MODE_OBJECTGROUP);
+	    EditDynamicObject(playerid, PivotObject[playerid]);
+
+	    SendClientMessage(playerid, STEALTH_GREEN, "Editing your group");
+	}
+	else SendClientMessage(playerid, STEALTH_YELLOW, "You must have at least one object grouped");
+
+	return 1;
+}
+
+
+YCMD:gmtset(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Set the material of all currently selected objects.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	EditCheck(playerid);
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+	if(PlayerHasGroup(playerid))
+	{
+		new mindex;
+		new tref;
+		new time = GetTickCount();
+
+		if(GetMaterials(playerid, arg, mindex, tref))
+		{
+			db_begin_transaction(EditMap);
+			foreach(new i : Objects)
+			{
+				if(GroupedObjects[playerid][i])
+				{
+					SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+					SetMaterials(i, mindex, tref);
+					UpdateObjectText(i);
+
+					if(ObjectData[i][oAttachedVehicle] > -1)
+						UpdateAttachedVehicleObject(ObjectData[i][oAttachedVehicle], i, VEHICLE_REATTACH_UPDATE);
+				}
+			}
+			db_end_transaction(EditMap);
+
+			SendClientMessage(playerid, STEALTH_GREEN, "Changed All Materials");
+
+			foreach(new i : Player)
+				Streamer_Update(i);
+		
+			UpdateTextureSlot(playerid, mindex);
+		}
+	}
+	else SendClientMessage(playerid, STEALTH_YELLOW, "You must have at least one object grouped");
+	
+	return 1;
+}
+
+
+YCMD:gmtcolor(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Set the material of all currently selected objects.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	EditCheck(playerid);
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+	if(PlayerHasGroup(playerid))
+	{
+		new mindex;
+		new time = GetTickCount();
+		new HexColor[12];
+
+		sscanf(arg, "is[12]", mindex, HexColor);
+		
+		if(mindex < 0 || mindex > MAX_MATERIALS - 1)
+		{
+			new line[128];
+			format(line, sizeof(line), "The material selection must be between <0 - %i>", MAX_MATERIALS - 1);
+			return SendClientMessage(playerid, STEALTH_YELLOW, line);
+		}
+		
+		if(IsHexValue(HexColor))
+		{
+			new hcolor;
+			sscanf(HexColor, "h", hcolor);
+			
+			db_begin_transaction(EditMap);
+			foreach(new i : Objects)
+			{
+				if(GroupedObjects[playerid][i])
+				{
+					SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+
+					ObjectData[i][oColorIndex][mindex] = hcolor;
+
+					// Destroy the object
+					DestroyDynamicObject(ObjectData[i][oID]);
+
+					// Re-create object
+					ObjectData[i][oID] = CreateDynamicObject(ObjectData[i][oModel], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ], MapSetting[mVirtualWorld], MapSetting[mInterior], -1, 300.0);
+					Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[i][oID], E_STREAMER_DRAW_DISTANCE, 300.0);
+
+					// Update the materials
+					UpdateMaterial(i);
+
+					UpdateObjectText(i);
+
+					if(ObjectData[i][oAttachedVehicle] > -1)
+						UpdateAttachedVehicleObject(ObjectData[i][oAttachedVehicle], i, VEHICLE_REATTACH_UPDATE);
+
+					// Save this material index to the data base
+					sqlite_SaveColorIndex(i);
+				}
+			}
+			db_end_transaction(EditMap);
+
+			SendClientMessage(playerid, STEALTH_GREEN, "Changed All Color");
+		}
+		else
+		{
+			SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+			SendClientMessage(playerid, STEALTH_YELLOW, "Invalid hex color.");
+			return 1;
+		}
+
+		foreach(new i : Player)
+			Streamer_Update(i);
+	
+		UpdateTextureSlot(playerid, mindex);
+	}
+	else SendClientMessage(playerid, STEALTH_YELLOW, "You must have at least one object grouped");
+	
+	return 1;
+}
+
+
+YCMD:gsel(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Select/deselect objects using the cursor.");
+		SendClientMessage(playerid, STEALTH_YELLOW, "Hold the 'H' ('Enter' in /flymode) key and click a object to select it");
+		SendClientMessage(playerid, STEALTH_YELLOW, "Hold the 'Walk' key and click a object to deselect it");
+		return 1;
+	}
+
+    NoEditingMode(playerid);
+
+    MapOpenCheck();
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+	if(Iter_Count(Objects))
+	{
+		SetEditMode(playerid, EDIT_MODE_GROUP);
+		SelectObject(playerid);
+		SendClientMessage(playerid, STEALTH_GREEN, "Entered Group Selection Mode");
+	}
+	else SendClientMessage(playerid, STEALTH_YELLOW, "There are no objects right now");
+
+	return 1;
+}
+
+YCMD:gadd(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Add an object to current selection.");
+		return 1;
+	}
+
+    MapOpenCheck();
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	if(isnull(arg)) return SendClientMessage(playerid, STEALTH_YELLOW, "You must supply an object index to group");
+	
+	new index, range;
+	sscanf(arg, "iI(-1)", index, range);
+    
+    if(range == -1 && !CanSelectObject(playerid, index))
+        return SendClientMessage(playerid, STEALTH_YELLOW, "You can not select objects in this object's group");
+        
+	if(index < 0 || (range != -1 && range < 0)) return SendClientMessage(playerid, STEALTH_YELLOW, "Index can not be less than 0");
+	if(index >= MAX_TEXTURE_OBJECTS || range >= MAX_TEXTURE_OBJECTS)
+	{
+		new line[128];
+		format(line, sizeof(line), "Index can not be greater than %i", MAX_TEXTURE_OBJECTS - 1);
+		return SendClientMessage(playerid, STEALTH_YELLOW, line);
+	}
+	if(range != -1 && range <= index) return SendClientMessage(playerid, STEALTH_YELLOW, "The range can not be more than the index.");
+	
+	if(range != -1)
+	{
+		new count;
+		for(new i = index; i <= range; i++)
+		{
+			if(CanSelectObject(playerid, i) && Iter_Contains(Objects, i) && !GroupedObjects[playerid][i])
+			{
+				// Update the Group GUI
+				UpdatePlayerGSelText(playerid);
+
+				GroupedObjects[playerid][i] = true;
+				OnUpdateGroup3DText(i);
+				
+				count++;
+			}
+		}
+		if(count) SendClientMessage(playerid, STEALTH_GREEN, sprintf("Added %i objects to your group selection", count));
+		else SendClientMessage(playerid, STEALTH_YELLOW, "No objects in that range are in your group selection");
+	}
+	else
+	{
+		if(Iter_Contains(Objects, index))
+		{
+			if(GroupedObjects[playerid][index]) SendClientMessage(playerid, STEALTH_YELLOW, "Object is already in your group selection");
+			else
+			{
+				// Update the Group GUI
+				UpdatePlayerGSelText(playerid);
+
+				SendClientMessage(playerid, STEALTH_GREEN, "Object added to your group selection");
+				GroupedObjects[playerid][index] = true;
+				OnUpdateGroup3DText(index);
+			}
+		}
+		else SendClientMessage(playerid, STEALTH_YELLOW, "No object exists on that index");
+	}
+	
+	return 1;
+}
+
+YCMD:grem(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Remove an object from your current selection.");
+		return 1;
+	}
+
+    MapOpenCheck();
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	if(isnull(arg)) return SendClientMessage(playerid, STEALTH_YELLOW, "You must supply an object index to group");
+	
+
+	new index, range;
+	sscanf(arg, "iI(-1)", index, range);
+	
+	if(index < 0 || (range != -1 && range < 0)) return SendClientMessage(playerid, STEALTH_YELLOW, "Index can not be less than 0");
+	if(index >= MAX_TEXTURE_OBJECTS || range >= MAX_TEXTURE_OBJECTS)
+	{
+		new line[128];
+		format(line, sizeof(line), "Index can not be greater than %i", MAX_TEXTURE_OBJECTS - 1);
+		return SendClientMessage(playerid, STEALTH_YELLOW, line);
+	}
+	if(range != -1 && range <= index) return SendClientMessage(playerid, STEALTH_YELLOW, "The range can not be more than the index.");
+	
+	if(range != -1)
+	{
+		new count;
+		for(new i = index; i <= range; i++)
+		{
+			if(Iter_Contains(Objects, i) && GroupedObjects[playerid][i])
+			{
+				// Update the Group GUI
+				UpdatePlayerGSelText(playerid);
+
+				GroupedObjects[playerid][i] = false;
+				OnUpdateGroup3DText(i);
+				
+				count++;
+			}
+		}
+		if(count) SendClientMessage(playerid, STEALTH_GREEN, sprintf("Removed %i objects from your group selection", count));
+		else SendClientMessage(playerid, STEALTH_YELLOW, "No objects in that range are in your group selection");
+	}
+	else
+	{
+		if(Iter_Contains(Objects, index))
+		{
+			if(!GroupedObjects[playerid][index]) SendClientMessage(playerid, STEALTH_YELLOW, "Object is not in your group selection");
+			else
+			{
+				// Update the Group GUI
+				UpdatePlayerGSelText(playerid);
+
+				SendClientMessage(playerid, STEALTH_GREEN, "Object removed from your group selection");
+				GroupedObjects[playerid][index] = false;
+				OnUpdateGroup3DText(index);
+			}
+		}
+		else SendClientMessage(playerid, STEALTH_YELLOW, "No object exists on that index");
+	}
+	
+	return 1;
+}
+
+YCMD:gclear(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Clears the current selection.");
+		return 1;
+	}
+
+	MapOpenCheck();
+    ClearGroup(playerid);
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+    SendClientMessage(playerid, STEALTH_GREEN, "Your group selection has been cleared");
+
+	// Update the Group GUI
+	UpdatePlayerGSelText(playerid);
+
+	return 1;
+}
+
+new bool:tmpgrp[MAX_TEXTURE_OBJECTS];
+
+YCMD:gclone(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Clone all currently selected objects.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+	new index;
+	new count;
+	new time = GetTickCount();
+
+	for(new i = 0; i < MAX_TEXTURE_OBJECTS; i++) { tmpgrp[i] = false; }
+
+	db_begin_transaction(EditMap);
+    foreach(new i : Objects)
+    {
+        if(GroupedObjects[playerid][i])
+        {
+			index = CloneObject(i, time);
+            GroupedObjects[playerid][i] = false;
+            tmpgrp[index] = true;
+			OnUpdateGroup3DText(i);
+			count++;
+        }
+    }
+	db_end_transaction(EditMap);
+
+    // Update grouped objects
+    for(new i = 0; i < MAX_TEXTURE_OBJECTS; i++)
+	{
+		GroupedObjects[playerid][i] = tmpgrp[i];
+		if(GroupedObjects[playerid][i] == true)
+		OnUpdateGroup3DText(i);
+	}
+
+    if(count)
+	{
+		// Update the Group GUI
+		UpdatePlayerGSelText(playerid);
+
+		new line[128];
+		format(line, sizeof(line), "Cloned group selection Objects: %i", count);
+		SendClientMessage(playerid, STEALTH_GREEN, line);
+	}
+    else SendClientMessage(playerid, STEALTH_YELLOW, "No group objects to clone");
+
+    return 1;
+}
+
+YCMD:gdelete(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Destroy all currently selected objects.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+	new count;
+	new time = GetTickCount();
+
+	db_begin_transaction(EditMap);
+    foreach(new i : Objects)
+    {
+        if(GroupedObjects[playerid][i])
+        {
+			SaveUndoInfo(i, UNDO_TYPE_DELETED, time);
+			i = DeleteDynamicObject(i);
+        	count++;
+        }
+    }
+	db_end_transaction(EditMap);
+
+    if(count)
+	{
+		// Update the Group GUI
+		UpdatePlayerGSelText(playerid);
+
+		new line[128];
+		format(line, sizeof(line), "Deleted group selection Objects: %i", count);
+		SendClientMessage(playerid, STEALTH_GREEN, line);
+	}
+    else SendClientMessage(playerid, STEALTH_YELLOW, "No group objects to delete");
+
+	return 1;
+}
+
+YCMD:gall(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Add all loaded objects to current selection.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+	new count;
+
+    foreach(new i : Objects)
+	{
+        if(!CanSelectObject(playerid, i))
+            continue;
+        
+        GroupedObjects[playerid][i] = true;
+		OnUpdateGroup3DText(i);
+		count++;
+    }
+
+    if(count)
+	{
+		// Update the Group GUI
+		UpdatePlayerGSelText(playerid);
+
+		new line[128];
+		format(line, sizeof(line), "Grouped All Objects", count);
+		SendClientMessage(playerid, STEALTH_GREEN, line);
+	}
+    else SendClientMessage(playerid, STEALTH_YELLOW, "There are no objects to group");
+
+	return 1;
+}
+
+YCMD:ginvert(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Invert all currently selected objects the selected axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+//	NoEditingMode(playerid);
+//	EditCheck(playerid);
+	
+	inline Mirror(mxpid, mxdialogid, mxresponse, mxlistitem, string:mxtext[])
+	{
+		#pragma unused mxpid, mxdialogid, mxtext
+		if(!mxresponse)
+			return 1;
+			
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		
+		new Float:gcx, Float:gcy, Float:gcz;
+		GetGroupCenter(playerid, gcx, gcy, gcz);
+		new time = GetTickCount();
+		
+		db_begin_transaction(EditMap);
+		foreach(new i: Objects)
+		{
+			if(GroupedObjects[playerid][i])
+			{
+				SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+
+				switch(mxlistitem) {
+					case 0: {
+						ObjectData[i][oX] = -ObjectData[i][oX] + (2.0 * gcx);
+					//	ObjectData[i][oRY] = -ObjectData[i][oRY];
+					//	ObjectData[i][oRZ] = -ObjectData[i][oRZ];
+					
+					//	ObjectData[i][oRY] += 180.0;
+					//	ObjectData[i][oRZ] += 180.0;
+					
+					//	ObjectData[i][oRX] += 180.0;
+					}
+					case 1: {
+						ObjectData[i][oY] = -ObjectData[i][oY] + (2.0 * gcy);
+					//	ObjectData[i][oRX] = -ObjectData[i][oRX];
+					//	ObjectData[i][oRZ] = -ObjectData[i][oRZ];
+					
+					//	ObjectData[i][oRX] += 180.0;
+					//	ObjectData[i][oRZ] += 180.0;
+
+					//	ObjectData[i][oRY] += 180.0;
+					}
+					case 2: {
+						ObjectData[i][oZ] = -ObjectData[i][oZ] + (2.0 * gcz);
+					//	ObjectData[i][oRX] = -ObjectData[i][oRX];
+					//	ObjectData[i][oRY] = -ObjectData[i][oRY];
+					
+					//	ObjectData[i][oRX] += 180.0;
+					//	ObjectData[i][oRY] += 180.0;
+
+					//	ObjectData[i][oRZ] += 180.0;
+					}
+				}
+				EDIT_FloatGetRemainder(ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+				
+				SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+				SetDynamicObjectRot(ObjectData[i][oID], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+
+				UpdateObject3DText(i);
+
+				sqlite_UpdateObjectPos(i);
+			}
+		}
+		db_end_transaction(EditMap);
+		
+		//(Not added to GUI yet)
+		// Update the Group GUI
+		//UpdatePlayerGSelText(playerid);
+		
+		new c = mxlistitem == 0 ? 'X' : mxlistitem == 1 ? 'Y' : 'Z';
+		SendClientMessage(playerid, STEALTH_GREEN, sprintf("Inverted all currently selected along the %c axis.", c));
+	}
+	Dialog_ShowCallback(playerid, using inline Mirror, DIALOG_STYLE_LIST, "Texture Studio - Select Mirror Axis", "X\nY\nZ", "Select", "");
+
+	return 1;
+}
+
+// Move all grouped objects on X axis
+YCMD:gox(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Move all currently selected objects along the X axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	new Float:dist;
+	new time = GetTickCount();
+
+	dist = floatstr(arg);
+	if(dist == 0) dist = 1.0;
+
+	db_begin_transaction(EditMap);
+ 	foreach(new i : Objects)
+	{
+		if(GroupedObjects[playerid][i])
+		{
+			SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+
+		    ObjectData[i][oX] += dist;
+
+		    SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+
+			UpdateObject3DText(i);
+
+		    sqlite_UpdateObjectPos(i);
+		}
+	}
+	db_end_transaction(EditMap);
+	
+	// Update the Group GUI
+	UpdatePlayerGSelText(playerid);
+
+	return 1;
+}
+
+// Move all grouped objects on Y axis
+YCMD:goy(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Move all currently selected objects along the Y axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	new Float:dist;
+    new time = GetTickCount();
+
+	dist = floatstr(arg);
+	if(dist == 0) dist = 1.0;
+
+	db_begin_transaction(EditMap);
+ 	foreach(new i : Objects)
+	{
+		if(GroupedObjects[playerid][i])
+		{
+			SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+
+		    ObjectData[i][oY] += dist;
+
+		    SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+
+			UpdateObject3DText(i);
+
+		    sqlite_UpdateObjectPos(i);
+
+		}
+	}
+	db_end_transaction(EditMap);
+
+	// Update the Group GUI
+	UpdatePlayerGSelText(playerid);
+
+
+	return 1;
+}
+
+// Move all grouped objects on Z axis
+YCMD:goz(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Move all currently selected objects along the Z axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	new Float:dist;
+	new time = GetTickCount();
+
+	dist = floatstr(arg);
+	if(dist == 0) dist = 1.0;
+
+	db_begin_transaction(EditMap);
+ 	foreach(new i : Objects)
+	{
+		if(GroupedObjects[playerid][i])
+		{
+			SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+
+		    ObjectData[i][oZ] += dist;
+
+		    SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+
+			UpdateObject3DText(i);
+
+		    sqlite_UpdateObjectPos(i);
+		}
+	}
+	db_end_transaction(EditMap);
+
+	// Update the Group GUI
+	UpdatePlayerGSelText(playerid);
+
+	return 1;
+}
+
+// Rotate map on RX
+YCMD:grx(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Rotate all currently selected objects around the X axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+	new time = GetTickCount();
+	new Float:Delta;
+	if(sscanf(arg, "f", Delta))
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "Usage: /grx <rotation> ");
+		return 1;
+	}
+
+	// We need to get the map center as the rotation node
+	new bool:value, Float:gCenterX, Float:gCenterY, Float:gCenterZ;
+
+	if(PivotPointOn[playerid])
+	{
+		new bool:hasgroup;
+		foreach(new i : Objects)
+		{
+		    if(GroupedObjects[playerid][i])
+		    {
+			    gCenterX = PivotPoint[playerid][xPos];
+			    gCenterY = PivotPoint[playerid][yPos];
+			    gCenterZ = PivotPoint[playerid][zPos];
+				value = true;
+                hasgroup = true;
+				break;
+			}
+		}
+		if(!hasgroup)
+		{
+			SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+			SendClientMessage(playerid, STEALTH_YELLOW, "There is not enough objects for this command to work");
+		}
+	}
+	else if(GetGroupCenter(playerid, gCenterX, gCenterY, gCenterZ)) value = true;
+
+	if(value)
+	{
+		// Loop through all objects and perform rotation calculations
+		db_begin_transaction(EditMap);
+		foreach(new i : Objects)
+		{
+			if(GroupedObjects[playerid][i])
+			{
+				SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+				AttachObjectToPoint(i, gCenterX, gCenterY, gCenterZ, Delta, 0.0, 0.0, ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+				SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+				SetDynamicObjectRot(ObjectData[i][oID], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+
+				UpdateObject3DText(i);
+
+				sqlite_UpdateObjectPos(i);
+
+			}
+		}
+		db_end_transaction(EditMap);
+
+		// Update the Group GUI
+		UpdatePlayerGSelText(playerid);
+
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Group RX rotation complete ");
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "There is not enough objects for this command to work");
+	}
+
+	return 1;
+}
+
+// Rotate map on RX
+YCMD:gry(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Rotate all currently selected objects around the Y axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+	new time = GetTickCount();
+	new Float:Delta;
+	if(sscanf(arg, "f", Delta))
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "Usage: /gry <rotation> ");
+		return 1;
+	}
+
+	// We need to get the map center as the rotation node
+	new bool:value, Float:gCenterX, Float:gCenterY, Float:gCenterZ;
+
+	if(PivotPointOn[playerid])
+	{
+		new bool:hasgroup;
+		foreach(new i : Objects)
+		{
+		    if(GroupedObjects[playerid][i])
+		    {
+			    gCenterX = PivotPoint[playerid][xPos];
+			    gCenterY = PivotPoint[playerid][yPos];
+			    gCenterZ = PivotPoint[playerid][zPos];
+				value = true;
+                hasgroup = true;
+				break;
+			}
+		}
+		if(!hasgroup)
+		{
+			SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+			SendClientMessage(playerid, STEALTH_YELLOW, "There is not enough objects for this command to work");
+		}
+	}
+	else if(GetGroupCenter(playerid, gCenterX, gCenterY, gCenterZ)) value = true;
+
+	if(value)
+	{
+		// Loop through all objects and perform rotation calculations
+		db_begin_transaction(EditMap);
+		foreach(new i : Objects)
+		{
+			if(GroupedObjects[playerid][i])
+			{
+				SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+				AttachObjectToPoint(i, gCenterX, gCenterY, gCenterZ, 0.0, Delta, 0.0, ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+				SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+				SetDynamicObjectRot(ObjectData[i][oID], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+
+				UpdateObject3DText(i);
+
+				sqlite_UpdateObjectPos(i);
+			}
+		}
+		db_end_transaction(EditMap);
+
+   		// Update the Group GUI
+		UpdatePlayerGSelText(playerid);
+
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Group RY rotation complete ");
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "There is not enough objects for this command to work");
+	}
+
+	return 1;
+}
+
+// Rotate map on RX
+YCMD:grz(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Rotate all currently selected objects around the Z axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+	new time = GetTickCount();
+	new Float:Delta;
+	if(sscanf(arg, "f", Delta))
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "Usage: /grz <rotation> ");
+		return 1;
+	}
+
+	// We need to get the map center as the rotation node
+	new bool:value, Float:gCenterX, Float:gCenterY, Float:gCenterZ;
+
+	if(PivotPointOn[playerid])
+	{
+		new bool:hasgroup;
+		foreach(new i : Objects)
+		{
+		    if(GroupedObjects[playerid][i])
+		    {
+			    gCenterX = PivotPoint[playerid][xPos];
+			    gCenterY = PivotPoint[playerid][yPos];
+			    gCenterZ = PivotPoint[playerid][zPos];
+				value = true;
+                hasgroup = true;
+				break;
+			}
+		}
+		if(!hasgroup)
+		{
+			SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+			SendClientMessage(playerid, STEALTH_YELLOW, "There is not enough objects for this command to work");
+		}
+	}
+	else if(GetGroupCenter(playerid, gCenterX, gCenterY, gCenterZ)) value = true;
+
+	if(value)
+	{
+		// Loop through all objects and perform rotation calculations
+		db_begin_transaction(EditMap);
+		foreach(new i : Objects)
+		{
+			if(GroupedObjects[playerid][i])
+			{
+				SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+				AttachObjectToPoint(i, gCenterX, gCenterY, gCenterZ, 0.0, 0.0, Delta, ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+				SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+				SetDynamicObjectRot(ObjectData[i][oID], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+
+				UpdateObject3DText(i);
+
+				sqlite_UpdateObjectPos(i);
+			}
+		}
+		db_end_transaction(EditMap);
+
+   		// Update the Group GUI
+		UpdatePlayerGSelText(playerid);
+
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Group RZ rotation complete ");
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "There is not enough objects for this command to work");
+	}
+
+	return 1;
+}
+
+YCMD:gdd(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Set a group's draw distance.");
+		return 1;
+	}
+
+    MapOpenCheck();
+	new time = GetTickCount();
+	new Float:dd;
+	sscanf(arg, "F(300.0)", dd);
+
+    db_begin_transaction(EditMap);
+    foreach(new i : Objects)
+    {
+        if(GroupedObjects[playerid][i])
+        {
+            SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+
+            ObjectData[i][oDD] = dd;
+            Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[i][oID], E_STREAMER_DRAW_DISTANCE, dd);
+            Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[i][oID], E_STREAMER_STREAM_DISTANCE, dd);
+
+            sqlite_UpdateObjectDD(i);
+        }
+    }
+    db_end_transaction(EditMap);
+
+    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+    SendClientMessage(playerid, STEALTH_GREEN, sprintf("Groups draw distance set to %.2f", dd));
+
+	return 1;
+}
+
+
+// Export group of objects as an attached object
+YCMD:gaexport(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Export all currently selected objects as an attached object.");
+		return 1;
+	}
+
+	MapOpenCheck();
+
+	new count;
+	foreach(new i : Objects)
+	{
+	    if(GroupedObjects[playerid][i])
+		{
+			count++;
+			break;
+		}
+	}
+
+	if(count)
+	{
+	    inline CreateAttachExport(cpid, cdialogid, cresponse, clistitem, string:ctext[])
+		{
+		    #pragma unused clistitem, cdialogid, cpid
+			if(cresponse)
+		    {
+				if(!isnull(ctext))
+				{
+					inline DrawDist(dpid, ddialogid, dresponse, dlistitem, string:dtext[])
+					{
+						#pragma unused dlistitem, ddialogid, dpid
+						new Float:dist;
+
+						// Set the drawdistance
+						if(dresponse)
+						{
+							if(sscanf(dtext, "f", dist)) dist = 300.0;
+						}
+						else dist = 300.0;
+
+						new mapname[128];
+						
+						if(strlen(ctext) >= 20)
+						{
+							SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+							SendClientMessage(playerid, STEALTH_YELLOW, "Choose a shorter map name to export to...");
+							return 1;
+						}
+						
+						format(mapname, sizeof(mapname), "tstudio/AttachExport/%s.txt", ctext);
+
+						if(!fexist(mapname)) AttachExport(playerid, mapname, dist);
+						else
+						{
+							inline OverwriteAttachExport(opid, odialogid, oresponse, olistitem, string:otext[])
+							{
+								#pragma unused olistitem, odialogid, opid, otext
+
+								if(oresponse)
+								{
+									fremove(mapname);
+									AttachExport(playerid, mapname, dist);
+								}
+
+							}
+							SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+							SendClientMessage(playerid, STEALTH_YELLOW, "A attached object export with that name already exists");
+							Dialog_ShowCallback(playerid, using inline OverwriteAttachExport, DIALOG_STYLE_MSGBOX, "Texture Studio", "Attached file exists overwrite?", "Ok", "Cancel");
+						}
+					}
+					Dialog_ShowCallback(playerid, using inline DrawDist, DIALOG_STYLE_INPUT, "Texture Studio (Map Export)", "Enter the draw distance for objects\n(Note: Default draw distance is 300.0)", "Ok", "Cancel");
+				}
+				else
+				{
+					SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+					SendClientMessage(playerid, STEALTH_YELLOW, "You must give your attached export a filename");
+					Dialog_ShowCallback(playerid, using inline CreateAttachExport, DIALOG_STYLE_INPUT, "Texture Studio", "Enter attached object export file", "Ok", "Cancel");
+				}
+		    }
+		}
+		Dialog_ShowCallback(playerid, using inline CreateAttachExport, DIALOG_STYLE_INPUT, "Texture Studio", "Enter attached object export file", "Ok", "Cancel");
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "No object to save to prefab");
+	}
+	return 1;
+}
+
+AttachExport(playerid, mapname[], Float:drawdist)
+{
+	// Choose a object as a center node
+	inline SelectObjectCenterNode(spid, sdialogid, sresponse, slistitem, string:stext[])
+	{
+		#pragma unused slistitem, sdialogid, spid
+		if(sresponse)
+		{
+			if(isnull(stext))
+			{
+				SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_YELLOW, "You must provide an index as center object");
+				Dialog_ShowCallback(playerid, using inline SelectObjectCenterNode, DIALOG_STYLE_INPUT, "Texture Studio", "Enter object index of attach object center", "Ok", "Cancel");
+				return 1;
+			}
+			new centerindex = strval(stext);
+
+			if(centerindex < 0 || centerindex > MAX_TEXTURE_OBJECTS - 1)
+			{
+				SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_YELLOW, "Invalid index");
+				Dialog_ShowCallback(playerid, using inline SelectObjectCenterNode, DIALOG_STYLE_INPUT, "Texture Studio", "Enter object index of attach object center", "Ok", "Cancel");
+				return 1;
+			}
+
+		    if(!GroupedObjects[playerid][centerindex])
+		    {
+				SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_YELLOW, "That object is not in your group selection");
+				Dialog_ShowCallback(playerid, using inline SelectObjectCenterNode, DIALOG_STYLE_INPUT, "Texture Studio", "Enter object index of attach object center", "Ok", "Cancel");
+				return 1;
+		    }
+
+			// Get Offsets
+		    new Float:offx, Float:offy, Float:offz;
+		    offx = ObjectData[centerindex][oX];
+		    offy = ObjectData[centerindex][oY];
+		    offz = ObjectData[centerindex][oZ];
+
+			new exportmap[256];
+			format(exportmap, sizeof(exportmap), "%s", mapname);
+
+			new mobjects;
+			new templine[256];
+			new File:f;
+			new syncrot = 1;
+
+			f = fopen(exportmap,io_write);
+			if(!f) {
+				SendClientMessage(playerid, -1, "For some reason this file isn't being created.");
+				SendClientMessage(playerid, -1, "Trying to highjack the existing blank.txt instead (temporary solution).");
+				f = fopen("tstudio/AttachExport/blank.txt",io_write);
+				if(!f) {
+					SendClientMessage(playerid, -1, "Failed to highjack...");
+				}
+			}
+			
+			fwrite(f,"//Attached Object Map Exported with Texture Studio By: [uL]Pottus////////////////////////////////////////////////\r\n");
+			fwrite(f,"//////////////////////////////////////////////////////////////and Crayder////////////////////////////////////////\r\n");
+			fwrite(f,"/////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n");
+
+			// Temp object for setting materials
+			format(templine,sizeof(templine),"new centobjid, tmpobjid;\r\n");
+			fwrite(f,templine);
+
+			format(templine,sizeof(templine),"centobjid = CreateObject(%i,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f);\r\n",ObjectData[centerindex][oModel],ObjectData[centerindex][oX],ObjectData[centerindex][oY],ObjectData[centerindex][oZ],ObjectData[centerindex][oRX],ObjectData[centerindex][oRY],ObjectData[centerindex][oRZ],drawdist);
+			fwrite(f,templine);
+
+			// Write all objects with materials first
+			foreach(new i : Objects)
+			{
+			    if(ObjectData[i][oAttachedVehicle] > -1 || !GroupedObjects[playerid][i] || centerindex == i) continue;
+
+				new bool:writeobject;
+
+				// Does the object have materials?
+		        for(new j = 0; j < MAX_MATERIALS; j++)
+		        {
+		            if(ObjectData[i][oTexIndex][j] != 0 || ObjectData[i][oColorIndex][j] != 0 || ObjectData[i][ousetext])
+		            {
+						writeobject = true;
+						break;
+					}
+				}
+
+				// Object had materials we will write them to the export file
+				if(writeobject)
+				{
+					mobjects++;
+
+					// Write the create object line
+					format(templine,sizeof(templine),"tmpobjid = CreateObject(%i,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f);\r\n",ObjectData[i][oModel],ObjectData[i][oX],ObjectData[i][oY],ObjectData[i][oZ],ObjectData[i][oRX],ObjectData[i][oRY],ObjectData[i][oRZ],drawdist);
+					fwrite(f,templine);
+
+					// Write all materials and colors
+		  			for(new j = 0; j < MAX_MATERIALS; j++)
+		        	{
+						// Does object have a texture set?
+			            if(ObjectData[i][oTexIndex][j] != 0)
+			            {
+							format(templine,sizeof(templine),"SetObjectMaterial(tmpobjid, %i, %i, %c%s%c, %c%s%c, %i);\r\n", j, GetTModel(ObjectData[i][oTexIndex][j]), 34, GetTXDName(ObjectData[i][oTexIndex][j]), 34, 34,GetTextureName(ObjectData[i][oTexIndex][j]), 34, ObjectData[i][oColorIndex][j]);
+							fwrite(f,templine);
+			            }
+			            // No texture how about a color?
+			            else if(ObjectData[i][oColorIndex][j] != 0)
+			            {
+							format(templine,sizeof(templine),"SetObjectMaterial(tmpobjid, %i, -1, %c%s%c, %c%s%c, %i);\r\n", j, 34, "none", 34, 34,"none", 34, ObjectData[i][oColorIndex][j]);
+							fwrite(f,templine);
+						}
+					}
+
+					// Write any text
+					if(ObjectData[i][ousetext])
+					{
+						format(templine,sizeof(templine),"SetObjectMaterialText(tmpobjid, %c%s%c, 0, %i, %c%s%c, %i, %i, %i, %i, %i);\r\n",
+							34, ObjectData[i][oObjectText], 34,
+							FontSizes[ObjectData[i][oFontSize]],
+							34, FontNames[ObjectData[i][oFontFace]], 34,
+							ObjectData[i][oTextFontSize],
+							ObjectData[i][oFontBold],
+							ObjectData[i][oFontColor],
+							ObjectData[i][oBackColor],
+							ObjectData[i][oAlignment]
+						);
+						fwrite(f,templine);
+					}
+
+					// Attach the object
+					format(templine,sizeof(templine),"AttachObjectToObject(tmpobjid,centobjid,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%i);\r\n",
+						offx - ObjectData[i][oX],
+						offy - ObjectData[i][oY],
+						offz - ObjectData[i][oZ],
+						ObjectData[i][oRX],
+						ObjectData[i][oRY],
+						ObjectData[i][oRZ],
+						syncrot
+					);
+					fwrite(f,templine);
+				}
+			}
+
+			if(mobjects)
+			{
+				fwrite(f,"/////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n");
+				fwrite(f,"/////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n");
+				fwrite(f,"/////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n");
+			}
+
+			// We need to write all of the objects that didn't have materials set now
+			foreach(new i : Objects)
+			{
+			    if(ObjectData[i][oAttachedVehicle] > -1 || !GroupedObjects[playerid][i] || centerindex == i) continue;
+
+				new bool:skipobject = true;
+
+				// Does the object have materials?
+		        for(new j = 0; j < MAX_MATERIALS; j++)
+		        {
+					// This object has already been written
+		            if(ObjectData[i][oTexIndex][j] != 0 || ObjectData[i][oColorIndex][j] != 0 || ObjectData[i][ousetext])
+		            {
+						skipobject = true;
+						break;
+					}
+				}
+
+				// Object has not been exported yet export
+				if(!skipobject)
+				{
+					format(templine,sizeof(templine),"tmpobjid = CreateObject(%i,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f);\r\n",ObjectData[i][oModel],ObjectData[i][oX],ObjectData[i][oY],ObjectData[i][oZ],ObjectData[i][oRX],ObjectData[i][oRY],ObjectData[i][oRZ],drawdist);
+					fwrite(f,templine);
+				}
+
+				// Attach the object
+				format(templine,sizeof(templine),"AttachObjectToObject(tmpobjid,centobjid,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%i);\r\n",
+					offx - ObjectData[i][oX],
+					offy - ObjectData[i][oY],
+					offz - ObjectData[i][oZ],
+					ObjectData[i][oRX],
+					ObjectData[i][oRY],
+					ObjectData[i][oRZ],
+					syncrot
+				);
+				fwrite(f,templine);
+			}
+
+			fclose(f);
+			SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+			format(templine, sizeof(templine), "Map has been exported to %s", exportmap);
+			SendClientMessage(playerid, STEALTH_GREEN, templine);
+		}
+	}
+
+    Dialog_ShowCallback(playerid, using inline SelectObjectCenterNode, DIALOG_STYLE_INPUT, "Texture Studio", "Enter object index of attach object center", "Ok", "Cancel");
+
+	return 1;
+}
+
+// Save objects as a prefab data base
+new NewPreFabString[512];
+new DB: PrefabDB;
+YCMD:gprefab(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Save current objects as a prefabricated group.");
+		return 1;
+	}
+
+	MapOpenCheck();
+
+	new count;
+	foreach(new i : Objects)
+	{
+	    if(GroupedObjects[playerid][i])
+		{
+			count++;
+			break;
+		}
+	}
+
+	if(count)
+	{
+	    inline CreatePrefab(cpid, cdialogid, cresponse, clistitem, string:ctext[])
+		{
+		    #pragma unused clistitem, cdialogid, cpid
+			if(cresponse)
+		    {
+				if(!isnull(ctext))
+				{
+					new mapname[128];
+					format(mapname, sizeof(mapname), "tstudio/PreFabs/%s.db", ctext);
+
+					if(!fexist(mapname))
+					{
+						// Open the map for editing
+			            PrefabDB = db_open_persistent(mapname);
+
+						if(!NewPreFabString[0])
+						{
+							strimplode(" ",
+								NewPreFabString,
+								sizeof(NewPreFabString),
+								"CREATE TABLE IF NOT EXISTS `Objects`",
+								"(ModelID INTEGER,",
+								"xPos REAL,",
+								"yPos REAL,",
+								"zPos REAL,",
+								"rxRot REAL,",
+								"ryRot REAL,",
+								"rzRot REAL,",
+								"TextureIndex TEXT,",
+								"ColorIndex TEXT,",
+								"usetext INTEGER,",
+								"FontFace INTEGER,",
+								"FontSize INTEGER,",
+								"FontBold INTEGER,",
+								"FontColor INTEGER,",
+								"BackColor INTEGER,",
+								"Alignment INTEGER,",
+								"TextFontSize INTEGER,",
+								"ObjectText TEXT);"
+							);
+						}
+
+						db_exec(PrefabDB, NewPreFabString);
+
+						// Prefab extra info
+						db_exec(PrefabDB, "CREATE TABLE IF NOT EXISTS `PrefabInfo` (zOFF REAL);");
+						db_exec(PrefabDB, "INSERT INTO `PrefabInfo` VALUES(0.0);");
+
+
+						new Float:x, Float:y, Float:z;
+
+						if(!GetGroupCenter(playerid, x, y, z))
+						{
+							foreach(new i : Objects)
+							{
+								if(GroupedObjects[playerid][i])
+								{
+									x = ObjectData[i][oX];
+									y = ObjectData[i][oY];
+									z = ObjectData[i][oZ];
+									break;
+								}
+						    }
+						}
+
+
+						count = 0;
+
+						db_begin_transaction(EditMap);
+						foreach(new i : Objects)
+						{
+							if(GroupedObjects[playerid][i])
+							{
+								sqlite_InsertPrefab(i, x, y, z);
+								count++;
+						    }
+						}
+						db_end_transaction(EditMap);
+
+						SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+						new line[128];
+						format(line, sizeof(line), "You have created a prefab Object Count: %i", count);
+						SendClientMessage(playerid, STEALTH_GREEN, line);
+
+						db_free_persistent(PrefabDB);
+
+					}
+					else
+					{
+						SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+						SendClientMessage(playerid, STEALTH_YELLOW, "A prefab with that name already exists");
+						Dialog_ShowCallback(playerid, using inline CreatePrefab, DIALOG_STYLE_INPUT, "Texture Studio", "Enter a prefab name", "Ok", "Cancel");
+					}
+				}
+				else
+				{
+					SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+					SendClientMessage(playerid, STEALTH_YELLOW, "You must give your prefab a filename");
+					Dialog_ShowCallback(playerid, using inline CreatePrefab, DIALOG_STYLE_INPUT, "Texture Studio", "Enter a prefab name", "Ok", "Cancel");
+				}
+		    }
+		}
+		Dialog_ShowCallback(playerid, using inline CreatePrefab, DIALOG_STYLE_INPUT, "Texture Studio", "Enter a prefab name", "Ok", "Cancel");
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "No object to save to prefab");
+	}
+	return 1;
+}
+
+
+// Insert object to prefab DB
+new DBStatement:insertprefabstmt;
+new InsertPrefabString[512];
+
+sqlite_InsertPrefab(index, Float:x, Float:y, Float:z)
+{
+	// Inserts a new index
+	if(!InsertPrefabString[0])
+	{
+		// Prepare query
+		strimplode(" ",
+			InsertPrefabString,
+			sizeof(InsertPrefabString),
+			"INSERT INTO `Objects`",
+	        "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
+		);
+	}
+
+	insertprefabstmt = db_prepare(PrefabDB, InsertPrefabString);
+
+	// Bind our results
+    stmt_bind_value(insertprefabstmt, 0, DB::TYPE_INT, ObjectData[index][oModel]);
+    stmt_bind_value(insertprefabstmt, 1, DB::TYPE_FLOAT, ObjectData[index][oX]-x);
+    stmt_bind_value(insertprefabstmt, 2, DB::TYPE_FLOAT, ObjectData[index][oY]-y);
+    stmt_bind_value(insertprefabstmt, 3, DB::TYPE_FLOAT, ObjectData[index][oZ]-z);
+    stmt_bind_value(insertprefabstmt, 4, DB::TYPE_FLOAT, ObjectData[index][oRX]);
+    stmt_bind_value(insertprefabstmt, 5, DB::TYPE_FLOAT, ObjectData[index][oRY]);
+    stmt_bind_value(insertprefabstmt, 6, DB::TYPE_FLOAT, ObjectData[index][oRZ]);
+    stmt_bind_value(insertprefabstmt, 7, DB::TYPE_ARRAY, ObjectData[index][oTexIndex], MAX_MATERIALS);
+    stmt_bind_value(insertprefabstmt, 8, DB::TYPE_ARRAY, ObjectData[index][oColorIndex], MAX_MATERIALS);
+    stmt_bind_value(insertprefabstmt, 9, DB::TYPE_INT, ObjectData[index][ousetext]);
+    stmt_bind_value(insertprefabstmt, 10, DB::TYPE_INT, ObjectData[index][oFontFace]);
+    stmt_bind_value(insertprefabstmt, 11, DB::TYPE_INT, ObjectData[index][oFontSize]);
+    stmt_bind_value(insertprefabstmt, 12, DB::TYPE_INT, ObjectData[index][oFontBold]);
+    stmt_bind_value(insertprefabstmt, 13, DB::TYPE_INT, ObjectData[index][oFontColor]);
+    stmt_bind_value(insertprefabstmt, 14, DB::TYPE_INT, ObjectData[index][oBackColor]);
+    stmt_bind_value(insertprefabstmt, 15, DB::TYPE_INT, ObjectData[index][oAlignment]);
+    stmt_bind_value(insertprefabstmt, 16, DB::TYPE_INT, ObjectData[index][oTextFontSize]);
+    stmt_bind_value(insertprefabstmt, 17, DB::TYPE_STRING, ObjectData[index][oObjectText], MAX_TEXT_LENGTH);
+
+    stmt_execute(insertprefabstmt);
+	stmt_close(insertprefabstmt);
+}
+
+YCMD:prefabsetz(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Set prefabricated group Z axis offset.");
+		return 1;
+	}
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	if(isnull(arg)) ShowPrefabs(playerid);
+	else
+	{
+		new Float:offset;
+		new mapname[128];
+
+		if(sscanf(arg, "s[128]f", mapname, offset)) return SendClientMessage(playerid, STEALTH_YELLOW, "You must supply a valid offset value!");
+
+		format(mapname, sizeof(mapname), "tstudio/PreFabs/%s.db", mapname);
+		if(fexist(mapname))
+		{
+		    PrefabDB = db_open_persistent(mapname);
+			new Query[128];
+			format(Query, sizeof(Query), "UPDATE `PrefabInfo` SET `zOFF` = %f;", offset);
+			db_exec(PrefabDB, Query);
+		    db_free_persistent(PrefabDB);
+			SendClientMessage(playerid, STEALTH_GREEN, "Updated prefab Z-Load offset");
+		}
+		else SendClientMessage(playerid, STEALTH_YELLOW, "That prefab does not exist!");
+	}
+
+	return 1;
+}
+
+// Load a prefab specify a filename
+YCMD:prefab(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Load a prefabricated group of objects.");
+		return 1;
+	}
+
+	MapOpenCheck();
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	if(isnull(arg)) ShowPrefabs(playerid);
+	else
+	{
+		new mapname[128];
+		format(mapname, sizeof(mapname), "tstudio/PreFabs/%s.db", arg);
+		if(fexist(mapname))
+		{
+		    PrefabDB = db_open_persistent(mapname);
+		    sqlite_LoadPrefab(playerid);
+		    db_free_persistent(PrefabDB);
+			SendClientMessage(playerid, STEALTH_GREEN, "Prefab loaded and set to your group selection");
+		}
+		else SendClientMessage(playerid, STEALTH_YELLOW, "That prefab does not exist!");
+	}
+
+	return 1;
+}
+
+YCMD:0group(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Center all currently selected objects to the center of San Andreas.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	new Float:gCenterX, Float:gCenterY, Float:gCenterZ;
+	GetGroupCenter(playerid, gCenterX, gCenterY, gCenterZ);
+
+	new bool:hasgroup;
+	new time = GetTickCount();
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+	db_begin_transaction(EditMap);
+	foreach(new i : Objects)
+	{
+   		if(GroupedObjects[playerid][i])
+		{
+			SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+
+			ObjectData[i][oX] -= gCenterX;
+			ObjectData[i][oY] -= gCenterY;
+			ObjectData[i][oZ] -= gCenterZ;
+
+			SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+
+		    sqlite_UpdateObjectPos(i);
+
+		    UpdateObject3DText(i);
+
+			hasgroup = true;
+		}
+	}
+	db_end_transaction(EditMap);
+
+	if(hasgroup) SendClientMessage(playerid, STEALTH_GREEN, "Moved grouped objects to 0,0,0");
+	else SendClientMessage(playerid, STEALTH_YELLOW, "You don't have any objects grouped");
+
+	return 1;
+}
+
+tsfunc ShowPrefabs(playerid)
+{
+	new dir:dHandle = dir_open("./scriptfiles/tstudio/PreFabs/");
+	new item[40], type;
+	new line[128];
+	new extension[3];
+	new fcount;
+	new total;
+
+	// Create a load list
+	while(dir_list(dHandle, item, type))
+	{
+	 	if(type != FM_DIR)
+	    {
+			// We need to check extension
+			if(strlen(item) > 3)
+			{
+				format(extension, sizeof(extension), "%s%s", item[strlen(item) - 2],item[strlen(item) - 1]);
+
+				// File is apparently a db
+				if(!strcmp(extension, "db"))
+				{
+					format(line, sizeof(line), "%s %s,", line, item);
+					fcount++;
+					total++;
+					if(fcount == 8)
+					{
+						SendClientMessage(playerid, STEALTH_YELLOW, line);
+						fcount = 0;
+						line = "";
+					}
+				}
+		    }
+		}
+	}
+	if(fcount != 0) SendClientMessage(playerid, STEALTH_YELLOW, line);
+	if(total > 0)
+	{
+		format(line, sizeof(line), "Displaying %i prefabs", total);
+		SendClientMessage(playerid, STEALTH_GREEN, line);
+	}
+	else SendClientMessage(playerid, STEALTH_YELLOW, "There are no prefabs to list!");
+	return 1;
+}
+
+static DBStatement:loadprefabstmt;
+
+// Loads map objects from a data base
+sqlite_LoadPrefab(playerid, offset = true)
+{
+	// Load query stmt
+	loadprefabstmt = db_prepare(PrefabDB, "SELECT * FROM `Objects`");
+
+	new tmpobject[OBJECTINFO];
+
+	// Bind our results
+    stmt_bind_result_field(loadprefabstmt, 0, DB::TYPE_INT, tmpobject[oModel]);
+    stmt_bind_result_field(loadprefabstmt, 1, DB::TYPE_FLOAT, tmpobject[oX]);
+    stmt_bind_result_field(loadprefabstmt, 2, DB::TYPE_FLOAT, tmpobject[oY]);
+    stmt_bind_result_field(loadprefabstmt, 3, DB::TYPE_FLOAT, tmpobject[oZ]);
+    stmt_bind_result_field(loadprefabstmt, 4, DB::TYPE_FLOAT, tmpobject[oRX]);
+    stmt_bind_result_field(loadprefabstmt, 5, DB::TYPE_FLOAT, tmpobject[oRY]);
+    stmt_bind_result_field(loadprefabstmt, 6, DB::TYPE_FLOAT, tmpobject[oRZ]);
+    stmt_bind_result_field(loadprefabstmt, 7, DB::TYPE_ARRAY, tmpobject[oTexIndex], MAX_MATERIALS);
+    stmt_bind_result_field(loadprefabstmt, 8, DB::TYPE_ARRAY, tmpobject[oColorIndex], MAX_MATERIALS);
+    stmt_bind_result_field(loadprefabstmt, 9, DB::TYPE_INT, tmpobject[ousetext]);
+    stmt_bind_result_field(loadprefabstmt, 10, DB::TYPE_INT, tmpobject[oFontFace]);
+    stmt_bind_result_field(loadprefabstmt, 11, DB::TYPE_INT, tmpobject[oFontSize]);
+    stmt_bind_result_field(loadprefabstmt, 12, DB::TYPE_INT, tmpobject[oFontBold]);
+    stmt_bind_result_field(loadprefabstmt, 13, DB::TYPE_INT, tmpobject[oFontColor]);
+    stmt_bind_result_field(loadprefabstmt, 14, DB::TYPE_INT, tmpobject[oBackColor]);
+    stmt_bind_result_field(loadprefabstmt, 15, DB::TYPE_INT, tmpobject[oAlignment]);
+    stmt_bind_result_field(loadprefabstmt, 16, DB::TYPE_INT, tmpobject[oTextFontSize]);
+    stmt_bind_result_field(loadprefabstmt, 17, DB::TYPE_STRING, tmpobject[oObjectText], MAX_TEXT_LENGTH);
+
+	// Get the ZOffset
+	new Query[128];
+	new DBResult:r;
+	new Float:zoff;
+	format(Query, sizeof(Query), "SELECT * FROM `PrefabInfo`");
+	r = db_query(PrefabDB, Query);
+	db_get_field_assoc(r, "zOFF", Query, 128);
+	zoff = floatstr(Query);
+	db_free_result(r);
+
+	new Float:px, Float:py, Float:pz, Float:fa;
+	new time = GetTickCount();
+
+	if(offset) GetPosFaInFrontOfPlayer(playerid, 2.0, px, py, pz, fa);
+	else GetPlayerPos(playerid, px, py, pz);
+
+	// Clear any grouped objects
+    ClearGroup(playerid);
+
+	// Execute query
+    if(stmt_execute(loadprefabstmt))
+    {
+		db_begin_transaction(EditMap);
+        while(stmt_fetch_row(loadprefabstmt))
+        {
+			new index = AddDynamicObject(tmpobject[oModel], tmpobject[oX]+px, tmpobject[oY]+py, tmpobject[oZ]+pz+zoff, tmpobject[oRX], tmpobject[oRY], tmpobject[oRZ]);
+
+			// Set textures and colors
+			for(new i = 0; i < MAX_MATERIALS; i++)
+			{
+                ObjectData[index][oTexIndex][i] = tmpobject[oTexIndex][i];
+	            ObjectData[index][oColorIndex][i] = tmpobject[oColorIndex][i];
+			}
+
+			// Get all text settings
+		   	ObjectData[index][ousetext] = tmpobject[ousetext];
+		    ObjectData[index][oFontFace] = tmpobject[oFontFace];
+		    ObjectData[index][oFontSize] = tmpobject[oFontSize];
+		    ObjectData[index][oFontBold] = tmpobject[oFontBold];
+		    ObjectData[index][oFontColor] = tmpobject[oFontColor];
+		    ObjectData[index][oBackColor] = tmpobject[oBackColor];
+		    ObjectData[index][oAlignment] = tmpobject[oAlignment];
+		    ObjectData[index][oTextFontSize] = tmpobject[oTextFontSize];
+		    ObjectData[index][oGroup] = 0;
+
+			// Get any text string
+			format(ObjectData[index][oObjectText], MAX_TEXT_LENGTH, "%s", tmpobject[oObjectText]);
+
+
+			UpdateObject3DText(index, true);
+
+			// Add new object to prefab
+			GroupedObjects[playerid][index] = true;
+			OnUpdateGroup3DText(index);
+
+			// We need to update textures and materials
+			UpdateMaterial(index);
+
+			// Update the object text
+			UpdateObjectText(index);
+
+			// Save materials to material database
+			sqlite_SaveMaterialIndex(index);
+
+			// Save colors to material database
+			sqlite_SaveColorIndex(index);
+
+			// Save all text
+			sqlite_SaveAllObjectText(index);
+
+			SaveUndoInfo(index, UNDO_TYPE_CREATED, time);
+        }
+		db_end_transaction(EditMap);
+
+   		// Update the Group GUI
+		UpdatePlayerGSelText(playerid);
+		stmt_close(loadprefabstmt);
+        return 1;
+    }
+	stmt_close(loadprefabstmt);
+    return 0;
+}
+

+ 373 - 0
Texture-Studio-master/filterscripts/tstudio/gtaobjects.pwn

@@ -0,0 +1,373 @@
+#include "tstudio\allobjects.pwn"
+
+#define         MIN_GTAOBJECT_LABEL_DIST            5.0
+
+static bool:ObjectsShown;
+static Text3D:GTAObjectText[SEARCH_DATA_SIZE];
+static bool:GTAObjectDeleted[SEARCH_DATA_SIZE];
+static bool:GTAObjectSwapped[SEARCH_DATA_SIZE];
+static HighLightObject[MAX_PLAYERS] = -1;
+
+public OnPlayerDisconnect(playerid, reason)
+{
+	if(HighLightObject[playerid] > -1)
+	{
+		DestroyDynamicObject(HighLightObject[playerid]);
+        HighLightObject[playerid] = -1;
+	}
+
+	#if defined GO_OnPlayerDisconnect
+		GO_OnPlayerDisconnect(playerid, reason);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerDisconnect
+	#undef OnPlayerDisconnect
+#else
+	#define _ALS_OnPlayerDisconnect
+#endif
+#define OnPlayerDisconnect GO_OnPlayerDisconnect
+#if defined GO_OnPlayerDisconnect
+	forward GO_OnPlayerDisconnect(playerid, reason);
+#endif
+
+
+ResetGTADeletedObjects()
+{
+	for(new i = 0; i < SEARCH_DATA_SIZE; i++) GTAObjectDeleted[i] = false;
+	for(new i = 0; i < SEARCH_DATA_SIZE; i++) GTAObjectSwapped[i] = false;
+	return 1;
+}
+
+YCMD:gtaobjects(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Display information on all San Andreas buildings.");
+		return 1;
+	}
+
+	new Float:colradius;
+	sscanf(arg, "F(0)", colradius);
+	
+	if(ObjectsShown && !colradius)
+	{
+		for(new i = 0; i < SEARCH_DATA_SIZE; i++) DestroyDynamic3DTextLabel(GTAObjectText[i]);
+        ObjectsShown = false;
+		SendClientMessage(playerid, STEALTH_GREEN, "Hiding GTA Objects");
+	}
+	else
+	{
+		if(ObjectsShown)
+			for(new i = 0; i < SEARCH_DATA_SIZE; i++) DestroyDynamic3DTextLabel(GTAObjectText[i]);
+
+		new index, model;
+		AO_RESULT = db_query(AO_DB, "SELECT * FROM `buildings`");
+		do
+		{
+			index = db_get_field_int(AO_RESULT, 0);
+			model = db_get_field_int(AO_RESULT, 1);
+			//db_get_field(AO_RESULT, 3, name, sizeof name[]);
+			
+ 			if(!colradius)
+			{
+				colradius = GetColSphereRadius(model);
+				if(colradius < MIN_GTAOBJECT_LABEL_DIST) colradius = MIN_GTAOBJECT_LABEL_DIST;
+				colradius *= 2;
+			}
+		
+            GTAObjectText[index] = CreateDynamic3DTextLabel(
+				sprintf("Index: %i\nName: %s\nModelID: %i", index, GetModelName(model), model), 
+				(GTAObjectDeleted[index] ? (GTAObjectSwapped[index] ? 0x5A34FFFF : 0xFF345AFF) : 0xFF69B4FF), 
+				db_get_field_float(AO_RESULT, 4), db_get_field_float(AO_RESULT, 5), db_get_field_float(AO_RESULT, 6) + db_get_field_float(AO_RESULT, 10), colradius * 2.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, colradius
+			);
+		}
+		while(db_next_row(AO_RESULT));
+		
+	    ObjectsShown = true;
+	    SendClientMessage(playerid, STEALTH_GREEN, "Showing GTA Objects");
+	}
+
+	return 1;
+}
+
+/*YCMD:gtaobjects(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Display information on all San Andreas buildings.");
+		return 1;
+	}
+
+	if(ObjectsShown)
+	{
+		for(new i = 0; i < SEARCH_DATA_SIZE; i++) DestroyDynamic3DTextLabel(GTAObjectText[i]);
+        ObjectsShown = false;
+		SendClientMessage(playerid, STEALTH_GREEN, "Hiding GTA Objects");
+	}
+	else
+	{
+		new text[64], Float:colradius;
+		
+	    for(new i = 0; i < SEARCH_DATA_SIZE; i++)
+		{
+ 			colradius = GetColSphereRadius(SearchData[i][Search_Model]);
+ 			if(colradius < MIN_GTAOBJECT_LABEL_DIST) colradius = MIN_GTAOBJECT_LABEL_DIST;
+		    format(text, sizeof(text), "Index: %i\nName: %s\nModelID: %i", i, SearchData[i][Search_Model_Name], SearchData[i][Search_Model]);
+            GTAObjectText[i] = CreateDynamic3DTextLabel(text, 0xFF69B4FF, SearchData[i][SearchX], SearchData[i][SearchY], SearchData[i][SearchZ]+SearchData[i][SearchOffset], colradius*2.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, colradius*2.0);
+		}
+	    ObjectsShown = true;
+	    SendClientMessage(playerid, STEALTH_GREEN, "Showing GTA Objects");
+	}
+
+	return 1;
+}*/
+
+YCMD:gtashow(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "\"Highlight\" a San Andreas building.");
+		return 1;
+	}
+
+	if(isnull(arg)) return SendClientMessage(playerid, STEALTH_YELLOW, "You must provide an index to highlight!");
+	new line[128], index = strval(arg);
+
+	if(index < 0 || index >= SEARCH_DATA_SIZE)
+	{
+		format(line, sizeof(line), "Index must be between 0 and %i", SEARCH_DATA_SIZE-1);
+	    return SendClientMessage(playerid, STEALTH_YELLOW, line);
+	}
+
+	if(HighLightObject[playerid] > -1) DestroyDynamicObject(HighLightObject[playerid]);
+
+    HighLightObject[playerid] = CreateDynamicObject(db_get_field_int(AO_RESULT, 1),
+		db_get_field_float(AO_RESULT, 4), db_get_field_float(AO_RESULT, 5), db_get_field_float(AO_RESULT, 6) + 1.0,
+		db_get_field_float(AO_RESULT, 7), db_get_field_float(AO_RESULT, 8), db_get_field_float(AO_RESULT, 9),
+		-1, -1, playerid
+	);
+	
+	for(new i = 0; i < 16; i++) SetDynamicObjectMaterial(HighLightObject[playerid], i, -1, "none", "none", 0xFFFF0000);
+
+	return 1;
+}
+
+YCMD:gtahide(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Hide a \"highlighted\" San Andreas building.");
+		return 1;
+	}
+
+	if(HighLightObject[playerid] > -1)
+	{
+		DestroyDynamicObject(HighLightObject[playerid]);
+        HighLightObject[playerid] = -1;
+	}
+
+	return 1;
+}
+
+YCMD:remobject(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Destroy a San Andreas building. (CAUTION: Permanent!)");
+		return 1;
+	}
+
+    MapOpenCheck();
+	
+	new index;
+	if(sscanf(arg, "i", index)) return SendClientMessage(playerid, STEALTH_YELLOW, "You must provide an index to delete!");
+
+	new line[128];
+
+	if(index < 0 || index >= SEARCH_DATA_SIZE)
+	{
+		format(line, sizeof(line), "Index must be between 0 and %i", SEARCH_DATA_SIZE-1);
+	    return SendClientMessage(playerid, STEALTH_YELLOW, line);
+	}
+
+	if(GTAObjectDeleted[index] == true) return SendClientMessage(playerid, STEALTH_YELLOW, "That object is already deleted!");
+
+    GTAObjectDeleted[index] = true;
+	
+	AO_RESULT = db_query(AO_DB, sprintf("SELECT * FROM `buildings` WHERE `ID` = %i", index));
+	//db_get_field(AO_RESULT, 3, name, sizeof name[]);
+	
+	AddRemoveBuilding(db_get_field_int(AO_RESULT, 1), db_get_field_float(AO_RESULT, 4), db_get_field_float(AO_RESULT, 5), db_get_field_float(AO_RESULT, 6), 0.25, true);
+	if(db_get_field_int(AO_RESULT, 2) != INVALID_OBJECT_ID)
+		AddRemoveBuilding(db_get_field_int(AO_RESULT, 2), db_get_field_float(AO_RESULT, 4), db_get_field_float(AO_RESULT, 5), db_get_field_float(AO_RESULT, 6), 0.25, true);
+
+	UpdateDynamic3DTextLabelText(GTAObjectText[index],
+		(GTAObjectDeleted[index] ? (GTAObjectSwapped[index] ? 0x5A34FFFF : 0xF51414FF) : 0xFF69B4FF),
+		sprintf("Index: %i\nName: %s\nModelID: %i", index, GetModelName(db_get_field_int(AO_RESULT, 1)), db_get_field_int(AO_RESULT, 1)));
+
+	SendClientMessage(playerid, STEALTH_YELLOW, "Object has been removed!");
+	
+	return 1;
+}
+
+YCMD:rremobject(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Destroy all San Andreas buildings of specified model in specific range from your location. (CAUTION: Permanent!)");
+		return 1;
+	}
+
+    MapOpenCheck();
+	
+	new model, Float:range;
+	if(sscanf(arg, "if", model, range))
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "Usage: /rremobject <Model> <Range>");
+		return 1;
+	}
+
+	if(model < 0 || model >= 19999)
+	{
+	    SendClientMessage(playerid, STEALTH_YELLOW, "Model must be between 0 and 19999");
+		return 1;
+	}
+	
+	new index, name[50], count, Float:x, Float:y, Float:z;
+	strcat(name, GetModelName(model));
+	
+	if(IsFlyMode(playerid))
+		GetFlyModePos(playerid, x, y, z);
+	else
+		GetPlayerPos(playerid, x, y, z);
+	
+	AO_RESULT = db_query(AO_DB, sprintf("SELECT * FROM `buildings` WHERE `Model` = %i", model));
+	db_begin_transaction(AO_DB);
+	do
+	{
+		index = db_get_field_int(AO_RESULT, 0);
+		
+		if(GTAObjectDeleted[index] == true) continue;
+
+		new Float:dbx = db_get_field_float(AO_RESULT, 4), Float:dby = db_get_field_float(AO_RESULT, 5), Float:dbz = db_get_field_float(AO_RESULT, 6);
+		new Float:dist = VectorSize(dbx - x, dby - y, dbz - z);
+		
+		if(dist < range)
+		{
+			GTAObjectDeleted[index] = true;
+			
+			//db_get_field(AO_RESULT, 3, name, sizeof name[]);
+			
+			AddRemoveBuilding(model, dbx, dby, dbz, 0.25, true);
+			if(db_get_field_int(AO_RESULT, 2) != INVALID_OBJECT_ID)
+				AddRemoveBuilding(db_get_field_int(AO_RESULT, 2), dbx, dby, dbz, 0.25, true);
+
+			UpdateDynamic3DTextLabelText(GTAObjectText[index],
+				(GTAObjectDeleted[index] ? (GTAObjectSwapped[index] ? 0x5A34FFFF : 0xF51414FF) : 0xFF69B4FF),
+				sprintf("Index: %i\nName: %s\nModelID: %i", index, name, model));
+			
+			count++;
+		}
+	}
+	while(db_next_row(AO_RESULT));
+	db_end_transaction(AO_DB);
+
+	SendClientMessage(playerid, STEALTH_YELLOW, sprintf("%i objects have been removed!", count));
+	
+	return 1;
+}
+
+YCMD:swapbuilding(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Destroys a San Andreas building and creates a map object in it's place.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+
+	if(isnull(arg)) return SendClientMessage(playerid, STEALTH_YELLOW, "You must provide an index to swap!");
+	new line[128], index = strval(arg);
+
+	if(index < 0 || index >= SEARCH_DATA_SIZE)
+	{
+		format(line, sizeof(line), "Index must be between 0 and %i", SEARCH_DATA_SIZE-1);
+	    return SendClientMessage(playerid, STEALTH_YELLOW, line);
+	}
+
+	if(GTAObjectSwapped[index] == true) return SendClientMessage(playerid, STEALTH_YELLOW, "That object is already swapped!");
+
+	AO_RESULT = db_query(AO_DB, sprintf("SELECT * FROM `buildings` WHERE `ID` = %i", index));
+	//db_get_field(AO_RESULT, 3, name, sizeof name[]);
+	
+	new model = db_get_field_int(AO_RESULT, 1);
+	if(GTAObjectDeleted[index] == false)
+	{
+		AddRemoveBuilding(model, db_get_field_float(AO_RESULT, 4), db_get_field_float(AO_RESULT, 5), db_get_field_float(AO_RESULT, 6), 0.25, true);
+		if(db_get_field_int(AO_RESULT, 2) != INVALID_OBJECT_ID)
+			AddRemoveBuilding(db_get_field_int(AO_RESULT, 2), db_get_field_float(AO_RESULT, 4), db_get_field_float(AO_RESULT, 5), db_get_field_float(AO_RESULT, 6), 0.25, true);
+	    
+		GTAObjectDeleted[index] = true;
+	}
+
+	// Swap object
+	UpdateObject3DText(AddDynamicObject(model, db_get_field_float(AO_RESULT, 4), db_get_field_float(AO_RESULT, 5), db_get_field_float(AO_RESULT, 6), db_get_field_float(AO_RESULT, 7), db_get_field_float(AO_RESULT, 8), db_get_field_float(AO_RESULT, 9)), true);
+    GTAObjectSwapped[index] = true;
+
+	UpdateDynamic3DTextLabelText(GTAObjectText[index],
+		(GTAObjectDeleted[index] ? (GTAObjectSwapped[index] ? 0x5A34FFFF : 0xFF345AFF) : 0xFF69B4FF),
+		sprintf("Index: %i\nName: %s\nModelID: %i", index, GetModelName(model), model));
+	
+	SendClientMessage(playerid, STEALTH_YELLOW, "Object has been swapped!");
+	return 1;
+}
+
+YCMD:clonebuilding(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Clones a San Andreas building in it's place.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	EditCheck(playerid);
+
+	NoEditingMode(playerid);
+
+	if(isnull(arg)) return SendClientMessage(playerid, STEALTH_YELLOW, "You must provide an index to clone!");
+	new line[128], index = strval(arg);
+
+	if(index < 0 || index >= SEARCH_DATA_SIZE)
+	{
+		format(line, sizeof(line), "Index must be between 0 and %i", SEARCH_DATA_SIZE-1);
+	    return SendClientMessage(playerid, STEALTH_YELLOW, line);
+	}
+	
+	AO_RESULT = db_query(AO_DB, sprintf("SELECT * FROM `buildings` WHERE `ID` = %i", index));
+
+	SetCurrObject(playerid, AddDynamicObject(db_get_field_int(AO_RESULT, 1), db_get_field_float(AO_RESULT, 4), db_get_field_float(AO_RESULT, 5), db_get_field_float(AO_RESULT, 6), db_get_field_float(AO_RESULT, 7), db_get_field_float(AO_RESULT, 8), db_get_field_float(AO_RESULT, 9)));
+
+	UpdateObject3DText(CurrObject[playerid], true);
+	
+	SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_CREATED);
+	
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	SendClientMessage(playerid, STEALTH_GREEN, "Cloned your selected object the new object is now your selection");
+
+	return 1;
+}
+

+ 442 - 0
Texture-Studio-master/filterscripts/tstudio/gui/gui.pwn

@@ -0,0 +1,442 @@
+/*
+ApplyGUIArray(GUIMenu:gindex, pindex, GUIType, useoffset = 0, Float:xoffset = 0.0, Float:yoffset = 0.0)
+LoadGUIMenu(MenuArray,GUIMenu:gindex,xoffset, yoffset, textsizeoffsetx, textsizeoffsety);
+ShowGUIMenu(GUIMenu:gindex)
+HideGUIMenu(GUIMenu:gindex)
+ShowGUIElement(GUIMenu:gindex, pindex)
+HideGUIElement(GUIMenu:gindex, pindex)
+GUIMenu:CreateGUI(id)
+GUIDestroy(GUIMenu:gindex)
+CreateGUIElement(GUIMenu:gindex, GUIType[GUIDEF], Float:xoffset, Float:yoffset)
+DeleteGUIElement(GUIMenu:gindex, pindex)
+UpdateGUIMenu(GUIMenu:gindex, pindex)
+UpdateGUIElement(GUIMenu:gindex, pindex)
+
+// Setter functions
+GUISetPlayerText(GUIMenu:gindex, pindex, GUIType[GUIText])
+GUISetBackColor(GUIMenu:gindex, pindex, GUIType[GUIBackColor])
+GUISetFont(GUIMenu:gindex, pindex, GUIType[GUIFont])
+GUISetLetterSize(GUIMenu:gindex, pindex, GUIType[GUILSizeX], GUIType[GUILSizeY])
+GUISetColor(GUIMenu:gindex, pindex, GUIType[GUIColor])
+GUISetOutline(GUIMenu:gindex, pindex, GUIType[GUIOutline])
+GUISetProportional(GUIMenu:gindex, pindex, GUIType[GUIProportional])
+GUISetShadow(GUIMenu:gindex, pindex, GUIType[GUIShawdow])
+GUISetBox(GUIMenu:gindex, pindex, GUIType[GUIBox])
+GUISetBoxColor(GUIMenu:gindex, pindex, GUIType[GUIBoxColor])
+GUISetTextSize(GUIMenu:gindex, pindex, xoffset, yoffset)
+GUISetSelectable(GUIMenu:gindex, pindex, GUIType[GUISelect])
+GUISetPreviewModel(GUIMenu:gindex, pindex, value)
+GUISetPreviewModelRot(gindex, pindex, GUIType[GUIPModelRX], GUIType[GUIPModelRY], GUIType[GUIPModelRZ], GUIType[GUIPModelZoom]);
+*/
+
+// Slices fix pasing const to TextDrawSetString
+native TextDrawSetStringC(Text:text, const string[]) = TextDrawSetString;
+
+// Valid check
+#define GUIValid(%0,%1) if(!GUIData[_:%0][GUIActive]) return 0;\
+	if(!GUIData[_:%0][GUIUsed][%1]) return 0
+#define GUIValidIndex(%0) if(!GUIData[_:%0][GUIActive]) return 0
+#define GUIValidElement(%0,%1) if(!GUIData[_:%0][GUIUsed][%1]) return 0
+
+// Called when a player clicks a textdraw
+#define OnGUIClick:%1(%2,%3,%4,%5) \
+	forward ONGUI_%1(%2,%3,%4,%5); \
+	public ONGUI_%1(%2,%3,%4,%5)
+
+enum GUIMENUINFO {
+	bool:GUIActive,
+	GUICallFunc[20],
+	bool:GUIUsed[MAX_ELEMENTS],
+	GUIElementGroups[MAX_ELEMENTS],
+	Text:GUIid[MAX_ELEMENTS],
+	Float:GUIOffsetX[MAX_ELEMENTS],
+	Float:GUIOffsetY[MAX_ELEMENTS],
+}
+
+static GUIData[MAX_GUI][GUIMENUINFO];
+
+public OnFilterScriptExit()
+{
+    for(new i = 0; i < MAX_GUI; i++)
+	{
+		if(GUIData[i][GUIActive])
+		{
+			DestroyGUI(GUIMenu:i);
+		}
+	}
+
+	#if defined GI_OnFilterScriptExit
+		GI_OnFilterScriptExit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptExit
+	#undef OnFilterScriptExit
+#else
+	#define _ALS_OnFilterScriptExit
+#endif
+#define OnFilterScriptExit GI_OnFilterScriptExit
+#if defined GI_OnFilterScriptExit
+	forward GI_OnFilterScriptExit();
+#endif
+
+////////////////////////////////////////////////////////////////////////////////
+public OnPlayerClickTextDraw(playerid, Text:clickedid)
+{
+	if(!GUIPaused[playerid])
+	{
+		if(clickedid != Text:INVALID_TEXT_DRAW)
+		{
+			for(new i = 0; i < MAX_GUI; i++)
+			{
+		        if(GUIData[i][GUIActive])
+		        {
+					for(new j = 0; j < MAX_ELEMENTS; j++)
+					{
+					    if(GUIData[i][GUIUsed][j])
+					    {
+					        if(GUIData[i][GUIid][j] == clickedid)
+					        {
+								#if defined GUI_DEBUG
+									printf("Playerid:%i ElementGroup:%i  gindex:%i pindex:%i", playerid, GUIData[i][GUIElementGroups][j], i, j);
+								#endif
+								
+					            new CallFunc[32];
+					            format(CallFunc, sizeof(CallFunc), "ONGUI_%s", GUIData[i][GUICallFunc]);
+
+								#if defined GUI_DEBUG
+									printf(CallFunc);
+								#endif
+					            CallLocalFunction(CallFunc, "iiii", playerid, GUIData[i][GUIElementGroups][j], i, j);
+					        }
+					    }
+					}
+		        }
+			}
+		}
+	}
+
+	#if defined GI_OnPlayerClickTextDraw
+		GI_OnPlayerClickTextDraw(playerid, Text:clickedid);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerClickTextDraw
+	#undef OnPlayerClickTextDraw
+#else
+	#define _ALS_OnPlayerClickTextDraw
+#endif
+#define OnPlayerClickTextDraw GI_OnPlayerClickTextDraw
+#if defined GI_OnPlayerClickTextDraw
+	forward GI_OnPlayerClickTextDraw(playerid, Text:clickedid);
+#endif
+
+////////////////////////////////////////////////////////////////////////////////
+
+// Apply a template array to a GUI
+stock ApplyGUIArray(GUIMenu:gindex, pindex, const GUIType[GUIDEF], Float:xoffset = 0.0, Float:yoffset = 0.0)
+{
+	GUIValid(gindex, pindex);
+
+	// Only text
+	if(GUIType[GUIFont] < 4)
+	{
+	    xoffset += GUIType[GUITextSizeX];
+	    yoffset += GUI_Y_OFFSET+GUIType[GUITextSizeY];
+	}
+	else
+	{
+	    xoffset = GUIType[GUITextSizeX];
+	    yoffset = GUIType[GUITextSizeY];
+	}
+
+  	GUISetPlayerText(gindex, pindex, GUIType[GUIText]);
+  	GUISetBackColor(gindex, pindex, GUIType[GUIBackColor]);
+    GUISetFont(gindex, pindex, GUIType[GUIFont]);
+	GUISetLetterSize(gindex, pindex, GUIType[GUILSizeX], GUIType[GUILSizeY]);
+	GUISetColor(gindex, pindex, GUIType[GUIColor]);
+	GUISetOutline(gindex, pindex, GUIType[GUIOutline]);
+	GUISetProportional(gindex, pindex, GUIType[GUIProportional]);
+	GUISetAlignment(gindex, pindex, GUIType[GUIAlignment]);
+	GUISetShadow(gindex, pindex, GUIType[GUIShawdow]);
+
+	if(GUIType[GUIBox])
+	{
+		GUISetBox(gindex, pindex, GUIType[GUIBox]);
+		GUISetBoxColor(gindex, pindex, GUIType[GUIBoxColor]);
+		GUISetTextSize(gindex, pindex, xoffset, yoffset);
+	}
+
+	if(GUIType[GUIPModel] > -1)
+	{
+		GUISetPreviewModel(gindex, pindex, GUIType[GUIPModel]);
+		GUISetPreviewModelRot(gindex, pindex, GUIType[GUIPModelRX], GUIType[GUIPModelRY], GUIType[GUIPModelRZ], GUIType[GUIPModelZoom]);
+	}
+	
+	GUISetSelectable(gindex, pindex, GUIType[GUISelect]);
+
+	return 1;
+}
+
+// Show the given menu
+stock ShowGUIMenu(playerid, GUIMenu:gindex)
+{
+    GUIValidIndex(gindex);
+	for(new i = 0; i < MAX_ELEMENTS; i++)
+	{
+		if(GUIData[_:gindex][GUIUsed][i]) TextDrawShowForPlayer(playerid, GUIData[_:gindex][GUIid][i]);
+	}
+	return 1;
+
+}
+
+// Hide the given menu
+stock HideGUIMenu(playerid, GUIMenu:gindex)
+{
+    GUIValidIndex(gindex);
+	for(new i = 0; i < MAX_ELEMENTS; i++)
+	{
+		if(GUIData[_:gindex][GUIUsed][i]) TextDrawHideForPlayer(playerid, GUIData[_:gindex][GUIid][i]);
+	}
+	return 1;
+}
+
+// Update everything in a GUI menu
+stock UpdateGUIMenu(playerid, GUIMenu:gindex, pindex)
+{
+    GUIValidIndex(gindex);
+	// Hide all first
+	for(new i = 0; i < MAX_ELEMENTS; i++)
+	{
+		if(GUIData[_:gindex][GUIUsed][i]) TextDrawHideForPlayer(playerid, GUIData[_:gindex][GUIid][i]);
+	}
+	// Now show all again
+	for(new i = 0; i < MAX_ELEMENTS; i++)
+	{
+		if(GUIData[_:gindex][GUIUsed][i]) TextDrawHideForPlayer(playerid, GUIData[_:gindex][GUIid][i]);
+	}
+	return 1;
+}
+
+stock LoadGUIMenu(GUIMenu:gindex, const LoadArray[][GUIDEF], Float:xoffset, Float:yoffset, group, EPI[MAX_ELEMENTS+1], size = sizeof(LoadArray))
+{
+    for(new i = 0; i < size; i++)
+	{
+        EPI[i] = CreateGUIElement(gindex,LoadArray[i],xoffset, yoffset);
+        SetGUIElementGroup(gindex,EPI[i],group);
+        ApplyGUIArray(gindex,EPI[i],LoadArray[i], xoffset, yoffset);
+	}
+	return 1;
+}
+
+stock LoadGUIElement(GUIMenu:gindex, const LoadArray[GUIDEF], Float:xoffset, Float:yoffset)
+{
+	new element = CreateGUIElement(gindex, LoadArray, xoffset, yoffset);
+	ApplyGUIArray(gindex,element,LoadArray,xoffset,yoffset);
+	return element;
+}
+
+// Show the given menu element
+stock ShowGUIElement(playerid, GUIMenu:gindex, pindex)
+{
+    GUIValid(gindex, pindex);
+	TextDrawHideForPlayer(playerid, GUIData[_:gindex][GUIid][pindex]);
+	return 1;
+}
+
+// Hide the given menu element
+stock HideGUIElement(playerid, GUIMenu:gindex, pindex)
+{
+    GUIValid(gindex, pindex);
+	TextDrawHideForPlayer(playerid, GUIData[_:gindex][GUIid][pindex]);
+	return 1;
+}
+
+// Update GUI element
+stock UpdateGUIElement(playerid, GUIMenu:gindex, pindex)
+{
+    GUIValid(gindex, pindex);
+    TextDrawHideForPlayer(playerid, GUIData[_:gindex][GUIid][pindex]);
+    TextDrawHideForPlayer(playerid, GUIData[_:gindex][GUIid][pindex]);
+	return 1;
+}
+
+// Set GUI Element group
+stock SetGUIElementGroup(GUIMenu:gindex, pindex, gval)
+{
+    GUIData[_:gindex][GUIElementGroups][pindex] = gval;
+	return 1;
+}
+
+// Create a new GUI menu
+stock GUIMenu:CreateGUI(name[])
+{
+	for(new i = 0; i < MAX_GUI; i++)
+	{
+	    if(!GUIData[i][GUIActive])
+		{
+		    GUIData[i][GUIActive] = true;
+			format(GUIData[i][GUICallFunc], FUNC_NAME_SIZE, "%s", name);
+		    return GUIMenu:i;
+		}
+	}
+	return INVALID_MENU_GUI;
+}
+
+// Destroy a GUI menu
+stock DestroyGUI(GUIMenu:gindex)
+{
+	GUIValidIndex(gindex);
+	
+	for(new i = 0; i < MAX_ELEMENTS; i++)
+	{
+	    if(GUIData[_:gindex][GUIUsed][i])
+		{
+			foreach(new j : Player) TextDrawHideForPlayer(j, GUIData[_:gindex][GUIid][i]);
+            GUIData[_:gindex][GUIUsed][i] = false;
+            GUIData[_:gindex][GUIElementGroups][i] = 0;
+            TextDrawDestroy(GUIData[_:gindex][GUIid][i]);
+            GUIData[_:gindex][GUIOffsetX] = 0.0;
+            GUIData[_:gindex][GUIOffsetY] = 0.0;
+	}
+	}
+	GUIData[_:gindex][GUIActive] = false;
+	return 1;
+}
+
+// Create a GUI element
+stock CreateGUIElement(GUIMenu:gindex, const GUIType[GUIDEF], Float:xoffset = 0.0, Float:yoffset = 0.0)
+{
+	GUIValidIndex(gindex);
+	for(new i = 0; i < MAX_ELEMENTS; i++)
+	{
+	    if(!GUIData[_:gindex][GUIUsed][i])
+	    {
+	        GUIData[_:gindex][GUIid][i] = TextDrawCreate(GUI_X_OFFSET+GUIType[GUIOffX]+xoffset, GUI_Y_OFFSET+GUIType[GUIOffY]+yoffset, "_");
+	        GUIData[_:gindex][GUIUsed][i] = true;
+			GUIData[_:gindex][GUIOffsetX][i] = GUI_X_OFFSET+GUIType[GUIOffX]+xoffset;
+			GUIData[_:gindex][GUIOffsetY][i] = GUI_Y_OFFSET+GUIType[GUIOffY]+yoffset;
+			return i;
+	    }
+	}
+	printf("ERROR: Tried to created too many elements");
+	return 0;
+}
+
+// Destroy a GUI element
+stock DeleteMenuElement(GUIMenu:gindex, pindex)
+{
+    GUIValid(gindex, pindex);
+    DestroyTextDraw(playerid, GUIData[_:gindex][GUIid][pindex]);
+	GUIData[_:gindex][GUIUsed][pindex] = false;
+	return 1;
+}
+
+// Player textdraw functions
+stock GUISetPlayerText(GUIMenu:gindex, pindex, const text[])
+{
+ 	GUIValid(gindex, pindex);
+    TextDrawSetStringC(GUIData[_:gindex][GUIid][pindex], text);
+	return 1;
+}
+
+// Set a previewmodel
+stock GUISetPreviewModel(GUIMenu:gindex, pindex, value)
+{
+   	GUIValid(gindex, pindex);
+    TextDrawSetPreviewModel(GUIData[_:gindex][GUIid][pindex], value);
+	return 1;
+}
+
+// Set a previewmodel
+stock GUISetPreviewModelRot(GUIMenu:gindex, pindex, Float:rx, Float:ry, Float:rz, Float:zoom)
+{
+   	GUIValid(gindex, pindex);
+    TextDrawSetPreviewRot(GUIData[_:gindex][GUIid][pindex], rx, ry, rz, zoom);
+	return 1;
+}
+
+stock GUISetBackColor(GUIMenu:gindex, pindex, value)
+{
+	GUIValid(gindex, pindex);
+    TextDrawBackgroundColor(GUIData[_:gindex][GUIid][pindex], value);
+	return 1;
+}
+
+stock GUISetFont(GUIMenu:gindex, pindex, value)
+{
+	GUIValid(gindex, pindex);
+    TextDrawFont(GUIData[_:gindex][GUIid][pindex], value);
+	return 1;
+}
+
+stock GUISetLetterSize(GUIMenu:gindex, pindex, Float:x, Float:y)
+{
+	GUIValid(gindex, pindex);
+    TextDrawLetterSize(GUIData[_:gindex][GUIid][pindex], x, y);
+	return 1;
+}
+
+stock GUISetColor(GUIMenu:gindex, pindex, value)
+{
+	GUIValid(GUIMenu:gindex, pindex);
+    TextDrawColor(GUIData[_:gindex][GUIid][pindex], value);
+	return 1;
+}
+
+stock GUISetOutline(GUIMenu:gindex, pindex, value)
+{
+	GUIValid(gindex, pindex);
+    TextDrawSetOutline(GUIData[_:gindex][GUIid][pindex], value);
+	return 1;
+}
+
+stock GUISetProportional(GUIMenu:gindex, pindex, value)
+{
+	GUIValid(gindex, pindex);
+    TextDrawSetProportional(GUIData[_:gindex][GUIid][pindex], value);
+	return 1;
+}
+
+stock GUISetAlignment(GUIMenu:gindex, pindex, value)
+{
+	GUIValid(gindex, pindex);
+    TextDrawAlignment(GUIData[_:gindex][GUIid][pindex], value);
+	return 1;
+}
+
+
+stock GUISetShadow(GUIMenu:gindex, pindex, value)
+{
+	GUIValid(gindex, pindex);
+    TextDrawSetShadow(GUIData[_:gindex][GUIid][pindex], value);
+	return 1;
+}
+
+stock GUISetBox(GUIMenu:gindex, pindex, value)
+{
+	GUIValid(gindex, pindex);
+    TextDrawUseBox(GUIData[_:gindex][GUIid][pindex], value);
+	return 1;
+}
+
+stock GUISetBoxColor(GUIMenu:gindex, pindex, value)
+{
+	GUIValid(gindex, pindex);
+    TextDrawBoxColor(GUIData[_:gindex][GUIid][pindex], value);
+	return 1;
+}
+
+stock GUISetTextSize(GUIMenu:gindex, pindex, Float:x, Float:y)
+{
+	GUIValid(gindex, pindex);
+    TextDrawTextSize(GUIData[_:gindex][GUIid][pindex], x, y);
+	return 1;
+}
+
+stock GUISetSelectable(GUIMenu:gindex, pindex, value)
+{
+	GUIValid(gindex, pindex);
+    TextDrawSetSelectable(GUIData[_:gindex][GUIid][pindex], value);
+	return 1;
+}

+ 24 - 0
Texture-Studio-master/filterscripts/tstudio/gui/guihook.pwn

@@ -0,0 +1,24 @@
+#include <a_samp>
+
+forward GUIOnPCPDT(playerid, PlayerText:playertextid);
+
+public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
+{
+    if(!GUIOnPCPDT(playerid, playertextid))
+	{
+		#if defined GH_OnPlayerClickPlayerTextDraw
+			return GH_OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid);
+		#endif
+	}
+
+	return 1;
+}
+#if defined _ALS_OnPlayerClickPlayerTD
+	#undef OnPlayerClickPlayerTextDraw
+#else
+	#define _ALS_OnPlayerClickPlayerTD
+#endif
+#define OnPlayerClickPlayerTextDraw GH_OnPlayerClickPlayerTextDraw
+#if defined GH_OnPlayerClickPlayerTextDraw
+	forward GH_OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid);
+#endif

+ 81 - 0
Texture-Studio-master/filterscripts/tstudio/gui/guisys.pwn

@@ -0,0 +1,81 @@
+#tryinclude <YSI\y_iterate>
+
+#if !defined _Y_ITERATE_LOCAL_VERSION
+	#error y_iterate not found
+#endif
+
+
+// Common Data
+#define         GUI_X_OFFSET    0.0
+#define         GUI_Y_OFFSET    0.0
+
+#define         ADD_ORDER           0
+#define         REM_ORDER           1
+
+#define         FUNC_NAME_SIZE  	20
+
+// Player Textdraw Data
+#define         MAX_PLAYER_GUI         10
+#define         MAX_PLAYER_ELEMENTS    40
+
+// Maximum Textdraw binds allowed
+#define         MAX_PLAYER_BINDS        50
+
+#define         MAX_PLAYER_GUI_TEXT    128
+
+#define 		INVALID_MENU_PLAYERGUI       (PlayerGUIMenu:-1)
+
+
+// World data
+#define         MAX_GUI           100
+#define         MAX_ELEMENTS      100
+
+#define 		INVALID_MENU_GUI       (GUIMenu:-1)
+
+#define         CLICK_NO_GROUP          0
+
+enum GUIDEF {
+	GUIText[MAX_PLAYER_GUI_TEXT],
+	Float:GUIOffX,
+	Float:GUIOffY,
+	Float:GUILSizeX,
+	Float:GUILSizeY,
+	Float:GUITextSizeX,
+	Float:GUITextSizeY,
+	Float:GUIPModelRX,
+	Float:GUIPModelRY,
+	Float:GUIPModelRZ,
+	Float:GUIPModelZoom,
+	GUIPModel,
+	GUIBackColor,
+	GUIFont,
+	GUIColor,
+	GUIOutline,
+	GUIProportional,
+	GUIAlignment,
+	GUIShawdow,
+	GUIBox,
+	GUIBoxColor,
+	GUISelect,
+}
+
+// Used internally to return element indexes found
+stock E_INDEX[MAX_ELEMENTS+1];
+stock E_PLAYERINDEX[MAX_PLAYER_ELEMENTS+1];
+
+// Used internally to return created element index
+stock L_ELEMENT;
+
+// Stop all textdraw clicks
+new bool:GUIPaused[MAX_PLAYERS];
+
+forward PlayerSetGUIPaused(playerid, bool:paused);
+public PlayerSetGUIPaused(playerid, bool:paused)
+{
+    GUIPaused[playerid] = paused;
+	return 1;
+}
+
+#include "tstudio\gui\guihook.pwn"
+#include "tstudio\gui\gui.pwn"
+#include "tstudio\gui\playergui.pwn"

+ 727 - 0
Texture-Studio-master/filterscripts/tstudio/gui/playergui.pwn

@@ -0,0 +1,727 @@
+/*
+Stock functions
+PlayerApplyGUIArray(playerid, PlayerGUIMenu:gindex, pindex, GUIType, useoffset = 0, Float:xoffset = 0.0, Float:yoffset = 0.0)
+PlayerLoadGUIMenu(playerid,MenuArray,PlayerGUIMenu:gindex,xoffset, yoffset, textsizeoffsetx, textsizeoffsety);
+PlayerShowGUIMenu(playerid, PlayerGUIMenu:gindex)
+PlayerHideGUIMenu(playerid, PlayerGUIMenu:gindex)
+PlayerShowGUIElement(playerid, PlayerGUIMenu:gindex, pindex)
+PlayerHideGUIElement(playerid, PlayerGUIMenu:gindex, pindex)
+PlayerGUIMenu:PlayerCreateGUI(playerid)
+PlayerGUIDestroy(playerid, PlayerGUIMenu:gindex)
+PlayerCreateGUIElement(playerid, PlayerGUIMenu:gindex, Float:xoffset, Float:yoffset)
+PlayerDeleteGUIElement(playerid, PlayerGUIMenu:gindex, pindex)
+PlayerUpdateGUIMenu(playerid, PlayerGUIMenu:gindex, pindex)
+PlayerUpdateGUIElement(playerid, PlayerGUIMenu:gindex, pindex)
+PlayerBindTextDraw(playerid, PlayerGUIMenu:gindex, GUIMenu:tindex)
+PlayerClearBindTextDraw(playerid, PlayerGUIMenu:gindex, GUIMenu:tindex)
+PlayerSelectGUITextDraw(playerid)
+
+// Setter functions
+PlayerGUISetPlayerText(playerid, PlayerGUIMenu:gindex, pindex, GUIType[GUIText])
+PlayerGUISetBackColor(playerid, PlayerGUIMenu:gindex, pindex, GUIType[GUIBackColor])
+PlayerGUISetFont(playerid, PlayerGUIMenu:gindex, pindex, GUIType[GUIFont])
+PlayerGUISetLetterSize(playerid, PlayerGUIMenu:gindex, pindex, GUIType[GUILSizeX], GUIType[GUILSizeY])
+PlayerGUISetColor(playerid, PlayerGUIMenu:gindex, pindex, GUIType[GUIColor])
+PlayerGUISetOutline(playerid, PlayerGUIMenu:gindex, pindex, GUIType[GUIOutline])
+PlayerGUISetProportional(playerid, PlayerGUIMenu:gindex, pindex, GUIType[GUIProportional])
+PlayerGUISetShadow(playerid, PlayerGUIMenu:gindex, pindex, GUIType[GUIShawdow])
+PlayerGUISetBox(playerid, PlayerGUIMenu:gindex, pindex, GUIType[GUIBox])
+PlayerGUISetBoxColor(playerid, PlayerGUIMenu:gindex, pindex, GUIType[GUIBoxColor])
+PlayerGUISetTextSize(playerid, PlayerGUIMenu:gindex, pindex, xoffset, yoffset)
+PlayerGUISetSelectable(playerid, PlayerGUIMenu:gindex, pindex, GUIType[GUISelect])
+PlayerGUISetPreviewModel(playerid, PlayerGUIMenu:gindex, pindex, value)
+PlayerGUISetPreviewModelRot(playerid, gindex, pindex, GUIType[GUIPModelRX], GUIType[GUIPModelRY], GUIType[GUIPModelRZ], GUIType[GUIPModelZoom]);
+
+
+// Array data for TD menu
+	{
+		"New Textdraw",                 // Text
+		0.0,                    // OffsetX
+		0.0,           			// OffsetY
+		0.5,                    // LetterSizeX
+		1.0, 		            // LetterSizeY
+		0.0,                    // TextsizeX
+		0.0,           			// TextsizeY
+		0.0,                    // Preview Model RX
+		0.0,                    // Preview Model RY
+		0.0,                    // Preview Model RZ
+		0.0,                    // Preview Model Zoom
+		0,                      // Preview model
+		0,                      // Backcolor
+		0,                      // Font
+		-1,                      // Color
+		0,                      // Outline
+		0,                      // Proportional
+		0,                      // Alignment
+		0,                      // Shadow
+		0,                      // Box
+		0,                      // Box color
+		0                       // Select
+	},
+*/
+
+// Valid check
+#define PlayerGUIValid(%0,%1,%2) if(!PlayerGUIData[%0][_:%1][PlayerGUIActive]) return 0;\
+	if(!PlayerGUIData[%0][_:%1][PlayerGUIUsed][%2]) return 0
+#define PlayerGUIValidIndex(%0,%1) if(!PlayerGUIData[%0][_:%1][PlayerGUIActive]) return 0
+#define PlayerGUIValidElement(%0,%1,%2) if(!PlayerGUIData[%0][_:%1][PlayerGUIUsed][%2]) return 0
+
+
+// Called when a player clicks a textdraw
+#define OnPlayerGUIClick:%1(%2,%3,%4,%5) \
+	forward ONGUIP_%1(%2,%3,%4,%5); \
+	public ONGUIP_%1(%2,%3,%4,%5)
+	
+// Called when a player clicks a textdraw
+#define OnPlayerGUIClose:%1(%2,%3,%4) \
+	forward ONGUIC_%1(%2,%3,%4); \
+	public ONGUIC_%1(%2,%3,%4)
+
+enum GUIPLAYERMENUINFO {
+	bool:PlayerGUIActive,
+	bool:PlayerGUIIsVisible,
+	bool:IgnoreClose,
+	PlayerGUICallFunc[20],
+	bool:PlayerGUIUsed[MAX_PLAYER_ELEMENTS],
+	PlayerGUIElementGroups[MAX_PLAYER_ELEMENTS],
+	GUIMenu:PlayerTextDrawBinds[MAX_PLAYER_BINDS],
+	PlayerText:PlayerGUIid[MAX_PLAYER_ELEMENTS],
+	Float:PlayerGUIOffsetX[MAX_PLAYER_ELEMENTS],
+	Float:PlayerGUIOffsetY[MAX_PLAYER_ELEMENTS],
+}
+
+// Store all GUI data
+static PlayerGUIData[MAX_PLAYERS][MAX_PLAYER_GUI][GUIPLAYERMENUINFO];
+
+// GUI order (last opened GUI's will close when when selectable is on)
+static PlayerGUIOrderData[MAX_PLAYERS][MAX_PLAYER_GUI];
+
+// Selection color player currently is using
+static PlayerGUISelectionColor[MAX_PLAYERS];
+
+// Ignore the next textdraw close (used internally)
+static bool:IgnoreNextClose[MAX_PLAYERS];
+
+static bool:SelectionOn[MAX_PLAYERS];
+
+// Init playergui //////////////////////////////////////////////////////////////
+public OnFilterScriptInit()
+{
+	for(new i = 0; i < MAX_PLAYERS; i++)
+	{
+	    for(new j = 0; j < MAX_PLAYER_GUI; j++)
+		{
+			PlayerGUIOrderData[i][j] = -1;
+			for(new k = 0; k < MAX_PLAYER_BINDS; k++) { PlayerGUIData[i][j][PlayerTextDrawBinds][k] = INVALID_MENU_GUI; }
+		}
+	}
+
+	#if defined PG_OnFilterScriptInit
+		PG_OnFilterScriptInit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptInit
+	#undef OnFilterScriptInit
+#else
+	#define _ALS_OnFilterScriptInit
+#endif
+#define OnFilterScriptInit PG_OnFilterScriptInit
+#if defined PG_OnFilterScriptInit
+	forward PG_OnFilterScriptInit();
+#endif
+
+////////////////////////////////////////////////////////////////////////////////
+
+public OnFilterScriptExit()
+{
+	foreach(new i : Player)
+	{
+	    for(new j = 0; j < MAX_PLAYER_GUI; j++)
+		{
+		    if(PlayerGUIData[i][j][PlayerGUIActive]) PlayerGUIDestroy(i, PlayerGUIMenu:j);
+			for(new k = 0; k < MAX_PLAYER_BINDS; k++) { PlayerGUIData[i][j][PlayerTextDrawBinds][k] = INVALID_MENU_GUI; }
+		}
+	}
+
+	#if defined PG_OnFilterScriptExit
+		PG_OnFilterScriptExit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptExit
+	#undef OnFilterScriptExit
+#else
+	#define _ALS_OnFilterScriptExit
+#endif
+#define OnFilterScriptExit PG_OnFilterScriptExit
+#if defined PG_OnFilterScriptExit
+	forward PG_OnFilterScriptExit();
+#endif
+
+////////////////////////////////////////////////////////////////////////////////
+
+public OnPlayerDisconnect(playerid, reason)
+{
+    for(new i = 0; i < MAX_PLAYER_GUI; i++)
+	{
+	    if(PlayerGUIData[playerid][i][PlayerGUIActive]) ResetPlayerGUIData(playerid, i);
+	}
+
+ 	for(new i = 0; i < MAX_PLAYER_GUI; i++)
+	{
+		PlayerGUIOrderData[playerid][i] = -1;
+		for(new j = 0; j < MAX_PLAYER_BINDS; j++) { PlayerGUIData[playerid][i][PlayerTextDrawBinds][j] = INVALID_MENU_GUI; }
+	}
+
+	IgnoreNextClose[playerid] = false;
+	SelectionOn[playerid] = false;
+	GUIPaused[playerid] = false;
+
+	#if defined PG_OnPlayerDisconnect
+		PG_OnPlayerDisconnect(playerid,reason);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerDisconnect
+	#undef OnPlayerDisconnect
+#else
+	#define _ALS_OnPlayerDisconnect
+#endif
+#define OnPlayerDisconnect PG_OnPlayerDisconnect
+#if defined PG_OnPlayerDisconnect
+	forward PG_OnPlayerDisconnect(playerid,reason);
+#endif
+
+////////////////////////////////////////////////////////////////////////////////
+public OnPlayerClickTextDraw(playerid, Text:clickedid)
+{
+	if(!GUIPaused[playerid])
+	{
+		if(clickedid == Text:INVALID_TEXT_DRAW)
+		{
+			if(IgnoreNextClose[playerid])
+			{
+			    IgnoreNextClose[playerid] = false;
+				SelectionOn[playerid] = false;
+			    return 1;
+			}
+			if(GUIHideFirstInStack(playerid)) return 1;
+		}
+	}
+
+	#if defined PG_OnPlayerClickTextDraw
+		PG_OnPlayerClickTextDraw(playerid, Text:clickedid);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerClickTextDraw
+	#undef OnPlayerClickTextDraw
+#else
+	#define _ALS_OnPlayerClickTextDraw
+#endif
+#define OnPlayerClickTextDraw PG_OnPlayerClickTextDraw
+#if defined PG_OnPlayerClickTextDraw
+	forward PG_OnPlayerClickTextDraw(playerid, Text:clickedid);
+#endif
+
+GUIHideFirstInStack(playerid)
+{
+	// Hide first visible in order stack
+	for(new i = MAX_PLAYER_GUI - 1; i >= 0; i--)
+	{
+		if(PlayerGUIData[playerid][i][PlayerGUIIsVisible])
+		{
+			new CallFunc[32];
+		    format(CallFunc, sizeof(CallFunc), "ONGUIC_%s", PlayerGUIData[playerid][i][PlayerGUICallFunc]);
+		    CallLocalFunction(CallFunc, "iii", playerid, PlayerGUIData[playerid][i][PlayerGUIElementGroups], i);
+
+			PlayerHideGUIMenu(playerid, PlayerGUIMenu:i, false);
+			return 1;
+		}
+	}
+	return 0;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+public GUIOnPCPDT(playerid, PlayerText:playertextid)
+{
+	if(!GUIPaused[playerid])
+	{
+		for(new i = 0; i < MAX_PLAYER_GUI; i++)
+		{
+	        if(PlayerGUIData[playerid][i][PlayerGUIActive])
+	        {
+				for(new j = 0; j < MAX_PLAYER_ELEMENTS; j++)
+				{
+				    if(PlayerGUIData[playerid][i][PlayerGUIUsed][j])
+				    {
+				        if(PlayerGUIData[playerid][i][PlayerGUIid][j] == playertextid)
+				        {
+				            new CallFunc[32];
+				            format(CallFunc, sizeof(CallFunc), "ONGUIP_%s", PlayerGUIData[playerid][i][PlayerGUICallFunc]);
+				            return CallLocalFunction(CallFunc, "iiii", playerid, PlayerGUIData[playerid][i][PlayerGUIElementGroups], i, j);
+				        }
+				    }
+				}
+	        }
+		}
+	}
+	return 0;
+}
+////////////////////////////////////////////////////////////////////////////////
+
+stock SetPlayerGUISelectionColor(playerid, color)
+{
+	PlayerGUISelectionColor[playerid] = color;
+	return 1;
+}
+
+stock PlayerSelectGUITextDraw(playerid)
+{
+	SelectTextDraw(playerid, PlayerGUISelectionColor[playerid]);
+	SelectionOn[playerid] = true;
+	return 1;
+}
+
+stock PlayerCancelSelectGUITextDraw(playerid, bool:ignore = false)
+{
+	SelectionOn[playerid] = false;
+	if(ignore) IgnoreNextClose[playerid] = true;
+	CancelSelectTextDraw(playerid);
+	return 1;
+}
+
+stock PlayerGUISelection(playerid) { return SelectionOn[playerid]; }
+
+// Ignore a menu closing
+stock PlayerGUIIgnoreClose(playerid, PlayerGUIMenu:gindex, bool:ignore)
+{
+    PlayerGUIData[playerid][_:gindex][IgnoreClose] = ignore;
+	return 1;
+}
+
+
+// Apply a template array to a GUI
+stock PlayerApplyGUIArray(playerid, PlayerGUIMenu:gindex, pindex, GUIType[GUIDEF], Float:xoffset = 0.0, Float:yoffset = 0.0)
+{
+	PlayerGUIValid(playerid, gindex, pindex);
+	
+	// Only text
+	if(GUIType[GUIFont] < 4)
+	{
+	    xoffset += GUIType[GUITextSizeX];
+	    yoffset += GUI_Y_OFFSET+GUIType[GUITextSizeY];
+	}
+	else
+	{
+	    xoffset = GUIType[GUITextSizeX];
+	    yoffset = GUIType[GUITextSizeY];
+	}
+
+  	PlayerGUISetPlayerText(playerid, gindex, pindex, GUIType[GUIText]);
+  	PlayerGUISetBackColor(playerid, gindex, pindex, GUIType[GUIBackColor]);
+    PlayerGUISetFont(playerid, gindex, pindex, GUIType[GUIFont]);
+	PlayerGUISetLetterSize(playerid, gindex, pindex, GUIType[GUILSizeX], GUIType[GUILSizeY]);
+	PlayerGUISetColor(playerid, gindex, pindex, GUIType[GUIColor]);
+	PlayerGUISetOutline(playerid, gindex, pindex, GUIType[GUIOutline]);
+	PlayerGUISetProportional(playerid, gindex, pindex, GUIType[GUIProportional]);
+	PlayerGUISetAlignment(playerid, gindex, pindex, GUIType[GUIAlignment]);
+	PlayerGUISetShadow(playerid, gindex, pindex, GUIType[GUIShawdow]);
+
+	if(GUIType[GUIBox])
+	{
+		PlayerGUISetBox(playerid, gindex, pindex, GUIType[GUIBox]);
+		PlayerGUISetBoxColor(playerid, gindex, pindex, GUIType[GUIBoxColor]);
+		PlayerGUISetTextSize(playerid, gindex, pindex, xoffset, yoffset);
+	}
+
+	if(GUIType[GUIPModel] > 0)
+	{
+		PlayerGUISetPreviewModel(playerid, gindex, pindex, GUIType[GUIPModel]);
+		PlayerGUISetPreviewModelRot(playerid, gindex, pindex, GUIType[GUIPModelRX], GUIType[GUIPModelRY], GUIType[GUIPModelRZ], GUIType[GUIPModelZoom]);
+	}
+	
+	PlayerGUISetSelectable(playerid, gindex, pindex, GUIType[GUISelect]);
+
+	return 1;
+}
+
+
+// Bind textdraw to player textdraw will show/hide
+stock PlayerBindGUITextDraw(playerid, PlayerGUIMenu:gindex, GUIMenu:tindex)
+{
+	for(new i = 0; i < MAX_PLAYER_BINDS; i++)
+	{
+		if(PlayerGUIData[playerid][_:gindex][PlayerTextDrawBinds][i] == tindex)
+		{
+			print("ERROR: Textdraw is already bound to this players playertextdraw");
+			return -1;
+		}
+	}
+
+	for(new i = 0; i < MAX_PLAYER_BINDS; i++)
+	{
+		if(PlayerGUIData[playerid][_:gindex][PlayerTextDrawBinds][i] == INVALID_MENU_GUI)
+		{
+			#if defined GUI_DEBUG
+			    printf("PlayerBindGUITextDraw::playerid:%i PlayerGUIMenu:%i, GUIMenu:%i, Index:%i", playerid, _:gindex, _:tindex, i);
+			#endif
+
+		    PlayerGUIData[playerid][_:gindex][PlayerTextDrawBinds][i] = tindex;
+		    return i;
+		}
+	}
+	print("ERROR: Tried to bind too many textdraws");
+	return -1;
+}
+
+// Clear any bindines
+stock PlayerClearBindTextDraw(playerid, PlayerGUIMenu:gindex, GUIMenu:tindex)
+{
+	for(new i = 0; i < MAX_PLAYER_BINDS; i++)
+	{
+		if(PlayerGUIData[playerid][_:gindex][PlayerTextDrawBinds][i] == tindex)
+		{
+            HideGUIMenu(playerid, PlayerGUIData[playerid][_:gindex][PlayerTextDrawBinds][i]);
+			PlayerGUIData[playerid][_:gindex][PlayerTextDrawBinds][i] = INVALID_MENU_GUI;
+			return 0;
+		}
+	}
+	print("ERROR: Textdraw was not bound to this players playertextdraw");
+	return 0;
+}
+
+
+// Show the given menu
+stock PlayerShowGUIMenu(playerid, PlayerGUIMenu:gindex, showbinds = true, bool:visible = true)
+{
+    PlayerGUIValidIndex(playerid, gindex);
+	PlayerGUIData[playerid][_:gindex][PlayerGUIIsVisible] = visible;
+	
+	for(new i = 0; i < MAX_PLAYER_ELEMENTS; i++)
+	{
+		if(PlayerGUIData[playerid][_:gindex][PlayerGUIUsed][i])
+		{
+			PlayerTextDrawShow(playerid, PlayerGUIData[playerid][_:gindex][PlayerGUIid][i]);
+			// Show any binds
+			if(showbinds)
+			{
+				for(new j = 0; j < MAX_PLAYER_BINDS; j++)
+				{
+				    if(PlayerGUIData[playerid][_:gindex][PlayerTextDrawBinds][j] != INVALID_MENU_GUI) ShowGUIMenu(playerid, PlayerGUIData[playerid][_:gindex][PlayerTextDrawBinds][j]);
+				}
+			}
+		}
+	}
+	return 1;
+}
+
+// Hides all bound menus
+stock PlayerHideAllGUIBindMenu(playerid, PlayerGUIMenu:gindex)
+{
+    PlayerGUIValidIndex(playerid, gindex);
+
+	// Hide any binds
+	for(new j = 0; j < MAX_PLAYER_BINDS; j++)
+	{
+	    if(PlayerGUIData[playerid][_:gindex][PlayerTextDrawBinds][j] != INVALID_MENU_GUI) HideGUIMenu(playerid, PlayerGUIData[playerid][_:gindex][PlayerTextDrawBinds][j]);
+	}
+	return 1;
+}
+
+// Hide the given menu
+stock PlayerHideGUIMenu(playerid, PlayerGUIMenu:gindex, bool:visible = false)
+{
+    PlayerGUIValidIndex(playerid, gindex);
+	PlayerGUIData[playerid][_:gindex][PlayerGUIIsVisible] = visible;
+
+	for(new i = 0; i < MAX_PLAYER_ELEMENTS; i++)
+	{
+		if(PlayerGUIData[playerid][_:gindex][PlayerGUIUsed][i]) PlayerTextDrawHide(playerid, PlayerGUIData[playerid][_:gindex][PlayerGUIid][i]);
+		// Hide any binds
+		for(new j = 0; j < MAX_PLAYER_BINDS; j++)
+		{
+		    if(PlayerGUIData[playerid][_:gindex][PlayerTextDrawBinds][j] != INVALID_MENU_GUI) HideGUIMenu(playerid, PlayerGUIData[playerid][_:gindex][PlayerTextDrawBinds][j]);
+		}
+	}
+
+	new count;
+	for(new j = 0; j < MAX_PLAYER_GUI; j++)
+	{
+	    if(PlayerGUIData[playerid][j][PlayerGUIIsVisible])
+		{
+		    count++;
+		    break;
+		}
+	}
+
+	if(!PlayerGUIData[playerid][_:gindex][IgnoreClose] && count) PlayerSelectGUITextDraw(playerid);
+ 	else if(!PlayerGUIData[playerid][_:gindex][IgnoreClose] && count == 0) PlayerCancelSelectGUITextDraw(playerid);
+
+	return 1;
+}
+
+// Update everything in a GUI menu
+stock PlayerUpdateGUIMenu(playerid, PlayerGUIMenu:gindex, pindex)
+{
+    PlayerGUIValidIndex(playerid, gindex);
+	// Hide all first
+	for(new i = 0; i < MAX_PLAYER_ELEMENTS; i++)
+	{
+		if(PlayerGUIData[playerid][_:gindex][PlayerGUIUsed][i]) PlayerTextDrawHide(playerid, PlayerGUIData[playerid][_:gindex][PlayerGUIid][i]);
+	}
+	// Now show all again
+	for(new i = 0; i < MAX_PLAYER_ELEMENTS; i++)
+	{
+		if(PlayerGUIData[playerid][_:gindex][PlayerGUIUsed][i]) PlayerTextDrawShow(playerid, PlayerGUIData[playerid][_:gindex][PlayerGUIid][i]);
+	}
+	return 1;
+}
+
+// Show the given menu element
+stock PlayerShowGUIElement(playerid, PlayerGUIMenu:gindex, pindex)
+{
+    PlayerGUIValid(playerid, gindex, pindex);
+	PlayerTextDrawShow(playerid, PlayerGUIData[playerid][_:gindex][PlayerGUIid][pindex]);
+	return 1;
+}
+
+// Show the given menu element
+stock PlayerHideGUIElement(playerid, PlayerGUIMenu:gindex, pindex)
+{
+    PlayerGUIValid(playerid, gindex, pindex);
+	PlayerTextDrawHide(playerid, PlayerGUIData[playerid][_:gindex][PlayerGUIid][pindex]);
+	return 1;
+}
+
+// Update GUI element
+stock PlayerUpdateGUIElement(playerid, PlayerGUIMenu:gindex, pindex)
+{
+    PlayerGUIValid(playerid, gindex, pindex);
+    PlayerTextDrawHide(playerid, PlayerGUIData[playerid][_:gindex][PlayerGUIid][pindex]);
+    PlayerTextDrawShow(playerid, PlayerGUIData[playerid][_:gindex][PlayerGUIid][pindex]);
+	return 1;
+}
+
+// Create a new GUI menu
+stock PlayerGUIMenu:PlayerCreateGUI(playerid, name[])
+{
+	for(new i = 0; i < MAX_PLAYER_GUI; i++)
+	{
+	    if(!PlayerGUIData[playerid][i][PlayerGUIActive])
+		{
+			#if defined GUI_DEBUG
+				printf("PlayerGUIMenu::playerid: %i Tag Name: %s Index: %i", playerid, name, i);
+			#endif
+
+		    PlayerGUIData[playerid][i][PlayerGUIActive] = true;
+			format(PlayerGUIData[playerid][i][PlayerGUICallFunc], FUNC_NAME_SIZE, "%s", name);
+		    return PlayerGUIMenu:i;
+		}
+	}
+	return INVALID_MENU_PLAYERGUI;
+}
+
+// Destroy a GUI menu
+stock PlayerGUIDestroy(playerid, PlayerGUIMenu:gindex)
+{
+	PlayerGUIValidIndex(playerid, gindex);
+	for(new i = 0; i < MAX_PLAYER_ELEMENTS; i++)
+	{
+	    if(PlayerGUIData[playerid][_:gindex][PlayerGUIUsed][i])
+		{
+            PlayerGUIData[playerid][_:gindex][PlayerGUIUsed][i] = false;
+            PlayerGUIData[playerid][_:gindex][PlayerGUIElementGroups][i] = 0;
+            PlayerTextDrawDestroy(playerid, PlayerGUIData[playerid][_:gindex][PlayerGUIid][i]);
+            PlayerGUIData[playerid][_:gindex][PlayerGUIOffsetX] = 0.0;
+            PlayerGUIData[playerid][_:gindex][PlayerGUIOffsetY] = 0.0;
+		}
+	}
+	PlayerGUIData[playerid][_:gindex][PlayerGUIActive] = false;
+	return 1;
+}
+
+// Create a GUI element
+stock PlayerCreateGUIElement(playerid, PlayerGUIMenu:gindex, GUIType[GUIDEF], Float:xoffset, Float:yoffset)
+{
+	PlayerGUIValidIndex(playerid, gindex);
+	for(new i = 0; i < MAX_PLAYER_ELEMENTS; i++)
+	{
+	    if(!PlayerGUIData[playerid][_:gindex][PlayerGUIUsed][i])
+	    {
+			PlayerGUIData[playerid][_:gindex][PlayerGUIid][i] = CreatePlayerTextDraw(playerid, GUI_X_OFFSET+GUIType[GUIOffX]+xoffset, GUI_Y_OFFSET+GUIType[GUIOffY]+yoffset, "_");
+	        PlayerGUIData[playerid][_:gindex][PlayerGUIUsed][i] = true;
+			PlayerGUIData[playerid][_:gindex][PlayerGUIOffsetX][i] = GUI_X_OFFSET+GUIType[GUIOffX]+xoffset;
+			PlayerGUIData[playerid][_:gindex][PlayerGUIOffsetY][i] = GUI_Y_OFFSET+GUIType[GUIOffY]+yoffset;
+
+
+			#if defined GUI_DEBUG
+			    printf("PlayerCreateGUIElement::playerid: %i gindex:%i Textdrawid: %i", playerid, _:gindex, _:PlayerGUIData[playerid][_:gindex][PlayerGUIid][i]);
+			#endif
+
+			return i;
+	    }
+	}
+	printf("ERROR: Tried to created too many elements");
+	return 0;
+}
+
+
+stock PlayerLoadGUIMenu(playerid, PlayerGUIMenu:gindex, const LoadArray[][GUIDEF], Float:xoffset, Float:yoffset, group, EPI[MAX_PLAYER_ELEMENTS+1], size = sizeof(LoadArray))
+{
+    for(new i = 0; i < size; i++)
+	{
+        EPI[i] = PlayerCreateGUIElement(playerid,gindex,LoadArray[i],xoffset, yoffset);
+        PlayerSetGUIElementGroup(playerid,gindex,EPI[i],group);
+        PlayerApplyGUIArray(playerid,gindex,EPI[i],LoadArray[i]);
+	}
+	return 1;
+}
+
+
+// Destroy a GUI element
+stock PlayerDeleteGUIElement(playerid, PlayerGUIMenu:gindex, pindex)
+{
+    PlayerGUIValid(playerid, gindex, pindex);
+    DestroyPlayerTextDraw(playerid, PlayerGUIData[playerid][_:gindex][PlayerGUIid][pindex]);
+	PlayerGUIData[playerid][_:gindex][PlayerGUIUsed][pindex] = false;
+	return 1;
+}
+
+// Set GUI Element group
+stock PlayerSetGUIElementGroup(playerid, PlayerGUIMenu:gindex, pindex, gval)
+{
+    PlayerGUIData[playerid][_:gindex][PlayerGUIElementGroups][pindex] = gval;
+	return 1;
+}
+
+
+static ResetPlayerGUIData(playerid, gindex)
+{
+	for(new i = 0; i < MAX_PLAYER_ELEMENTS; i++)
+	{
+	    if(PlayerGUIData[playerid][gindex][PlayerGUIUsed][i])
+		{
+	        PlayerGUIData[playerid][gindex][PlayerGUIUsed][i] = false;
+			PlayerGUIData[playerid][gindex][PlayerGUIElementGroups][i] = -1;
+			PlayerGUIData[playerid][gindex][PlayerGUIOffsetX][i] = 0.0;
+			PlayerGUIData[playerid][gindex][PlayerGUIOffsetY][i] = 0.0;
+		}
+	}
+
+    PlayerGUIData[playerid][_:gindex][IgnoreClose] = false;
+    PlayerGUIData[playerid][_:gindex][PlayerGUIActive] = false;
+	return 1;
+}
+
+// Player textdraw functions
+stock PlayerGUISetPlayerText(playerid, PlayerGUIMenu:gindex, pindex, text[])
+{
+	PlayerGUIValid(playerid, gindex, pindex);
+    PlayerTextDrawSetString(playerid, PlayerGUIData[playerid][_:gindex][PlayerGUIid][pindex], text);
+	return 1;
+}
+
+// Set a previewmodel
+stock PlayerGUISetPreviewModel(playerid, PlayerGUIMenu:gindex, pindex, value)
+{
+   	PlayerGUIValid(playerid, gindex, pindex);
+    PlayerTextDrawSetPreviewModel(playerid, PlayerGUIData[playerid][_:gindex][PlayerGUIid][pindex], value);
+	return 1;
+}
+
+// Set a previewmodel
+stock PlayerGUISetPreviewModelRot(playerid, PlayerGUIMenu:gindex, pindex, Float:rx, Float:ry, Float:rz, Float:zoom)
+{
+   	PlayerGUIValid(playerid, gindex, pindex);
+    PlayerTextDrawSetPreviewRot(playerid, PlayerGUIData[playerid][_:gindex][PlayerGUIid][pindex], rx, ry, rz, zoom);
+	return 1;
+}
+
+stock PlayerGUISetBackColor(playerid, PlayerGUIMenu:gindex, pindex, value)
+{
+	PlayerGUIValid(playerid, gindex, pindex);
+    PlayerTextDrawBackgroundColor(playerid, PlayerGUIData[playerid][_:gindex][PlayerGUIid][pindex], value);
+	return 1;
+}
+
+stock PlayerGUISetFont(playerid, PlayerGUIMenu:gindex, pindex, value)
+{
+	PlayerGUIValid(playerid, gindex, pindex);
+    PlayerTextDrawFont(playerid,PlayerGUIData[playerid][_:gindex][PlayerGUIid][pindex], value);
+	return 1;
+}
+
+stock PlayerGUISetLetterSize(playerid, PlayerGUIMenu:gindex, pindex, Float:x, Float:y)
+{
+	PlayerGUIValid(playerid, gindex, pindex);
+    PlayerTextDrawLetterSize(playerid, PlayerGUIData[playerid][_:gindex][PlayerGUIid][pindex], x, y);
+	return 1;
+}
+
+stock PlayerGUISetColor(playerid, PlayerGUIMenu:gindex, pindex, value)
+{
+	PlayerGUIValid(playerid, PlayerGUIMenu:gindex, pindex);
+    PlayerTextDrawColor(playerid,PlayerGUIData[playerid][_:gindex][PlayerGUIid][pindex], value);
+	return 1;
+}
+
+stock PlayerGUISetOutline(playerid, PlayerGUIMenu:gindex, pindex, value)
+{
+	PlayerGUIValid(playerid, gindex, pindex);
+    PlayerTextDrawSetOutline(playerid,PlayerGUIData[playerid][_:gindex][PlayerGUIid][pindex], value);
+	return 1;
+}
+
+stock PlayerGUISetProportional(playerid, PlayerGUIMenu:gindex, pindex, value)
+{
+	PlayerGUIValid(playerid, gindex, pindex);
+    PlayerTextDrawSetProportional(playerid,PlayerGUIData[playerid][_:gindex][PlayerGUIid][pindex], value);
+	return 1;
+}
+
+stock PlayerGUISetAlignment(playerid, PlayerGUIMenu:gindex, pindex, value)
+{
+	PlayerGUIValid(playerid, gindex, pindex);
+    PlayerTextDrawAlignment(playerid,PlayerGUIData[playerid][_:gindex][PlayerGUIid][pindex], value);
+	return 1;
+}
+
+
+stock PlayerGUISetShadow(playerid, PlayerGUIMenu:gindex, pindex, value)
+{
+	PlayerGUIValid(playerid, gindex, pindex);
+    PlayerTextDrawSetShadow(playerid,PlayerGUIData[playerid][_:gindex][PlayerGUIid][pindex], value);
+	return 1;
+}
+
+stock PlayerGUISetBox(playerid, PlayerGUIMenu:gindex, pindex, value)
+{
+	PlayerGUIValid(playerid, gindex, pindex);
+    PlayerTextDrawUseBox(playerid,PlayerGUIData[playerid][_:gindex][PlayerGUIid][pindex], value);
+	return 1;
+}
+
+stock PlayerGUISetBoxColor(playerid, PlayerGUIMenu:gindex, pindex, value)
+{
+	PlayerGUIValid(playerid, gindex, pindex);
+    PlayerTextDrawBoxColor(playerid,PlayerGUIData[playerid][_:gindex][PlayerGUIid][pindex], value);
+	return 1;
+}
+
+stock PlayerGUISetTextSize(playerid, PlayerGUIMenu:gindex, pindex, Float:x, Float:y)
+{
+	PlayerGUIValid(playerid, gindex, pindex);
+    PlayerTextDrawTextSize(playerid,PlayerGUIData[playerid][_:gindex][PlayerGUIid][pindex], x, y);
+	return 1;
+}
+
+stock PlayerGUISetSelectable(playerid, PlayerGUIMenu:gindex, pindex, value)
+{
+	PlayerGUIValid(playerid, gindex, pindex);
+    PlayerTextDrawSetSelectable(playerid,PlayerGUIData[playerid][_:gindex][PlayerGUIid][pindex], value);
+	return 1;
+}

+ 275 - 0
Texture-Studio-master/filterscripts/tstudio/helpcmd.pwn

@@ -0,0 +1,275 @@
+#if defined MANGLE
+	#define TYPES 11
+#else
+	#define TYPES 10
+#endif
+
+new CommandTypes[][] = {
+    "Maps",
+    "Objects",
+    "Textures",
+    "Movement",
+    "Selection",
+    "Groups",
+    "Buildings",
+    "Vehicles",
+    "Binds",
+    "Other"
+#if defined MANGLE
+    ,"Mangle"
+#endif
+};
+
+new CommandGroups[][] = {
+    "General",
+    "Texture Buffer",   // Textures
+    "Texture Indexes",  // Textures
+    "Texture Themes",   // Textures
+    "Delta Movement",   // Movement
+    "Pivot",            // Movement
+    "Group Movement",   // Groups
+    "Group Prefabs",    // Groups
+    "Vehicle Objects"   // Vehicles
+#if defined MANGLE
+    ,"Object",           // Mangle
+    "Groups",           // Mangle
+    "Group Prefabs"    // Mangle
+#endif
+};
+
+enum COMMAND_INFO {
+    cType, cGroup, cName[32]
+}
+new Commands[][COMMAND_INFO] = {
+    {0, 0, "loadmap"},
+    {0, 0, "renamemap"},
+    {0, 0, "deletemap"},
+    {0, 0, "newmap"},
+    {0, 0, "importmap"},
+    {0, 0, "export"},
+    {0, 0, "exportmap"},
+    {0, 0, "exportallmap"},
+    {0, 0, "mprop"},
+    
+    {1, 0, "cobject"},
+    {1, 0, "dobject"},
+    {1, 0, "robject"},
+    {1, 0, "clone"},
+    {1, 0, "ogroup"},
+    {1, 0, "ogoto"},
+    {1, 0, "oswap"},
+    {1, 0, "osearch"},
+    {1, 0, "osearchex"},
+    {1, 0, "oprop"},
+    {1, 0, "note"},
+    {1, 0, "odd"},
+    
+    {2, 0, "mtextures"},
+    {2, 0, "mtsearch"},
+    {2, 0, "ttextures"},
+    {2, 0, "stexture"},
+    {2, 0, "mtset"},
+    {2, 0, "mtsetall"},
+    {2, 0, "mtreset"},
+    {2, 0, "mtcolor"},
+    {2, 0, "mtcolorall"},
+    {2, 0, "mtsearch"},
+    {2, 0, "tsearch"},
+    {2, 0, "text"},
+    
+    {2, 1, "copy"},
+    {2, 1, "clear"},
+    {2, 1, "paste"},
+    
+    {2, 2, "settindex"},
+    {2, 2, "sindex"},
+    {2, 2, "rindex"},
+    
+    {2, 3, "savetheme"},
+    {2, 3, "deletetheme"},
+    {2, 3, "loadtheme"},
+    
+    {3, 0, "editobject"},
+    {3, 0, "ox"},
+    {3, 0, "oy"},
+    {3, 0, "oz"},
+    {3, 0, "rx"},
+    {3, 0, "ry"},
+    {3, 0, "rz"},
+    {3, 0, "rotreset"},
+    
+    {3, 4, "dox"},
+    {3, 4, "doy"},
+    {3, 4, "doz"},
+    {3, 4, "drx"},
+    {3, 4, "dry"},
+    {3, 4, "drz"},
+    
+    {3, 5, "pivot"},
+    {3, 5, "togpivot"},
+    
+    {4, 0, "sel"},
+    {4, 0, "csel"},
+    {4, 0, "lsel"},
+    {4, 0, "scsel"},
+    {4, 0, "dsel"},
+    {4, 0, "dcsel"},
+    
+    {5, 0, "obmedit"},
+    {5, 0, "setgroup"},
+    {5, 0, "selectgroup"},
+    {5, 0, "gselmodel"},
+    {5, 0, "gsel"},
+    {5, 0, "gadd"},
+    {5, 0, "grem"},
+    {5, 0, "gmtset"},
+    {5, 0, "gmtcolor"},
+    {5, 0, "gclear"},
+    {5, 0, "gclone"},
+    {5, 0, "gdelete"},
+    {5, 0, "gall"},
+    {5, 0, "gdd"},
+    {5, 0, "0group"},
+    
+    {5, 6, "editgroup"},
+    {5, 6, "gox"},
+    {5, 6, "goy"},
+    {5, 6, "goz"},
+    {5, 6, "grx"},
+    {5, 6, "gry"},
+    {5, 6, "grz"},
+    {5, 6, "ginfront"},
+    {5, 6, "ginvert"},
+    
+    {5, 7, "gaexport"},
+    {5, 7, "gprefab"},
+    {5, 7, "prefabsetz"},
+    {5, 7, "prefab"},
+    
+    {6, 0, "gtaobjects"},
+    {6, 0, "gtashow"},
+    {6, 0, "gtahide"},
+    {6, 0, "remobject"},
+    {6, 0, "rremobject"},
+    {6, 0, "swapbuilding"},
+    {6, 0, "clonebuilding"},
+    
+    {7, 0, "tcar"},
+    {7, 0, "avmodcar"},
+    {7, 0, "avsetspawn"},
+    {7, 0, "avdeletecar"},
+    {7, 0, "avselectcar"},
+    {7, 0, "avnewcar"},
+    {7, 0, "avcarcolor"},
+    {7, 0, "avpaint"},
+    {7, 0, "avsiren"},
+    {7, 0, "avrespawn"},
+    {7, 0, "avsel"},
+    {7, 0, "avclonecar"},
+    {7, 0, "avexport"},
+    {7, 0, "avexportall"},
+    
+    {7, 8, "avclone"},
+    {7, 8, "avattach"},
+    {7, 8, "avdetach"},
+    {7, 8, "avox"},
+    {7, 8, "avoy"},
+    {7, 8, "avoz"},
+    {7, 8, "avrx"},
+    {7, 8, "avry"},
+    {7, 8, "avrz"},
+    {7, 8, "avmirror"},
+    
+    {8, 0, "runbind"},
+    //{8, 0, "makebind"},
+    {8, 0, "bindeditor"},
+    
+    {9, 0, "hidetext3d"},
+    {9, 0, "showtext3d"},
+    {9, 0, "edittext3d"},
+    {9, 0, "minfo"},
+    {9, 0, "flymode"},
+    {9, 0, "fmspeed"},
+    {9, 0, "fmaccel"},
+    {9, 0, "fmtoggle"},
+    {9, 0, "thelp"},
+    {9, 0, "undo"},
+    {9, 0, "echo"},
+    {9, 0, "setspawn"},
+    {9, 0, "gotomap"},
+    {9, 0, "restrict"},
+    {9, 0, "unrestrict"},
+    {9, 0, "stopedit"}
+#if defined MANGLE
+    ,{10, 9, "cobjectsets"},
+    {10, 9, "osets"},
+    
+    {10, 10, "gsets"},
+    
+    {10, 11, "prefabsets"}
+#endif
+};
+
+// Command list
+YCMD:thelp(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "View a list of all commands and see what they do.");
+		return 1;
+	}
+	
+	if(!isnull(arg) && Command_GetPlayerNamed(arg, playerid))
+		Command_ReProcess(playerid, arg, true);
+
+	new cmdtypes[256];
+	for(new i; i < sizeof(CommandTypes); i++)
+		strcat(cmdtypes, sprintf("%s\n", CommandTypes[i]));
+
+	inline SelectCommandType(spid, sdialogid, sresponse, slistitem, string:stext[])
+	{
+		#pragma unused slistitem, sdialogid, spid, stext
+		if(sresponse)
+		{
+			new cmds[2048];
+			
+			for(new i, lg = -1; i < sizeof(Commands); i++) {
+                if(slistitem == Commands[i][cType]) {
+                    if(!isnull(Commands[i][cName])) {
+						if(lg != Commands[i][cGroup]) {
+							lg = Commands[i][cGroup];
+							if(Commands[i][cGroup] == 0)
+								strcat(cmds, sprintf("{81181C} - %s{FFFFFF}\n", CommandGroups[lg]));
+							else
+								strcat(cmds, sprintf(" \n{81181C} - %s{FFFFFF}\n", CommandGroups[lg]));
+						}
+						strcat(cmds, sprintf("%s\n", Commands[i][cName]));
+                    }
+                }
+			}
+            
+			inline SelectCommand(epid, edialogid, eresponse, elistitem, string:etext[])
+			{
+				#pragma unused elistitem, edialogid, epid, etext
+				if(eresponse)
+				{
+					if(Command_GetPlayerNamed(etext, playerid))
+					{
+						#if defined Y_COMMANDS_NO_IPC
+						Command_ReProcess(playerid, etext, 1);
+						#else
+						Command_OnReceived(OK, playerid, etext);
+						#endif
+					}
+					Dialog_ShowCallback(playerid, using inline SelectCommand, DIALOG_STYLE_LIST, "Texture Studio - Command List", cmds, "Select", "Back");
+				}
+				else
+					Dialog_ShowCallback(playerid, using inline SelectCommandType, DIALOG_STYLE_LIST, "Texture Studio - Command List", cmdtypes, "Select", "Cancel");
+			}
+			Dialog_ShowCallback(playerid, using inline SelectCommand, DIALOG_STYLE_LIST, "Texture Studio - Command List", cmds, "Select", "Back");
+		}
+	}
+	Dialog_ShowCallback(playerid, using inline SelectCommandType, DIALOG_STYLE_LIST, "Texture Studio - Command List", cmdtypes, "Select", "Cancel");
+	return 1;
+}

+ 770 - 0
Texture-Studio-master/filterscripts/tstudio/listsel.pwn

@@ -0,0 +1,770 @@
+
+#define         MAX_LIST_OBJECTS            20
+
+#define         NO_OBJECT_IN_SLOT_MODEL     18631
+
+// Background
+static Text:ListSelBackGround_0;
+static Text:ListSelBackGround_1;
+static Text:ListSelBackGround_2;
+static Text:ListSelBackGround_3;
+
+
+// Clickables
+static Text:ListSelRXLeft;
+static Text:ListSelRYLeft;
+static Text:ListSelRZLeft;
+static Text:ListSelRXRight;
+static Text:ListSelRYRight;
+static Text:ListSelRZRight;
+
+static Text:ListSelZoomLeft;
+static Text:ListSelZoomRight;
+
+static Text:ListSelReset;
+
+static Text:ListSelExit;
+
+static Text:ListSelHighLight[MAX_LIST_OBJECTS];
+
+static Text:ListSelClickLeft;
+static Text:ListSelClickRight;
+
+static Text:ListSelSelectObject;
+
+static PlayerText:ListObjects[MAX_PLAYERS][MAX_LIST_OBJECTS];
+static PlayerText:ListModel[MAX_PLAYERS];
+
+static CurrListOffset[MAX_PLAYERS];
+static CurrListHighlight[MAX_PLAYERS];
+
+static CurrListHighlightObject[MAX_PLAYERS] = { -1, ... };
+
+enum LISTSELINFO { Float:LRX, Float:LRY, Float:LRZ, Float:LZoom }
+static ListSelData[MAX_PLAYERS][LISTSELINFO];
+
+public OnFilterScriptInit()
+{
+	// Background
+	ListSelBackGround_0 = TextDrawCreate(539.000000, 159.000000, "RX");
+	TextDrawAlignment(ListSelBackGround_0, 2);
+	TextDrawBackgroundColor(ListSelBackGround_0, 255);
+	TextDrawFont(ListSelBackGround_0, 1);
+	TextDrawLetterSize(ListSelBackGround_0, 0.309999, 2.000000);
+	TextDrawColor(ListSelBackGround_0, -65281);
+	TextDrawSetOutline(ListSelBackGround_0, 1);
+	TextDrawSetProportional(ListSelBackGround_0, 1);
+	TextDrawSetSelectable(ListSelBackGround_0, 0);
+
+	ListSelBackGround_1 = TextDrawCreate(539.000000, 199.000000, "RY");
+	TextDrawAlignment(ListSelBackGround_1, 2);
+	TextDrawBackgroundColor(ListSelBackGround_1, 255);
+	TextDrawFont(ListSelBackGround_1, 1);
+	TextDrawLetterSize(ListSelBackGround_1, 0.309999, 2.000000);
+	TextDrawColor(ListSelBackGround_1, -65281);
+	TextDrawSetOutline(ListSelBackGround_1, 1);
+	TextDrawSetProportional(ListSelBackGround_1, 1);
+	TextDrawSetSelectable(ListSelBackGround_1, 0);
+
+	ListSelBackGround_2 = TextDrawCreate(539.000000, 239.000000, "RZ");
+	TextDrawAlignment(ListSelBackGround_2, 2);
+	TextDrawBackgroundColor(ListSelBackGround_2, 255);
+	TextDrawFont(ListSelBackGround_2, 1);
+	TextDrawLetterSize(ListSelBackGround_2, 0.309999, 2.000000);
+	TextDrawColor(ListSelBackGround_2, -65281);
+	TextDrawSetOutline(ListSelBackGround_2, 1);
+	TextDrawSetProportional(ListSelBackGround_2, 1);
+	TextDrawSetSelectable(ListSelBackGround_2, 0);
+
+	ListSelBackGround_3 = TextDrawCreate(539.000000, 279.000000, "Zoom");
+	TextDrawAlignment(ListSelBackGround_3, 2);
+	TextDrawBackgroundColor(ListSelBackGround_3, 255);
+	TextDrawFont(ListSelBackGround_3, 1);
+	TextDrawLetterSize(ListSelBackGround_3, 0.309999, 2.000000);
+	TextDrawColor(ListSelBackGround_3, -65281);
+	TextDrawSetOutline(ListSelBackGround_3, 1);
+	TextDrawSetProportional(ListSelBackGround_3, 1);
+	TextDrawSetSelectable(ListSelBackGround_3, 0);
+
+
+	// Clickables
+	ListSelRXLeft = TextDrawCreate(480.000000, 150.000000, "LD_BEAT:left");
+	TextDrawBackgroundColor(ListSelRXLeft, 255);
+	TextDrawFont(ListSelRXLeft, 4);
+	TextDrawLetterSize(ListSelRXLeft, 0.500000, 1.000000);
+	TextDrawColor(ListSelRXLeft, 16777215);
+	TextDrawSetOutline(ListSelRXLeft, 0);
+	TextDrawSetProportional(ListSelRXLeft, 1);
+	TextDrawSetShadow(ListSelRXLeft, 1);
+	TextDrawUseBox(ListSelRXLeft, 1);
+	TextDrawBoxColor(ListSelRXLeft, 255);
+	TextDrawTextSize(ListSelRXLeft, 40.000000, 40.000000);
+	TextDrawSetSelectable(ListSelRXLeft, 1);
+
+	ListSelRYLeft = TextDrawCreate(480.000000, 190.000000, "LD_BEAT:left");
+	TextDrawBackgroundColor(ListSelRYLeft, 255);
+	TextDrawFont(ListSelRYLeft, 4);
+	TextDrawLetterSize(ListSelRYLeft, 0.500000, 1.000000);
+	TextDrawColor(ListSelRYLeft, 16777215);
+	TextDrawSetOutline(ListSelRYLeft, 0);
+	TextDrawSetProportional(ListSelRYLeft, 1);
+	TextDrawSetShadow(ListSelRYLeft, 1);
+	TextDrawUseBox(ListSelRYLeft, 1);
+	TextDrawBoxColor(ListSelRYLeft, 255);
+	TextDrawTextSize(ListSelRYLeft, 40.000000, 40.000000);
+	TextDrawSetSelectable(ListSelRYLeft, 1);
+
+	ListSelRZLeft = TextDrawCreate(480.000000, 230.000000, "LD_BEAT:left");
+	TextDrawBackgroundColor(ListSelRZLeft, 255);
+	TextDrawFont(ListSelRZLeft, 4);
+	TextDrawLetterSize(ListSelRZLeft, 0.500000, 1.000000);
+	TextDrawColor(ListSelRZLeft, 16777215);
+	TextDrawSetOutline(ListSelRZLeft, 0);
+	TextDrawSetProportional(ListSelRZLeft, 1);
+	TextDrawSetShadow(ListSelRZLeft, 1);
+	TextDrawUseBox(ListSelRZLeft, 1);
+	TextDrawBoxColor(ListSelRZLeft, 255);
+	TextDrawTextSize(ListSelRZLeft, 40.000000, 40.000000);
+	TextDrawSetSelectable(ListSelRZLeft, 1);
+
+
+	ListSelRXRight = TextDrawCreate(560.000000, 150.000000, "LD_BEAT:right");
+	TextDrawBackgroundColor(ListSelRXRight, 255);
+	TextDrawFont(ListSelRXRight, 4);
+	TextDrawLetterSize(ListSelRXRight, 0.500000, 1.000000);
+	TextDrawColor(ListSelRXRight, 16777215);
+	TextDrawSetOutline(ListSelRXRight, 0);
+	TextDrawSetProportional(ListSelRXRight, 1);
+	TextDrawSetShadow(ListSelRXRight, 1);
+	TextDrawUseBox(ListSelRXRight, 1);
+	TextDrawBoxColor(ListSelRXRight, 255);
+	TextDrawTextSize(ListSelRXRight, 40.000000, 40.000000);
+	TextDrawSetSelectable(ListSelRXRight, 1);
+
+	ListSelRYRight = TextDrawCreate(560.000000, 190.000000, "LD_BEAT:right");
+	TextDrawBackgroundColor(ListSelRYRight, 255);
+	TextDrawFont(ListSelRYRight, 4);
+	TextDrawLetterSize(ListSelRYRight, 0.500000, 1.000000);
+	TextDrawColor(ListSelRYRight, 16777215);
+	TextDrawSetOutline(ListSelRYRight, 0);
+	TextDrawSetProportional(ListSelRYRight, 1);
+	TextDrawSetShadow(ListSelRYRight, 1);
+	TextDrawUseBox(ListSelRYRight, 1);
+	TextDrawBoxColor(ListSelRYRight, 255);
+	TextDrawTextSize(ListSelRYRight, 40.000000, 40.000000);
+	TextDrawSetSelectable(ListSelRYRight, 1);
+
+	ListSelRZRight = TextDrawCreate(560.000000, 230.000000, "LD_BEAT:right");
+	TextDrawBackgroundColor(ListSelRZRight, 255);
+	TextDrawFont(ListSelRZRight, 4);
+	TextDrawLetterSize(ListSelRZRight, 0.500000, 1.000000);
+	TextDrawColor(ListSelRZRight, 16777215);
+	TextDrawSetOutline(ListSelRZRight, 0);
+	TextDrawSetProportional(ListSelRZRight, 1);
+	TextDrawSetShadow(ListSelRZRight, 1);
+	TextDrawUseBox(ListSelRZRight, 1);
+	TextDrawBoxColor(ListSelRZRight, 255);
+	TextDrawTextSize(ListSelRZRight, 40.000000, 40.000000);
+	TextDrawSetSelectable(ListSelRZRight, 1);
+
+
+	ListSelZoomLeft = TextDrawCreate(480.000000, 270.000000, "LD_BEAT:left");
+	TextDrawBackgroundColor(ListSelZoomLeft, 255);
+	TextDrawFont(ListSelZoomLeft, 4);
+	TextDrawLetterSize(ListSelZoomLeft, 0.500000, 1.000000);
+	TextDrawColor(ListSelZoomLeft, 16777215);
+	TextDrawSetOutline(ListSelZoomLeft, 0);
+	TextDrawSetProportional(ListSelZoomLeft, 1);
+	TextDrawSetShadow(ListSelZoomLeft, 1);
+	TextDrawUseBox(ListSelZoomLeft, 1);
+	TextDrawBoxColor(ListSelZoomLeft, 255);
+	TextDrawTextSize(ListSelZoomLeft, 40.000000, 40.000000);
+	TextDrawSetSelectable(ListSelZoomLeft, 1);
+
+	ListSelZoomRight = TextDrawCreate(560.000000, 270.000000, "LD_BEAT:right");
+	TextDrawBackgroundColor(ListSelZoomRight, 255);
+	TextDrawFont(ListSelZoomRight, 4);
+	TextDrawLetterSize(ListSelZoomRight, 0.500000, 1.000000);
+	TextDrawColor(ListSelZoomRight, 16777215);
+	TextDrawSetOutline(ListSelZoomRight, 0);
+	TextDrawSetProportional(ListSelZoomRight, 1);
+	TextDrawSetShadow(ListSelZoomRight, 1);
+	TextDrawUseBox(ListSelZoomRight, 1);
+	TextDrawBoxColor(ListSelZoomRight, 255);
+	TextDrawTextSize(ListSelZoomRight, 40.000000, 40.000000);
+	TextDrawSetSelectable(ListSelZoomRight, 1);
+
+	ListSelReset = TextDrawCreate(520.000000, 320.000000, "LD_BEAT:square");
+	TextDrawBackgroundColor(ListSelReset, 255);
+	TextDrawFont(ListSelReset, 4);
+	TextDrawLetterSize(ListSelReset, 0.500000, 1.000000);
+	TextDrawColor(ListSelReset, 16777215);
+	TextDrawSetOutline(ListSelReset, 0);
+	TextDrawSetProportional(ListSelReset, 1);
+	TextDrawSetShadow(ListSelReset, 1);
+	TextDrawUseBox(ListSelReset, 1);
+	TextDrawBoxColor(ListSelReset, 255);
+	TextDrawTextSize(ListSelReset, 40.000000, 40.000000);
+	TextDrawSetSelectable(ListSelReset, 1);
+
+
+	ListSelExit = TextDrawCreate(590.000000, 390.000000, "LD_BEAT:cross");
+	TextDrawBackgroundColor(ListSelExit, 255);
+	TextDrawFont(ListSelExit, 4);
+	TextDrawLetterSize(ListSelExit, 0.500000, 1.000000);
+	TextDrawColor(ListSelExit, 16777215);
+	TextDrawSetOutline(ListSelExit, 0);
+	TextDrawSetProportional(ListSelExit, 1);
+	TextDrawSetShadow(ListSelExit, 1);
+	TextDrawUseBox(ListSelExit, 1);
+	TextDrawBoxColor(ListSelExit, 255);
+	TextDrawTextSize(ListSelExit, 40.000000, 40.000000);
+	TextDrawSetSelectable(ListSelExit, 1);
+
+
+	ListSelClickLeft = TextDrawCreate(10.000000, 320.000000, "LD_BEAT:left");
+	TextDrawBackgroundColor(ListSelClickLeft, 255);
+	TextDrawFont(ListSelClickLeft, 4);
+	TextDrawLetterSize(ListSelClickLeft, 0.500000, 1.000000);
+	TextDrawColor(ListSelClickLeft, 16777215);
+	TextDrawSetOutline(ListSelClickLeft, 0);
+	TextDrawSetProportional(ListSelClickLeft, 1);
+	TextDrawSetShadow(ListSelClickLeft, 1);
+	TextDrawUseBox(ListSelClickLeft, 1);
+	TextDrawBoxColor(ListSelClickLeft, 255);
+	TextDrawTextSize(ListSelClickLeft, 40.000000, 40.000000);
+	TextDrawSetSelectable(ListSelClickLeft, 1);
+
+	ListSelClickRight = TextDrawCreate(90.000000, 320.000000, "LD_BEAT:right");
+	TextDrawBackgroundColor(ListSelClickRight, 255);
+	TextDrawFont(ListSelClickRight, 4);
+	TextDrawLetterSize(ListSelClickRight, 0.500000, 1.000000);
+	TextDrawColor(ListSelClickRight, 16777215);
+	TextDrawSetOutline(ListSelClickRight, 0);
+	TextDrawSetProportional(ListSelClickRight, 1);
+	TextDrawSetShadow(ListSelClickRight, 1);
+	TextDrawUseBox(ListSelClickRight, 1);
+	TextDrawBoxColor(ListSelClickRight, 255);
+	TextDrawTextSize(ListSelClickRight, 40.000000, 40.000000);
+	TextDrawSetSelectable(ListSelClickRight, 1);
+
+	ListSelSelectObject = TextDrawCreate(50.000000, 320.000000, "LD_BEAT:square");
+	TextDrawBackgroundColor(ListSelSelectObject, 255);
+	TextDrawFont(ListSelSelectObject, 4);
+	TextDrawLetterSize(ListSelSelectObject, 0.500000, 1.000000);
+	TextDrawColor(ListSelSelectObject, 0x00FF00FF);
+	TextDrawSetOutline(ListSelSelectObject, 0);
+	TextDrawSetProportional(ListSelSelectObject, 1);
+	TextDrawSetShadow(ListSelSelectObject, 1);
+	TextDrawUseBox(ListSelSelectObject, 1);
+	TextDrawBoxColor(ListSelSelectObject, 255);
+	TextDrawTextSize(ListSelSelectObject, 40.000000, 40.000000);
+	TextDrawSetSelectable(ListSelSelectObject, 1);
+
+
+	new Float:offx = 10.0, Float:offy = 110.0;
+	for(new i = 0; i < MAX_LIST_OBJECTS; i++)
+	{
+		ListSelHighLight[i] = TextDrawCreate(offx, offy, "_");
+		TextDrawLetterSize(ListSelHighLight[i], 0.200000, 1.000000);
+		TextDrawUseBox(ListSelHighLight[i], 1);
+		TextDrawBoxColor(ListSelHighLight[i], 150);
+		TextDrawTextSize(ListSelHighLight[i], 200.000000, 8.000000);
+	    offy += 10.0;
+
+	}
+
+	foreach(new i : Player) CreatePlayerListDraws(i);
+
+	#if defined LS_OnFilterScriptInit
+		LS_OnFilterScriptInit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptInit
+	#undef OnFilterScriptInit
+#else
+	#define _ALS_OnFilterScriptInit
+#endif
+#define OnFilterScriptInit LS_OnFilterScriptInit
+#if defined LS_OnFilterScriptInit
+	forward LS_OnFilterScriptInit();
+#endif
+
+public OnFilterScriptExit()
+{
+	TextDrawDestroy(ListSelBackGround_0);
+	TextDrawDestroy(ListSelBackGround_1);
+	TextDrawDestroy(ListSelBackGround_2);
+	TextDrawDestroy(ListSelBackGround_3);
+
+	TextDrawDestroy(ListSelRXLeft);
+	TextDrawDestroy(ListSelRYLeft);
+	TextDrawDestroy(ListSelRZLeft);
+	TextDrawDestroy(ListSelRXRight);
+	TextDrawDestroy(ListSelRYRight);
+	TextDrawDestroy(ListSelRZRight);
+
+	TextDrawDestroy(ListSelZoomLeft);
+	TextDrawDestroy(ListSelZoomRight);
+
+	TextDrawDestroy(ListSelReset);
+
+	TextDrawDestroy(ListSelClickLeft);
+	TextDrawDestroy(ListSelClickRight);
+
+	TextDrawDestroy(ListSelSelectObject);
+
+	TextDrawDestroy(ListSelExit);
+	
+	for(new i = 0; i < MAX_LIST_OBJECTS; i++) TextDrawDestroy(ListSelHighLight[i]);
+
+	foreach(new i : Player)
+	{
+		for(new j = 0; j < MAX_LIST_OBJECTS; j++) PlayerTextDrawDestroy(i, ListObjects[i][j]);
+		PlayerTextDrawDestroy(i, ListModel[i]);
+		DisablePlayerCheckpoint(i);
+	}
+
+	#if defined LS_OnFilterScriptExit
+		LS_OnFilterScriptExit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptExit
+	#undef OnFilterScriptExit
+#else
+	#define _ALS_OnFilterScriptExit
+#endif
+#define OnFilterScriptExit LS_OnFilterScriptExit
+#if defined LS_OnFilterScriptExit
+	forward LS_OnFilterScriptExit();
+#endif
+
+public OnPlayerConnect(playerid)
+{
+	CreatePlayerListDraws(playerid);
+	CurrListOffset[playerid] = 0;
+	CurrListHighlight[playerid] = 0;
+	CurrListHighlightObject[playerid] = -1;
+
+	#if defined LS_OnPlayerConnect
+		LS_OnPlayerConnect(playerid);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerConnect
+	#undef OnPlayerConnect
+#else
+	#define _ALS_OnPlayerConnect
+#endif
+#define OnPlayerConnect LS_OnPlayerConnect
+#if defined LS_OnPlayerConnect
+	forward LS_OnPlayerConnect(playerid);
+#endif
+
+static CreatePlayerListDraws(playerid)
+{
+	new Float:offx = 10.0, Float:offy = 110.0;
+	
+	// Create all textdraws
+	for(new i = 0; i < MAX_LIST_OBJECTS; i++)
+	{
+		ListObjects[playerid][i] = CreatePlayerTextDraw(playerid,offx, offy, "Empty");
+		PlayerTextDrawBackgroundColor(playerid,ListObjects[playerid][i], 255);
+		PlayerTextDrawFont(playerid,ListObjects[playerid][i], 1);
+		PlayerTextDrawLetterSize(playerid,ListObjects[playerid][i], 0.200000, 1.000000);
+		PlayerTextDrawColor(playerid,ListObjects[playerid][i], 16711935);
+		PlayerTextDrawSetOutline(playerid,ListObjects[playerid][i], 1);
+		PlayerTextDrawSetProportional(playerid,ListObjects[playerid][i], 1);
+		PlayerTextDrawUseBox(playerid,ListObjects[playerid][i], 1);
+		PlayerTextDrawBoxColor(playerid,ListObjects[playerid][i], 0);
+		PlayerTextDrawTextSize(playerid,ListObjects[playerid][i], 200.000000, 8.000000);
+		PlayerTextDrawSetSelectable(playerid,ListObjects[playerid][i], 1);
+	    offy += 10.0;
+	}
+	
+	ListModel[playerid] = CreatePlayerTextDraw(playerid,170.000000, 110.000000, "Preview");
+	PlayerTextDrawBackgroundColor(playerid,ListModel[playerid], 0);
+	PlayerTextDrawFont(playerid,ListModel[playerid], 5);
+	PlayerTextDrawLetterSize(playerid,ListModel[playerid], 0.500000, 1.000000);
+	PlayerTextDrawColor(playerid,ListModel[playerid], -1);
+	PlayerTextDrawSetOutline(playerid,ListModel[playerid], 0);
+	PlayerTextDrawSetProportional(playerid,ListModel[playerid], 1);
+	PlayerTextDrawSetShadow(playerid,ListModel[playerid], 1);
+	PlayerTextDrawUseBox(playerid,ListModel[playerid], 1);
+	PlayerTextDrawBoxColor(playerid,ListModel[playerid], 0);
+	PlayerTextDrawTextSize(playerid,ListModel[playerid], 300.000000, 300.000000);
+	
+	return 1;
+}
+
+ClickTextDrawListSel(playerid, Text:clickedid)
+{
+	if(clickedid == Text:INVALID_TEXT_DRAW)
+	{
+	    return 1;
+	}
+	
+	else if(clickedid == ListSelExit)
+	{
+		TextDrawHideForPlayer(playerid, ListSelBackGround_0);
+		TextDrawHideForPlayer(playerid, ListSelBackGround_1);
+		TextDrawHideForPlayer(playerid, ListSelBackGround_2);
+		TextDrawHideForPlayer(playerid, ListSelBackGround_3);
+
+		TextDrawHideForPlayer(playerid, ListSelRXLeft);
+		TextDrawHideForPlayer(playerid, ListSelRYLeft);
+		TextDrawHideForPlayer(playerid, ListSelRZLeft);
+		TextDrawHideForPlayer(playerid, ListSelRXRight);
+		TextDrawHideForPlayer(playerid, ListSelRYRight);
+		TextDrawHideForPlayer(playerid, ListSelRZRight);
+
+		TextDrawHideForPlayer(playerid, ListSelZoomLeft);
+		TextDrawHideForPlayer(playerid, ListSelZoomRight);
+
+		TextDrawHideForPlayer(playerid, ListSelReset);
+
+		TextDrawHideForPlayer(playerid, ListSelClickLeft);
+		TextDrawHideForPlayer(playerid, ListSelClickRight);
+
+		TextDrawHideForPlayer(playerid, ListSelSelectObject);
+
+		TextDrawHideForPlayer(playerid, ListSelExit);
+
+		foreach(new i : Player)
+		{
+			for(new j = 0; j < MAX_LIST_OBJECTS; j++) PlayerTextDrawHide(i, ListObjects[i][j]);
+			PlayerTextDrawHide(i, ListModel[i]);
+		}
+
+		HideListSelHighLights(playerid);
+		
+		if(CurrListHighlightObject[playerid] > -1)
+		{
+			new i = CurrListHighlightObject[playerid];
+			DestroyDynamicObject(ObjectData[i][oID]);
+			ObjectData[i][oID] = CreateDynamicObject(ObjectData[i][oModel], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ], MapSetting[mVirtualWorld], MapSetting[mInterior], -1, 300.0);
+
+		    UpdateMaterial(CurrListHighlightObject[playerid]);
+            UpdateObjectText(CurrListHighlightObject[playerid]);
+			CurrListHighlightObject[playerid] = -1;
+
+			// Update the streamer
+			foreach(new j : Player)
+			{
+			    if(IsPlayerInRangeOfPoint(j, 300.0, ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ])) Streamer_Update(j);
+			}
+		}
+
+	    SetEditMode(playerid, EDIT_MODE_NONE);
+	    SetCurrTextDraw(playerid, TEXTDRAW_NONE);
+		EditingMode[playerid] = false;
+		DisablePlayerCheckpoint(playerid);
+		CancelSelectTextDraw(playerid);
+	}
+	
+	// Clicked left
+    else if(clickedid == ListSelRXLeft)
+    {
+        ListSelData[playerid][LRX] -= 45.0;
+        if(ListSelData[playerid][LRX] < 0.0) ListSelData[playerid][LRX] = 315.0;
+        UpdateListPreview(playerid, CurrListOffset[playerid]+CurrListHighlight[playerid], false);
+    }
+
+    else if(clickedid == ListSelRYLeft)
+    {
+        ListSelData[playerid][LRY] -= 45.0;
+        if(ListSelData[playerid][LRY] < 0.0) ListSelData[playerid][LRY] = 315.0;
+        UpdateListPreview(playerid, CurrListOffset[playerid]+CurrListHighlight[playerid], false);
+    }
+
+    else if(clickedid == ListSelRZLeft)
+    {
+        ListSelData[playerid][LRZ] -= 45.0;
+        if(ListSelData[playerid][LRZ] < 0.0) ListSelData[playerid][LRZ] = 315.0;
+        UpdateListPreview(playerid, CurrListOffset[playerid]+CurrListHighlight[playerid], false);
+    }
+
+    else if(clickedid == ListSelRXRight)
+    {
+        ListSelData[playerid][LRX] += 45.0;
+        if(ListSelData[playerid][LRX] > 359.9) ListSelData[playerid][LRX] = 0.0;
+        UpdateListPreview(playerid, CurrListOffset[playerid]+CurrListHighlight[playerid], false);
+    }
+
+    else if(clickedid == ListSelRYRight)
+    {
+        ListSelData[playerid][LRY] += 45.0;
+        if(ListSelData[playerid][LRY] > 359.9) ListSelData[playerid][LRY] = 0.0;
+        UpdateListPreview(playerid, CurrListOffset[playerid]+CurrListHighlight[playerid], false);
+    }
+
+    else if(clickedid == ListSelRZRight)
+    {
+        ListSelData[playerid][LRZ] += 45.0;
+        if(ListSelData[playerid][LRZ] > 359.9) ListSelData[playerid][LRZ] = 0.0;
+        UpdateListPreview(playerid, CurrListOffset[playerid]+CurrListHighlight[playerid], false);
+    }
+
+    else if(clickedid == ListSelZoomLeft)
+    {
+        if(ListSelData[playerid][LZoom] < 1.5) ListSelData[playerid][LZoom] += 0.1;
+        UpdateListPreview(playerid, CurrListOffset[playerid]+CurrListHighlight[playerid], false);
+    }
+
+    else if(clickedid == ListSelZoomRight)
+    {
+        if(ListSelData[playerid][LZoom] > 0.5) ListSelData[playerid][LZoom] -= 0.1;
+        UpdateListPreview(playerid, CurrListOffset[playerid]+CurrListHighlight[playerid], false);
+    }
+
+    else if(clickedid == ListSelReset)
+    {
+		ListSelData[playerid][LRX] = 0.0;
+		ListSelData[playerid][LRY] = 0.0;
+		ListSelData[playerid][LRZ] = 0.0;
+        ListSelData[playerid][LZoom] = 1.0;
+        UpdateListPreview(playerid, CurrListOffset[playerid]+CurrListHighlight[playerid], false);
+    }
+
+
+	else if(clickedid == ListSelClickLeft)
+	{
+		CurrListOffset[playerid] -= MAX_LIST_OBJECTS;
+		if(CurrListOffset[playerid] < 0) CurrListOffset[playerid] = MAX_TEXTURE_OBJECTS - MAX_LIST_OBJECTS;
+        UpdateObjectList(playerid, CurrListOffset[playerid]);
+		UpdateListPreview(playerid, CurrListOffset[playerid]+CurrListHighlight[playerid]);
+	}
+
+	else if(clickedid == ListSelClickRight)
+	{
+		CurrListOffset[playerid] += MAX_LIST_OBJECTS;
+		if(CurrListOffset[playerid] == MAX_TEXTURE_OBJECTS) CurrListOffset[playerid] = 0;
+        UpdateObjectList(playerid, CurrListOffset[playerid]);
+		UpdateListPreview(playerid, CurrListOffset[playerid]+CurrListHighlight[playerid]);
+	}
+
+    else if(clickedid == ListSelSelectObject)
+	{
+		if(Iter_Contains(Objects, CurrListOffset[playerid]+CurrListHighlight[playerid]))
+		{
+            if(SetCurrObject(playerid, CurrListOffset[playerid]+CurrListHighlight[playerid])) {
+                new line[128];
+                format(line, sizeof(line), "You have selected object index %i for editing", CurrListOffset[playerid]+CurrListHighlight[playerid]);
+                SendClientMessage(playerid, STEALTH_GREEN, line);
+            }
+            else
+                SendClientMessage(playerid, STEALTH_YELLOW, "You can not select objects in this object's group");
+		}
+		else
+		{
+			SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+			SendClientMessage(playerid, STEALTH_YELLOW, "That object does not exist!");
+		}
+	}
+
+
+	return 1;
+}
+
+ClickPlayerTextListSel(playerid, PlayerText:playertextid)
+{
+	for(new i = 0; i < MAX_LIST_OBJECTS; i++)
+	{
+        if(playertextid == ListObjects[playerid][i])
+		{
+			UpdateListPreview(playerid, CurrListOffset[playerid]+i);
+			HideListSelHighLights(playerid);
+			TextDrawShowForPlayer(playerid, ListSelHighLight[i]);
+			CurrListHighlight[playerid] = i;
+			return 1;
+		}
+	}
+
+	return 1;
+}
+
+static HideListSelHighLights(playerid)
+{
+	for(new i = 0; i < MAX_LIST_OBJECTS; i++) TextDrawHideForPlayer(playerid, ListSelHighLight[i]);
+	return 1;
+}
+
+
+OnPlayerKeyStateChangeLSel(playerid,newkeys,oldkeys)
+{
+	#pragma unused oldkeys
+	if(GetEditMode(playerid) == EDIT_MODE_LISTSEL)
+	{
+		if( (newkeys & KEY_NO) || (FlyMode[playerid] && newkeys & KEY_JUMP) ) SelectTextDraw(playerid, 0xD9D919FF);
+		return 1;
+	}
+	return 0;
+}
+
+
+YCMD:lsel(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Display a list of all objects currently loaded to select from.");
+		return 1;
+	}
+
+	NoEditingMode(playerid);
+    MapOpenCheck();
+    
+    if(!isnull(arg))
+	{
+		CurrListOffset[playerid] = (strval(arg) / MAX_LIST_OBJECTS) * MAX_LIST_OBJECTS;
+        CurrListHighlight[playerid] = strval(arg) % MAX_LIST_OBJECTS;
+	}
+    else if(CurrObject[playerid] > -1)
+	{
+		CurrListOffset[playerid] = (CurrObject[playerid] / MAX_LIST_OBJECTS) * MAX_LIST_OBJECTS;
+		CurrListHighlight[playerid] = (CurrObject[playerid] % MAX_LIST_OBJECTS);
+	}
+    else
+	{
+		CurrListOffset[playerid] = 0;
+        CurrListHighlight[playerid] = 0;
+	}
+
+	//printf("Offset: %i, Highlight: %i", CurrListOffset[playerid], CurrListHighlight[playerid]);
+
+
+    HideGUIInterface(playerid);
+
+    SetEditMode(playerid, EDIT_MODE_LISTSEL);
+    SetCurrTextDraw(playerid, TEXTDRAW_LISTSEL);
+	EditingMode[playerid] = true;
+//	CurrListOffset[playerid] = 0;
+	ShowObjectList(playerid);
+	ListSelData[playerid][LRX] = 0.0;
+	ListSelData[playerid][LRY] = 0.0;
+	ListSelData[playerid][LRZ] = 0.0;
+	ListSelData[playerid][LZoom] = 1.0;
+
+	UpdateObjectList(playerid, CurrListOffset[playerid]);
+	UpdateListPreview(playerid, CurrListOffset[playerid]+CurrListHighlight[playerid]);
+	TextDrawShowForPlayer(playerid, ListSelHighLight[CurrListHighlight[playerid]]);
+
+	// Select textdraw mode
+	SelectTextDraw(playerid, 0xD9D919FF);
+	return 1;
+}
+
+static ShowObjectList(playerid)
+{
+	TextDrawShowForPlayer(playerid, ListSelBackGround_0);
+	TextDrawShowForPlayer(playerid, ListSelBackGround_1);
+	TextDrawShowForPlayer(playerid, ListSelBackGround_2);
+	TextDrawShowForPlayer(playerid, ListSelBackGround_3);
+
+	TextDrawShowForPlayer(playerid, ListSelRXLeft);
+	TextDrawShowForPlayer(playerid, ListSelRYLeft);
+	TextDrawShowForPlayer(playerid, ListSelRZLeft);
+	TextDrawShowForPlayer(playerid, ListSelRXRight);
+	TextDrawShowForPlayer(playerid, ListSelRYRight);
+	TextDrawShowForPlayer(playerid, ListSelRZRight);
+
+	TextDrawShowForPlayer(playerid, ListSelZoomLeft);
+	TextDrawShowForPlayer(playerid, ListSelZoomRight);
+	
+	TextDrawShowForPlayer(playerid, ListSelReset);
+
+	TextDrawShowForPlayer(playerid, ListSelClickLeft);
+	TextDrawShowForPlayer(playerid, ListSelClickRight);
+	TextDrawShowForPlayer(playerid, ListSelSelectObject);
+
+	TextDrawShowForPlayer(playerid, ListSelExit);
+
+	for(new i = 0; i < MAX_LIST_OBJECTS; i++) PlayerTextDrawShow(playerid, ListObjects[playerid][i]);
+    PlayerTextDrawShow(playerid, ListModel[playerid]);
+
+	return 1;
+}
+
+static UpdateObjectList(playerid, offset)
+{
+    new line[64], modelarray;
+
+	for(new i = 0; i < MAX_LIST_OBJECTS; i++)
+	{
+		if(Iter_Contains(Objects, offset+i))
+		{
+			modelarray = GetModelArray(ObjectData[offset+i][oModel]);
+			if(modelarray > -1) format(line, sizeof(line), "%i) %s - Model: %i", offset+i, GetModelName(ObjectData[offset+i][oModel]), ObjectData[offset+i][oModel]);
+			else format(line, sizeof(line), "%i) Unknown - Model: %i", offset+i, ObjectData[offset+i][oModel]);
+            PlayerTextDrawSetString(playerid, ListObjects[playerid][i], line);
+            
+		}
+		else
+		{
+			format(line, sizeof(line), "%i) Empty", offset+i);
+			PlayerTextDrawSetString(playerid, ListObjects[playerid][i], line);
+		}
+	}
+	return 1;
+}
+
+static UpdateListPreview(playerid, index, bool:update = true)
+{
+	if(Iter_Contains(Objects, index))
+	{
+		PlayerTextDrawSetPreviewModel(playerid, ListModel[playerid], ObjectData[index][oModel]);
+		PlayerTextDrawSetPreviewRot(playerid, ListModel[playerid], ListSelData[playerid][LRX], ListSelData[playerid][LRY], ListSelData[playerid][LRZ], ListSelData[playerid][LZoom]);
+		PlayerTextDrawShow(playerid, ListModel[playerid]);
+
+		if(update)
+		{
+			new i = CurrListHighlightObject[playerid];
+			if(i > -1)
+			{
+				DestroyDynamicObject(ObjectData[i][oID]);
+				ObjectData[i][oID] = CreateDynamicObject(ObjectData[i][oModel], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ], MapSetting[mVirtualWorld], MapSetting[mInterior], -1, 300.0);
+
+			    UpdateMaterial(CurrListHighlightObject[playerid]);
+	            UpdateObjectText(CurrListHighlightObject[playerid]);
+
+				// Update the streamer
+				foreach(new j : Player)
+				{
+				    if(IsPlayerInRangeOfPoint(j, 300.0, ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ])) Streamer_Update(j);
+				}
+			}
+			HighlightObject(index);
+			CurrListHighlightObject[playerid] = index;
+
+			new Float:colradius = GetColSphereRadius(ObjectData[index][oModel]);
+	        SetPlayerCheckpoint(playerid, ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ], colradius);
+		}
+	}
+	else
+	{
+		PlayerTextDrawSetPreviewModel(playerid, ListModel[playerid], NO_OBJECT_IN_SLOT_MODEL);
+		PlayerTextDrawSetPreviewRot(playerid, ListModel[playerid], 0.0, 0.0, 0.0, 1.0);
+		PlayerTextDrawShow(playerid, ListModel[playerid]);
+
+		if(CurrListHighlightObject[playerid] > -1)
+		{
+			new i = CurrListHighlightObject[playerid];
+			DestroyDynamicObject(ObjectData[i][oID]);
+			ObjectData[i][oID] = CreateDynamicObject(ObjectData[i][oModel], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ], MapSetting[mVirtualWorld], MapSetting[mInterior], -1, 300.0);
+
+		    UpdateMaterial(CurrListHighlightObject[playerid]);
+            UpdateObjectText(CurrListHighlightObject[playerid]);
+			CurrListHighlightObject[playerid] = -1;
+			DisablePlayerCheckpoint(playerid);
+
+			// Update the streamer
+			foreach(new j : Player)
+			{
+			    if(IsPlayerInRangeOfPoint(j, 300.0, ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ])) Streamer_Update(j);
+			}
+		}
+	}
+	return 1;
+}

+ 307 - 0
Texture-Studio-master/filterscripts/tstudio/localinput.pwn

@@ -0,0 +1,307 @@
+#define VK_KEY_0	0x30
+#define VK_KEY_1	0x31
+#define VK_KEY_2	0x32
+#define VK_KEY_3	0x33
+#define VK_KEY_4	0x34
+#define VK_KEY_5	0x35
+#define VK_KEY_6	0x36
+#define VK_KEY_7	0x37
+#define VK_KEY_8	0x38
+#define VK_KEY_9	0x39
+
+#define VK_KEY_A	0x41
+#define VK_KEY_B	0x42
+#define VK_KEY_C	0x43
+#define VK_KEY_D	0x44
+#define VK_KEY_E	0x45
+#define VK_KEY_F	0x46
+#define VK_KEY_G	0x47
+#define VK_KEY_H	0x48
+#define VK_KEY_I	0x49
+#define VK_KEY_J	0x4A
+#define VK_KEY_K	0x4B
+#define VK_KEY_L	0x4C
+#define VK_KEY_M	0x4D
+#define VK_KEY_N	0x4E
+#define VK_KEY_O	0x4F
+#define VK_KEY_P	0x50
+#define VK_KEY_Q	0x51
+#define VK_KEY_R	0x52
+#define VK_KEY_S	0x53
+#define VK_KEY_T	0x54
+#define VK_KEY_U	0x55
+#define VK_KEY_V	0x56
+#define VK_KEY_W	0x57
+#define VK_KEY_X	0x58
+#define VK_KEY_Y	0x59
+#define VK_KEY_Z	0x5A
+
+#define VK_LBUTTON	0x01
+#define VK_MBUTTON	0x04
+#define VK_RBUTTON	0x02
+
+#define VK_UP		0x26
+#define VK_DOWN		0x28
+#define VK_LEFT		0x25
+#define VK_RIGHT	0x27
+
+#define VK_LSHIFT	0xA0
+#define VK_RSHIFT	0xA1
+
+#define VK_SPACE	0x20
+
+native GetVirtualKeyState(key);
+native GetScreenSize(&Width, &Height);
+native GetMousePos(&X, &Y);
+
+#include <colandreas>
+
+forward OnCursorPositionChange(OldX, OldY, NewX, NewY);
+forward OnVirtualKeyDown(key);
+forward OnVirtualKeyRelease(key);
+
+forward OnEditorUpdate();
+
+enum E_KEY_STRUCT
+{
+	bool:KEY_PRESSED,
+	KEY_CODE
+};
+
+static
+	editorid,
+	CursorOX, CursorOY,
+	CursorX, CursorY,
+	ScreenWidth, ScreenHeight,
+	VirtualKeys[46][E_KEY_STRUCT];
+
+public OnFilterScriptInit()
+{
+	VirtualKeys[00][KEY_CODE] = VK_KEY_0;
+	VirtualKeys[01][KEY_CODE] = VK_KEY_1;
+	VirtualKeys[02][KEY_CODE] = VK_KEY_2;
+	VirtualKeys[03][KEY_CODE] = VK_KEY_3;
+	VirtualKeys[04][KEY_CODE] = VK_KEY_4;
+	VirtualKeys[05][KEY_CODE] = VK_KEY_5;
+	VirtualKeys[06][KEY_CODE] = VK_KEY_6;
+	VirtualKeys[07][KEY_CODE] = VK_KEY_7;
+	VirtualKeys[08][KEY_CODE] = VK_KEY_8;
+	VirtualKeys[09][KEY_CODE] = VK_KEY_9;
+	VirtualKeys[10][KEY_CODE] = VK_KEY_A;
+	VirtualKeys[11][KEY_CODE] = VK_KEY_B;
+	VirtualKeys[12][KEY_CODE] = VK_KEY_C;
+	VirtualKeys[13][KEY_CODE] = VK_KEY_D;
+	VirtualKeys[14][KEY_CODE] = VK_KEY_E;
+	VirtualKeys[15][KEY_CODE] = VK_KEY_F;
+	VirtualKeys[16][KEY_CODE] = VK_KEY_G;
+	VirtualKeys[17][KEY_CODE] = VK_KEY_H;
+	VirtualKeys[18][KEY_CODE] = VK_KEY_I;
+	VirtualKeys[19][KEY_CODE] = VK_KEY_J;
+	VirtualKeys[20][KEY_CODE] = VK_KEY_K;
+	VirtualKeys[21][KEY_CODE] = VK_KEY_L;
+	VirtualKeys[22][KEY_CODE] = VK_KEY_M;
+	VirtualKeys[23][KEY_CODE] = VK_KEY_N;
+	VirtualKeys[24][KEY_CODE] = VK_KEY_O;
+	VirtualKeys[25][KEY_CODE] = VK_KEY_P;
+	VirtualKeys[26][KEY_CODE] = VK_KEY_Q;
+	VirtualKeys[27][KEY_CODE] = VK_KEY_R;
+	VirtualKeys[28][KEY_CODE] = VK_KEY_S;
+	VirtualKeys[29][KEY_CODE] = VK_KEY_T;
+	VirtualKeys[30][KEY_CODE] = VK_KEY_U;
+	VirtualKeys[31][KEY_CODE] = VK_KEY_V;
+	VirtualKeys[32][KEY_CODE] = VK_KEY_W;
+	VirtualKeys[33][KEY_CODE] = VK_KEY_X;
+	VirtualKeys[34][KEY_CODE] = VK_KEY_Y;
+	VirtualKeys[35][KEY_CODE] = VK_KEY_Z;
+	VirtualKeys[36][KEY_CODE] = VK_LBUTTON;
+	VirtualKeys[37][KEY_CODE] = VK_MBUTTON;
+	VirtualKeys[38][KEY_CODE] = VK_RBUTTON;
+	VirtualKeys[39][KEY_CODE] = VK_LEFT;
+	VirtualKeys[40][KEY_CODE] = VK_RIGHT;
+	VirtualKeys[41][KEY_CODE] = VK_UP;
+	VirtualKeys[42][KEY_CODE] = VK_DOWN;
+	VirtualKeys[43][KEY_CODE] = VK_LSHIFT;
+	VirtualKeys[44][KEY_CODE] = VK_RSHIFT;
+	VirtualKeys[45][KEY_CODE] = VK_SPACE;
+
+	editorid = INVALID_PLAYER_ID;
+	SetTimer("OnEditorUpdate", 25, true);
+
+	#if defined LI_OnFilterScriptInit
+		LI_OnFilterScriptInit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptInit
+	#undef OnFilterScriptInit
+#else
+	#define _ALS_OnFilterScriptInit
+#endif
+#define OnFilterScriptInit LI_OnFilterScriptInit
+#if defined LI_OnFilterScriptInit
+	forward LI_OnFilterScriptInit();
+#endif
+
+public OnPlayerConnect(playerid)
+{
+	if(editorid != INVALID_PLAYER_ID)
+		return 1;
+		
+	new ip[24];
+	GetPlayerIp(playerid, ip, 24);
+	
+	if(!strcmp(ip, "127.0.0.1"))
+		editorid = playerid;
+
+	#if defined LI_OnPlayerConnect
+		LI_OnPlayerConnect(playerid);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerConnect
+	#undef OnPlayerConnect
+#else
+	#define _ALS_OnPlayerConnect
+#endif
+#define OnPlayerConnect LI_OnPlayerConnect
+#if defined LI_OnPlayerConnect
+	forward LI_OnPlayerConnect(playerid);
+#endif
+
+public OnPlayerDisconnect(playerid, reason)
+{
+	if(editorid == playerid)
+		editorid = INVALID_PLAYER_ID;
+		
+    #if defined LI_OnPlayerDisconnect
+        LI_OnPlayerDisconnect(playerid, reason);
+    #endif
+    return 1;
+}
+#if defined _ALS_OnPlayerDisconnect
+    #undef OnPlayerDisconnect
+#else
+    #define _ALS_OnPlayerDisconnect
+#endif
+#define OnPlayerDisconnect LI_OnPlayerDisconnect
+#if defined LI_OnPlayerDisconnect
+    forward LI_OnPlayerDisconnect(playerid, reason);
+#endif
+
+public OnEditorUpdate()
+{
+	if(editorid == INVALID_PLAYER_ID)
+		return 1;
+
+	for(new c; c < sizeof VirtualKeys; c++)
+	{
+		if(GetVirtualKeyState(VirtualKeys[c][KEY_CODE]) & 0x8000)
+		{
+			if(!VirtualKeys[c][KEY_PRESSED])
+			{
+				CallLocalFunction("OnVirtualKeyDown", "d", VirtualKeys[c][KEY_CODE]);
+				VirtualKeys[c][KEY_PRESSED] = true;
+			}
+			else
+				CallLocalFunction("OnVirtualKeyHold", "d", VirtualKeys[c][KEY_CODE]);
+		}
+		else if(VirtualKeys[c][KEY_PRESSED])
+		{
+			CallLocalFunction("OnVirtualKeyRelease", "d", VirtualKeys[c][KEY_CODE]);
+			VirtualKeys[c][KEY_PRESSED] = false;
+		}
+	}
+
+	GetScreenSize(ScreenWidth, ScreenHeight);
+	GetMousePos(CursorX, CursorY);
+	CursorX = floatround(floatdiv(CursorX, ScreenWidth) * 640.0, floatround_floor);
+	CursorY = floatround(floatdiv(CursorY, ScreenHeight) * 448.0, floatround_floor);
+
+	if(CursorOX != CursorX || CursorOY != CursorY)
+	{
+		CallLocalFunction("OnCursorPositionChange", "dddd", CursorOX, CursorOY, CursorX, CursorY);
+		CursorOX = CursorX;
+		CursorOY = CursorY;
+	}
+	
+	return 1;
+}
+
+public OnCursorPositionChange(OldX, OldY, NewX, NewY)
+{
+	if(editorid == INVALID_PLAYER_ID)
+		return 1;
+	
+	//else
+	return 1;
+}
+
+public OnVirtualKeyDown(key)
+{
+	if(editorid == INVALID_PLAYER_ID)
+		return 1;
+	
+	if(GetVirtualKeyState(VK_KEY_B) & 0x8000) switch(key) {
+		case VK_KEY_0:
+			BroadcastCommand(editorid, "/runbind 0");
+		case VK_KEY_1:
+			BroadcastCommand(editorid, "/runbind 1");
+		case VK_KEY_2:
+			BroadcastCommand(editorid, "/runbind 2");
+		case VK_KEY_3:
+			BroadcastCommand(editorid, "/runbind 3");
+		case VK_KEY_4:
+			BroadcastCommand(editorid, "/runbind 4");
+		case VK_KEY_5:
+			BroadcastCommand(editorid, "/runbind 5");
+		case VK_KEY_6:
+			BroadcastCommand(editorid, "/runbind 6");
+		case VK_KEY_7:
+			BroadcastCommand(editorid, "/runbind 7");
+		case VK_KEY_8:
+			BroadcastCommand(editorid, "/runbind 8");
+		case VK_KEY_9:
+			BroadcastCommand(editorid, "/runbind 9");
+	}
+	else switch(key) {
+		case VK_LBUTTON: {
+		}
+		case VK_MBUTTON: {
+		}
+		case VK_RBUTTON: {
+			//Example Of Right Clicking On The Ground
+			/*new Float:cX, Float:cY, Float:cZ,
+				Float:wX, Float:wY, Float:wZ;
+			if(ScreenToWorld(editorid, 320.0, 224.0, wX, wY, wZ)) {
+					
+				GetPlayerCameraPos(editorid, cX, cY, cZ);
+				wX = cX + (wX * 300.0);
+				wY = cY + (wY * 300.0);
+				wZ = cZ + (wZ * 300.0);
+				
+				if(CA_RayCastLine(cX, cY, cZ, wX, wY, wZ, wX, wY, wZ)) {
+					SendClientMessage(editorid, -1, "What do you want to do here?");
+				}
+			}*/
+		}
+	}
+	
+	return 1;
+}
+
+public OnVirtualKeyRelease(key)
+{
+	if(editorid == INVALID_PLAYER_ID)
+		return 1;
+	
+	switch(key) {
+		case VK_LBUTTON: {
+		}
+		case VK_MBUTTON: {
+		}
+		case VK_RBUTTON: {
+		}
+	}
+	
+	return 1;
+}

+ 827 - 0
Texture-Studio-master/filterscripts/tstudio/mangle.pwn

@@ -0,0 +1,827 @@
+#tryinclude <colandreas>
+#if !defined COLANDREAS
+	#endinput
+#endif
+
+#define MANGLE
+
+public OnFilterScriptInit()
+{
+	CA_Init();
+
+	#if defined MA_OnFilterScriptInit
+		MA_OnFilterScriptInit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptInit
+	#undef OnFilterScriptInit
+#else
+	#define _ALS_OnFilterScriptInit
+#endif
+#define OnFilterScriptInit MA_OnFilterScriptInit
+#if defined MA_OnFilterScriptInit
+	forward MA_OnFilterScriptInit();
+#endif
+
+new Float:GroupSlopeRX[MAX_PLAYERS], Float:GroupSlopeRY[MAX_PLAYERS];
+
+/* Debug Command
+YCMD:gs(playerid, arg[], help)
+{
+	new Float:x, Float:y, Float:z, line[128];
+	GetPlayerPos(playerid, x, y, z);
+    CalcSlopeAtPoint(x, y, x, y);
+	format(line, sizeof(line), "Slope X:%3.4f | Slope Y:%3.4f", x, y);
+    SendClientMessage(playerid, -1, line);
+	return 1;
+}*/
+
+
+// Load a prefab specify a filename
+YCMD:prefabsets(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Load a prefabricated group of objects rotated according to the ground slope.");
+		return 1;
+	}
+
+	MapOpenCheck();
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	if(isnull(arg)) ShowPrefabs(playerid);
+	else
+	{
+		new mapname[128];
+		format(mapname, sizeof(mapname), "tstudio/PreFabs/%s.db", arg);
+		if(fexist(mapname))
+		{
+		    PrefabDB = db_open_persistent(mapname);
+		    sqlite_LoadPrefab(playerid);
+		    db_free_persistent(PrefabDB);
+
+			new Float:x, Float:y, Float:z;
+			GetPlayerPos(playerid, x, y, z);
+			//CalcSlopeAtPoint(x, y, GroupSlopeRX[playerid], GroupSlopeRY[playerid]);
+			CA_RayCastLineAngle(x, y, 1200.0, x, y, -100.0, z, z, z, GroupSlopeRX[playerid], GroupSlopeRY[playerid], z);
+   			GroupRotate(playerid, GroupSlopeRX[playerid], GroupSlopeRY[playerid], 0.0);
+			
+			SendClientMessage(playerid, STEALTH_GREEN, "Prefab loaded and set to your group selection");
+		}
+		else SendClientMessage(playerid, STEALTH_YELLOW, "That prefab does not exist!");
+	}
+
+	return 1;
+}
+
+// Rotate group on ground slope
+YCMD:gsets(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Rotate all currently selected objects accordingly to ground slope.");
+		return 1;
+	}
+
+    MapOpenCheck();
+	new time = GetTickCount();
+
+	// We need to get the map center as the rotation node
+	new bool:value, Float:gCenterX, Float:gCenterY, Float:gCenterZ;
+
+	if(PivotPointOn[playerid])
+	{
+		new bool:hasgroup;
+		foreach(new i : Objects)
+		{
+		    if(GroupedObjects[playerid][i])
+		    {
+			    gCenterX = PivotPoint[playerid][xPos];
+			    gCenterY = PivotPoint[playerid][yPos];
+			    gCenterZ = PivotPoint[playerid][zPos];
+				value = true;
+                hasgroup = true;
+				break;
+			}
+		}
+		if(!hasgroup)
+		{
+			SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+			SendClientMessage(playerid, STEALTH_YELLOW, "There is not enough objects for this command to work");
+		}
+	}
+	else if(GetGroupCenter(playerid, gCenterX, gCenterY, gCenterZ)) value = true;
+
+	if(value)
+	{
+		new Float:x, Float:y, Float:z;
+		GetPlayerPos(playerid, x, y, z);
+		//CalcSlopeAtPoint(x, y, GroupSlopeRX[playerid], GroupSlopeRY[playerid]);
+		CA_RayCastLineAngle(x, y, 1200.0, x, y, -100.0, z, z, z, GroupSlopeRX[playerid], GroupSlopeRY[playerid], z);
+
+		// Loop through all objects and perform rotation calculations
+		db_begin_transaction(EditMap);
+		foreach(new i : Objects)
+		{
+			if(GroupedObjects[playerid][i])
+			{
+				SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+				
+				AttachObjectToPoint(i, gCenterX, gCenterY, gCenterZ, GroupSlopeRX[playerid], GroupSlopeRY[playerid], 0.0, ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+				
+				SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+				SetDynamicObjectRot(ObjectData[i][oID], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+
+				UpdateObject3DText(i);
+
+				sqlite_UpdateObjectPos(i);
+			}
+		}
+		db_end_transaction(EditMap);
+
+   		// Update the Group GUI
+		UpdatePlayerGSelText(playerid);
+
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Group RZ rotation complete ");
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "There is not enough objects for this command to work");
+	}
+
+	return 1;
+}
+
+// Edit a group
+YCMD:editgroups(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Edit currently edited objects simultaneously.");
+		SendClientMessage(playerid, STEALTH_GREEN, "Hold 'Walk Key' to set the group rotation pivot, you can only do this once per edit.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    NoEditingMode(playerid);
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+	if(PlayerHasGroup(playerid))
+	{
+		GetGroupCenter(playerid, LastPivot[playerid][xPos], LastPivot[playerid][yPos], LastPivot[playerid][zPos]);
+
+		LastGroupPosition[playerid][xPos] = LastPivot[playerid][xPos];
+		LastGroupPosition[playerid][yPos] = LastPivot[playerid][yPos];
+		LastGroupPosition[playerid][zPos] = LastPivot[playerid][zPos];
+
+		PivotOffset[playerid][xPos] = 0.0;
+		PivotOffset[playerid][yPos] = 0.0;
+		PivotOffset[playerid][zPos] = 0.0;
+		
+		new Float:x, Float:y, Float:z;
+		GetPlayerPos(playerid, x, y, z);
+		CA_RayCastLineAngle(x, y, 1200.0, x, y, -100.0, z, z, z, GroupSlopeRX[playerid], GroupSlopeRY[playerid], z);
+
+		PivotObject[playerid] = CreateDynamicObject(1974, LastPivot[playerid][xPos], LastPivot[playerid][yPos], LastPivot[playerid][zPos], GroupSlopeRX[playerid], GroupSlopeRY[playerid], z, -1, -1, playerid);
+
+		Streamer_SetFloatData(STREAMER_TYPE_OBJECT, PivotObject[playerid], E_STREAMER_DRAW_DISTANCE, 3000.0);
+
+		SetDynamicObjectMaterial(PivotObject[playerid], 0, 10765, "airportgnd_sfse", "white", -256);
+
+		Streamer_Update(playerid);
+
+		EditingMode[playerid] = true;
+		PivotReset[playerid] = true;
+		SetEditMode(playerid, EDIT_MODE_OBJECTGROUP);
+	    EditDynamicObject(playerid, PivotObject[playerid]);
+
+	    SendClientMessage(playerid, STEALTH_GREEN, "Editing your group");
+	}
+	else SendClientMessage(playerid, STEALTH_YELLOW, "You must have at least one object grouped");
+
+	return 1;
+}
+
+// Rotate object on ground slope
+YCMD:osets(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Rotate currently selected object according to ground slope.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    EditCheck(playerid);
+    NoEditingMode(playerid);
+
+    SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+
+	new Float:x, Float:y, Float:z;
+	GetPlayerPos(playerid, x, y, z);
+	CA_RayCastLineAngle(x, y, 1200.0, x, y, -100.0, z, z, z, GroupSlopeRX[playerid], GroupSlopeRY[playerid], z);
+	
+	if(PivotPointOn[playerid])
+	{
+		new i = CurrObject[playerid];
+		AttachObjectToPoint(i, PivotPoint[playerid][xPos], PivotPoint[playerid][yPos], PivotPoint[playerid][zPos], GroupSlopeRX[playerid], GroupSlopeRY[playerid], 0.0, ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+		SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+		SetDynamicObjectRot(ObjectData[i][oID], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+		UpdateObject3DText(CurrObject[playerid]);
+	}
+	else
+	{
+	    ObjectData[CurrObject[playerid]][oRX] += GroupSlopeRX[playerid];
+	    ObjectData[CurrObject[playerid]][oRY] += GroupSlopeRY[playerid];
+	    SetDynamicObjectRot(ObjectData[CurrObject[playerid]][oID], ObjectData[CurrObject[playerid]][oRX], ObjectData[CurrObject[playerid]][oRY], ObjectData[CurrObject[playerid]][oRZ]);
+	}
+
+    sqlite_UpdateObjectPos(CurrObject[playerid]);
+
+	return 1;
+}
+
+
+/*
+// Load a prefab specify a filename adjust to facing angle
+YCMD:pmaf(playerid, arg[], help)
+{
+	MapOpenCheck();
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	if(isnull(arg)) ShowPrefabs(playerid);
+	else
+	{
+		new Float:zrot, mapname[128];
+		if(sscanf(arg, "s[128]f", mapname, zrot)) return SendClientMessage(playerid, STEALTH_YELLOW, "Usage: /pmaf <prefab> <zrot>");
+		
+		format(mapname, sizeof(mapname), "tstudio/PreFabs/%s.db", mapname);
+		if(fexist(mapname))
+		{
+		    PrefabDB = db_open_persistent(mapname);
+		    sqlite_LoadPrefab(playerid, false);
+		    db_free_persistent(PrefabDB);
+
+			new Float:x, Float:y, Float:z, Float:rx, Float:ry;
+
+			// Find the slope
+			GetPlayerPos(playerid, x, y, z);
+			CalcSlopeAtPoint(x, y, rx, ry);
+
+			// Translate new rotation offsets
+   			GroupRotate(playerid, 0.0, 0.0, zrot);
+
+			// Translate new rotation to slope
+   			GroupRotate(playerid, rx, ry, 0.0);
+
+			SendClientMessage(playerid, STEALTH_GREEN, "Prefab loaded and set to your group selection");
+		}
+		else SendClientMessage(playerid, STEALTH_YELLOW, "That prefab does not exist!");
+	}
+
+	return 1;
+}
+*/
+
+YCMD:cobjectsets(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Creates a rotated object according to the map slope and selects it.");
+		return 1;
+	}
+
+    MapOpenCheck();
+	NoEditingMode(playerid);
+
+ 	new modelid, Float:RZAngle;
+	if(sscanf(arg, "iF(0.0)", modelid, RZAngle))
+	{
+	    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+        SendClientMessage(playerid, STEALTH_YELLOW, "Usage: /csobject <modelid>");
+		return 1;
+	}
+
+	// Set the initial object position
+	new Float:px, Float:py, Float:pz, Float:fa, Float:RXAngle, Float:RYAngle;
+	new Float:colradius = GetColSphereRadius(modelid);
+	GetPosFaInFrontOfPlayer(playerid, colradius + 1.0, px, py, pz, fa);
+	pz -= 1.0;
+
+	// Calculate rotation
+	//CalcSlopeAtPoint(px, py, RXAngle, RYAngle);
+	CA_RayCastLineAngle(px, py, 1200.0, px, py, -100.0, fa, fa, fa, RXAngle, RYAngle, RZAngle);
+	//new Float:angle = float(random(360));
+	//ObjectRotateZ(RXAngle, RYAngle, RZAngle, angle, RXAngle, RYAngle, RZAngle);
+
+	// Create the object
+	SetCurrObject(playerid, AddDynamicObject(modelid, px, py, pz, RXAngle, RYAngle, RZAngle));
+
+	// Object was created
+	if(CurrObject[playerid] != -1)
+	{
+		// Update the streamer for this player
+        Streamer_Update(playerid);
+
+		SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_CREATED);
+
+		// Show output message
+		new line[128];
+		new modelarray = GetModelArray(modelid);
+		if(modelarray > -1) format(line, sizeof(line), "Created Object Index: %i Model Name: %s", CurrObject[playerid], GetModelName(modelarray));
+		else format(line, sizeof(line), "Created Object Index: %i Model Name: Unknown", CurrObject[playerid]);
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, line);
+
+	}
+	// Too many objects already created
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "You have too many objects created to create anymore!");
+	}
+
+	return 1;
+}
+
+
+
+tsfunc CalcSlopeAtPoint(Float:x, Float:y, &Float:RXAngle, &Float:RYAngle)
+{
+	new Float:North[3], Float:South[3], Float:East[3], Float:West[3], Float:opposite, Float:hypotenuse;
+
+	// Set slope positions
+	North[0] = x;
+	North[1] = y + 1;
+
+	South[0] = x;
+	South[1] = y - 1;
+
+	East[0] = x + 1;
+	East[1] = y;
+
+	West[0] = x - 1;
+	West[1] = y;
+
+	// Use ColAndreas to get Z Values
+	CA_FindZ_For2DCoord(North[0], North[1], North[2]);
+	CA_FindZ_For2DCoord(South[0], South[1], South[2]);
+	CA_FindZ_For2DCoord(East[0], East[1], East[2]);
+	CA_FindZ_For2DCoord(West[0], West[1], West[2]);
+
+	// Calculate Slope angles
+	// North South RX
+	hypotenuse = getdist3d(North[0], North[1], North[2], South[0], South[1], South[2]);
+	opposite = getdist3d(North[0], North[1], North[2], North[0], North[1], South[2]);
+
+	RXAngle = asin(floatdiv(opposite, hypotenuse));
+	if(South[2] > North[2]) RXAngle *= -1;
+
+	// West East RY
+	hypotenuse = getdist3d(West[0], West[1], West[2], East[0], East[1], East[2]);
+	opposite = getdist3d(West[0], West[1], West[2], West[0], West[1], East[2]);
+
+	RYAngle = asin(floatdiv(opposite, hypotenuse));
+	if(East[2] > West[2]) RYAngle *= -1;
+
+	return 1;
+}
+
+
+tsfunc ObjectRotateZ(Float:RX, Float:RY, Float:RZ, Float:rot_z, &Float:NewRX, &Float:NewRY, &Float:NewRZ)
+{
+	new
+		Float:sinx,
+		Float:siny,
+		Float:sinz,
+		Float:cosx,
+		Float:cosy,
+		Float:cosz;
+
+    FloatConvertValue(RX, RY, RZ, sinx, siny, sinz, cosx, cosy, cosz);
+    // Convert from one euler angle sequence (ZXY) to another and add the rotation
+    FloatConvertValue(asin(cosx * cosy), atan2(sinx, cosx * siny) + rot_z, atan2(cosy * cosz * sinx - siny * sinz, cosz * siny - cosy * sinx * -sinz),
+		sinx, siny, sinz, cosx, cosy, cosz);
+
+    // Convert back to the original euler angle sequence and apply the new rotation to the object
+    NewRX = asin(cosx * siny),
+	NewRY = atan2(cosx * cosy, sinx),
+	NewRZ = atan2(cosz * sinx * siny - cosy * sinz, cosy * cosz + sinx * siny * sinz);
+    return 1;
+}
+
+tsfunc FloatConvertValue(Float:rot_x, Float:rot_y, Float:rot_z, &Float:sinx, &Float:siny, &Float:sinz, &Float:cosx, &Float:cosy, &Float:cosz)
+{
+    sinx = floatsin(rot_x, degrees);
+    siny = floatsin(rot_y, degrees);
+    sinz = floatsin(rot_z, degrees);
+    cosx = floatcos(rot_x, degrees);
+    cosy = floatcos(rot_y, degrees);
+    cosz = floatcos(rot_z, degrees);
+    return 1;
+}
+
+
+/* MEDIT Prefab import
+
+// Import function
+// Load prefab
+
+#define     MAX_MATERIAL_INDEX      16
+
+YCMD:cpf(playerid, arg[], help)
+{
+	new dir:dHandle = dir_open("./scriptfiles/tstudio/medit/importpf/");
+	new item[40], type;
+	new extension[6];
+
+	// Create a load list
+	while(dir_list(dHandle, item, type))
+	{
+	 	if(type != FM_DIR)
+	    {
+			// We need to check extension
+			if(strlen(item) > 3)
+			{
+				format(extension, sizeof(extension), "%s%s%s%s%s", item[strlen(item) - 5], item[strlen(item) - 4], item[strlen(item) - 3], item[strlen(item) - 2],item[strlen(item) - 1]);
+
+				// File is apparently a prefab
+
+				new tempmap[64];
+				strmid(tempmap, item, 0, strlen(item) - 6, 64);
+				
+				printf(tempmap);
+				
+				
+				if(!strcmp(extension, "mpfab")) ConvertMeditPrefab(tempmap);
+			}
+		}
+	}
+
+	return 1;
+}
+
+
+// Old medit enum
+
+enum object_info {
+	object_id,
+	medit_modelid,
+	Text3D:medit_Text3D[MAX_OBJECTS],
+	Float:pfox,
+	Float:pfoy,
+	Float:pfoz,
+	Float:pfrx,
+	Float:pfry,
+	Float:pfrz,
+	Material_Index[MAX_MATERIAL_INDEX],
+	Material_Color[MAX_MATERIAL_INDEX],
+	usetext[MAX_MATERIAL_INDEX],
+	Material_FontFace[MAX_MATERIAL_INDEX],
+	Material_FontSize[MAX_MATERIAL_INDEX],
+	Material_FontBold[MAX_MATERIAL_INDEX],
+	Material_FontColor[MAX_MATERIAL_INDEX],
+	Material_BackColor[MAX_MATERIAL_INDEX],
+	Material_Alignment[MAX_MATERIAL_INDEX],
+	Material_TextFontSize[MAX_MATERIAL_INDEX]
+}
+
+
+new DB: PrefabImportDB;
+new DBStatement:insertprefabimpstmt;
+new tempobject[object_info];
+new temp_Material_Object_Text[MAX_MATERIAL_INDEX][64];
+
+
+ConvertMeditPrefab(tempmap[64])
+{
+	new templine[256];
+	new Float:ZOffSet;
+	new openmap[64];
+	new opendb[64];
+
+	// Create import database
+
+	format(opendb, 64, "tstudio/medit/convertpf/%s.db", tempmap);
+	PrefabImportDB = db_open_persistent(opendb);
+
+	new NewImportString[512];
+	strimplode(" ",
+		NewImportString,
+		sizeof(NewImportString),
+		"CREATE TABLE IF NOT EXISTS `Objects`",
+		"(ModelID INTEGER,",
+		"xPos REAL,",
+		"yPos REAL,",
+		"zPos REAL,",
+		"rxRot REAL,",
+		"ryRot REAL,",
+		"rzRot REAL,",
+		"TextureIndex TEXT,",
+		"ColorIndex TEXT,",
+		"usetext INTEGER,",
+		"FontFace INTEGER,",
+		"FontSize INTEGER,",
+		"FontBold INTEGER,",
+		"FontColor INTEGER,",
+		"BackColor INTEGER,",
+		"Alignment INTEGER,",
+		"TextFontSize INTEGER,",
+		"ObjectText TEXT);"
+	);
+
+	db_exec(PrefabImportDB, NewImportString);
+
+	// Prefab extra info
+	db_exec(PrefabImportDB, "CREATE TABLE IF NOT EXISTS `PrefabInfo` (zOFF REAL);");
+	db_exec(PrefabImportDB, "INSERT INTO `PrefabInfo` VALUES(0.0);");
+
+
+	// Prepare query
+	new ImportPrefabInsert[1024];
+	
+	strimplode(" ",
+		ImportPrefabInsert,
+		sizeof(ImportPrefabInsert),
+		"INSERT INTO `Objects`",
+        "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
+	);
+	
+	// Prepare data base for writing
+	insertprefabimpstmt = db_prepare(PrefabImportDB, ImportPrefabInsert);
+
+
+	
+
+
+
+	// Read in map info new style format and get the prefab center for correcting
+	format(openmap, 64, "tstudio/medit/importpf/%s.mpfab", tempmap);
+
+
+	new Float:pfx, Float:pfy, Float:pfz;
+	GetPrefabCenter(openmap, pfx, pfy, pfz);
+
+
+	new File:f;
+	f = fopen(openmap,io_read);
+
+	// Check Version
+	fread(f,templine,sizeof(templine),false);
+
+	// This is a new medit version use new load routine
+	new index;
+
+	// new version load
+	if(!strcmp(strtok(templine,index), "420medit-Version:"))
+	{
+		ZOffSet = floatstr(strtok(templine,index));
+		ZOffSet = floatstr(strtok(templine,index));
+		format(templine, sizeof(templine), "ZOffSet: %f", ZOffSet);
+
+		while(fread(f,templine,sizeof(templine),false)) {
+			index = 0;
+			tempobject[object_id] = INVALID_OBJECT_ID;
+			tempobject[medit_modelid] = strval(strtok(templine,index));
+			tempobject[pfox] = floatstr(strtok(templine,index))-pfx;
+			tempobject[pfoy] = floatstr(strtok(templine,index))-pfy;
+			tempobject[pfoz] = floatstr(strtok(templine,index))-pfz;
+			tempobject[pfrx] = floatstr(strtok(templine,index));
+			tempobject[pfry] = floatstr(strtok(templine,index));
+			tempobject[pfrz] = floatstr(strtok(templine,index));
+
+			for(new i = 0; i < MAX_MATERIAL_INDEX; i++)
+			{
+				tempobject[Material_Index][i] = strval(strtok(templine,index));
+				tempobject[Material_Color][i] = strval(strtok(templine,index));
+			}
+
+			// Load Text Data // Only only use first slot anyways
+			for(new i = 0; i < MAX_MATERIAL_INDEX; i++)
+			{
+				index = 0;
+				fread(f,templine,sizeof(templine),false);
+				tempobject[usetext][i] = strval(strtok(templine,index));
+				tempobject[Material_FontFace][i] = strval(strtok(templine,index));
+				tempobject[Material_FontSize][i] = strval(strtok(templine,index));
+				tempobject[Material_FontBold][i] = strval(strtok(templine,index));
+				tempobject[Material_FontColor][i] = strval(strtok(templine,index));
+				tempobject[Material_BackColor][i] = strval(strtok(templine,index));
+				tempobject[Material_Alignment][i] = strval(strtok(templine,index));
+				tempobject[Material_TextFontSize][i] = strval(strtok(templine,index));
+
+				new bool:done;
+				temp_Material_Object_Text[i] = "";
+				while(done == false)
+				{
+					new tmptext[64];
+                    tmptext = strtok(templine,index);
+                    if(!strcmp(tmptext, "E\r\n")) done = true;
+                    else format(temp_Material_Object_Text[i], 64, "%s%s ",temp_Material_Object_Text[i], tmptext);
+				}
+			}
+			// Object read save object to new prefab format
+			stmt_bind_value(insertprefabimpstmt, 0, DB::TYPE_INT, tempobject[medit_modelid]);
+			stmt_bind_value(insertprefabimpstmt, 1, DB::TYPE_FLOAT, tempobject[pfox]);
+			stmt_bind_value(insertprefabimpstmt, 2, DB::TYPE_FLOAT, tempobject[pfoy]);
+		    stmt_bind_value(insertprefabimpstmt, 3, DB::TYPE_FLOAT, tempobject[pfoz]);
+		    stmt_bind_value(insertprefabimpstmt, 4, DB::TYPE_FLOAT, tempobject[pfrx]);
+		    stmt_bind_value(insertprefabimpstmt, 5, DB::TYPE_FLOAT, tempobject[pfry]);
+		    stmt_bind_value(insertprefabimpstmt, 6, DB::TYPE_FLOAT, tempobject[pfrz]);
+		    stmt_bind_value(insertprefabimpstmt, 7, DB::TYPE_ARRAY, tempobject[Material_Index], MAX_MATERIALS);
+		    stmt_bind_value(insertprefabimpstmt, 8, DB::TYPE_ARRAY, tempobject[Material_Color], MAX_MATERIALS);
+		    stmt_bind_value(insertprefabimpstmt, 9, DB::TYPE_INT, tempobject[usetext][0]);
+		    stmt_bind_value(insertprefabimpstmt, 10, DB::TYPE_INT, tempobject[Material_FontFace][0]);
+		    stmt_bind_value(insertprefabimpstmt, 11, DB::TYPE_INT, tempobject[Material_FontSize][0]);
+		    stmt_bind_value(insertprefabimpstmt, 12, DB::TYPE_INT, tempobject[Material_FontBold][0]);
+		    stmt_bind_value(insertprefabimpstmt, 13, DB::TYPE_INT, tempobject[Material_FontColor][0]);
+		 	stmt_bind_value(insertprefabimpstmt, 14, DB::TYPE_INT, tempobject[Material_BackColor][0]);
+		    stmt_bind_value(insertprefabimpstmt, 15, DB::TYPE_INT, tempobject[Material_Alignment][0]);
+		    stmt_bind_value(insertprefabimpstmt, 16, DB::TYPE_INT, tempobject[Material_TextFontSize][0]);
+		    stmt_bind_value(insertprefabimpstmt, 17, DB::TYPE_STRING, temp_Material_Object_Text[0], MAX_TEXT_LENGTH);
+
+            stmt_execute(insertprefabimpstmt);
+		}
+
+	}
+	// Old version load
+	else
+	{
+		fclose(f);
+		f = fopen(openmap,io_read);
+
+		while(fread(f,templine,sizeof(templine),false)) {
+			index = 0;
+			tempobject[object_id] = INVALID_OBJECT_ID;
+			tempobject[medit_modelid] = strval(strtok(templine,index));
+			tempobject[pfox] = floatstr(strtok(templine,index))-pfx;
+			tempobject[pfoy] = floatstr(strtok(templine,index))-pfy;
+			tempobject[pfoz] = floatstr(strtok(templine,index))-pfz;
+			tempobject[pfrx] = floatstr(strtok(templine,index));
+			tempobject[pfry] = floatstr(strtok(templine,index));
+			tempobject[pfrz] = floatstr(strtok(templine,index));
+
+			for(new i = 0; i < MAX_MATERIAL_INDEX; i++) { tempobject[Material_Index][i] = strval(strtok(templine,index)); }
+
+			// Bind our reults
+			stmt_bind_value(insertprefabimpstmt, 0, DB::TYPE_INT, tempobject[medit_modelid]);
+		  	stmt_bind_value(insertprefabimpstmt, 1, DB::TYPE_FLOAT, tempobject[pfox]);
+		   	stmt_bind_value(insertprefabimpstmt, 2, DB::TYPE_FLOAT, tempobject[pfoy]);
+		   	stmt_bind_value(insertprefabimpstmt, 3, DB::TYPE_FLOAT, tempobject[pfoz]);
+			stmt_bind_value(insertprefabimpstmt, 4, DB::TYPE_FLOAT, tempobject[pfrx]);
+			stmt_bind_value(insertprefabimpstmt, 5, DB::TYPE_FLOAT, tempobject[pfry]);
+			stmt_bind_value(insertprefabimpstmt, 6, DB::TYPE_FLOAT, tempobject[pfrz]);
+			stmt_bind_value(insertprefabimpstmt, 7, DB::TYPE_ARRAY, tempobject[Material_Index], MAX_MATERIALS);
+			stmt_bind_value(insertprefabimpstmt, 8, DB::TYPE_ARRAY, tempobject[Material_Color], MAX_MATERIALS);
+			stmt_bind_value(insertprefabimpstmt, 9, DB::TYPE_INT, 0);
+			stmt_bind_value(insertprefabimpstmt, 10, DB::TYPE_INT, 0);
+			stmt_bind_value(insertprefabimpstmt, 11, DB::TYPE_INT, 0);
+			stmt_bind_value(insertprefabimpstmt, 12, DB::TYPE_INT, 0);
+			stmt_bind_value(insertprefabimpstmt, 13, DB::TYPE_INT, 0);
+			stmt_bind_value(insertprefabimpstmt, 14, DB::TYPE_INT, 0);
+			stmt_bind_value(insertprefabimpstmt, 15, DB::TYPE_INT, 0);
+			stmt_bind_value(insertprefabimpstmt, 16, DB::TYPE_INT, 20);
+			stmt_bind_value(insertprefabimpstmt, 17, DB::TYPE_STRING, "None", MAX_TEXT_LENGTH);
+
+
+            stmt_execute(insertprefabimpstmt);
+		}
+	}
+
+	fclose(f);
+	db_free_persistent(PrefabImportDB);
+
+	return 1;
+
+
+}
+
+
+tsfunc GetPrefabCenter(openmap[64], &Float:pfx, &Float:pfy, &Float:pfz)
+{
+	new File:f;
+	f = fopen(openmap,io_read);
+	new templine[256];
+	new Float:ZOffSet;
+
+	new Float:highX = -9999999.0;
+	new Float:highY = -9999999.0;
+	new Float:highZ = -9999999.0;
+
+	new Float:lowX  = 9999999.0;
+	new Float:lowY  = 9999999.0;
+	new Float:lowZ  = 9999999.0;
+
+	// Check Version
+	fread(f,templine,sizeof(templine),false);
+
+	// This is a new medit version use new load routine
+	new index;
+
+	// new version load
+	if(!strcmp(strtok(templine,index), "420medit-Version:"))
+	{
+		ZOffSet = floatstr(strtok(templine,index));
+		ZOffSet = floatstr(strtok(templine,index));
+		format(templine, sizeof(templine), "ZOffSet: %f", ZOffSet);
+
+		while(fread(f,templine,sizeof(templine),false)) {
+			index = 0;
+			tempobject[object_id] = INVALID_OBJECT_ID;
+			tempobject[medit_modelid] = strval(strtok(templine,index));
+			tempobject[pfox] = floatstr(strtok(templine,index));
+			tempobject[pfoy] = floatstr(strtok(templine,index));
+			tempobject[pfoz] = floatstr(strtok(templine,index));
+			tempobject[pfrx] = floatstr(strtok(templine,index));
+			tempobject[pfry] = floatstr(strtok(templine,index));
+			tempobject[pfrz] = floatstr(strtok(templine,index));
+
+			for(new i = 0; i < MAX_MATERIAL_INDEX; i++)
+			{
+				tempobject[Material_Index][i] = strval(strtok(templine,index));
+				tempobject[Material_Color][i] = strval(strtok(templine,index));
+			}
+
+			// Load Text Data // Only only use first slot anyways
+			for(new i = 0; i < MAX_MATERIAL_INDEX; i++)
+			{
+				index = 0;
+				fread(f,templine,sizeof(templine),false);
+				tempobject[usetext][i] = strval(strtok(templine,index));
+				tempobject[Material_FontFace][i] = strval(strtok(templine,index));
+				tempobject[Material_FontSize][i] = strval(strtok(templine,index));
+				tempobject[Material_FontBold][i] = strval(strtok(templine,index));
+				tempobject[Material_FontColor][i] = strval(strtok(templine,index));
+				tempobject[Material_BackColor][i] = strval(strtok(templine,index));
+				tempobject[Material_Alignment][i] = strval(strtok(templine,index));
+				tempobject[Material_TextFontSize][i] = strval(strtok(templine,index));
+
+				new bool:done;
+				temp_Material_Object_Text[i] = "";
+				while(done == false)
+				{
+					new tmptext[64];
+                    tmptext = strtok(templine,index);
+                    if(!strcmp(tmptext, "E\r\n")) done = true;
+                    else format(temp_Material_Object_Text[i], 64, "%s%s ",temp_Material_Object_Text[i], tmptext);
+				}
+			}
+			// Calculate group center
+			if(tempobject[pfox] > highX) highX = tempobject[pfox];
+			if(tempobject[pfoy] > highY) highY = tempobject[pfoy];
+			if(tempobject[pfoz] > highZ) highZ = tempobject[pfoz];
+			if(tempobject[pfox] < lowX) lowX = tempobject[pfox];
+			if(tempobject[pfoy] < lowY) lowY = tempobject[pfoy];
+			if(tempobject[pfoz] < lowZ) lowZ = tempobject[pfoz];
+		}
+
+	}
+	// Old version load
+	else
+	{
+		fclose(f);
+		f = fopen(openmap,io_read);
+
+		while(fread(f,templine,sizeof(templine),false)) {
+			index = 0;
+			tempobject[object_id] = INVALID_OBJECT_ID;
+			tempobject[medit_modelid] = strval(strtok(templine,index));
+			tempobject[pfox] = floatstr(strtok(templine,index));
+			tempobject[pfoy] = floatstr(strtok(templine,index));
+			tempobject[pfoz] = floatstr(strtok(templine,index));
+			tempobject[pfrx] = floatstr(strtok(templine,index));
+			tempobject[pfry] = floatstr(strtok(templine,index));
+			tempobject[pfrz] = floatstr(strtok(templine,index));
+
+			for(new i = 0; i < MAX_MATERIAL_INDEX; i++) { tempobject[Material_Index][i] = strval(strtok(templine,index)); }
+
+			// Calculate group center
+			if(tempobject[pfox] > highX) highX = tempobject[pfox];
+			if(tempobject[pfoy] > highY) highY = tempobject[pfoy];
+			if(tempobject[pfoz] > highZ) highZ = tempobject[pfoz];
+			if(tempobject[pfox] < lowX) lowX = tempobject[pfox];
+			if(tempobject[pfoy] < lowY) lowY = tempobject[pfoy];
+			if(tempobject[pfoz] < lowZ) lowZ = tempobject[pfoz];
+
+		}
+	}
+
+	pfx = (highX + lowX) / 2;
+	pfy = (highY + lowY) / 2;
+	pfz = (highZ + lowZ) / 2;
+
+	fclose(f);
+
+
+	return 1;
+}
+*/

+ 1287 - 0
Texture-Studio-master/filterscripts/tstudio/menudata.pwn

@@ -0,0 +1,1287 @@
+// Main menu textdraws
+stock const MainMenuText[][GUIDEF] = {
+	{
+		"_",				// Text
+		634.0,				// OffsetX
+		120.0,				// OffsetY
+		0.0,				// LetterSizeX
+		32.0,				// LetterSizeY
+		540.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,					// Previewmodel
+		255,				// Background Color
+		1,					// Font
+		-1,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		1263356927,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"_",         // Text
+		631.0,				// OffsetX
+		123.0,				// OffsetY
+		0.0,				// LetterSizeX
+		1.2,				// LetterSizeY
+		543.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,					// Previewmodel
+		255,				// Background Color
+		1,				// Font
+		-1,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		657008639,		// Boxcolor
+		0				// Selectable
+	},
+	{
+		"_",         // Text
+		631.0,				// OffsetX
+		405.0,				// OffsetY
+		0.0,				// LetterSizeX
+		-0.0,				// LetterSizeY
+		543.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		1,				// Font
+		-1,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		657008639,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"_",         // Text
+		550.0,				// OffsetX
+		137.0,				// OffsetY
+		-0.0,				// LetterSizeX
+		29.5,				// LetterSizeY
+		543.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		1,				// Font
+		-1,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		657008639,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"_",         // Text
+		631.0,				// OffsetX
+		137.0,				// OffsetY
+		-0.0,				// LetterSizeX
+		29.5,				// LetterSizeY
+		624.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		1,				// Font
+		-1,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		657008639,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"_",         // Text
+		628.0,				// OffsetX
+		126.0,				// OffsetY
+		0.0,				// LetterSizeX
+		0.6,				// LetterSizeY
+		546.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		1,				// Font
+		-1,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		202181887,				// Boxcolor
+		0				// Selectable
+	}
+};
+
+// Smaller version of main GUI
+stock const SubMenuText[][GUIDEF] = {
+	{
+		"_",				// Text
+		634.0,				// OffsetX
+		120.0,				// OffsetY
+		0.0,				// LetterSizeX
+		15.4,				// LetterSizeY
+		540.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		1,				// Font
+		-1,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		1263356927,				// Boxcolor
+		1				// Selectable
+	},
+	{
+		"_",				// Text
+		631.0,				// OffsetX
+		123.0,				// OffsetY
+		0.0,				// LetterSizeX
+		1.2,				// LetterSizeY
+		543.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		1,				// Font
+		-1,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		657008639,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"_",				// Text
+		631.0,				// OffsetX
+		255.0,				// OffsetY
+		0.0,				// LetterSizeX
+		-0.0,				// LetterSizeY
+		543.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		1,				// Font
+		-1,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		657008639,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"_",				// Text
+		550.0,				// OffsetX
+		127.0,				// OffsetY
+		-0.0,				// LetterSizeX
+		14.1,				// LetterSizeY
+		543.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		1,				// Font
+		-1,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		657008639,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"_",				// Text
+		631.0,				// OffsetX
+		136.0,				// OffsetY
+		-0.0,				// LetterSizeX
+		13.0,				// LetterSizeY
+		624.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		1,				// Font
+		-1,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		657008639,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"_",				// Text
+		628.0,				// OffsetX
+		126.0,				// OffsetY
+		0.0,				// LetterSizeX
+		0.6,				// LetterSizeY
+		546.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		1,				// Font
+		-1,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		202181887,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"Selection",				// Text
+		587.0,				// OffsetX
+		124.0,				// OffsetY
+		0.2,				// LetterSizeX
+		1.0,				// LetterSizeY
+		0.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		2,				// Font
+		1022386431,				// Color
+		0,				// Outline
+		1,				// Proportional
+		2,				// Alignment
+		1,				// Shadow
+		0,				// Usebox
+		255,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"LD_BEAT:cross",				// Text
+		622.0,				// OffsetX
+		117.0,				// OffsetY
+		0.5,				// LetterSizeX
+		1.0,				// LetterSizeY
+		10.0,				// TextSizeX
+		10.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		4,				// Font
+		16777215,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		255,				// Boxcolor
+		1				// Selectable
+	}
+};
+
+
+
+// Smaller version of main GUI
+stock const SubMenuTexText[][GUIDEF] = {
+	{
+		"_",				// Text
+		634.0,				// OffsetX
+		120.0,				// OffsetY
+		0.0,				// LetterSizeX
+		22.0,				// LetterSizeY
+		540.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		1,				// Font
+		-1,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		1263356927,				// Boxcolor
+		1				// Selectable
+	},
+	{
+		"_",				// Text
+		631.0,				// OffsetX
+		123.0,				// OffsetY
+		0.0,				// LetterSizeX
+		1.2,				// LetterSizeY
+		543.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		1,				// Font
+		-1,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		657008639,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"_",				// Text
+		631.0,				// OffsetX
+		315.0,				// OffsetY
+		0.0,				// LetterSizeX
+		-0.0,				// LetterSizeY
+		543.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		1,				// Font
+		-1,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		657008639,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"_",				// Text
+		550.0,				// OffsetX
+		127.0,				// OffsetY
+		-0.0,				// LetterSizeX
+		20.5,				// LetterSizeY
+		543.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		1,				// Font
+		-1,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		657008639,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"_",				// Text
+		631.0,				// OffsetX
+		136.0,				// OffsetY
+		-0.0,				// LetterSizeX
+		19.8,				// LetterSizeY
+		624.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		1,				// Font
+		-1,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		657008639,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"_",				// Text
+		628.0,				// OffsetX
+		126.0,				// OffsetY
+		0.0,				// LetterSizeX
+		0.7,				// LetterSizeY
+		546.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		1,				// Font
+		-1,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		202181887,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"Selection",				// Text
+		587.0,				// OffsetX
+		124.0,				// OffsetY
+		0.2,				// LetterSizeX
+		1.0,				// LetterSizeY
+		0.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		2,				// Font
+		1022386431,				// Color
+		0,				// Outline
+		1,				// Proportional
+		2,				// Alignment
+		1,				// Shadow
+		0,				// Usebox
+		255,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"LD_BEAT:cross",				// Text
+		622.0,				// OffsetX
+		117.0,				// OffsetY
+		0.5,				// LetterSizeX
+		1.0,				// LetterSizeY
+		10.0,				// TextSizeX
+		10.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		4,				// Font
+		16777215,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		255,				// Boxcolor
+		1				// Selectable
+	}
+};
+
+
+
+
+
+
+// Main menu player textdraw
+stock const MainMenuPlayerText[][GUIDEF] = {
+	{
+		"Main Menu",         // Text
+		587.0,				// OffsetX
+		124.0,				// OffsetY
+		0.2,				// LetterSizeX
+		1.0,				// LetterSizeY
+		0.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		2,				// Font
+		1022386431,				// Color
+		0,				// Outline
+		1,				// Proportional
+		2,				// Alignment
+		1,				// Shadow
+		0,				// Usebox
+		255,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"LD_BEAT:cross",         // Text
+		622.0,				// OffsetX
+		117.0,				// OffsetY
+		0.5,				// LetterSizeX
+		1.0,				// LetterSizeY
+		10.0,				// TextSizeX
+		10.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		4,				// Font
+		16777215,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		255,				// Boxcolor
+		1				// Selectable
+	},
+
+	{
+		"LD_BEAT:square", // Text
+		542.0,				// OffsetX
+		117.0,				// OffsetY
+		0.5,				// LetterSizeX
+		1.0,				// LetterSizeY
+		10.0,				// TextSizeX
+		10.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		4,				// Font
+		0xEB42D4FF,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		255,				// Boxcolor
+		1				// Selectable
+	}
+
+
+
+
+};
+
+// Menu button definition
+stock const MenuButton[][GUIDEF] = {
+	{
+		"I",         // Text
+		0.0,				// OffsetX
+		1.0,				// OffsetY
+		8.1,				// LetterSizeX
+		2.0,				// LetterSizeY
+		0.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		1,				// Font
+		-1583242753,				// Color
+		1,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		0,				// Shadow
+		0,				// Usebox
+		255,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"Save Map",         // Text
+		75.0,				// OffsetX
+		5.0,				// OffsetY
+		0.15,				// LetterSizeX
+		1.0,				// LetterSizeY
+		0.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		1,				// Font
+		-1,				// Color
+		1,				// Outline
+		1,				// Proportional
+		3,				// Alignment
+		3,				// Shadow
+		0,				// Usebox
+		255,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"LD_BEAT:left",    // Text
+		25.0,				// OffsetX
+		6.0,				// OffsetY
+		0.5,				// LetterSizeX
+		1.0,				// LetterSizeY
+		10.0,				// TextSizeX
+		10.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		4,				// Font
+		0xB7F50FFF,		// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		255,				// Boxcolor
+		1				// Selectable
+	}
+};
+
+stock const MovementMenu[][GUIDEF] = {
+	{
+		"LD_BEAT:left",				// Text
+		550.0,				// OffsetX
+		280.0,				// OffsetY
+		0.5,				// LetterSizeX
+		1.0,				// LetterSizeY
+		20.0,				// TextSizeX
+		20.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		4,				// Font
+		16777215,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		255,				// Boxcolor
+		1				// Selectable
+	},
+	{
+		"LD_BEAT:left",				// Text
+		550.0,				// OffsetX
+		300.0,				// OffsetY
+		0.5,				// LetterSizeX
+		1.0,				// LetterSizeY
+		20.0,				// TextSizeX
+		20.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		4,				// Font
+		16777215,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		255,				// Boxcolor
+		1				// Selectable
+	},
+	{
+		"LD_BEAT:left",				// Text
+		550.0,				// OffsetX
+		320.0,				// OffsetY
+		0.5,				// LetterSizeX
+		1.0,				// LetterSizeY
+		20.0,				// TextSizeX
+		20.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		4,				// Font
+		16777215,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		255,				// Boxcolor
+		1				// Selectable
+	},
+	{
+		"LD_BEAT:left",				// Text
+		550.0,				// OffsetX
+		340.0,				// OffsetY
+		0.5,				// LetterSizeX
+		1.0,				// LetterSizeY
+		20.0,				// TextSizeX
+		20.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		4,				// Font
+		16777215,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		255,				// Boxcolor
+		1				// Selectable
+	},
+	{
+		"LD_BEAT:left",				// Text
+		550.0,				// OffsetX
+		360.0,				// OffsetY
+		0.5,				// LetterSizeX
+		1.0,				// LetterSizeY
+		20.0,				// TextSizeX
+		20.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		4,				// Font
+		16777215,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		255,				// Boxcolor
+		1				// Selectable
+	},
+	{
+		"LD_BEAT:left",				// Text
+		550.0,				// OffsetX
+		380.0,				// OffsetY
+		0.5,				// LetterSizeX
+		1.0,				// LetterSizeY
+		20.0,				// TextSizeX
+		20.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		4,				// Font
+		16777215,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		255,				// Boxcolor
+		1				// Selectable
+	},
+	{
+		"LD_BEAT:right",				// Text
+		604.0,				// OffsetX
+		280.0,				// OffsetY
+		0.5,				// LetterSizeX
+		1.0,				// LetterSizeY
+		20.0,				// TextSizeX
+		20.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		4,				// Font
+		16777215,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		255,				// Boxcolor
+		1				// Selectable
+	},
+	{
+		"LD_BEAT:right",				// Text
+		604.0,				// OffsetX
+		300.0,				// OffsetY
+		0.5,				// LetterSizeX
+		1.0,				// LetterSizeY
+		20.0,				// TextSizeX
+		20.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		4,				// Font
+		16777215,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		255,				// Boxcolor
+		1				// Selectable
+	},
+	{
+		"LD_BEAT:right",				// Text
+		604.0,				// OffsetX
+		320.0,				// OffsetY
+		0.5,				// LetterSizeX
+		1.0,				// LetterSizeY
+		20.0,				// TextSizeX
+		20.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		4,				// Font
+		16777215,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		255,				// Boxcolor
+		1				// Selectable
+	},
+	{
+		"LD_BEAT:right",				// Text
+		604.0,				// OffsetX
+		340.0,				// OffsetY
+		0.5,				// LetterSizeX
+		1.0,				// LetterSizeY
+		20.0,				// TextSizeX
+		20.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		4,				// Font
+		16777215,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		255,				// Boxcolor
+		1				// Selectable
+	},
+	{
+		"LD_BEAT:right",				// Text
+		604.0,				// OffsetX
+		360.0,				// OffsetY
+		0.5,				// LetterSizeX
+		1.0,				// LetterSizeY
+		20.0,				// TextSizeX
+		20.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		4,				// Font
+		16777215,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		255,				// Boxcolor
+		1				// Selectable
+	},
+	{
+		"LD_BEAT:right",				// Text
+		604.0,				// OffsetX
+		380.0,				// OffsetY
+		0.5,				// LetterSizeX
+		1.0,				// LetterSizeY
+		20.0,				// TextSizeX
+		20.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		4,				// Font
+		16777215,				// Color
+		0,				// Outline
+		1,				// Proportional
+		0,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		255,				// Boxcolor
+		1				// Selectable
+	},
+	{
+		"Delta Mode",		// Text
+		554.0,				// OffsetX
+		241.0,				// OffsetY
+		0.2,				// LetterSizeX
+		1.0,				// LetterSizeY
+		620.0,				// TextSizeX
+		12.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		2,				// Font
+		1022386431,				// Color
+		0,				// Outline
+		1,				// Proportional
+		1,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		0,				// Boxcolor
+		1				// Selectable
+	},
+	{
+		"Pos Inc",				// Text
+		554.0,				// OffsetX
+		254.0,				// OffsetY
+		0.2,				// LetterSizeX
+		1.0,				// LetterSizeY
+		605.0,				// TextSizeX
+		12.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		2,				// Font
+		1022386431,				// Color
+		0,				// Outline
+		1,				// Proportional
+		1,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		0,				// Boxcolor
+		1				// Selectable
+	},
+	{
+		"Rot Inc",				// Text
+		554.0,				// OffsetX
+		267.0,				// OffsetY
+		0.2,				// LetterSizeX
+		1.0,				// LetterSizeY
+		605.0,				// TextSizeX
+		12.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		2,				// Font
+		1022386431,				// Color
+		0,				// Outline
+		1,				// Proportional
+		1,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		0,				// Boxcolor
+		1				// Selectable
+	}
+};
+
+stock const MovementInfo[][GUIDEF] = {
+	{
+		"X:0.0",				// Text
+		586.0,				// OffsetX
+		286.0,				// OffsetY
+		0.12,				// LetterSizeX
+		0.75,				// LetterSizeY
+		0.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		2,				// Font
+		-1,				// Color
+		1,				// Outline
+		0,				// Proportional
+		2,				// Alignment
+		1,				// Shadow
+		0,				// Usebox
+		255,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"Y:0.0",				// Text
+		586.0,				// OffsetX
+		305.0,				// OffsetY
+		0.12,				// LetterSizeX
+		0.75,				// LetterSizeY
+		0.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		2,				// Font
+		-1,				// Color
+		1,				// Outline
+		0,				// Proportional
+		2,				// Alignment
+		1,				// Shadow
+		0,				// Usebox
+		255,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"Z:0.0",				// Text
+		586.0,				// OffsetX
+		325.0,				// OffsetY
+		0.12,				// LetterSizeX
+		0.75,				// LetterSizeY
+		0.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		2,				// Font
+		-1,				// Color
+		1,				// Outline
+		0,				// Proportional
+		2,				// Alignment
+		1,				// Shadow
+		0,				// Usebox
+		255,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"RX:0.0",				// Text
+		586.0,				// OffsetX
+		345.0,				// OffsetY
+		0.12,				// LetterSizeX
+		0.75,				// LetterSizeY
+		0.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		2,				// Font
+		-1,				// Color
+		1,				// Outline
+		0,				// Proportional
+		2,				// Alignment
+		1,				// Shadow
+		0,				// Usebox
+		255,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"RY:0.0",				// Text
+		586.0,				// OffsetX
+		365.0,				// OffsetY
+		0.12,				// LetterSizeX
+		0.75,				// LetterSizeY
+		0.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		2,				// Font
+		-1,				// Color
+		1,				// Outline
+		0,				// Proportional
+		2,				// Alignment
+		1,				// Shadow
+		0,				// Usebox
+		255,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"RZ:0.0",				// Text
+		586.0,				// OffsetX
+		385.0,				// OffsetY
+		0.12,				// LetterSizeX
+		0.75,				// LetterSizeY
+		0.0,				// TextSizeX
+		0.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		2,				// Font
+		-1,				// Color
+		1,				// Outline
+		0,				// Proportional
+		2,				// Alignment
+		1,				// Shadow
+		0,				// Usebox
+		255,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"Off",				// Text
+		624.0,				// OffsetX
+		241.0,				// OffsetY
+		0.2,				// LetterSizeX
+		1.0,				// LetterSizeY
+		605.0,				// TextSizeX
+		12.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		2,				// Font
+		-16776961,				// Color
+		0,				// Outline
+		1,				// Proportional
+		3,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		0,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"1.0",				// Text
+		624.0,				// OffsetX
+		255.0,				// OffsetY
+		0.2,				// LetterSizeX
+		1.0,				// LetterSizeY
+		605.0,				// TextSizeX
+		12.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		2,				// Font
+		-16776961,				// Color
+		0,				// Outline
+		1,				// Proportional
+		3,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		0,				// Boxcolor
+		0				// Selectable
+	},
+	{
+		"5.0",				// Text
+		624.0,				// OffsetX
+		267.0,				// OffsetY
+		0.2,				// LetterSizeX
+		1.0,				// LetterSizeY
+		605.0,				// TextSizeX
+		12.0,				// TextSizeY
+		-16.0,				// ModelRotX
+		0.0,				// ModelRotY
+		-55.0,				// ModelRotZ
+		1.0,				// ModelRotZoom
+		-1,				// Previewmodel
+		255,				// Background Color
+		2,				// Font
+		-16776961,				// Color
+		0,				// Outline
+		1,				// Proportional
+		3,				// Alignment
+		1,				// Shadow
+		1,				// Usebox
+		0,				// Boxcolor
+		0				// Selectable
+	}
+};
+
+

+ 1936 - 0
Texture-Studio-master/filterscripts/tstudio/menugui.pwn

@@ -0,0 +1,1936 @@
+#include "tstudio\menudata.pwn"
+
+static PlayerGUIMenu:PlayerMainMenu[MAX_PLAYERS];
+static PlayerGUIMenu:PlayerObjectMenu[MAX_PLAYERS];
+static PlayerGUIMenu:PlayerGroupMenu[MAX_PLAYERS];
+static PlayerGUIMenu:PlayerSubMenu[MAX_PLAYERS];
+
+
+// Main menu
+static GUIMenu:MainMenu;
+
+// Object / Group Menu
+static GUIMenu:ObjectMenu;
+static GUIMenu:GroupMenu;
+
+// Object sub menus
+static GUIMenu:SelectionSubMenu;
+static GUIMenu:ObjectSubMenu;
+static GUIMenu:TextureSubMenu;
+
+// Group sub menus
+static GUIMenu:GroupSelSubMenu;
+static GUIMenu:GroupPrefabMenu;
+
+
+// Save all bind elements for custom binding
+static BindElementIDS[8];
+
+// Indexes for object movement text
+static ObjectMovementIndex[15];
+static ObjectGroupMovementIndex[15];
+static CurrObjectPosition[MAX_PLAYERS][9];
+static CurrGroupPosition[MAX_PLAYERS][9];
+
+
+// Movement Increments
+static Float:CurrMovementInc[MAX_PLAYERS];
+static Float:CurrRotationInc[MAX_PLAYERS];
+static Float:CurrMovementGInc[MAX_PLAYERS];
+static Float:CurrRotationGInc[MAX_PLAYERS];
+
+// Turn delta map movements on/off
+static bool:DeltaMapMovement[MAX_PLAYERS];
+
+#define         EXIT_GUI_MENU 		1
+
+////////////////////////////////////////////////////////////////////////////////
+// Main menu defines ///////////////////////////////////////////////////////////
+/*
+								   (0000)
+ 						(0           0           00)
+                    Base Group - Sub Group - Elements
+*/
+////////////////////////////////////////////////////////////////////////////////
+// Map commands
+#define         CLICK_NEW_MAP       	1101
+#define         CLICK_LOAD_MAP          1102
+#define         CLICK_IMPORT_MAP        1103
+#define         CLICK_EXPORT_MAP        1104
+
+////////////////////////////////////////////////////////////////////////////////
+
+// Modes
+#define         CLICK_OBJECT_MODE    	2100
+#define         CLICK_GROUP_MODE        2200
+#define         CLICK_FLY_MODE          2300
+
+// Object Mode 2100 ////////////////////////////////////////////////////////////
+
+
+// Submenu Selection
+
+// Object sub
+#define         CLICK_OBJECTEDIT_MENU   	2101
+#define			CLICK_OBJECTEDIT_COBJECT    2102
+#define			CLICK_OBJECTEDIT_DOBJECT    2103
+#define			CLICK_OBJECTEDIT_CLONE      2104
+#define			CLICK_OBJECTEDIT_GOTO       2105
+#define         CLICK_OBJECTEDIT_EDIT       2106
+#define         CLICK_OBJECTEDIT_OGROUP     2107
+#define			CLICK_OBJECTEDIT_RROT       2109
+
+// Selection sub
+#define			CLICK_SELECTION_MENU    	2111
+#define         CLICK_SELECT_OBJECT     	2112
+#define         CLICK_DESELECT_OBJECT   	2113
+#define         CLICK_SELECT_CLOSEST    	2114
+#define         CLICK_SELECT_CLICK      	2115
+#define         CLICK_SELECT_LIST	      	2116
+#define         CLICK_SELECT_OPROP          2117
+#define         CLICK_SELECT_DCLOSEST   	2118
+
+
+// Texture sub
+#define         CLICK_TEXTURE_MENU		 	2121
+#define			CLICK_TEXTURE_TEXEDIT       2122
+#define         CLICK_TEXTURE_TEXTEDIT      2123
+#define         CLICK_TEXTURE_SHOWINDEX     2124
+#define         CLICK_TEXTURE_HIDEINDEX     2125
+#define         CLICK_TEXTURE_COPY          2126
+#define         CLICK_TEXTURE_PASTE         2127
+#define         CLICK_TEXTURE_CLEAR		    2128
+#define         CLICK_TEXTURE_VIEWER        2129
+#define         CLICK_TEXTURE_THEMEV        2130
+#define         CLICK_TEXTURE_THEMET        2131
+#define         CLICK_TEXTURE_SEARCH        2132
+
+// Search for object
+#define			CLICK_SEARCH_MENU           2141
+#define         CLICK_PIVOT_MENU            2142
+#define         CLICK_TOGPIVOT_MENU         2143
+
+// Movement Menu
+#define			CLICK_MOVEMENT_MENU     	2150
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+// Group Mode 2200
+#define			CLICK_GROUPSEL_MENU         2201
+#define			CLICK_GROUPPF_MENU          2202
+#define         CLICK_MOVEMENTG_MENU        2203
+
+#define         CLICK_PIVOTG_MENU           2142
+#define         CLICK_TOGPIVOTG_MENU        2143
+#define			CLICK_ZEROGROUP_MENU        2144
+#define         CLICK_OBJECTMETRY_MENU      2145
+
+// Group selection sub
+#define         CLICK_GROUP_CSEL            2211
+#define         CLICK_GROUP_GADD            2212
+#define         CLICK_GROUP_GREM            2213
+#define         CLICK_GROUP_CLEAR           2214
+#define         CLICK_GROUP_CLONE           2215
+#define         CLICK_GROUP_GALL            2216
+#define         CLICK_GROUP_SETGROUP        2217
+#define         CLICK_GROUP_SELECTGROUP     2218
+#define         CLICK_GROUP_GDELETE         2219
+#define         CLICK_GROUP_EDIT            2220
+#define         CLICK_GROUP_INFRONT         2221
+
+// Group prefab selection
+#define			CLICK_GROUP_GPREFAB         2231
+#define			CLICK_GROUP_LOADPF          2232
+#define         CLICK_GROUP_LOADZPF         2233
+
+// User binds
+#define         CLICK_BIND_1            	9101
+#define         CLICK_BIND_2            	9102
+#define         CLICK_BIND_3            	9103
+#define         CLICK_BIND_4            	9104
+#define         CLICK_BIND_5            	9105
+#define         CLICK_BIND_6            	9106
+#define         CLICK_BIND_7            	9107
+#define         CLICK_BIND_8            	9108
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+// Initialize all GUIMenus
+public OnFilterScriptInit()
+{
+// Static menu draws ///////////////////////////////////////////////////////
+	MainMenu = CreateGUI("MainMenu");
+
+	// Object Menu / group menu
+	ObjectMenu = CreateGUI("ObjectMenu");
+	GroupMenu = CreateGUI("GroupMenu");
+	
+	// Object sub menu
+	ObjectSubMenu = CreateGUI("SubObjectEdit");
+	SelectionSubMenu = CreateGUI("SubMenuSel");
+	TextureSubMenu = CreateGUI("SubMenuTex");
+
+	// Group sub Menu
+	GroupSelSubMenu = CreateGUI("SubMenuGroupSel");
+	GroupPrefabMenu = CreateGUI("SubMenuGroupPF");
+	
+/////////////////////////////////////////////////////////////////////////////
+
+// Load main menu //////////////////////////////////////////////////////////////
+	LoadGUIMenu(MainMenu,MainMenuText,0.0, 0.0, CLICK_NO_GROUP, E_INDEX);
+
+	LoadGUIMenu(MainMenu,MenuButton,535.0, 135.0, CLICK_NEW_MAP, E_INDEX);
+	GUISetPlayerText(MainMenu, E_INDEX[1], "New Map");
+	GUISetPlayerText(MainMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(MainMenu,MenuButton,535.0, 150.0, CLICK_LOAD_MAP, E_INDEX);
+	GUISetPlayerText(MainMenu, E_INDEX[1], "Load Map");
+	GUISetPlayerText(MainMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(MainMenu,MenuButton,535.0, 165.0, CLICK_IMPORT_MAP, E_INDEX);
+	GUISetPlayerText(MainMenu, E_INDEX[1], "Import Map");
+	GUISetPlayerText(MainMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(MainMenu,MenuButton,535.0, 180.0, CLICK_EXPORT_MAP, E_INDEX);
+	GUISetPlayerText(MainMenu, E_INDEX[1], "Export");
+	GUISetPlayerText(MainMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIElement(MainMenu,MainMenuText[2],0.0,-200.0);
+	
+	LoadGUIMenu(MainMenu,MenuButton,535.0, 210.0, CLICK_OBJECT_MODE, E_INDEX);
+	GUISetPlayerText(MainMenu, E_INDEX[1], "Object Mode");
+	
+	LoadGUIMenu(MainMenu,MenuButton,535.0, 225.0, CLICK_GROUP_MODE, E_INDEX);
+	GUISetPlayerText(MainMenu, E_INDEX[1], "Group Mode");
+
+	LoadGUIMenu(MainMenu,MenuButton,535.0, 240.0, CLICK_FLY_MODE, E_INDEX);
+	GUISetPlayerText(MainMenu, E_INDEX[1], "Fly Mode");
+	GUISetPlayerText(MainMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIElement(MainMenu,MainMenuText[2],0.0,-140.0);
+
+	new Float:inc = 0.0;
+	new line[128];
+
+	for(new i = 0; i < sizeof(BindElementIDS); i++)
+	{
+		format(line, sizeof(line), "User Bind %i", i);
+		LoadGUIMenu(MainMenu,MenuButton,535.0, 270.0+inc, CLICK_BIND_1+i, E_INDEX);
+		GUISetPlayerText(MainMenu, E_INDEX[1], line);
+        GUISetPlayerText(MainMenu, E_INDEX[2], "LD_BEAT:square");
+        
+		BindElementIDS[i] = E_INDEX[1];
+		inc+=15.0;
+	}
+	
+// Load object menu/////////////////////////////////////////////////////////
+
+	LoadGUIMenu(ObjectMenu,MainMenuText,-100.0, 0.0, CLICK_NO_GROUP, E_INDEX);
+	
+	LoadGUIMenu(ObjectMenu,MenuButton,435.0, 135.0, CLICK_OBJECTEDIT_MENU, E_INDEX);
+	GUISetPlayerText(ObjectMenu, E_INDEX[1], "Object Editor");
+
+	LoadGUIMenu(ObjectMenu,MenuButton,435.0, 150.0, CLICK_SELECTION_MENU, E_INDEX);
+	GUISetPlayerText(ObjectMenu, E_INDEX[1], "Selection");
+
+	LoadGUIMenu(ObjectMenu,MenuButton,435.0, 165.0, CLICK_TEXTURE_MENU, E_INDEX);
+	GUISetPlayerText(ObjectMenu, E_INDEX[1], "Textures");
+
+	LoadGUIMenu(ObjectMenu,MenuButton,435.0, 180.0, CLICK_SEARCH_MENU, E_INDEX);
+	GUISetPlayerText(ObjectMenu, E_INDEX[1], "Object Search");
+	GUISetPlayerText(ObjectMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(ObjectMenu,MenuButton,435.0, 195.0, CLICK_PIVOT_MENU, E_INDEX);
+	GUISetPlayerText(ObjectMenu, E_INDEX[1], "Set Pivot");
+	GUISetPlayerText(ObjectMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(ObjectMenu,MenuButton,435.0, 210.0, CLICK_TOGPIVOT_MENU, E_INDEX);
+	GUISetPlayerText(ObjectMenu, E_INDEX[1], "Toggle Pivot");
+	GUISetPlayerText(ObjectMenu, E_INDEX[2], "LD_BEAT:square");
+
+
+ 	// +x:0 +y:1 +z:2 +rx:3 +ry:4 +rz:5 -x:6 -y:7 -z:8 -rx:9 -ry:10 -rz:11
+	LoadGUIMenu(ObjectMenu,MovementMenu,-100.0, 0.0, CLICK_MOVEMENT_MENU, E_INDEX);
+	for(new i = 0; i < 15; i++) { ObjectMovementIndex[i] = E_INDEX[i]; }
+
+
+// Sub-Menus ///////////////////////////////////////////////////////////////////
+
+	// Edit sub
+	LoadGUIMenu(ObjectSubMenu,SubMenuText,-200.0, 0.0, EXIT_GUI_MENU, E_INDEX);
+    GUISetPlayerText(ObjectSubMenu, E_INDEX[6], "Object Editor");
+
+	LoadGUIMenu(ObjectSubMenu,MenuButton,335.0, 135.0, CLICK_OBJECTEDIT_COBJECT, E_INDEX);
+	GUISetPlayerText(ObjectSubMenu, E_INDEX[1], "Create Object");
+	GUISetPlayerText(ObjectSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(ObjectSubMenu,MenuButton,335.0, 150.0, CLICK_OBJECTEDIT_RROT, E_INDEX);
+	GUISetPlayerText(ObjectSubMenu, E_INDEX[1], "Reset Rotation");
+	GUISetPlayerText(ObjectSubMenu, E_INDEX[2], "LD_BEAT:square");
+	
+	LoadGUIMenu(ObjectSubMenu,MenuButton,335.0, 165.0, CLICK_OBJECTEDIT_CLONE, E_INDEX);
+	GUISetPlayerText(ObjectSubMenu, E_INDEX[1], "Clone");
+	GUISetPlayerText(ObjectSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(ObjectSubMenu,MenuButton,335.0, 180.0, CLICK_OBJECTEDIT_GOTO, E_INDEX);
+	GUISetPlayerText(ObjectSubMenu, E_INDEX[1], "Goto");
+	GUISetPlayerText(ObjectSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(ObjectSubMenu,MenuButton,335.0, 195.0, CLICK_OBJECTEDIT_EDIT, E_INDEX);
+	GUISetPlayerText(ObjectSubMenu, E_INDEX[1], "Edit Object");
+	GUISetPlayerText(ObjectSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(ObjectSubMenu,MenuButton,335.0, 210.0, CLICK_OBJECTEDIT_OGROUP, E_INDEX);
+	GUISetPlayerText(ObjectSubMenu, E_INDEX[1], "Assign Group");
+	GUISetPlayerText(ObjectSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(ObjectSubMenu,MenuButton,335.0, 225.0, CLICK_OBJECTEDIT_DOBJECT, E_INDEX);
+	GUISetPlayerText(ObjectSubMenu, E_INDEX[1], "Delete Object");
+	GUISetPlayerText(ObjectSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+
+	// Selection sub
+	LoadGUIMenu(SelectionSubMenu,SubMenuText,-200.0, 15.0, EXIT_GUI_MENU, E_INDEX);
+
+	LoadGUIMenu(SelectionSubMenu,MenuButton,335.0, 150.0, CLICK_SELECT_OBJECT, E_INDEX);
+	GUISetPlayerText(SelectionSubMenu, E_INDEX[1], "Select");
+	GUISetPlayerText(SelectionSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(SelectionSubMenu,MenuButton,335.0, 165.0, CLICK_DESELECT_OBJECT, E_INDEX);
+	GUISetPlayerText(SelectionSubMenu, E_INDEX[1], "Deselect");
+	GUISetPlayerText(SelectionSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(SelectionSubMenu,MenuButton,335.0, 180.0, CLICK_SELECT_CLOSEST, E_INDEX);
+	GUISetPlayerText(SelectionSubMenu, E_INDEX[1], "Select Closest");
+	GUISetPlayerText(SelectionSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(SelectionSubMenu,MenuButton,335.0, 195.0, CLICK_SELECT_CLICK, E_INDEX);
+	GUISetPlayerText(SelectionSubMenu, E_INDEX[1], "Click Select");
+	GUISetPlayerText(SelectionSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(SelectionSubMenu,MenuButton,335.0, 210.0, CLICK_SELECT_LIST, E_INDEX);
+	GUISetPlayerText(SelectionSubMenu, E_INDEX[1], "List Select");
+	GUISetPlayerText(SelectionSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(SelectionSubMenu,MenuButton,335.0, 225.0, CLICK_SELECT_OPROP, E_INDEX);
+	GUISetPlayerText(SelectionSubMenu, E_INDEX[1], "Property Editor");
+	GUISetPlayerText(SelectionSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(SelectionSubMenu,MenuButton,335.0, 240.0, CLICK_SELECT_DCLOSEST, E_INDEX);
+	GUISetPlayerText(SelectionSubMenu, E_INDEX[1], "Delete Closest");
+	GUISetPlayerText(SelectionSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	// Texture Sub
+    LoadGUIMenu(TextureSubMenu,SubMenuTexText,-200.0, 30.0, EXIT_GUI_MENU, E_INDEX);
+    GUISetPlayerText(TextureSubMenu, E_INDEX[6], "Textures");
+    
+   	LoadGUIMenu(TextureSubMenu,MenuButton,335.0, 165.0, CLICK_TEXTURE_TEXEDIT, E_INDEX);
+	GUISetPlayerText(TextureSubMenu, E_INDEX[1], "Texture Editor");
+	GUISetPlayerText(TextureSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+   	LoadGUIMenu(TextureSubMenu,MenuButton,335.0, 180.0, CLICK_TEXTURE_TEXTEDIT, E_INDEX);
+	GUISetPlayerText(TextureSubMenu, E_INDEX[1], "Text Editor");
+	GUISetPlayerText(TextureSubMenu, E_INDEX[2], "LD_BEAT:square");
+	
+   	LoadGUIMenu(TextureSubMenu,MenuButton,335.0, 195.0, CLICK_TEXTURE_SHOWINDEX, E_INDEX);
+	GUISetPlayerText(TextureSubMenu, E_INDEX[1], "Show Indexes");
+	GUISetPlayerText(TextureSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+   	LoadGUIMenu(TextureSubMenu,MenuButton,335.0, 210.0, CLICK_TEXTURE_HIDEINDEX, E_INDEX);
+	GUISetPlayerText(TextureSubMenu, E_INDEX[1], "Hide Indexes");
+	GUISetPlayerText(TextureSubMenu, E_INDEX[2], "LD_BEAT:square");
+	
+   	LoadGUIMenu(TextureSubMenu,MenuButton,335.0, 225.0, CLICK_TEXTURE_COPY, E_INDEX);
+	GUISetPlayerText(TextureSubMenu, E_INDEX[1], "Copy Properties");
+	GUISetPlayerText(TextureSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+   	LoadGUIMenu(TextureSubMenu,MenuButton,335.0, 240.0, CLICK_TEXTURE_CLEAR, E_INDEX);
+	GUISetPlayerText(TextureSubMenu, E_INDEX[1], "Clear Properties");
+	GUISetPlayerText(TextureSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+   	LoadGUIMenu(TextureSubMenu,MenuButton,335.0, 255.0, CLICK_TEXTURE_PASTE, E_INDEX);
+	GUISetPlayerText(TextureSubMenu, E_INDEX[1], "Paste Properties");
+	GUISetPlayerText(TextureSubMenu, E_INDEX[2], "LD_BEAT:square");
+	
+   	LoadGUIMenu(TextureSubMenu,MenuButton,335.0, 270.0, CLICK_TEXTURE_VIEWER, E_INDEX);
+	GUISetPlayerText(TextureSubMenu, E_INDEX[1], "Texture Viewer");
+	GUISetPlayerText(TextureSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+   	LoadGUIMenu(TextureSubMenu,MenuButton,335.0, 285.0, CLICK_TEXTURE_THEMEV, E_INDEX);
+	GUISetPlayerText(TextureSubMenu, E_INDEX[1], "Theme Viewer");
+	GUISetPlayerText(TextureSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+   	LoadGUIMenu(TextureSubMenu,MenuButton,335.0, 300.0, CLICK_TEXTURE_THEMET, E_INDEX);
+	GUISetPlayerText(TextureSubMenu, E_INDEX[1], "Texture Themes");
+	GUISetPlayerText(TextureSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+   	LoadGUIMenu(TextureSubMenu,MenuButton,335.0, 315.0, CLICK_TEXTURE_SEARCH, E_INDEX);
+	GUISetPlayerText(TextureSubMenu, E_INDEX[1], "Texture Search");
+	GUISetPlayerText(TextureSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	// Load Group Menu
+	LoadGUIMenu(GroupMenu,MainMenuText,-100.0, 0.0, CLICK_NO_GROUP, E_INDEX);
+
+	LoadGUIMenu(GroupMenu,MenuButton,435.0, 135.0, CLICK_GROUPSEL_MENU, E_INDEX);
+	GUISetPlayerText(GroupMenu, E_INDEX[1], "Selection");
+	
+	LoadGUIMenu(GroupMenu,MenuButton,435.0, 150.0, CLICK_GROUPPF_MENU, E_INDEX);
+	GUISetPlayerText(GroupMenu, E_INDEX[1], "Prefabs");
+
+	LoadGUIMenu(GroupMenu,MenuButton,435.0, 165.0, CLICK_PIVOTG_MENU, E_INDEX);
+	GUISetPlayerText(GroupMenu, E_INDEX[1], "Set Pivot");
+	GUISetPlayerText(GroupMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(GroupMenu,MenuButton,435.0, 180.0, CLICK_TOGPIVOTG_MENU, E_INDEX);
+	GUISetPlayerText(GroupMenu, E_INDEX[1], "Toggle Pivot");
+	GUISetPlayerText(GroupMenu, E_INDEX[2], "LD_BEAT:square");
+	
+	LoadGUIMenu(GroupMenu,MenuButton,435.0, 195.0, CLICK_ZEROGROUP_MENU, E_INDEX);
+	GUISetPlayerText(GroupMenu, E_INDEX[1], "Group to 0,0,0");
+	GUISetPlayerText(GroupMenu, E_INDEX[2], "LD_BEAT:square");
+	
+	LoadGUIMenu(GroupMenu,MenuButton,435.0, 195.0, CLICK_OBJECTMETRY_MENU, E_INDEX);
+	GUISetPlayerText(GroupMenu, E_INDEX[1], "Objectmetry");
+	GUISetPlayerText(GroupMenu, E_INDEX[2], "LD_BEAT:square");
+
+
+	LoadGUIMenu(GroupMenu,MovementMenu,-100.0, 0.0, CLICK_MOVEMENTG_MENU, E_INDEX);
+	GUISetPlayerText(GroupMenu, E_INDEX[12], "_");
+	for(new i = 0; i < 15; i++) { ObjectGroupMovementIndex[i] = E_INDEX[i]; }
+
+	
+	// Selection sub
+	LoadGUIMenu(GroupSelSubMenu,SubMenuTexText,-200.0, 0.0, EXIT_GUI_MENU, E_INDEX);
+
+	LoadGUIMenu(GroupSelSubMenu,MenuButton,335.0, 135.0, CLICK_GROUP_CSEL, E_INDEX);
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[1], "Click Select");
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(GroupSelSubMenu,MenuButton,335.0, 150.0, CLICK_GROUP_GADD, E_INDEX);
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[1], "Group Add");
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(GroupSelSubMenu,MenuButton,335.0, 165.0, CLICK_GROUP_GREM, E_INDEX);
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[1], "Group Remove");
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(GroupSelSubMenu,MenuButton,335.0, 180.0, CLICK_GROUP_CLEAR, E_INDEX);
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[1], "Group Clear");
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(GroupSelSubMenu,MenuButton,335.0, 195.0, CLICK_GROUP_CLONE, E_INDEX);
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[1], "Group Clone");
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(GroupSelSubMenu,MenuButton,335.0, 210.0, CLICK_GROUP_GALL, E_INDEX);
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[1], "Group All");
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(GroupSelSubMenu,MenuButton,335.0, 225.0, CLICK_GROUP_SETGROUP, E_INDEX);
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[1], "Set Group");
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(GroupSelSubMenu,MenuButton,335.0, 240.0, CLICK_GROUP_SELECTGROUP, E_INDEX);
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[1], "Select Group");
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(GroupSelSubMenu,MenuButton,335.0, 255.0, CLICK_GROUP_EDIT, E_INDEX);
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[1], "Group Edit");
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[2], "LD_BEAT:square");
+	
+	LoadGUIMenu(GroupSelSubMenu,MenuButton,335.0, 270.0, CLICK_GROUP_INFRONT, E_INDEX);
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[1], "Group Infront");
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(GroupSelSubMenu,MenuButton,335.0, 285.0, CLICK_GROUP_GDELETE, E_INDEX);
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[1], "Group Delete");
+	GUISetPlayerText(GroupSelSubMenu, E_INDEX[2], "LD_BEAT:square");
+	
+
+	// Prefab sub
+	LoadGUIMenu(GroupPrefabMenu,SubMenuText,-200.0, 15.0, EXIT_GUI_MENU, E_INDEX);
+	GUISetPlayerText(GroupPrefabMenu, E_INDEX[6], "Prefabs");
+
+	LoadGUIMenu(GroupPrefabMenu,MenuButton,335.0, 150.0, CLICK_GROUP_GPREFAB, E_INDEX);
+	GUISetPlayerText(GroupPrefabMenu, E_INDEX[1], "Prefab Group");
+	GUISetPlayerText(GroupPrefabMenu, E_INDEX[2], "LD_BEAT:square");
+	
+	LoadGUIMenu(GroupPrefabMenu,MenuButton,335.0, 165.0, CLICK_GROUP_LOADPF, E_INDEX);
+	GUISetPlayerText(GroupPrefabMenu, E_INDEX[1], "Load Prefab");
+	GUISetPlayerText(GroupPrefabMenu, E_INDEX[2], "LD_BEAT:square");
+
+	LoadGUIMenu(GroupPrefabMenu,MenuButton,335.0, 180.0, CLICK_GROUP_LOADZPF, E_INDEX);
+	GUISetPlayerText(GroupPrefabMenu, E_INDEX[1], "Set Load Z");
+	GUISetPlayerText(GroupPrefabMenu, E_INDEX[2], "LD_BEAT:square");
+
+	////////////////////////////////////////////////////////////////////////////
+
+	foreach(new i : Player)
+	{
+	    CreatePlayerMenus(i);
+	}
+
+	#if defined MG_OnFilterScriptInit
+		MG_OnFilterScriptInit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptInit
+	#undef OnFilterScriptInit
+#else
+	#define _ALS_OnFilterScriptInit
+#endif
+#define OnFilterScriptInit MG_OnFilterScriptInit
+#if defined MG_OnFilterScriptInit
+	forward MG_OnFilterScriptInit();
+#endif
+
+
+public OnPlayerConnect(playerid)
+{
+	CreatePlayerMenus(playerid);
+
+	#if defined MG_OnPlayerConnect
+		MG_OnPlayerConnect(playerid);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerConnect
+	#undef OnPlayerConnect
+#else
+	#define _ALS_OnPlayerConnect
+#endif
+#define OnPlayerConnect MG_OnPlayerConnect
+#if defined MG_OnPlayerConnect
+	forward MG_OnPlayerConnect(playerid);
+#endif
+
+static CreatePlayerMenus(playerid)
+{
+	// Set selection
+	SetPlayerGUISelectionColor(playerid, 0x00FF00FF);
+	
+	// Main menu
+	PlayerMainMenu[playerid] = PlayerCreateGUI(playerid, "MainMenu");
+    PlayerLoadGUIMenu(playerid,PlayerMainMenu[playerid], MainMenuPlayerText, 0.0, 0.0, EXIT_GUI_MENU, E_PLAYERINDEX);
+
+	// Bind menus
+	PlayerBindGUITextDraw(playerid, PlayerMainMenu[playerid], MainMenu);
+	
+	// Object menu
+	PlayerObjectMenu[playerid] = PlayerCreateGUI(playerid, "ObjectMenu");
+    PlayerLoadGUIMenu(playerid,PlayerObjectMenu[playerid], MainMenuPlayerText,-100.0, 0.0, EXIT_GUI_MENU, E_PLAYERINDEX);
+    PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], E_PLAYERINDEX[0], "Object Menu");
+    PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], E_PLAYERINDEX[2], "_");
+    PlayerGUISetSelectable(playerid, PlayerObjectMenu[playerid], E_PLAYERINDEX[2], 0);
+
+    PlayerLoadGUIMenu(playerid,PlayerObjectMenu[playerid], MovementInfo,-100.0, 0.0, EXIT_GUI_MENU, E_PLAYERINDEX);
+	for(new i = 0; i < 8; i++) { CurrObjectPosition[playerid][i] = E_PLAYERINDEX[i]; }
+    PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], E_PLAYERINDEX[6], "Off");
+    PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], E_PLAYERINDEX[7], "1.0");
+    PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], E_PLAYERINDEX[8], "5.0");
+
+   	// Group Menu
+   	PlayerGroupMenu[playerid] = PlayerCreateGUI(playerid, "GroupMenu");
+    PlayerLoadGUIMenu(playerid,PlayerGroupMenu[playerid], MainMenuPlayerText,-100.0, 0.0, EXIT_GUI_MENU, E_PLAYERINDEX);
+    PlayerGUISetPlayerText(playerid, PlayerGroupMenu[playerid], E_PLAYERINDEX[0], "Group Menu");
+    PlayerGUISetPlayerText(playerid, PlayerGroupMenu[playerid], E_PLAYERINDEX[2], "_");
+    PlayerGUISetSelectable(playerid, PlayerGroupMenu[playerid], E_PLAYERINDEX[2], 0);
+
+    PlayerLoadGUIMenu(playerid,PlayerGroupMenu[playerid], MovementInfo,-100.0, 0.0, EXIT_GUI_MENU, E_PLAYERINDEX);
+	for(new i = 0; i < 8; i++) { CurrGroupPosition[playerid][i] = E_PLAYERINDEX[i]; }
+	PlayerGUISetPlayerText(playerid, PlayerGroupMenu[playerid], E_PLAYERINDEX[3], "------");
+	PlayerGUISetPlayerText(playerid, PlayerGroupMenu[playerid], E_PLAYERINDEX[4], "------");
+	PlayerGUISetPlayerText(playerid, PlayerGroupMenu[playerid], E_PLAYERINDEX[5], "------");
+    PlayerGUISetPlayerText(playerid, PlayerGroupMenu[playerid], E_PLAYERINDEX[6], "_");
+    PlayerGUISetPlayerText(playerid, PlayerGroupMenu[playerid], E_PLAYERINDEX[7], "1.0");
+    PlayerGUISetPlayerText(playerid, PlayerGroupMenu[playerid], E_PLAYERINDEX[8], "5.0");
+
+
+	// Bind menus
+	PlayerBindGUITextDraw(playerid, PlayerObjectMenu[playerid], ObjectMenu);
+	PlayerBindGUITextDraw(playerid, PlayerGroupMenu[playerid], GroupMenu);
+
+	// Sub-menus forces all sub menus to close by closing submenu
+	PlayerSubMenu[playerid] = PlayerCreateGUI(playerid, "SubMenu");
+
+	// Submenu binding
+	PlayerBindGUITextDraw(playerid, PlayerSubMenu[playerid], SelectionSubMenu);
+	PlayerBindGUITextDraw(playerid, PlayerSubMenu[playerid], ObjectSubMenu);
+	PlayerBindGUITextDraw(playerid, PlayerSubMenu[playerid], TextureSubMenu);
+	
+	// Group binding
+	PlayerBindGUITextDraw(playerid, PlayerSubMenu[playerid], GroupSelSubMenu);
+	PlayerBindGUITextDraw(playerid, PlayerSubMenu[playerid], GroupPrefabMenu);
+	
+
+	// Default rotation / movement
+	CurrMovementInc[playerid] = 1.0;
+   	CurrRotationInc[playerid] = 5.0;
+	CurrMovementGInc[playerid] = 1.0;
+   	CurrRotationGInc[playerid] = 5.0;
+
+	// Default delta off
+   	DeltaMapMovement[playerid] = false;
+   	
+
+
+	return 1;
+}
+
+OnPlayerKeyStateMenuChange(playerid, newkeys, oldkeys)
+{
+	#pragma unused oldkeys
+	if( newkeys & KEY_NO || (IsFlyMode(playerid) && newkeys & KEY_JUMP) )
+	{
+	    if(!EditingMode[playerid])
+	    {
+            PlayerShowGUIMenu(playerid, PlayerMainMenu[playerid], true);
+            PlayerSelectGUITextDraw(playerid);
+			return 1;
+		}
+	}
+	return 0;
+}
+
+
+HideGUIInterface(playerid)
+{
+    PlayerHideGUIMenu(playerid, PlayerSubMenu[playerid]);
+	PlayerHideGUIMenu(playerid, PlayerObjectMenu[playerid]);
+	PlayerHideGUIMenu(playerid, PlayerMainMenu[playerid]);
+	PlayerCancelSelectGUITextDraw(playerid);
+	return 1;
+}
+
+// Main Menu ///////////////////////////////////////////////////////////////////
+OnPlayerGUIClick:MainMenu(playerid, group, gindex, pindex)
+{
+	// Exit
+	if(group == EXIT_GUI_MENU)
+	{
+		if(pindex == 1) HideGUIInterface(playerid);
+		else if(pindex == 2) PlayerCancelSelectGUITextDraw(playerid, true);
+	}
+	return 1;
+}
+
+OnGUIClick:MainMenu(playerid, group, gindex, pindex)
+{
+	// Call newmap function
+	switch(group)
+	{
+		// Map commands
+	    case CLICK_NEW_MAP: { BroadcastCommand(playerid, "/newmap"); }
+	    case CLICK_LOAD_MAP: { BroadcastCommand(playerid, "/loadmap"); }
+	    case CLICK_IMPORT_MAP: { BroadcastCommand(playerid, "/importmap"); }
+	    case CLICK_EXPORT_MAP: { BroadcastCommand(playerid, "/export"); }
+
+		// Mode commands
+	    case CLICK_OBJECT_MODE:
+		{
+			MapOpenCheck();
+			PlayerHideGUIMenu(playerid, PlayerSubMenu[playerid]);
+			PlayerHideGUIMenu(playerid, PlayerGroupMenu[playerid]);
+			PlayerShowGUIMenu(playerid, PlayerObjectMenu[playerid], true);
+		}
+	    case CLICK_GROUP_MODE:
+		{
+			MapOpenCheck();
+			PlayerHideGUIMenu(playerid, PlayerSubMenu[playerid]);
+			PlayerHideGUIMenu(playerid, PlayerObjectMenu[playerid]);
+			PlayerShowGUIMenu(playerid, PlayerGroupMenu[playerid], true);
+		}
+	    case CLICK_FLY_MODE: { BroadcastCommand(playerid, "/flymode"); }
+	    case CLICK_BIND_1..CLICK_BIND_8:
+	    {
+	        new line[128];
+	        format(line, sizeof(line), "/runbind %i", group - CLICK_BIND_1);
+	        BroadcastCommand(playerid, line);
+	    }
+	}
+	return 1;
+}
+
+
+OnPlayerGUIClose:MainMenu(playerid, group, gindex)
+{
+	// Always close the submenu
+    PlayerHideGUIMenu(playerid, PlayerObjectMenu[playerid]);
+	return 1;
+}
+
+//Object Menu///////////////////////////////////////////////////////////////////
+OnPlayerGUIClick:ObjectMenu(playerid, group, gindex, pindex)
+{
+	// Exit
+	if(group == EXIT_GUI_MENU)
+	{
+		PlayerHideGUIMenu(playerid, PlayerObjectMenu[playerid]);
+		PlayerHideAllGUIBindMenu(playerid, PlayerSubMenu[playerid]);
+	}
+	return 1;
+}
+
+OnGUIClick:ObjectMenu(playerid, group, gindex, pindex)
+{
+	// Call newmap function
+	switch(group)
+	{
+		// Edit objects
+		case CLICK_OBJECTEDIT_MENU:
+		{
+			// Open the sub-menu controller (Don't show binds)
+			PlayerShowGUIMenu(playerid, PlayerSubMenu[playerid], true);
+
+			// Hide all menus
+			PlayerHideAllGUIBindMenu(playerid, PlayerSubMenu[playerid]);
+
+			// Show the Sub object menu
+            ShowGUIMenu(playerid, ObjectSubMenu);
+		}
+
+		// Map commands
+	    case CLICK_SELECTION_MENU:
+		{
+			// Open the sub-menu controller (Don't show binds)
+			PlayerShowGUIMenu(playerid, PlayerSubMenu[playerid], true);
+
+			// Hide all menus
+			PlayerHideAllGUIBindMenu(playerid, PlayerSubMenu[playerid]);
+
+			// Show the Sub selection menu
+            ShowGUIMenu(playerid, SelectionSubMenu);
+		}
+		
+		// Texture commands
+		case CLICK_TEXTURE_MENU:
+		{
+			// Open the sub-menu controller (Don't show binds)
+			PlayerShowGUIMenu(playerid, PlayerSubMenu[playerid], true);
+
+			// Hide all menus
+			PlayerHideAllGUIBindMenu(playerid, PlayerSubMenu[playerid]);
+
+			// Show the Sub texture menu
+            ShowGUIMenu(playerid, TextureSubMenu);
+		}
+		// Search object
+		case CLICK_SEARCH_MENU:
+		{
+			inline SearchObject(pid, dialogid, response, listitem, string:text[])
+			{
+				#pragma unused listitem, dialogid, pid, text
+				if(response)
+				{
+					new line[128];
+					format(line, sizeof(line), "/osearch %s", text);
+					PlayerSetGUIPaused(playerid, true);
+					BroadcastCommand(playerid, line);
+				}
+			}
+	        Dialog_ShowCallback(playerid, using inline SearchObject, DIALOG_STYLE_INPUT, "Texture Studio", "Input object search string", "Ok", "Cancel");
+		}
+		
+		case CLICK_PIVOT_MENU:
+		{
+			// Force cancel
+			PlayerCancelSelectGUITextDraw(playerid, true);
+
+			// csel mode (We need to delay to use this mode effectively)
+			SetTimerEx("DelayEditPivot", 1000, false, "i", playerid);
+		}
+		case CLICK_TOGPIVOT_MENU: { BroadcastCommand(playerid, "/togpivot"); }
+		
+		case CLICK_MOVEMENT_MENU:
+		{
+			if(CurrObject[playerid] == -1) return 1;
+            // +x:0 +y:1 +z:2 +rx:3 +ry:4 +rz:5 -x:6 -y:7 -z:8 -rx:9 -ry:10 -rz:11
+			new line[128];
+			if(ObjectMovementIndex[0] == pindex)
+			{
+				if(ObjectData[CurrObject[playerid]][oAttachedVehicle] == -1)
+				{
+					if(DeltaMapMovement[playerid]) format(line, sizeof(line), "/dox %0.3f", CurrMovementInc[playerid]);
+					else format(line, sizeof(line), "/ox %0.3f", CurrMovementInc[playerid]);
+				}
+				else format(line, sizeof(line), "/avox %0.3f", CurrMovementInc[playerid]);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectMovementIndex[1] == pindex)
+			{
+				if(ObjectData[CurrObject[playerid]][oAttachedVehicle] == -1)
+				{
+					if(DeltaMapMovement[playerid]) format(line, sizeof(line), "/doy %0.3f", CurrMovementInc[playerid]);
+					else format(line, sizeof(line), "/oy %0.3f", CurrMovementInc[playerid]);
+				}
+                else format(line, sizeof(line), "/avoy %0.3f", CurrMovementInc[playerid]);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectMovementIndex[2] == pindex)
+			{
+				if(ObjectData[CurrObject[playerid]][oAttachedVehicle] == -1)
+				{
+					if(DeltaMapMovement[playerid]) format(line, sizeof(line), "/doz %0.3f", CurrMovementInc[playerid]);
+					else format(line, sizeof(line), "/oz %0.3f", CurrMovementInc[playerid]);
+				}
+				else format(line, sizeof(line), "/avoz %0.3f", CurrMovementInc[playerid]);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectMovementIndex[3] == pindex)
+			{
+				if(ObjectData[CurrObject[playerid]][oAttachedVehicle] == -1)
+				{
+					if(DeltaMapMovement[playerid]) format(line, sizeof(line), "/drx %0.3f", CurrRotationInc[playerid]);
+					else format(line, sizeof(line), "/rx %0.3f", CurrRotationInc[playerid]);
+				}
+				else format(line, sizeof(line), "/avrx %0.3f", CurrRotationInc[playerid]);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectMovementIndex[4] == pindex)
+			{
+				if(ObjectData[CurrObject[playerid]][oAttachedVehicle] == -1)
+				{
+					if(DeltaMapMovement[playerid]) format(line, sizeof(line), "/dry %0.3f", CurrRotationInc[playerid]);
+					else format(line, sizeof(line), "/ry %0.3f", CurrRotationInc[playerid]);
+				}
+				else format(line, sizeof(line), "/avry %0.3f", CurrRotationInc[playerid]);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectMovementIndex[5] == pindex)
+			{
+				if(ObjectData[CurrObject[playerid]][oAttachedVehicle] == -1)
+				{
+					if(DeltaMapMovement[playerid]) format(line, sizeof(line), "/drz %0.3f", CurrRotationInc[playerid]);
+					else format(line, sizeof(line), "/rz %0.3f", CurrRotationInc[playerid]);
+				}
+				else format(line, sizeof(line), "/avrz %0.3f", CurrRotationInc[playerid]);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectMovementIndex[6] == pindex)
+			{
+				if(ObjectData[CurrObject[playerid]][oAttachedVehicle] == -1)
+				{
+					if(DeltaMapMovement[playerid]) format(line, sizeof(line), "/dox %0.3f", CurrMovementInc[playerid]*-1);
+					else format(line, sizeof(line), "/ox %0.3f", CurrMovementInc[playerid]*-1);
+				}
+				else format(line, sizeof(line), "/avox %0.3f", CurrMovementInc[playerid]*-1);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectMovementIndex[7] == pindex)
+			{
+				if(ObjectData[CurrObject[playerid]][oAttachedVehicle] == -1)
+				{
+					if(DeltaMapMovement[playerid]) format(line, sizeof(line), "/doy %0.3f", CurrMovementInc[playerid]*-1);
+					else format(line, sizeof(line), "/oy %0.3f", CurrMovementInc[playerid]*-1);
+				}
+				else format(line, sizeof(line), "/avoy %0.3f", CurrMovementInc[playerid]*-1);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectMovementIndex[8] == pindex)
+			{
+				if(ObjectData[CurrObject[playerid]][oAttachedVehicle] == -1)
+				{
+					if(DeltaMapMovement[playerid]) format(line, sizeof(line), "/doz %0.3f", CurrMovementInc[playerid]*-1);
+					else format(line, sizeof(line), "/oz %0.3f", CurrMovementInc[playerid]*-1);
+				}
+				else format(line, sizeof(line), "/avoz %0.3f", CurrMovementInc[playerid]*-1);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectMovementIndex[9] == pindex)
+			{
+				if(ObjectData[CurrObject[playerid]][oAttachedVehicle] == -1)
+				{
+					if(DeltaMapMovement[playerid]) format(line, sizeof(line), "/drx %0.3f", CurrRotationInc[playerid]*-1);
+					else format(line, sizeof(line), "/rx %0.3f", CurrRotationInc[playerid]*-1);
+				}
+				else format(line, sizeof(line), "/avrx %0.3f", CurrRotationInc[playerid]*-1);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectMovementIndex[10] == pindex)
+			{
+				if(ObjectData[CurrObject[playerid]][oAttachedVehicle] == -1)
+				{
+					if(DeltaMapMovement[playerid]) format(line, sizeof(line), "/dry %0.3f", CurrRotationInc[playerid]*-1);
+					else format(line, sizeof(line), "/ry %0.3f", CurrRotationInc[playerid]*-1);
+				}
+				else format(line, sizeof(line), "/avry %0.3f", CurrRotationInc[playerid]*-1);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectMovementIndex[11] == pindex)
+			{
+				if(ObjectData[CurrObject[playerid]][oAttachedVehicle] == -1)
+				{
+					if(DeltaMapMovement[playerid]) format(line, sizeof(line), "/drz %0.3f", CurrRotationInc[playerid]*-1);
+					else format(line, sizeof(line), "/rz %0.3f", CurrRotationInc[playerid]*-1);
+				}
+				else format(line, sizeof(line), "/avrz %0.3f", CurrRotationInc[playerid]*-1);
+				BroadcastCommand(playerid, line);
+			}
+			// Delta mode on/off
+			else if(ObjectMovementIndex[12] == pindex)
+			{
+				if(DeltaMapMovement[playerid])
+				{
+				    DeltaMapMovement[playerid] = false;
+				    PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], E_PLAYERINDEX[6], "Off");
+				}
+				else
+				{
+				    DeltaMapMovement[playerid] = true;
+				    PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], E_PLAYERINDEX[6], "On");
+				}
+			}
+			// Set object position
+			else if(ObjectMovementIndex[13] == pindex)
+			{
+				inline SetMovementInc(pid, dialogid, response, listitem, string:text[])
+				{
+					#pragma unused listitem, dialogid, pid, text
+					if(response)
+					{
+						new Float:tmp;
+					    if(sscanf(text, "f", tmp)) return SendClientMessage(playerid, STEALTH_YELLOW, "You must supply a increment value!");
+					    if(tmp < -100.0 || tmp > 100.0) return SendClientMessage(playerid, STEALTH_YELLOW, "Out of range increment! <-100.0 - 100.0>");
+					    CurrMovementInc[playerid] = tmp;
+					    format(line, sizeof(line), "%0.3f", tmp);
+					    PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], E_PLAYERINDEX[7], line);
+					}
+				}
+                Dialog_ShowCallback(playerid, using inline SetMovementInc, DIALOG_STYLE_INPUT, "Texture Studio", "Input object movement inc", "Ok", "Cancel");
+			}
+
+			else if(ObjectMovementIndex[14] == pindex)
+			{
+				inline SetMovementRot(pid, dialogid, response, listitem, string:text[])
+				{
+					#pragma unused listitem, dialogid, pid, text
+					if(response)
+					{
+						new Float:tmp;
+					    if(sscanf(text, "f", tmp)) return SendClientMessage(playerid, STEALTH_YELLOW, "You must supply a increment value!");
+					    if(tmp < -100.0 || tmp > 100.0) return SendClientMessage(playerid, STEALTH_YELLOW, "Out of range increment! <-100.0 - 100.0>");
+					    CurrRotationInc[playerid] = tmp;
+					    format(line, sizeof(line), "%0.3f", tmp);
+					    PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], E_PLAYERINDEX[8], line);
+					}
+				}
+                Dialog_ShowCallback(playerid, using inline SetMovementRot, DIALOG_STYLE_INPUT, "Texture Studio", "Input object rotation inc", "Ok", "Cancel");
+			}
+		}
+	}
+	return 1;
+}
+
+OnPlayerGUIClose:ObjectMenu(playerid, group, gindex)
+{
+
+	return 1;
+}
+
+//Sub-menus//////////////////////////////////////////////////////////////////////
+
+	// Object menu
+OnGUIClick:SubObjectEdit(playerid, group, gindex, pindex)
+{
+	// Exit
+	switch(group)
+	{
+	    case EXIT_GUI_MENU: { PlayerHideGUIMenu(playerid, PlayerSubMenu[playerid]); }
+	    case CLICK_OBJECTEDIT_COBJECT:
+		{
+			inline ChooseObject(pid, dialogid, response, listitem, string:text[])
+			{
+				#pragma unused listitem, dialogid, pid, text
+				new line[128];
+				format(line, sizeof(line), "/cobject %s", text);
+				if(response) { BroadcastCommand(playerid, line); }
+			}
+			Dialog_ShowCallback(playerid, using inline ChooseObject, DIALOG_STYLE_INPUT, "Texture Studio", "Input objectid to create", "Ok", "Cancel");
+		}
+	    case CLICK_OBJECTEDIT_RROT: { BroadcastCommand(playerid, "/rotreset"); }
+	    case CLICK_OBJECTEDIT_DOBJECT: { BroadcastCommand(playerid, "/dobject"); }
+	    case CLICK_OBJECTEDIT_CLONE: { BroadcastCommand(playerid, "/clone"); }
+	    case CLICK_OBJECTEDIT_GOTO: { BroadcastCommand(playerid, "/ogoto"); }
+	    case CLICK_OBJECTEDIT_EDIT:
+		{
+			// Force cancel
+			PlayerCancelSelectGUITextDraw(playerid, true);
+
+			// csel mode (We need to delay to use this mode effectively)
+			SetTimerEx("DelayEditObject", 1000, false, "i", playerid);
+		}
+		case CLICK_OBJECTEDIT_OGROUP:
+		{
+			inline GroupAssign(pid, dialogid, response, listitem, string:text[])
+			{
+				#pragma unused listitem, dialogid, pid, text
+				new line[128];
+				format(line, sizeof(line), "/ogroup %s", text);
+				if(response) { BroadcastCommand(playerid, line); }
+			}
+			Dialog_ShowCallback(playerid, using inline GroupAssign, DIALOG_STYLE_INPUT, "Texture Studio", "Input group assignment for object", "Ok", "Cancel");
+		}
+	}
+
+	return 1;
+}
+
+// Selection menu
+OnGUIClick:SubMenuSel(playerid, group, gindex, pindex)
+{
+	// Exit
+	switch(group)
+	{
+	    case EXIT_GUI_MENU: { PlayerHideGUIMenu(playerid, PlayerSubMenu[playerid]); }
+	    case CLICK_SELECT_OBJECT:
+		{
+			inline ChooseSelection(pid, dialogid, response, listitem, string:text[])
+			{
+				#pragma unused listitem, dialogid, pid, text
+				new line[128];
+				format(line, sizeof(line), "/sel %s", text);
+				if(response) { BroadcastCommand(playerid, line); }
+			}
+			Dialog_ShowCallback(playerid, using inline ChooseSelection, DIALOG_STYLE_INPUT, "Texture Studio", "Input object selection ID", "Ok", "Cancel");
+		}
+		case CLICK_DESELECT_OBJECT: { BroadcastCommand(playerid, "/dsel"); }
+		case CLICK_SELECT_CLOSEST: { BroadcastCommand(playerid, "/scsel"); }
+		case CLICK_SELECT_CLICK:
+		{
+			// Force cancel
+			PlayerCancelSelectGUITextDraw(playerid, true);
+
+			// csel mode (We need to delay to use this mode effectively)
+			SetTimerEx("DelayCSel", 1000, false, "i", playerid);
+		}
+		case CLICK_SELECT_LIST:
+		{
+			// Force cancel
+			PlayerCancelSelectGUITextDraw(playerid, true);
+
+			// csel mode (We need to delay to use this mode effectively)
+			SetTimerEx("DelayLSel", 1000, false, "i", playerid);
+		}
+		
+		case CLICK_SELECT_OPROP: { BroadcastCommand(playerid, "/oprop"); }
+		
+		case CLICK_SELECT_DCLOSEST: { BroadcastCommand(playerid, "/dcsel"); }
+	}
+	return 1;
+}
+
+
+
+// Texture menu
+OnGUIClick:SubMenuTex(playerid, group, gindex, pindex)
+{
+	// Exit
+	switch(group)
+	{
+	    case EXIT_GUI_MENU: { PlayerHideGUIMenu(playerid, PlayerSubMenu[playerid]); }
+		case CLICK_TEXTURE_TEXEDIT:
+		{
+			// Gets messy if we leave the submenu open
+			PlayerHideAllGUIBindMenu(playerid, PlayerSubMenu[playerid]);
+
+			// This menu will always be the first in open stack
+			GUIHideFirstInStack(playerid);
+			BroadcastCommand(playerid, "/stexture");
+		}
+		case CLICK_TEXTURE_TEXTEDIT:
+		{
+			PlayerHideAllGUIBindMenu(playerid, PlayerSubMenu[playerid]);
+			GUIHideFirstInStack(playerid);
+			BroadcastCommand(playerid, "/text");
+		}
+		case CLICK_TEXTURE_SHOWINDEX: { BroadcastCommand(playerid, "/sindex"); }
+		case CLICK_TEXTURE_HIDEINDEX: { BroadcastCommand(playerid, "/rindex"); }
+		case CLICK_TEXTURE_COPY: { BroadcastCommand(playerid, "/copy"); }
+		case CLICK_TEXTURE_PASTE: { BroadcastCommand(playerid, "/paste"); }
+		case CLICK_TEXTURE_CLEAR: { BroadcastCommand(playerid, "/clear"); }
+		case CLICK_TEXTURE_VIEWER: { BroadcastCommand(playerid, "/mtextures"); }
+		case CLICK_TEXTURE_THEMEV: { BroadcastCommand(playerid, "/ttextures"); }
+		case CLICK_TEXTURE_THEMET:
+		{
+			inline ThemeMenu(pid, dialogid, response, listitem, string:text[])
+			{
+				#pragma unused listitem, dialogid, pid, text
+		        if(response)
+		        {
+		            switch(listitem)
+		            {
+		                case 0: { BroadcastCommand(playerid, "/savetheme"); }
+		                case 1: { BroadcastCommand(playerid, "/loadtheme"); }
+		                case 2: { BroadcastCommand(playerid, "/deletetheme"); }
+		            }
+		        }
+			}
+			Dialog_ShowCallback(playerid, using inline ThemeMenu, DIALOG_STYLE_LIST, "Texture Studio", "Save Theme\nLoad Theme\nDelete Theme", "Ok", "Cancel");
+
+		}
+		case CLICK_TEXTURE_SEARCH:
+		{
+			inline TextureSearch(pid, dialogid, response, listitem, string:text[])
+			{
+				#pragma unused listitem, dialogid, pid, text
+				new line[128];
+				format(line, sizeof(line), "/tsearch %s", text);
+				if(response) { BroadcastCommand(playerid, line); }
+			}
+			Dialog_ShowCallback(playerid, using inline TextureSearch, DIALOG_STYLE_INPUT, "Texture Studio", "Search for a texture name", "Ok", "Cancel");
+		}
+	}
+	return 1;
+}
+
+
+//Group Menu///////////////////////////////////////////////////////////////////
+OnPlayerGUIClick:GroupMenu(playerid, group, gindex, pindex)
+{
+	// Exit
+	if(group == EXIT_GUI_MENU)
+	{
+		PlayerHideGUIMenu(playerid, PlayerGroupMenu[playerid]);
+		PlayerHideAllGUIBindMenu(playerid, PlayerSubMenu[playerid]);
+	}
+	return 1;
+}
+
+OnGUIClick:GroupMenu(playerid, group, gindex, pindex)
+{
+	switch(group)
+	{
+		case CLICK_GROUPSEL_MENU:
+		{
+			// Open the sub-menu controller (Don't show binds)
+			PlayerShowGUIMenu(playerid, PlayerSubMenu[playerid], true);
+
+			// Hide all menus
+			PlayerHideAllGUIBindMenu(playerid, PlayerSubMenu[playerid]);
+
+			// Show the Sub object menu
+            ShowGUIMenu(playerid, GroupSelSubMenu);
+		}
+
+		// Edit objects
+		case CLICK_GROUPPF_MENU:
+		{
+			// Open the sub-menu controller (Don't show binds)
+			PlayerShowGUIMenu(playerid, PlayerSubMenu[playerid], true);
+
+			// Hide all menus
+			PlayerHideAllGUIBindMenu(playerid, PlayerSubMenu[playerid]);
+
+			// Show the Sub object menu
+            ShowGUIMenu(playerid, GroupPrefabMenu);
+		}
+
+		// Pivot
+		case CLICK_PIVOTG_MENU:
+		{
+			// Force cancel
+			PlayerCancelSelectGUITextDraw(playerid, true);
+
+			// csel mode (We need to delay to use this mode effectively)
+			SetTimerEx("DelayEditPivot", 1000, false, "i", playerid);
+		}
+		case CLICK_TOGPIVOTG_MENU: { BroadcastCommand(playerid, "/togpivot"); }
+
+		// Send group to 0,0,0 position
+		case CLICK_ZEROGROUP_MENU:
+		{
+			inline ZeroGroup(pid, dialogid, response, listitem, string:text[])
+			{
+				#pragma unused listitem, dialogid, pid, text
+		        if(response) BroadcastCommand(playerid, "/0group");
+			}
+			Dialog_ShowCallback(playerid, using inline ZeroGroup, DIALOG_STYLE_MSGBOX, "Texture Studio", "This will set your currently grouped\nobjects to the 0,0,0 postion", "Ok", "Cancel");
+		}
+
+		// Objectmetry editor
+        case CLICK_OBJECTMETRY_MENU: { BroadcastCommand(playerid, "/obmedit"); }
+
+		case CLICK_MOVEMENTG_MENU:
+		{
+            // +x:0 +y:1 +z:2 +rx:3 +ry:4 +rz:5 -x:6 -y:7 -z:8 -rx:9 -ry:10 -rz:11
+			new line[128];
+			if(ObjectGroupMovementIndex[0] == pindex)
+			{
+				format(line, sizeof(line), "/gox %0.3f", CurrMovementGInc[playerid]);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectGroupMovementIndex[1] == pindex)
+			{
+				format(line, sizeof(line), "/goy %0.3f", CurrMovementGInc[playerid]);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectGroupMovementIndex[2] == pindex)
+			{
+				format(line, sizeof(line), "/goz %0.3f", CurrMovementGInc[playerid]);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectGroupMovementIndex[3] == pindex)
+			{
+				format(line, sizeof(line), "/grx %0.3f", CurrRotationGInc[playerid]);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectGroupMovementIndex[4] == pindex)
+			{
+				format(line, sizeof(line), "/gry %0.3f", CurrRotationGInc[playerid]);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectGroupMovementIndex[5] == pindex)
+			{
+				format(line, sizeof(line), "/grz %0.3f", CurrRotationGInc[playerid]);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectGroupMovementIndex[6] == pindex)
+			{
+				format(line, sizeof(line), "/gox %0.3f", CurrMovementGInc[playerid]*-1);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectGroupMovementIndex[7] == pindex)
+			{
+				format(line, sizeof(line), "/goy %0.3f", CurrMovementGInc[playerid]*-1);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectGroupMovementIndex[8] == pindex)
+			{
+				format(line, sizeof(line), "/goz %0.3f", CurrMovementGInc[playerid]*-1);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectGroupMovementIndex[9] == pindex)
+			{
+				format(line, sizeof(line), "/grx %0.3f", CurrRotationGInc[playerid]*-1);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectGroupMovementIndex[10] == pindex)
+			{
+				format(line, sizeof(line), "/gry %0.3f", CurrRotationGInc[playerid]*-1);
+				BroadcastCommand(playerid, line);
+			}
+			else if(ObjectGroupMovementIndex[11] == pindex)
+			{
+				format(line, sizeof(line), "/grz %0.3f", CurrRotationGInc[playerid]*-1);
+				BroadcastCommand(playerid, line);
+			}
+			
+			
+			// Set object position
+			else if(ObjectGroupMovementIndex[13] == pindex)
+			{
+				inline SetMovementGInc(pid, dialogid, response, listitem, string:text[])
+				{
+					#pragma unused listitem, dialogid, pid, text
+					if(response)
+					{
+						new Float:tmp;
+					    if(sscanf(text, "f", tmp)) return SendClientMessage(playerid, STEALTH_YELLOW, "You must supply a increment value!");
+					    if(tmp < -100.0 || tmp > 100.0) return SendClientMessage(playerid, STEALTH_YELLOW, "Out of range increment! <-100.0 - 100.0>");
+					    CurrMovementGInc[playerid] = tmp;
+					    format(line, sizeof(line), "%0.3f", tmp);
+					    PlayerGUISetPlayerText(playerid, PlayerGroupMenu[playerid], E_PLAYERINDEX[7], line);
+					}
+				}
+                Dialog_ShowCallback(playerid, using inline SetMovementGInc, DIALOG_STYLE_INPUT, "Texture Studio", "Input group movement inc", "Ok", "Cancel");
+			}
+
+			else if(ObjectGroupMovementIndex[14] == pindex)
+			{
+				inline SetMovementGRot(pid, dialogid, response, listitem, string:text[])
+				{
+					#pragma unused listitem, dialogid, pid, text
+					if(response)
+					{
+						new Float:tmp;
+					    if(sscanf(text, "f", tmp)) return SendClientMessage(playerid, STEALTH_YELLOW, "You must supply a increment value!");
+					    if(tmp < -100.0 || tmp > 100.0) return SendClientMessage(playerid, STEALTH_YELLOW, "Out of range increment! <-100.0 - 100.0>");
+					    CurrRotationGInc[playerid] = tmp;
+					    format(line, sizeof(line), "%0.3f", tmp);
+					    PlayerGUISetPlayerText(playerid, PlayerGroupMenu[playerid], E_PLAYERINDEX[8], line);
+					}
+				}
+                Dialog_ShowCallback(playerid, using inline SetMovementGRot, DIALOG_STYLE_INPUT, "Texture Studio", "Input group rotation inc", "Ok", "Cancel");
+			}
+		}
+	}
+	return 1;
+}
+
+// Sub menu group selection
+OnGUIClick:SubMenuGroupSel(playerid, group, gindex, pindex)
+{
+	switch(group)
+	{
+	    case EXIT_GUI_MENU: { PlayerHideGUIMenu(playerid, PlayerSubMenu[playerid]); }
+		case CLICK_GROUP_CSEL:
+		{
+			// Force cancel
+			PlayerCancelSelectGUITextDraw(playerid, true);
+
+			// csel mode (We need to delay to use this mode effectively)
+			SetTimerEx("DelayGSel", 1000, false, "i", playerid);
+		}
+		case CLICK_GROUP_GADD:
+		{
+			inline AddGroupObject(pid, dialogid, response, listitem, string:text[])
+			{
+				#pragma unused listitem, dialogid, pid, text
+				new line[128];
+				format(line, sizeof(line), "/gadd %s", text);
+				if(response) { BroadcastCommand(playerid, line); }
+			}
+			Dialog_ShowCallback(playerid, using inline AddGroupObject, DIALOG_STYLE_INPUT, "Texture Studio", "Input object to add to group", "Ok", "Cancel");
+		}
+		
+		case CLICK_GROUP_GREM:
+		{
+			inline RemGroupObject(pid, dialogid, response, listitem, string:text[])
+			{
+				#pragma unused listitem, dialogid, pid, text
+				new line[128];
+				format(line, sizeof(line), "/grem %s", text);
+				if(response) { BroadcastCommand(playerid, line); }
+			}
+			Dialog_ShowCallback(playerid, using inline RemGroupObject, DIALOG_STYLE_INPUT, "Texture Studio", "Input object to remove from group", "Ok", "Cancel");
+		}
+		case CLICK_GROUP_CLEAR:  { BroadcastCommand(playerid, "/gclear"); }
+		case CLICK_GROUP_CLONE:  { BroadcastCommand(playerid, "/gclone"); }
+		case CLICK_GROUP_GALL:  { BroadcastCommand(playerid, "/gall"); }
+		case CLICK_GROUP_SETGROUP:
+		{
+			inline SetGroup(pid, dialogid, response, listitem, string:text[])
+			{
+				#pragma unused listitem, dialogid, pid, text
+				new line[128];
+				format(line, sizeof(line), "/setgroup %s", text);
+				if(response) { BroadcastCommand(playerid, line); }
+			}
+			Dialog_ShowCallback(playerid, using inline SetGroup, DIALOG_STYLE_INPUT, "Texture Studio", "Set grouped objects to group", "Ok", "Cancel");
+		}
+
+		case CLICK_GROUP_SELECTGROUP:
+		{
+			inline SelectGroup(pid, dialogid, response, listitem, string:text[])
+			{
+				#pragma unused listitem, dialogid, pid, text
+				new line[128];
+				format(line, sizeof(line), "/selectgroup %s", text);
+				if(response) { BroadcastCommand(playerid, line); }
+			}
+			Dialog_ShowCallback(playerid, using inline SelectGroup, DIALOG_STYLE_INPUT, "Texture Studio", "Input group to select", "Ok", "Cancel");
+		}
+
+		case CLICK_GROUP_GDELETE:
+		{
+
+			inline ConfirmGDelete(pid, dialogid, response, listitem, string:text[])
+			{
+				#pragma unused listitem, dialogid, pid, text
+				if(response) { BroadcastCommand(playerid, "/gdelete"); }
+			}
+			Dialog_ShowCallback(playerid, using inline ConfirmGDelete, DIALOG_STYLE_MSGBOX, "Texture Studio", "Are you sure you want to delete all objects in this group?", "Ok", "Cancel");
+		}
+		case CLICK_GROUP_EDIT:
+		{
+			// Force cancel
+			PlayerCancelSelectGUITextDraw(playerid, true);
+
+			// csel mode (We need to delay to use this mode effectively)
+			SetTimerEx("DelayGEdit", 1000, false, "i", playerid);
+		}
+		
+		case CLICK_GROUP_INFRONT: { BroadcastCommand(playerid, "/ginfront"); }
+		
+	}
+	return 1;
+}
+
+new list[4096];
+
+// Submenu group Prefabs
+OnGUIClick:SubMenuGroupPF(playerid, group, gindex, pindex)
+{
+	switch(group)
+	{
+	    case EXIT_GUI_MENU: { PlayerHideGUIMenu(playerid, PlayerSubMenu[playerid]); }
+		case CLICK_GROUP_GPREFAB: { BroadcastCommand(playerid, "/gprefab"); }
+		case CLICK_GROUP_LOADPF:
+		{
+			new dir:dHandle = dir_open("./scriptfiles/tstudio/PreFabs/");
+			new item[40], type;
+			new extension[3];
+			new total;
+			list[0] = '\0';
+
+			// Create a load list
+			while(dir_list(dHandle, item, type))
+			{
+			 	if(type != FM_DIR)
+			    {
+					// We need to check extension
+					if(strlen(item) > 3)
+					{
+						format(extension, sizeof(extension), "%s%s", item[strlen(item) - 2],item[strlen(item) - 1]);
+
+						// File is apparently a db
+						if(!strcmp(extension, "db"))
+						{
+							strmid(item, item, 0, strlen(item)-3, 40);
+							format(list, sizeof(list), "%s%s\n", list, item);
+							total++;
+						}
+				    }
+				}
+			}
+			if(total == 0) SendClientMessage(playerid, STEALTH_YELLOW, "There are no prefabs to list!");
+			else
+			{
+				inline SelectPrefab(pid, dialogid, response, listitem, string:text[])
+				{
+					#pragma unused listitem, dialogid, pid, text
+					if(response)
+					{
+						new line[128];
+						format(line, sizeof(line), "/prefab %s", text);
+						BroadcastCommand(playerid, line);
+					}
+				}
+				Dialog_ShowCallback(playerid, using inline SelectPrefab, DIALOG_STYLE_LIST, "Texture Studio - Load Prefab", list, "Ok", "Cancel");
+			}
+		}
+		case CLICK_GROUP_LOADZPF:
+		{
+			new dir:dHandle = dir_open("./scriptfiles/tstudio/PreFabs/");
+			new item[40], type;
+			new extension[3];
+			new total;
+
+			// Create a load list
+			while(dir_list(dHandle, item, type))
+			{
+			 	if(type != FM_DIR)
+			    {
+					// We need to check extension
+					if(strlen(item) > 3)
+					{
+						format(extension, sizeof(extension), "%s%s", item[strlen(item) - 2],item[strlen(item) - 1]);
+
+						// File is apparently a db
+						if(!strcmp(extension, "db"))
+						{
+							strmid(item, item, 0, strlen(item)-3, 40);
+							format(list, sizeof(list), "%s%s\n", list, item);
+							total++;
+						}
+				    }
+				}
+			}
+			if(total == 0) SendClientMessage(playerid, STEALTH_YELLOW, "There are no prefabs to list!");
+			else
+			{
+				inline SelectLoadZ(pid, dialogid, response, listitem, string:text[])
+				{
+					#pragma unused listitem, dialogid, pid, text
+					if(response)
+					{
+                        inline ChooseZ(zpid, zdialogid, zresponse, zlistitem, string:ztext[])
+                        {
+                            #pragma unused zlistitem, zdialogid, zpid, ztext
+							if(zresponse)
+							{
+								new Float:zheight;
+	                            if(!sscanf(ztext, "f", zheight))
+								{
+									new line[128];
+									format(line, sizeof(line), "/prefabsetz %s %f", text, zheight);
+									BroadcastCommand(playerid, line);
+								}
+							}
+                        }
+						Dialog_ShowCallback(playerid, using inline ChooseZ, DIALOG_STYLE_INPUT, "Texture Studio - Set Prefab Load Z", "Enter the load Z-Offset for this prefab", "Ok", "Cancel");
+					}
+				}
+				Dialog_ShowCallback(playerid, using inline SelectLoadZ, DIALOG_STYLE_LIST, "Texture Studio - Load Prefab", list, "Ok", "Cancel");
+			}
+		}
+	}
+	return 1;
+}
+////////////////////////////////////////////////////////////////////////////////
+
+forward DelayLSel(playerid);
+public DelayLSel(playerid) { if(IsPlayerConnected(playerid)) BroadcastCommand(playerid, "/lsel"); }
+
+forward DelayCSel(playerid);
+public DelayCSel(playerid) { if(IsPlayerConnected(playerid)) BroadcastCommand(playerid, "/csel"); }
+
+forward DelayGSel(playerid);
+public DelayGSel(playerid) { if(IsPlayerConnected(playerid)) BroadcastCommand(playerid, "/gsel"); }
+
+
+forward DelayEditObject(playerid);
+public DelayEditObject(playerid) { if(IsPlayerConnected(playerid)) BroadcastCommand(playerid, "/editobject"); }
+
+forward DelayEditPivot(playerid);
+public DelayEditPivot(playerid) { if(IsPlayerConnected(playerid)) BroadcastCommand(playerid, "/pivot"); }
+
+forward DelayGEdit(playerid);
+public DelayGEdit(playerid) { if(IsPlayerConnected(playerid)) BroadcastCommand(playerid, "/editgroup"); }
+
+public OnPlayerObjectSelectChange(playerid, index)
+{
+	UpdatePlayerOSelText(playerid);
+	return 1;
+}
+
+public OnObjectUpdatePos(playerid, index)
+{
+	UpdatePlayerOSelText(playerid);
+	return 1;
+}
+
+tsfunc UpdatePlayerOSelText(playerid)
+{
+	if(CurrObject[playerid] == -1)
+	{
+		PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], CurrObjectPosition[playerid][0], "X:0.0");
+		PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], CurrObjectPosition[playerid][1], "Y:0.0");
+		PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], CurrObjectPosition[playerid][2], "Z:0.0");
+		PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], CurrObjectPosition[playerid][3], "RX:0.0");
+		PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], CurrObjectPosition[playerid][4], "RY:0.0");
+		PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], CurrObjectPosition[playerid][5], "RZ:0.0");
+	}
+	else
+	{
+	    new line[16];
+		if(ObjectData[CurrObject[playerid]][oAttachedVehicle] == -1)
+		{
+			format(line, sizeof(line), "X:%0.2f", ObjectData[CurrObject[playerid]][oX]);
+			PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], CurrObjectPosition[playerid][0], line);
+
+			format(line, sizeof(line), "Y:%0.2f", ObjectData[CurrObject[playerid]][oY]);
+			PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], CurrObjectPosition[playerid][1], line);
+
+			format(line, sizeof(line), "Z:%0.2f", ObjectData[CurrObject[playerid]][oZ]);
+			PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], CurrObjectPosition[playerid][2], line);
+
+			format(line, sizeof(line), "RX:%0.2f", ObjectData[CurrObject[playerid]][oRX]);
+			PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], CurrObjectPosition[playerid][3], line);
+
+			format(line, sizeof(line), "RY:%0.2f", ObjectData[CurrObject[playerid]][oRY]);
+			PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], CurrObjectPosition[playerid][4], line);
+
+			format(line, sizeof(line), "RZ:%0.2f", ObjectData[CurrObject[playerid]][oRZ]);
+			PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], CurrObjectPosition[playerid][5], line);
+		}
+		else
+		{
+			new index = ObjectData[CurrObject[playerid]][oAttachedVehicle];
+			new refindex = GetCarObjectRefIndex(index, CurrObject[playerid]);
+			
+			format(line, sizeof(line), "X:%0.2f", CarData[index][COX][refindex]);
+			PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], CurrObjectPosition[playerid][0], line);
+
+			format(line, sizeof(line), "Y:%0.2f", CarData[index][COY][refindex]);
+			PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], CurrObjectPosition[playerid][1], line);
+
+			format(line, sizeof(line), "Z:%0.2f", CarData[index][COZ][refindex]);
+			PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], CurrObjectPosition[playerid][2], line);
+
+			format(line, sizeof(line), "RX:%0.2f", CarData[index][CORX][refindex]);
+			PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], CurrObjectPosition[playerid][3], line);
+
+			format(line, sizeof(line), "RY:%0.2f", CarData[index][CORY][refindex]);
+			PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], CurrObjectPosition[playerid][4], line);
+
+			format(line, sizeof(line), "RZ:%0.2f", CarData[index][CORZ][refindex]);
+			PlayerGUISetPlayerText(playerid, PlayerObjectMenu[playerid], CurrObjectPosition[playerid][5], line);
+		
+		
+		}
+	}
+	return 1;
+}
+
+
+
+tsfunc UpdatePlayerGSelText(playerid)
+{
+	new Float:x, Float:y, Float:z;
+	if(!GetGroupCenter(playerid, x, y, z))
+	{
+		PlayerGUISetPlayerText(playerid, PlayerGroupMenu[playerid], CurrGroupPosition[playerid][0], "X:0.0");
+		PlayerGUISetPlayerText(playerid, PlayerGroupMenu[playerid], CurrGroupPosition[playerid][1], "Y:0.0");
+		PlayerGUISetPlayerText(playerid, PlayerGroupMenu[playerid], CurrGroupPosition[playerid][2], "Z:0.0");
+	}
+	else
+	{
+	    new line[16];
+		format(line, sizeof(line), "X:%0.2f", x);
+		PlayerGUISetPlayerText(playerid, PlayerGroupMenu[playerid], CurrGroupPosition[playerid][0], line);
+
+		format(line, sizeof(line), "Y:%0.2f", y);
+		PlayerGUISetPlayerText(playerid, PlayerGroupMenu[playerid], CurrGroupPosition[playerid][1], line);
+
+		format(line, sizeof(line), "Z:%0.2f", z);
+		PlayerGUISetPlayerText(playerid, PlayerGroupMenu[playerid], CurrGroupPosition[playerid][2], line);
+	}
+	return 1;
+}
+
+
+
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+// Commands
+#define     MAX_CLICK_BINDS     		10
+#define     MAX_BIND_TEXT_LENGTH        16
+#define     MAX_BINDS_PER_BIND          10
+#define     MAX_BIND_LENGTH             128
+
+
+static bool:BindUsed[MAX_CLICK_BINDS];
+static CommandBindText[MAX_CLICK_BINDS][MAX_BIND_TEXT_LENGTH];
+static CommandBindData[MAX_CLICK_BINDS][MAX_BINDS_PER_BIND][MAX_BIND_LENGTH];
+static tmpCommandBindText[MAX_BIND_TEXT_LENGTH];
+static tmpCommandBindData[MAX_BINDS_PER_BIND][MAX_BIND_LENGTH];
+
+YCMD:runbind(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Run a saved bind. Used to simplify a repeated process.");
+		return 1;
+	}
+
+    NoEditingMode(playerid);
+	if(isnull(arg)) return SendClientMessage(playerid, STEALTH_YELLOW, "Usage /runbind <0-9>");
+	new bind = strval(arg);
+	if(bind < 0 || bind > (MAX_CLICK_BINDS - 1)) return SendClientMessage(playerid, STEALTH_YELLOW, "Usage /runbind <0-9>");
+	if(!BindUsed[bind]) return SendClientMessage(playerid, STEALTH_YELLOW, "That bind is not used, type /bindeditor to create one");
+
+	// Broadcast commands from command binds
+	for(new i = 0; i < MAX_BINDS_PER_BIND; i++)
+	{
+		if(!isnull(CommandBindData[bind][i])) BroadcastCommand(playerid, CommandBindData[bind][i]);
+	}
+
+	return 1;
+}
+
+/*
+YCMD:makebind(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Create a bind out of the specified number of last commands.");
+		return 1;
+	}
+
+	new index, range;
+	sscanf(arg, "iI(1)", index, range);
+	
+	if(0 > index > MAX_CLICK_BINDS) return SendClientMessage(playerid, STEALTH_YELLOW, "Usage /makebind <Bind Index (0-9)> <Number of Commands (1-10)>");
+	if(1 > range > MAX_COMMAND_BUFFER) return SendClientMessage(playerid, STEALTH_YELLOW, "Usage /makebind <Bind Index (0-9)> <Number of Commands (1-10)>");
+	
+	for(new x; x < range; x++) { 
+		//CommandBindData[index][x] = CommandBuffer[playerid][range - 1 - x];
+		format(CommandBindData[index][x], 128, "%s", CommandBuffer[playerid][range - 1 - x]);
+		printf("%i: %s", x, CommandBindData[index][x]);
+	}
+	
+	BindUsed[index] = true;
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	SendClientMessage(playerid, STEALTH_GREEN, sprintf("%i is now the last %i commands", index, range));
+	
+	return 1;
+}
+*/
+
+YCMD:bindeditor(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Edit currently saved binds.");
+		return 1;
+	}
+
+    NoEditingMode(playerid);
+
+	new line[1024];
+
+	// Show bind dialog
+    inline ChooseBind(cpid, cdialogid, cresponse, clistitem, string:ctext[])
+	{
+		#pragma unused clistitem, cdialogid, cpid, ctext
+		if(cresponse)
+		{
+			// Edit option for bind
+			inline ChooseEditOption(opid, odialogid, oresponse, olistitem, string:otext[])
+			{
+	            #pragma unused olistitem, odialogid, opid, otext
+				if(oresponse)
+				{
+					// Change text
+					if(olistitem == 0)
+					{
+				   		inline SetBindName(spid, sdialogid, sresponse, slistitem, string:stext[])
+					   	{
+					        #pragma unused slistitem, sdialogid, spid, stext
+							if(sresponse)
+							{
+								new len = strlen(stext);
+								if(len > 0 && len < 16)
+								{
+									format(CommandBindText[clistitem], MAX_BIND_LENGTH, "%s", stext);
+
+									if(clistitem <= sizeof(BindElementIDS))
+									{
+										GUISetPlayerText(MainMenu, BindElementIDS[clistitem], CommandBindText[clistitem]);
+									}
+									BindUsed[clistitem] = true;
+									sqlite_DeleteBindString(clistitem);
+									sqlite_InsertBindString(clistitem);
+								}
+								else
+								{
+									if(len < 1) SendClientMessage(playerid, STEALTH_YELLOW, "Bind name too short");
+									else SendClientMessage(playerid, STEALTH_YELLOW, "Bind name too long");
+								}
+								Dialog_ShowCallback(playerid, using inline ChooseEditOption, DIALOG_STYLE_LIST, "Texture Studio - Choose Edit Type", "Edit Bind Name\nEdit Bind Text\nDelete Bind", "Ok", "Cancel");
+							}
+							Dialog_ShowCallback(playerid, using inline ChooseEditOption, DIALOG_STYLE_LIST, "Texture Studio - Choose Edit Type", "Edit Bind Name\nEdit Bind Text\nDelete Bind", "Ok", "Cancel");
+						}
+						Dialog_ShowCallback(playerid, using inline SetBindName, DIALOG_STYLE_INPUT, "Texture Studio - Edit Bind Text", "Set Bind Name", "Ok", "Cancel");
+
+					}
+					else if(olistitem == 1)
+					{
+						if(BindUsed[clistitem])
+						{
+				            inline EditLine(epid, edialogid, eresponse, elistitem, string:etext[])
+							{
+				                #pragma unused elistitem, edialogid, epid, etext
+								if(eresponse)
+								{
+					   				inline SetBind(spid, sdialogid, sresponse, slistitem, string:stext[])
+								   	{
+						                #pragma unused slistitem, sdialogid, spid, stext
+										if(sresponse)
+										{
+											format(CommandBindData[clistitem][elistitem], MAX_BIND_LENGTH, "%s", stext);
+
+											sqlite_DeleteBindString(clistitem);
+											sqlite_InsertBindString(clistitem);
+										}
+
+										format(line, sizeof(line), "");
+									    for(new i = 0; i < MAX_BINDS_PER_BIND; i++) { format(line, sizeof(line), "%s%i: %s\n", line, i, CommandBindData[clistitem][i]); }
+										Dialog_ShowCallback(playerid, using inline EditLine, DIALOG_STYLE_LIST, "Texture Studio - Edit Bind Text", line, "Ok", "Cancel");
+									}
+									Dialog_ShowCallback(playerid, using inline SetBind, DIALOG_STYLE_INPUT, "Texture Studio - Edit Bind Text", "Set Bind", "Ok", "Cancel");
+								}
+							}
+							format(line, sizeof(line), "");
+						    for(new i = 0; i < MAX_BINDS_PER_BIND; i++) { format(line, sizeof(line), "%s%i: %s\n", line, i, CommandBindData[clistitem][i]); }
+							Dialog_ShowCallback(playerid, using inline EditLine, DIALOG_STYLE_LIST, "Texture Studio - Edit Bind Text", line, "Ok", "Cancel");
+						}
+						else
+						{
+                            SendClientMessage(playerid, STEALTH_YELLOW, "You must set a name to edit this bind!");
+						    Dialog_ShowCallback(playerid, using inline ChooseEditOption, DIALOG_STYLE_LIST, "Texture Studio - Choose Edit Type", "Edit Bind Name\nEdit Bind Text\nDelete Bind", "Ok", "Cancel");
+						}
+					}
+					else if(olistitem == 2)
+					{
+			            inline DeleteBind(dpid, dialogid, dresponse, dlistitem, string:dtext[])
+						{
+                            #pragma unused dlistitem, dialogid, dpid, dtext
+                            if(dresponse)
+                            {
+                                sqlite_DeleteBindString(clistitem);
+
+                                BindUsed[clistitem] = false;
+
+								format(CommandBindText[clistitem], MAX_BIND_TEXT_LENGTH, "");
+
+								if(clistitem <= sizeof(BindElementIDS))
+								{
+									new TDText[16];
+									format(TDText, sizeof(TDText), "User Bind %0", clistitem);
+									GUISetPlayerText(MainMenu, BindElementIDS[clistitem], TDText);
+								}
+
+								for(new i = 0; i < MAX_BINDS_PER_BIND; i++) { format (CommandBindData[clistitem][i], MAX_BIND_LENGTH, ""); }
+
+								format(line, sizeof(line), "");
+								for(new i = 0; i < MAX_CLICK_BINDS; i++)
+								{
+								    if(BindUsed[i]) format(line, sizeof(line), "%s%s\n", line, CommandBindText[i]);
+								    else format(line, sizeof(line), "%sUnused\n", line);
+								}
+								Dialog_ShowCallback(playerid, using inline ChooseBind, DIALOG_STYLE_LIST, "Texture Studio - Edit Binds", line, "Ok", "Cancel");
+							}
+							else Dialog_ShowCallback(playerid, using inline ChooseEditOption, DIALOG_STYLE_LIST, "Texture Studio - Choose Edit Type", "Edit Bind Name\nEdit Bind Text\nDelete Bind", "Ok", "Cancel");
+						}
+						Dialog_ShowCallback(playerid, using inline DeleteBind, DIALOG_STYLE_MSGBOX, "Texture Studio - Delete", "Delete this bind?", "Ok", "Cancel");
+					}
+				}
+			}
+			Dialog_ShowCallback(playerid, using inline ChooseEditOption, DIALOG_STYLE_LIST, "Texture Studio - Choose Edit Type", "Edit Bind Name\nEdit Bind Text\nDelete Bind", "Ok", "Cancel");
+		}
+	}
+
+	format(line, sizeof(line), "");
+	for(new i = 0; i < MAX_CLICK_BINDS; i++)
+	{
+	    if(BindUsed[i]) format(line, sizeof(line), "%s%s\n", line, CommandBindText[i]);
+	    else format(line, sizeof(line), "%sUnused\n", line);
+	}
+
+
+	Dialog_ShowCallback(playerid, using inline ChooseBind, DIALOG_STYLE_LIST, "Texture Studio - Edit Binds", line, "Ok", "Cancel");
+	return 1;
+}
+
+new LoadBindString[512];
+static DBStatement:loadkeybindsstmt;
+
+sqlite_LoadBindString()
+{
+	for(new i = 0; i < MAX_CLICK_BINDS; i++) { BindUsed[i] = false; }
+
+	if(!LoadBindString[0])
+	{
+		strimplode(" ",
+			LoadBindString,
+			sizeof(LoadBindString),
+			"CREATE TABLE IF NOT EXISTS `KeyBinds`",
+			"(IndexID INTEGER,",
+			"BindName TEXT,",
+			"Bind_1 TEXT,",
+			"Bind_2 TEXT,",
+			"Bind_3 TEXT,",
+			"Bind_4 TEXT,",
+			"Bind_5 TEXT,",
+			"Bind_6 TEXT,",
+			"Bind_7 TEXT,",
+			"Bind_8 TEXT,",
+			"Bind_9 TEXT,",
+			"Bind_10 TEXT);"
+
+		);
+	}
+	db_exec(SystemDB, LoadBindString);
+
+	loadkeybindsstmt = db_prepare(SystemDB, "SELECT * FROM `KeyBinds`");
+	new index;
+
+	// Bind our results
+    stmt_bind_result_field(loadkeybindsstmt, 0, DB::TYPE_INT, index);
+    stmt_bind_result_field(loadkeybindsstmt, 1, DB::TYPE_STRING, tmpCommandBindText, 16);
+    stmt_bind_result_field(loadkeybindsstmt, 2, DB::TYPE_STRING, tmpCommandBindData[0], 128);
+    stmt_bind_result_field(loadkeybindsstmt, 3, DB::TYPE_STRING, tmpCommandBindData[1], 128);
+    stmt_bind_result_field(loadkeybindsstmt, 4, DB::TYPE_STRING, tmpCommandBindData[2], 128);
+    stmt_bind_result_field(loadkeybindsstmt, 5, DB::TYPE_STRING, tmpCommandBindData[3], 128);
+    stmt_bind_result_field(loadkeybindsstmt, 6, DB::TYPE_STRING, tmpCommandBindData[4], 128);
+    stmt_bind_result_field(loadkeybindsstmt, 7, DB::TYPE_STRING, tmpCommandBindData[5], 128);
+    stmt_bind_result_field(loadkeybindsstmt, 8, DB::TYPE_STRING, tmpCommandBindData[6], 128);
+    stmt_bind_result_field(loadkeybindsstmt, 9, DB::TYPE_STRING, tmpCommandBindData[7], 128);
+    stmt_bind_result_field(loadkeybindsstmt, 10, DB::TYPE_STRING, tmpCommandBindData[8], 128);
+    stmt_bind_result_field(loadkeybindsstmt, 11, DB::TYPE_STRING, tmpCommandBindData[9], 128);
+
+	// Execute query
+    if(stmt_execute(loadkeybindsstmt))
+    {
+        while(stmt_fetch_row(loadkeybindsstmt))
+        {
+            BindUsed[index] = true;
+            format(CommandBindText[index], 16, "%s", tmpCommandBindText);
+			if(index <= sizeof(BindElementIDS))
+			{
+				GUISetPlayerText(MainMenu, BindElementIDS[index], CommandBindText[index]);
+			}
+
+			for(new i = 0; i < MAX_BINDS_PER_BIND; i++) { CommandBindData[index][i] = tmpCommandBindData[i]; }
+        }
+		stmt_close(loadkeybindsstmt);
+        return 1;
+    }
+	stmt_close(loadkeybindsstmt);
+    return 0;
+}
+
+// Insert Key bind
+static DBStatement:insertkeybindsstmt;
+new InsertBindString[512];
+
+sqlite_InsertBindString(index)
+{
+	if(!InsertBindString[0])
+	{
+		strimplode(" ",
+			InsertBindString,
+			sizeof(InsertBindString),
+			"CREATE TABLE IF NOT EXISTS `KeyBinds`",
+			"(IndexID INTEGER,",
+			"BindName TEXT,",
+			"Bind_1 TEXT,",
+			"Bind_2 TEXT,",
+			"Bind_3 TEXT,",
+			"Bind_4 TEXT,",
+			"Bind_5 TEXT,",
+			"Bind_6 TEXT,",
+			"Bind_7 TEXT,",
+			"Bind_8 TEXT,",
+			"Bind_9 TEXT,",
+			"Bind_10 TEXT);"
+
+		);
+
+		strimplode(" ",
+		InsertBindString,
+			sizeof(InsertBindString),
+			"INSERT INTO `KeyBinds`",
+	        "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
+		);
+
+        insertkeybindsstmt = db_prepare(SystemDB, InsertBindString);
+	}
+
+		// Bind our results
+    stmt_bind_value(insertkeybindsstmt, 0, DB::TYPE_INT, index);
+    stmt_bind_value(insertkeybindsstmt, 1, DB::TYPE_STRING, CommandBindText[index], 16);
+    stmt_bind_value(insertkeybindsstmt, 2, DB::TYPE_STRING, CommandBindData[index][0], 128);
+    stmt_bind_value(insertkeybindsstmt, 3, DB::TYPE_STRING, CommandBindData[index][1], 128);
+    stmt_bind_value(insertkeybindsstmt, 4, DB::TYPE_STRING, CommandBindData[index][2], 128);
+    stmt_bind_value(insertkeybindsstmt, 5, DB::TYPE_STRING, CommandBindData[index][3], 128);
+    stmt_bind_value(insertkeybindsstmt, 6, DB::TYPE_STRING, CommandBindData[index][4], 128);
+    stmt_bind_value(insertkeybindsstmt, 7, DB::TYPE_STRING, CommandBindData[index][5], 128);
+    stmt_bind_value(insertkeybindsstmt, 8, DB::TYPE_STRING, CommandBindData[index][6], 128);
+    stmt_bind_value(insertkeybindsstmt, 9, DB::TYPE_STRING, CommandBindData[index][7], 128);
+    stmt_bind_value(insertkeybindsstmt, 10, DB::TYPE_STRING, CommandBindData[index][8], 128);
+    stmt_bind_value(insertkeybindsstmt, 11, DB::TYPE_STRING, CommandBindData[index][9], 128);
+
+	stmt_execute(insertkeybindsstmt);
+	return 1;
+}
+
+sqlite_DeleteBindString(index)
+{
+	new q[128];
+	format(q, sizeof(q), "DELETE FROM `KeyBinds` WHERE `IndexID` = %i", index);
+	db_free_result(db_query(SystemDB, q));
+	return 1;
+}
+

+ 105 - 0
Texture-Studio-master/filterscripts/tstudio/modelsizes.pwn

@@ -0,0 +1,105 @@
+#if defined MODELSIZES
+	#endinput
+#endif
+#define MODELSIZES
+
+new DB:MS_DB, MS_QUERY[128], DBResult:MS_RESULT, Float:MS_VALUE[6];
+
+public OnFilterScriptInit()
+{
+	if((MS_DB = db_open("tstudio/modelsizes.db")) == DB:0)
+		print("Model Sizes Plus - Loading Failed (Database Could Not Be Opened).");
+	#if defined MS_OnFilterScriptInit
+		MS_OnFilterScriptInit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptInit
+	#undef OnFilterScriptInit
+#else
+	#define _ALS_OnFilterScriptInit
+#endif
+#define OnFilterScriptInit MS_OnFilterScriptInit
+#if defined MS_OnFilterScriptInit
+	forward MS_OnFilterScriptInit();
+#endif
+
+#define GetColCount() (20000)
+
+tsfunc Float:GetColSphereRadius(objectmodel)
+{
+	format(MS_QUERY, 128, "SELECT `Size` FROM `Sphere` WHERE `Model` = '%d'", objectmodel);
+	MS_RESULT = db_query(MS_DB, MS_QUERY);
+	if(db_num_rows(MS_RESULT))
+		MS_VALUE[0] = db_get_field_float(MS_RESULT, 0);
+	else
+		MS_VALUE[0] = 0.0;
+	db_free_result(MS_RESULT);
+	return MS_VALUE[0];
+}
+
+tsfunc GetColSphereOffset(objectmodel, &Float:x, &Float:y, &Float:z)
+{
+	format(MS_QUERY, 128, "SELECT `OffsetX`, `OffsetY`, `OffsetZ` FROM `Sphere` WHERE `Model` = '%d'", objectmodel);
+	MS_RESULT = db_query(MS_DB, MS_QUERY);
+	if(db_num_rows(MS_RESULT)) {
+		x = db_get_field_float(MS_RESULT, 0);
+		y = db_get_field_float(MS_RESULT, 1);
+		z = db_get_field_float(MS_RESULT, 2);
+		db_free_result(MS_RESULT);
+		return 1;
+	}
+	else {
+		x = 0.0;
+		y = 0.0;
+		z = 0.0;
+		db_free_result(MS_RESULT);
+		return 0;
+	}
+}
+
+tsfunc GetModelBoundingBox(objectmodel, &Float:MinX, &Float:MinY, &Float:MinZ, &Float:MaxX, &Float:MaxY, &Float:MaxZ)
+{
+	format(MS_QUERY, 128, "SELECT `MinX`, `MinY`, `MinZ`, `MaxX`, `MaxY`, `MaxZ` FROM `AABB` WHERE `Model` = '%d'", objectmodel);
+	MS_RESULT = db_query(MS_DB, MS_QUERY);
+	if(db_num_rows(MS_RESULT)) {
+		MinX = db_get_field_float(MS_RESULT, 0);
+		MinY = db_get_field_float(MS_RESULT, 1);
+		MinZ = db_get_field_float(MS_RESULT, 2);
+		MaxX = db_get_field_float(MS_RESULT, 3);
+		MaxY = db_get_field_float(MS_RESULT, 4);
+		MaxZ = db_get_field_float(MS_RESULT, 5);
+		db_free_result(MS_RESULT);
+		return 1;
+	}
+	else {
+		MinX = 0.0;
+		MinY = 0.0;
+		MinZ = 0.0;
+		MaxX = 0.0;
+		MaxY = 0.0;
+		MaxZ = 0.0;
+		db_free_result(MS_RESULT);
+		return 0;
+	}
+}
+
+stock GetModelColDimensions(objectmodel, &Float:length, &Float:width, &Float:height)
+{
+	format(MS_QUERY, 128, "SELECT `MinX`, `MinY`, `MinZ`, `MaxX`, `MaxY`, `MaxZ` FROM `AABB` WHERE `Model` = '%d'", objectmodel);
+	MS_RESULT = db_query(MS_DB, MS_QUERY);
+	if(db_num_rows(MS_RESULT)) {
+		length = floatabs(db_get_field_float(MS_RESULT, 0) - db_get_field_float(MS_RESULT, 3));
+		width = floatabs(db_get_field_float(MS_RESULT, 1) - db_get_field_float(MS_RESULT, 4));
+		height = floatabs(db_get_field_float(MS_RESULT, 2) - db_get_field_float(MS_RESULT, 5));
+		db_free_result(MS_RESULT);
+		return 1;
+	}
+	else {
+		length = 0.0;
+		width = 0.0;
+		height = 0.0;
+		db_free_result(MS_RESULT);
+		return 0;
+	}
+}

+ 765 - 0
Texture-Studio-master/filterscripts/tstudio/objm.pwn

@@ -0,0 +1,765 @@
+/*
+ * =============================================================================================== *
+ * =============================================================================================== *
+ * =============================================================================================== *
+ * =============================================================================================== *
+ * ================================           Codectile's         ================================ *
+ * ================================          Objectometry         ================================ *
+ * ================================            -Library-          ================================ *
+ * ================================          -Version 1.0-        ================================ *
+ * ================================                               ================================ *
+ * =============================================================================================== *
+ * =============================================================================================== *
+ * =============================================================================================== *
+ */
+
+ /*
+ Introduction: This include helps in creating objects in different types of circular paths/tracks.This include is still under development.
+ 			   The functions below will not work unless streamer plugin is included in your script.
+			   There are total 6 different types of functions -
+
+CreateDynamicObjectCircle(playerid,modelid,Float:posx,Float:posy,Float:posz, Float:rx, Float:ry, Float:rz,Float:radius,Float:sep,bool:facecenter=false)
+CreateDynamicObjectSpiral(playerid,modelid,Float:posx,Float:posy,Float:posz, Float:rx, Float:ry, Float:rz,Float:radius,Float:hsep,Float:vsep,bool:facecenter=false)
+CreateDynamicObjectCylinder(playerid,modelid,Float:posx,Float:posy,Float:posz, Float:rx, Float:ry, Float:rz,Float:radius,Float:hsep,Float:vsep,parts,bool:facecenter=false)
+CreateDynamicObjectWhirl(playerid,modelid,Float:posx,Float:posy,Float:posz,Float:rx,Float:ry,Float:rz,Float:radius,Float:sep,bool:facecenter=false)
+CreateDynamicCircleIn(playerid,modelid,Float:posx,Float:posy,Float:posz,Float:rx,Float:ry,Float:rz,Float:radius,Float:sep,parts,bool:facecenter=false)
+CreateDynamicCircleOut(playerid,modelid,Float:posx,Float:posy,Float:posz,Float:rx,Float:ry,Float:rz,Float:radius,Float:sep,parts,bool:facecenter=false)
+
+
+Dependencies: Streamer Plugin (Incognito)
+
+Bugs: None yet.
+
+Source Code: www.github.com/codectile
+Credits: Incognito
+
+Note: This include has been modified and integrated for use in Texture Studio
+*/
+
+
+
+/* The following codes are too much fragile, please "do not edit them". */
+
+/* Creates object in a circular path */
+
+#define         MAX_OBM         2000
+
+enum OBMINFO
+{
+	OMBID,
+	OMBModel,
+	Float:OBMX,
+	Float:OBMY,
+	Float:OBMZ,
+	Float:OBMRX,
+	Float:OBMRY,
+	Float:OBMRZ,
+}
+
+static OBMStack[MAX_PLAYERS][MAX_OBM][OBMINFO];
+
+public OnFilterScriptInit()
+{
+	for(new i = 0; i < MAX_PLAYERS; i++)
+	{
+		for(new j = 0; j < MAX_OBM; j++) OBMStack[i][j][OMBID] = -1;
+	}
+
+	#if defined OM_OnFilterScriptInit
+		OM_OnFilterScriptInit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptInit
+	#undef OnFilterScriptInit
+#else
+	#define _ALS_OnFilterScriptInit
+#endif
+#define OnFilterScriptInit OM_OnFilterScriptInit
+#if defined OM_OnFilterScriptInit
+	forward OM_OnFilterScriptInit();
+#endif
+
+public OnFilterScriptExit()
+{
+	foreach(new i : Player) ClearOBMStack(i);
+
+	#if defined OM_OnFilterScriptExit
+		OM_OnFilterScriptExit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptExit
+	#undef OnFilterScriptExit
+#else
+	#define _ALS_OnFilterScriptExit
+#endif
+#define OnFilterScriptExit OM_OnFilterScriptExit
+#if defined OM_OnFilterScriptExit
+	forward OM_OnFilterScriptExit();
+#endif
+
+public OnPlayerDisconnect(playerid, reason)
+{
+    ClearOBMStack(playerid);
+
+	#if defined OM_OnPlayerDisconnect
+		OM_OnPlayerDisconnect(playerid, reason);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerDisconnect
+	#undef OnPlayerDisconnect
+#else
+	#define _ALS_OnPlayerDisconnect
+#endif
+#define OnPlayerDisconnect OM_OnPlayerDisconnect
+#if defined OM_OnPlayerDisconnect
+	forward OM_OnPlayerDisconnect(playerid, reason);
+#endif
+
+ClearOBMStack(playerid)
+{
+	for(new i = 0; i < MAX_OBM; i++)
+	{
+	    if(OBMStack[playerid][i][OMBID] != -1)
+		{
+			DestroyDynamicObject(OBMStack[playerid][i][OMBID]);
+	        OBMStack[playerid][i][OMBID] = -1;
+		}
+	}
+	return 1;
+}
+
+ApplyOBM(playerid)
+{
+	ClearGroup(playerid);
+	new index;
+	new time = GetTickCount();
+	
+	db_begin_transaction(EditMap);
+	for(new i = 0; i < MAX_OBM; i++)
+	{
+	    if(OBMStack[playerid][i][OMBID] != -1)
+		{
+			index = AddDynamicObject(OBMStack[playerid][i][OMBModel],
+				OBMStack[playerid][i][OBMX], OBMStack[playerid][i][OBMY], OBMStack[playerid][i][OBMZ],
+				OBMStack[playerid][i][OBMRX], OBMStack[playerid][i][OBMRY], OBMStack[playerid][i][OBMRZ]
+			);
+			SaveUndoInfo(index, UNDO_TYPE_CREATED, time);
+			GroupedObjects[playerid][index] = true;
+			UpdateObject3DText(index, true);
+			OnUpdateGroup3DText(index);
+		}
+	}
+	db_end_transaction(EditMap);
+	return 1;
+}
+
+static AddOBMObject(playerid,modelid,Float:x,Float:y,Float:z,Float:rx,Float:ry,Float:rz)
+{
+	for(new i = 0; i < MAX_OBM; i++)
+	{
+	    if(OBMStack[playerid][i][OMBID] == -1)
+		{
+		    OBMStack[playerid][i][OMBID] = CreateDynamicObject(modelid, x, y, z, rx, ry, rz, MapSetting[mVirtualWorld], MapSetting[mInterior], -1, 300.0, 300.0);
+		    OBMStack[playerid][i][OMBModel] = modelid;
+		    OBMStack[playerid][i][OBMX] = x;
+		    OBMStack[playerid][i][OBMY] = y;
+		    OBMStack[playerid][i][OBMZ] = z;
+		    OBMStack[playerid][i][OBMRX] = rx;
+		    OBMStack[playerid][i][OBMRY] = ry;
+		    OBMStack[playerid][i][OBMRZ] = rz;
+		    return i;
+		}
+	}
+	return 1;
+}
+
+CreateDynamicObjectCircle(playerid,modelid,deg,Float:posx,Float:posy,Float:posz, Float:rx, Float:ry, Float:rz, Float:orx, Float:ory, Float:orz, Float:radius,Float:sep,bool:facecenter=false)
+{
+	if(facecenter == false)
+	{
+    	new Float:angle = 0.0,Float:x = 0.0,Float:y = 0.0;
+    	for(new i = 0;i < deg;i += 1)
+    	{
+    	    if(angle <= float(deg))
+    	    {
+				x = posx+radius*floatcos(angle,degrees);
+      			y = posy+radius*floatsin(angle,degrees);
+				AddOBMObject(playerid,modelid, x, y, posz,rx,ry,rz+orz);
+				angle = angle+sep;
+			}
+			else break;
+		}
+	}
+	else
+	{
+		new Float:angle = 0.0,Float:x = 0.0,Float:y = 0.0,Float:z,Float:detrx,Float:detry,Float:detrz;
+	    for(new i = 0;i < float(deg);i += 1)
+        {
+ 	   		if(angle <= deg)
+    	    {
+		   		x=posx+radius*floatcos(angle,degrees);
+			   	y=posy+radius*floatsin(angle,degrees);
+			   	
+				// Translate to rotation
+                AttachPoint(x, y, posz,
+                    orx, ory, angle-180.0+orz,
+                    posx, posy, posz, rx, ry, rz,
+					x, y, z,
+                    detrx, detry, detrz
+				);
+                AddOBMObject(playerid,modelid, x, y, z, detrx, detry, detrz);
+			   	angle = angle+sep;
+           	}
+	       	else break;
+		}
+	}
+	Streamer_Update(playerid);
+    return 1;
+}
+
+/* Creates objects in a Spherical path */
+CreateDynamicObjectSphere(playerid,modelid,deg,Float:posx,Float:posy,Float:posz, Float:rx, Float:ry, Float:rz, Float:orx, Float:ory, Float:orz, Float:radius,Float:hsep,Float:vsep,bool:facecenter=false)
+{
+	if(facecenter == false)
+	{
+    	new Float:x, Float:y, Float:z;
+		for(new Float:lat = -90.0; lat <= 90.0; lat += vsep)
+		for(new Float:lon = -180.0, Float:angle = float(clamp(deg, 0, 360) - 180); lon <= angle; lon += hsep)
+    	{
+			x = radius * -(floatcos(lat, degrees) * floatsin(-lon, degrees));
+			y = radius * floatcos(lat, degrees) * floatcos(-lon, degrees);
+			z = radius * floatsin(lat, degrees);
+			
+			AddOBMObject(playerid, modelid, posx + x, posy + y, posz + z, rx, ry, rz + orz);
+		}
+	}
+	else
+	{
+    	new Float:x, Float:y, Float:z, Float:detrx, Float:detry, Float:detrz;
+		for(new Float:lat = -90.0; lat <= 90.0; lat += vsep)
+		for(new Float:lon = -180.0, Float:angle = float(clamp(deg, 0, 360) - 180); lon <= angle; lon += hsep)
+    	{
+			x = -(floatcos(lat, degrees) * floatsin(-lon, degrees));
+			y = floatcos(lat, degrees) * floatcos(-lon, degrees);
+			z = floatsin(lat, degrees);
+			
+			AttachPoint(x * radius, y * radius, z * radius, orx + 90 - lat, ory, orz + 180.0 - lon,
+				posx, posy, posz, rx, ry, rz,
+				x, y, z, detrx, detry, detrz
+			);
+			
+			AddOBMObject(playerid, modelid, posx + x, posy + y, posz + z, detrx, detry, detrz);
+		}
+	}
+	Streamer_Update(playerid);
+    return 1;
+}
+
+/*
+x = (a + b * deg) * floatcos(deg, degrees);
+y = (a + b * deg) * floatsin(deg, degrees);
+*/
+
+/* Creates objects in an Archimedean spiral path */
+CreateDynamicObjectSpiral(playerid,modelid,deg,Float:posx,Float:posy,Float:posz, Float:rx, Float:ry, Float:rz, Float:orx, Float:ory, Float:orz, Float:radius,Float:hsep,Float:vsep,bool:facecenter=false)
+{
+	if(facecenter == false)
+	{
+    	new Float:x, Float:y, Float:c,
+			Float:away, Float:around,
+			Float:thetaMax = ((deg + 180) / 360 * 2) * (3.141593),
+			Float:awayStep = radius / thetaMax;
+
+		for(new Float:theta = hsep / awayStep; theta <= thetaMax; ) 
+		{
+			away = awayStep * theta,
+			around = theta;
+			
+			x = floatcos(around) * away,
+			y = floatsin(around) * away,
+			
+			AddOBMObject(playerid,modelid, posx + x, posy + y, posz + c,orx,ory,rz+orz);
+		
+			//c += vsep;
+			c = vsep + floatsqroot(floatpower(floatcos(around) * away, 2) + (floatpower(floatsin(around) * away, 2)));
+			theta += hsep / away;
+		}
+	}
+	else
+	{
+    	new Float:x, Float:y, Float:z, Float:c,
+			Float:detrx,Float:detry,Float:detrz,
+			Float:away, Float:around,
+			Float:thetaMax = ((deg + 180) / 360 * 2) * (3.141593),
+			Float:awayStep = radius / thetaMax;
+
+		for(new Float:theta = hsep / awayStep; theta <= thetaMax; ) 
+		{
+			away = awayStep * theta,
+			around = theta;
+			
+			x = floatcos(around) * away,
+			y = floatsin(around) * away,
+		
+			// Translate to rotation
+			AttachPoint(
+				posx + x, posy + y, posz + c,			orx, ory, atan2(y, x) + orz,
+				posx, posy, posz,						rx, ry, rz,
+				x, y, z,								detrx, detry, detrz
+			);
+			AddOBMObject(playerid,modelid, x, y, z, detrx, detry, detrz);
+		
+			//c += vsep;
+			c = vsep + floatsqroot(floatpower(floatcos(around) * away, 2) + (floatpower(floatsin(around) * away, 2)));
+			theta += hsep / away;
+		}
+	}
+	Streamer_Update(playerid);
+    return 1;
+}
+
+/* Creates objects in a Helical path */
+CreateDynamicObjectHelix(playerid,modelid,deg,Float:posx,Float:posy,Float:posz, Float:rx, Float:ry, Float:rz, Float:orx, Float:ory, Float:orz, Float:radius,Float:hsep,Float:vsep,bool:facecenter=false)
+{
+	if(facecenter == false)
+	{
+    	new Float:angle = 0.0,Float:x = 0.0,Float:y = 0.0,Float:c = 0.0;
+   		for(new i = 0;i < deg;i += 1)
+   		{
+   		    if(angle <= float(deg))
+   		    {
+				x=posx+radius*floatcos(angle,degrees);
+				y=posy+radius*floatsin(angle,degrees);
+				AddOBMObject(playerid,modelid, x, y, posz+c,rx,ry,rz+orz);
+				c = c+vsep;
+				angle = angle+hsep;
+			}
+			else break;
+		}
+	}
+	else
+	{
+	    new Float:angle = 0.0,Float:x = 0.0,Float:y = 0.0,Float:z, Float:c = 0.0, Float:detrx,Float:detry,Float:detrz;
+   		for(new i = 0;i < deg;i += 1)
+   		{
+   		    if(angle <= float(deg))
+   		    {
+				x=posx+radius*floatcos(angle,degrees);
+				y=posy+radius*floatsin(angle,degrees);
+
+
+				// Translate to rotation
+                AttachPoint(x, y, posz+c,
+                    orx, ory, angle+180.0+orz,
+                    posx, posy, posz, rx, ry, rz,
+					x, y, z,
+                    detrx, detry, detrz
+				);
+                AddOBMObject(playerid,modelid, x, y, z, detrx, detry, detrz);
+
+				c=c+vsep;
+				angle = angle+hsep;
+			}
+			else break;
+		}
+	}
+	Streamer_Update(playerid);
+    return 1;
+}
+
+/* Creates objects in a Cylinderical path */
+CreateDynamicObjectCylinder(playerid,modelid,deg,Float:posx,Float:posy,Float:posz, Float:rx, Float:ry, Float:rz, Float:orx, Float:ory, Float:orz, Float:radius,Float:hsep,Float:vsep,parts,bool:facecenter=false)
+{
+	if(facecenter == false)
+	{
+     	new Float:angle=0.0,Float:x=0.0,Float:y=0.0,Float:c=0.0;
+    	for(new j=0;j<parts;j++)
+    	{
+    	    angle = 0.0,x = 0.0,y = 0.0;
+			for(new i=0;i<deg;i+=1)
+			{
+			    if(angle <= float(deg))
+			    {
+					x=posx+radius*floatcos(angle,degrees);
+					y=posy+radius*floatsin(angle,degrees);
+					AddOBMObject(playerid,modelid, x, y, posz+c,rx,ry,rz+orz);
+					angle=angle+hsep;
+				}
+				else break;
+			}
+			c=c+vsep;
+		}
+	}
+	else
+	{
+	    new Float:angle = 0.0,Float:x = 0.0,Float:y = 0.0,Float:z, Float:c = 0.0, Float:detrx,Float:detry,Float:detrz;
+    	for(new j=0;j<parts;j++)
+    	{
+    	    angle = 0.0,x = 0.0,y = 0.0;
+   			for(new i=0;i<deg;i+=1)
+   			{
+   			    if(angle <= float(deg))
+   			    {
+					x=posx+radius*floatcos(angle,degrees);
+					y=posy+radius*floatsin(angle,degrees);
+					
+					// Translate to rotation
+	                AttachPoint(x, y, posz+c,
+	                    orx, ory, angle+180.0+orz,
+	                    posx, posy, posz, rx, ry, rz,
+						x, y, z,
+	                    detrx, detry, detrz
+					);
+	                AddOBMObject(playerid,modelid, x, y, z, detrx, detry, detrz);
+					angle=angle+hsep;
+				}
+				else break;
+			}
+			c=c+vsep;
+		}
+	}
+	Streamer_Update(playerid);
+    return 1;
+}
+
+/* Creates objects in a Conical path */
+CreateDynamicObjectCone(playerid,modelid,deg,Float:posx,Float:posy,Float:posz, Float:rx, Float:ry, Float:rz, Float:orx, Float:ory, Float:orz, Float:radius,Float:hsep,Float:vsep,parts,bool:facecenter=false)
+{
+	if(facecenter == false)
+	{
+     	new Float:angle=0.0,Float:x=0.0,Float:y=0.0,Float:c=0.0;
+    	for(new j=0;j<parts;j++)
+    	{
+			/*|		No Radius
+			j4|			*
+			j3|		   * *
+			j2|		  *   *
+			j1|		 *     *
+			j0|		*       *
+			*///   Full Radius	
+    	    angle = 0.0,x = 0.0,y = 0.0;
+			new Float:rad = radius - ((radius / (parts - 1)) * j);
+			for(new i=0;i<deg;i+=1)
+			{
+			    if(angle <= float(deg))
+			    {
+					x=posx+rad*floatcos(angle,degrees);
+					y=posy+rad*floatsin(angle,degrees);
+					AddOBMObject(playerid,modelid, x, y, posz+c,rx,ry,rz+orz);
+					angle=angle+hsep;
+				}
+				else break;
+			}
+			c=c+vsep;
+		}
+	}
+	else
+	{
+	    new Float:angle = 0.0,Float:x = 0.0,Float:y = 0.0,Float:z, Float:c = 0.0, Float:detrx,Float:detry,Float:detrz;
+    	for(new j=0;j<parts;j++)
+    	{
+    	    angle = 0.0,x = 0.0,y = 0.0;
+			new Float:rad = radius - ((radius / (parts - 1)) * j);
+   			for(new i=0;i<deg;i+=1)
+   			{
+   			    if(angle <= float(deg))
+   			    {
+					x=posx+rad*floatcos(angle,degrees);
+					y=posy+rad*floatsin(angle,degrees);
+					
+					// Translate to rotation
+	                AttachPoint(x, y, posz+c,
+	                    orx, ory, angle+180.0+orz,
+	                    posx, posy, posz, rx, ry, rz,
+						x, y, z,
+	                    detrx, detry, detrz
+					);
+	                AddOBMObject(playerid,modelid, x, y, z, detrx, detry, detrz);
+					angle=angle+hsep;
+				}
+				else break;
+			}
+			c=c+vsep;
+		}
+	}
+	Streamer_Update(playerid);
+    return 1;
+}
+
+
+/* Creates objects in a reversed "6" type of path */
+CreateDynamicObjectWhirl(playerid,modelid,deg,Float:posx,Float:posy,Float:posz,Float:rx,Float:ry,Float:rz, Float:orx, Float:ory, Float:orz, Float:radius,Float:sep,bool:facecenter=false)
+{
+	if(facecenter == false)
+	{
+	    new Float:angle=0.0,Float:x=0.0,Float:y=0.0;
+    	for(new i=0;i<deg;i+=1)
+    	{
+        	if(angle <= float(deg))
+        	{
+				x=posx+(radius-i)*floatcos(angle,degrees);
+				y=posy+(radius-i)*floatsin(angle,degrees);
+				AddOBMObject(playerid,modelid, x, y, posz,rx,ry,rz+orz);
+				angle=angle+sep;
+			}
+			else break;
+		}
+	}
+	else
+	{
+    	new Float:angle = 0.0,Float:x = 0.0,Float:y = 0.0,Float:z,Float:detrx,Float:detry,Float:detrz;
+    	for(new i = 0;i < deg;i += 1)
+    	{
+        	if(angle <= float(deg))
+        	{
+				x=posx+(radius-i)*floatcos(angle,degrees);
+				y=posy+(radius-i)*floatsin(angle,degrees);
+
+				// Translate to rotation
+                AttachPoint(x, y, posz,
+                    orx, ory, angle+180.0+orz,
+                    posx, posy, posz, rx, ry, rz,
+					x, y, z,
+                    detrx, detry, detrz
+				);
+                AddOBMObject(playerid,modelid, x, y, z, detrx, detry, detrz);
+				angle=angle+sep;
+			}
+			else break;
+		}
+	}
+
+	Streamer_Update(playerid);
+    return 1;
+}
+
+/* Creates objects in a circular path within a circular pathed object */
+CreateDynamicCircleIn(playerid,modelid,deg,Float:posx,Float:posy,Float:posz,Float:rx,Float:ry,Float:rz, Float:orx, Float:ory, Float:orz, Float:radius,Float:sep,parts,bool:facecenter=false)
+{
+	if(facecenter == false)
+	{
+	    new Float:angle=0.0,Float:x=0.0,Float:y=0.0;
+    	for(new j=0;j<parts;j++)
+    	{
+        	angle=0.0,x=0.0,y=0.0;
+    		for(new i=0;i<deg;i+=1)
+    		{
+        		if(angle <= float(deg))
+        		{
+					x=posx+(radius)*floatcos(angle,degrees);
+					y=posy+(radius)*floatsin(angle,degrees);
+					AddOBMObject(playerid,modelid, x, y, posz,rx,ry,rz+orz);
+					angle=angle+sep;
+				}
+				else break;
+			}
+			radius-=2.5;
+		}
+	}
+	else
+	{
+		new Float:angle = 0.0,Float:x = 0.0,Float:y = 0.0,Float:z,Float:detrx,Float:detry,Float:detrz;
+    	for(new j=0;j<parts;j++)
+    	{
+        	angle=0.0,x=0.0,y=0.0;
+    		for(new i=0;i<deg;i+=1)
+    		{
+        		if(angle <= float(deg))
+        		{
+					x=posx+(radius)*floatcos(angle,degrees);
+					y=posy+(radius)*floatsin(angle,degrees);
+
+					// Translate to rotation
+	                AttachPoint(x, y, posz,
+	                    orx, ory, angle+180.0+orz,
+	                    posx, posy, posz, rx, ry, rz,
+						x, y, z,
+	                    detrx, detry, detrz
+					);
+	                AddOBMObject(playerid,modelid, x, y, z, detrx, detry, detrz);
+					angle=angle+sep;
+				}
+				else break;
+			}
+			radius-=2.5;
+		}
+	}
+	Streamer_Update(playerid);
+    return 1;
+}
+
+/* Creates objects in a circular path outside a circular pathed object */
+CreateDynamicCircleOut(playerid,modelid,deg,Float:posx,Float:posy,Float:posz,Float:rx,Float:ry,Float:rz, Float:orx, Float:ory, Float:orz, Float:radius,Float:sep,parts,bool:facecenter=false)
+{
+    if(facecenter == false)
+	{
+	    new Float:angle=0.0,Float:x=0.0,Float:y=0.0;
+    	for(new j=0;j<parts;j++)
+    	{
+        	angle=0.0,x=0.0,y=0.0;
+    		for(new i=0;i<deg;i+=1)
+    		{
+        		if(angle <= float(deg))
+        		{
+					x=posx+(radius)*floatcos(angle,degrees);
+					y=posy+(radius)*floatsin(angle,degrees);
+					AddOBMObject(playerid,modelid, x, y, posz,rx,ry,rz+orz);
+					angle=angle+sep;
+				}
+				else break;
+			}
+			radius+=2.5;
+		}
+	}
+	else
+	{
+    	new Float:angle = 0.0,Float:x = 0.0,Float:y = 0.0,Float:z,Float:detrx,Float:detry,Float:detrz;
+    	for(new j=0;j<parts;j++)
+    	{
+        	angle=0.0,x=0.0,y=0.0;
+    		for(new i=0;i<deg;i+=1)
+    		{
+        		if(angle <= float(deg))
+        		{
+					x=posx+(radius)*floatcos(angle,degrees);
+					y=posy+(radius)*floatsin(angle,degrees);
+					// Translate to rotation
+	                AttachPoint(x, y, posz,
+	                    orx, ory, angle+180.0+orz,
+	                    posx, posy, posz, rx, ry, rz,
+						x, y, z,
+	                    detrx, detry, detrz
+					);
+	                AddOBMObject(playerid,modelid, x, y, z, detrx, detry, detrz);
+					angle=angle+sep;
+				}
+				else break;
+			}
+			radius+=2.5;
+		}
+	}
+
+	Streamer_Update(playerid);
+    return 1;
+}
+
+//==========================================================================================
+
+/* Creates objects in a line */
+CreateDynamicLine(playerid, modelid, Float:sx, Float:sy, Float:sz, Float:ex, Float:ey, Float:ez, Float:orx, Float:ory, Float:orz, segs)
+{
+	new Float:dx = (ex - sx),
+		Float:dy = (ey - sy),
+		Float:dz = (ez - sz),
+		Float:d = VectorSize(dx, dy, dz);
+	
+	new Float:step = d / segs;
+	dx /= d; dy /= d; dz /= d;
+	
+	for(new Float:j; j <= segs * step; j += step)
+		AddOBMObject(
+			playerid, modelid,
+			sx + (j * dx), sy + (j * dy), sz + (j * dz),
+			orx, ory, orz
+		);
+
+	Streamer_Update(playerid);
+    return 1;
+}
+
+/* Creates objects in a line */
+CreateDynamicQuadrilateral(playerid, modelid, Float:cx, Float:cy, Float:cz, Float:rx, Float:ry, Float:rz, Float:orx, Float:ory, Float:orz, Float:length, Float:width, lsegs, wsegs, bool:fill)
+{ 
+	length -= 1.0, width -= 1.0, 
+	lsegs -= 1, wsegs -= 1;
+	
+	new Float:sx = cx - (length / 2.0),		Float:sy = cy - (width / 2.0),
+		Float:ex = cx + (length / 2.0),		Float:ey = cy + (width / 2.0),
+		Float:dx = (ex - sx),				Float:dy = (ey - sy),
+		Float:lstep = dx / lsegs,			Float:wstep = dy / wsegs;
+
+	new Float:nx, Float:ny, Float:nz, Float:nrx, Float:nry, Float:nrz;
+	
+	for(new Float:x, Float:mx = lsegs * lstep; x <= mx; x += lstep) {
+		for(new Float:y, Float:my = wsegs * wstep; y <= my; y += wstep) {
+			if(fill || (x == 0.0 || y == 0.0 || x == mx || y == my)) {
+				AttachPoint(
+					sx + x, sy + y, cz, orx, ory, orz,
+					cx, cy, cz, rx, ry, rz,
+					nx, ny, nz, nrx, nry, nrz
+				);
+				AddOBMObject(playerid, modelid, nx, ny, nz, nrx, nry, nrz);
+			}
+		}
+	}
+	return 1;
+}
+
+/* Creates objects in a line */
+CreateDynamicPrism(playerid, modelid, Float:cx, Float:cy, Float:cz, Float:rx, Float:ry, Float:rz, Float:orx, Float:ory, Float:orz, Float:length, Float:width, Float:height, lsegs, wsegs, hsegs, bool:fill)
+{ 
+	length -= 1.0, width -= 1.0, 
+	lsegs -= 1, wsegs -= 1;
+	
+	new Float:sx = cx - (length / 2.0),		Float:sy = cy - (width / 2.0),		Float:sz = cz - (height / 2.0),
+		Float:ex = cx + (length / 2.0),		Float:ey = cy + (width / 2.0),		Float:ez = cz + (height / 2.0),
+		Float:dx = (ex - sx),				Float:dy = (ey - sy),				Float:dz = (ez - sz),
+		Float:lstep = dx / lsegs,			Float:wstep = dy / wsegs,			Float:hstep = dz / hsegs;
+
+	new Float:nx, Float:ny, Float:nz, Float:nrx, Float:nry, Float:nrz;
+	
+	for(new Float:x, Float:mx = lsegs * lstep; x <= mx; x += lstep) {
+		for(new Float:y, Float:my = wsegs * wstep; y <= my; y += wstep) {
+			for(new Float:z, Float:mz = hsegs * hstep; z <= mz; z += hstep) {
+				if(fill || (x == 0.0 || y == 0.0 || z == 0.0 || x == mx || y == my || z == mz)) {
+					AttachPoint(
+						sx + x, sy + y, sy + y, orx, ory, orz,
+						cx, cy, cz, rx, ry, rz,
+						nx, ny, nz, nrx, nry, nrz
+					);
+					AddOBMObject(playerid, modelid, nx, ny, nz, nrx, nry, nrz);
+				}
+			}
+		}
+	}
+	return 1;
+}
+
+/* Creates objects in a line */
+/*CreateDynamicPrism(playerid, modelid,
+	Float:cx, Float:cy, Float:cz,
+	Float:l, Float:w, Float:h,
+	Float:rx, Float:ry, Float:rz,
+	Float:orz, Float:ory, Float:orz,
+	segs, bool:fill)
+{
+
+	const
+		Float:halve = l / 2.0,
+		Float:d = VectorSize(l, w, h),
+		Float:step = d / segs;
+	new
+		Float:sx = cx - halve,
+		Float:sy = cy - halve,
+		Float:sz = cz - halve;
+	//	Float:ex = cx + halve,
+	//	Float:ey = cy + halve,
+	//	Float:ez = cz + halve;
+
+	l /= d; w /= d; h /= d;
+	
+	for(new Float:j; j <= segs * step; j += step)
+		AddOBMObject(
+			playerid, modelid,
+			sx + (j * l), sy + (j * w), sz + (j * h),
+			orx, ory, orz
+		);
+
+	Streamer_Update(playerid);
+    return 1;
+}*/
+
+//==========================================================================================

+ 1395 - 0
Texture-Studio-master/filterscripts/tstudio/obmedit.pwn

@@ -0,0 +1,1395 @@
+
+#define         OBM_NONE        0
+
+//ROUND
+#define         OBM_CIRCLE      1
+#define         OBM_SPHERE      2
+#define         OBM_SPIRAL      3
+#define         OBM_HELIX		4
+#define         OBM_CLYINDER    5
+#define         OBM_CONE		6
+#define         OBM_WHIRL       7
+#define         OBM_CIRCLEIN    8
+#define         OBM_CIRCLEOUT   9
+//NO ROUND
+#define			OBM_LINE		10
+#define			OBM_RECTANGLE	11
+#define			OBM_RECTPRISM	12
+
+#define         OBME_ORIGIN     0
+#define         OMBE_ORIENT     1
+
+static const OBMTypes[][] = {
+	"Change This!",
+	
+	//ROUND
+	"Objectmetry Circle",
+	"Objectmetry Sphere",
+	"Objectmetry Spiral",
+	"Objectmetry Helix",
+	"Objectmetry Cylinder",
+	"Objectmetry Cone",
+	"Objectmetry Whirl",
+	"Objectmetry Circle In",
+	"Objectmetry Circle Out",
+	
+	//NOT ROUND
+	"Objectmetry Line",
+	"Objectmetry Rectangle",
+	"Objectmetry Prism"
+};
+
+static const FaceCenterOnOff[][] = { "True", "False" };
+
+static OBMObject[MAX_PLAYERS];
+
+enum pOBMINFO
+{
+	pOBMType,
+	pOBMModel,
+	bool:pOBMfacecenter,
+	bool:OriginSet,
+	Float:pOBMOriginX, Float:pOBMOriginY, Float:pOBMOriginZ,
+	Float:pOBMOriginRX, Float:pOBMOriginRY, Float:pOBMOriginRZ,
+	Float:pOBMOrientationRX, Float:pOBMOrientationRY, Float:pOBMOrientationRZ,
+	
+	//Round
+	pOBMParts,
+	pOBMDegrees,
+	Float:pOBMRadius,
+	Float:pOBMhsep, //degrees
+	Float:pOBMvsep, //degrees
+
+	//Not Round
+	Float:pOBMEndX, Float:pOBMEndY, Float:pOBMEndZ,
+	Float:pOBMLength, Float:pOBMWidth, Float:pOBMHeight,
+	pOBMLSegs, pOBMWSegs, pOBMHSegs,
+	bool:pOBMFill
+}
+
+static OBMData[MAX_PLAYERS][pOBMINFO];
+static Float:OBMOriginSave[MAX_PLAYERS][6];
+static Float:OBMOrientationSave[MAX_PLAYERS][3];
+static OBMEditMode[MAX_PLAYERS];
+
+public OnFilterScriptInit()
+{
+	for(new i = 0; i < MAX_PLAYERS; i++)
+	{
+	    OBMData[i][pOBMParts] = 10;
+	    OBMData[i][pOBMDegrees] = 360;
+	}
+
+	#if defined OE_OnFilterScriptInit
+		OE_OnFilterScriptInit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptInit
+	#undef OnFilterScriptInit
+#else
+	#define _ALS_OnFilterScriptInit
+#endif
+#define OnFilterScriptInit OE_OnFilterScriptInit
+#if defined OE_OnFilterScriptInit
+	forward OE_OnFilterScriptInit();
+#endif
+
+public OnPlayerDisconnect(playerid, reason)
+{
+    ResetOBMValues(playerid);
+
+	#if defined OE_OnPlayerDisconnect
+		OE_OnPlayerDisconnect(playerid, reason);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerDisconnect
+	#undef OnPlayerDisconnect
+#else
+	#define _ALS_OnPlayerDisconnect
+#endif
+#define OnPlayerDisconnect OE_OnPlayerDisconnect
+#if defined OE_OnPlayerDisconnect
+	forward OE_OnPlayerDisconnect(playerid, reason);
+#endif
+
+YCMD:obmedit(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Create an \"objectmetry\" masterpiece.");
+		return 1;
+	}
+
+   	NoEditingMode(playerid);
+
+    MapOpenCheck();
+
+    EditingMode[playerid] = true;
+    
+    SetEditMode(playerid, EDIT_MODE_OBM);
+    
+	UpdateOBM(playerid);
+    OBMEditor(playerid);
+
+	return 1;
+}
+
+static ResetOBMValues(playerid)
+{
+    OBMData[playerid][pOBMType] = 0;
+    OBMData[playerid][pOBMModel] = 0;
+    OBMData[playerid][pOBMParts] = 10;
+    OBMData[playerid][pOBMDegrees] = 360;
+    OBMData[playerid][pOBMOriginX] = 0.0;
+    OBMData[playerid][pOBMOriginY] = 0.0;
+    OBMData[playerid][pOBMOriginZ] = 0.0;
+    OBMData[playerid][pOBMOriginRX] = 0.0;
+    OBMData[playerid][pOBMOriginRY] = 0.0;
+    OBMData[playerid][pOBMOriginRZ] = 0.0;
+    OBMData[playerid][pOBMOrientationRX] = 0.0;
+    OBMData[playerid][pOBMOrientationRY] = 0.0;
+    OBMData[playerid][pOBMOrientationRZ] = 0.0;
+    OBMData[playerid][pOBMRadius] = 0.0;
+    OBMData[playerid][pOBMhsep] = 0.0;
+    OBMData[playerid][pOBMvsep] = 0.0;
+    OBMData[playerid][pOBMfacecenter] = false;
+    OBMData[playerid][OriginSet] = false;
+    OBMData[playerid][pOBMEndX] = 0.0;
+    OBMData[playerid][pOBMEndY] = 0.0;
+    OBMData[playerid][pOBMEndZ] = 0.0;
+    OBMData[playerid][pOBMLength] = 0.0;
+    OBMData[playerid][pOBMWidth] = 0.0;
+    OBMData[playerid][pOBMHeight] = 0.0;
+    OBMData[playerid][pOBMLSegs] = 0;
+    OBMData[playerid][pOBMWSegs] = 0;
+    OBMData[playerid][pOBMHSegs] = 0;
+    OBMData[playerid][pOBMFill] = false;
+	return 1;
+}
+
+static OBMEditor(playerid)
+{
+	new line[1024];
+	switch(OBMData[playerid][pOBMType])
+	{
+		case 1 .. 9:
+		{
+			inline OBMEdit(opid, odialogid, oresponse, olistitem, string:otext[])
+			{
+				#pragma unused olistitem, odialogid, opid, otext
+
+				if(oresponse)
+				{
+					switch(olistitem)
+					{
+						// Set type
+						case 0:
+						{
+							inline OBMType(tpid, tdialogid, tresponse, tlistitem, string:ttext[])
+							{
+								#pragma unused tlistitem, tdialogid, tpid, ttext
+								if(tresponse) OBMData[playerid][pOBMType] = tlistitem;
+								OBMEditor(playerid);
+								UpdateOBM(playerid);
+							}
+							line[0] = '\0';
+							for(new i = 0; i < sizeof(OBMTypes); i++) format(line, sizeof(line), "%s%s\n", line, OBMTypes[i]);
+							Dialog_ShowCallback(playerid, using inline OBMType, DIALOG_STYLE_LIST, "Texture Studio", line, "Ok", "Cancel");
+						}
+						
+						// Model
+						case 1:
+						{
+							inline OBMModel(mpid, mdialogid, mresponse, mlistitem, string:mtext[])
+							{
+								#pragma unused mlistitem, mdialogid, mpid, mtext
+								if(mresponse)
+								{
+									new model = strval(mtext);
+									OBMData[playerid][pOBMModel] = model;
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMModel, DIALOG_STYLE_INPUT, "Texture Studio", "Select a model", "Ok", "Cancel");
+						}
+						
+						// Parts
+						case 2:
+						{
+							inline OBMParts(ppid, pdialogid, presponse, plistitem, string:ptext[])
+							{
+								#pragma unused plistitem, pdialogid, ppid, ptext
+								if(presponse)
+								{
+									new parts = strval(ptext);
+									if(parts < 1) SendClientMessage(playerid, STEALTH_GREEN, "You must have at least 1 part");
+									else if(parts > 1000) SendClientMessage(playerid, STEALTH_GREEN, "Too many parts");
+									else
+									{
+										OBMData[playerid][pOBMParts] = parts;
+										UpdateOBM(playerid);
+									}
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMParts, DIALOG_STYLE_INPUT, "Texture Studio", "Number of parts", "Ok", "Cancel");
+						}
+						
+						// Degrees
+						case 3:
+						{
+							inline OBMDegrees(degpid, degdialogid, degresponse, deglistitem, string:degtext[])
+							{
+								#pragma unused deglistitem, degdialogid, degpid, degtext
+								if(degresponse)
+								{
+									new deg = strval(degtext);
+									if(deg < 1) SendClientMessage(playerid, STEALTH_GREEN, "You must have at least 1 degree");
+									else if(deg > 3600) SendClientMessage(playerid, STEALTH_GREEN, "Excessive degrees");
+									else
+									{
+										OBMData[playerid][pOBMDegrees] = deg;
+										UpdateOBM(playerid);
+									}
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMDegrees, DIALOG_STYLE_INPUT, "Texture Studio", "Degrees (Integer)", "Ok", "Cancel");
+						}
+
+
+						
+						// Horizontal seperation
+						case 4:
+						{
+							inline OBMHS(hpid, hdialogid, hresponse, hlistitem, string:htext[])
+							{
+								#pragma unused hlistitem, hdialogid, hpid, htext
+								if(hresponse)
+								{
+									OBMData[playerid][pOBMhsep] = floatstr(htext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMHS, DIALOG_STYLE_INPUT, "Texture Studio", "Horizontal Seperation or Seperation", "Ok", "Cancel");
+						}
+					
+						// Vertical Seperation
+						case 5:
+						{
+							inline OBMVS(vpid, vdialogid, vresponse, vlistitem, string:vtext[])
+							{
+								#pragma unused vlistitem, vdialogid, vpid, vtext
+								if(vresponse)
+								{
+									OBMData[playerid][pOBMvsep] = floatstr(vtext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMVS, DIALOG_STYLE_INPUT, "Texture Studio", "Veritcal Seperation", "Ok", "Cancel");
+						}
+						
+						// Face Center
+						case 6:
+						{
+							inline OBMFaceCenter(fpid, fdialogid, fresponse, flistitem, string:ftext[])
+							{
+								#pragma unused flistitem, fdialogid, fpid, ftext
+								if(fresponse) OBMData[playerid][pOBMfacecenter] = true;
+								else OBMData[playerid][pOBMfacecenter] = false;
+								UpdateOBM(playerid);
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMFaceCenter, DIALOG_STYLE_MSGBOX, "Texture Studio", "Face Center", "On", "Off");
+						}
+						
+						// OriginX
+						case 7:
+						{
+							inline OBMOX(oxpid, oxdialogid, oxresponse, oxlistitem, string:oxtext[])
+							{
+								#pragma unused oxlistitem, oxdialogid, oxpid, oxtext
+								if(oxresponse)
+								{
+									OBMData[playerid][pOBMOriginX] = floatstr(oxtext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMOX, DIALOG_STYLE_INPUT, "Texture Studio", "Origin X", "Ok", "Cancel");
+						}
+						
+						// OriginY
+						case 8:
+						{
+							inline OBMOY(oypid, oydialogid, oyresponse, oylistitem, string:oytext[])
+							{
+								#pragma unused oylistitem, oydialogid, oypid, oytext
+								if(oyresponse)
+								{
+									OBMData[playerid][pOBMOriginY] = floatstr(oytext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMOY, DIALOG_STYLE_INPUT, "Texture Studio", "Origin Y", "Ok", "Cancel");
+						}
+
+						// OriginZ
+						case 9:
+						{
+							inline OBMOZ(ozpid, ozdialogid, ozresponse, ozlistitem, string:oztext[])
+							{
+								#pragma unused ozlistitem, ozdialogid, ozpid, oztext
+								if(ozresponse)
+								{
+									OBMData[playerid][pOBMOriginZ] = floatstr(oztext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMOZ, DIALOG_STYLE_INPUT, "Texture Studio", "Origin Z", "Ok", "Cancel");
+						}
+
+						// OriginRX
+						case 10:
+						{
+							inline OBMORX(orxpid, orxdialogid, orxresponse, orxlistitem, string:orxtext[])
+							{
+								#pragma unused orxlistitem, orxdialogid, orxpid, orxtext
+								if(orxresponse)
+								{
+									OBMData[playerid][pOBMOriginRX] = floatstr(orxtext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMORX, DIALOG_STYLE_INPUT, "Texture Studio", "Origin RX", "Ok", "Cancel");
+
+
+						}
+
+						// OriginRY
+						case 11:
+						{
+							inline OBMORY(orypid, orydialogid, oryresponse, orylistitem, string:orytext[])
+							{
+								#pragma unused orylistitem, orydialogid, orypid, orytext
+								if(oryresponse)
+								{
+									OBMData[playerid][pOBMOriginRY] = floatstr(orytext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMORY, DIALOG_STYLE_INPUT, "Texture Studio", "Origin RY", "Ok", "Cancel");
+						}
+
+						// OriginRZ
+						case 12:
+						{
+							inline OBMORZ(orzpid, orzdialogid, orzresponse, orzlistitem, string:orztext[])
+							{
+								#pragma unused orzlistitem, orzdialogid, orzpid, orztext
+								if(orzresponse)
+								{
+									OBMData[playerid][pOBMOriginRZ] = floatstr(orztext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMORZ, DIALOG_STYLE_INPUT, "Texture Studio", "Origin RZ", "Ok", "Cancel");
+
+						}
+
+						// OrientationRX
+						case 13:
+						{
+							inline OBMORTRX(ortrxpid, ortrxdialogid, ortrxresponse, ortrxlistitem, string:ortrxtext[])
+							{
+								#pragma unused ortrxlistitem, ortrxdialogid, ortrxpid, ortrxtext
+								if(ortrxresponse)
+								{
+									OBMData[playerid][pOBMOrientationRX] = floatstr(ortrxtext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMORTRX, DIALOG_STYLE_INPUT, "Texture Studio", "Orientation RX", "Ok", "Cancel");
+						}
+
+						// OrientationRY
+						case 14:
+						{
+							inline OBMORTRY(ortrypid, ortrydialogid, ortryresponse, ortrylistitem, string:ortrytext[])
+							{
+								#pragma unused ortrylistitem, ortrydialogid, ortrypid, ortrytext
+								if(ortryresponse)
+								{
+									OBMData[playerid][pOBMOrientationRY] = floatstr(ortrytext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMORTRY, DIALOG_STYLE_INPUT, "Texture Studio", "Orientation RY", "Ok", "Cancel");
+						}
+
+						// OrientationRZ
+						case 15:
+						{
+							inline OBMORTRZ(ortrzpid, ortrzdialogid, ortrzresponse, ortrzlistitem, string:ortrztext[])
+							{
+								#pragma unused ortrzlistitem, ortrzdialogid, ortrzpid, ortrztext
+								if(ortrzresponse)
+								{
+									OBMData[playerid][pOBMOrientationRZ] = floatstr(ortrztext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMORTRZ, DIALOG_STYLE_INPUT, "Texture Studio", "Orientation RZ", "Ok", "Cancel");
+						}
+
+						// Radius
+						case 16:
+						{
+							inline OBMRadius(rpid, rdialogid, rresponse, rlistitem, string:rtext[])
+							{
+								#pragma unused rlistitem, rdialogid, rpid, rtext
+								if(rresponse)
+								{
+									OBMData[playerid][pOBMRadius] = floatstr(rtext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMRadius, DIALOG_STYLE_INPUT, "Texture Studio", "Radius", "Ok", "Cancel");
+						}
+
+
+						// Set origin
+						case 17:
+						{
+							if(!OBMData[playerid][OriginSet])
+							{
+								new Float:x, Float:y, Float:z, Float:fa;
+								GetPosFaInFrontOfPlayer(playerid, 2.0, x, y, z, fa);
+								OBMObject[playerid] = CreateDynamicObject(1974, x, y, z, 0.0, 0.0, 0.0, -1, -1, playerid);
+							}
+							else OBMObject[playerid] = CreateDynamicObject(1974, OBMData[playerid][pOBMOriginX], OBMData[playerid][pOBMOriginY], OBMData[playerid][pOBMOriginZ], OBMData[playerid][pOBMOriginRX], OBMData[playerid][pOBMOriginRY], OBMData[playerid][pOBMOriginRZ], -1, -1, playerid);
+
+							OBMOriginSave[playerid][0] = OBMData[playerid][pOBMOriginX];
+							OBMOriginSave[playerid][1] = OBMData[playerid][pOBMOriginY];
+							OBMOriginSave[playerid][2] = OBMData[playerid][pOBMOriginZ];
+							OBMOriginSave[playerid][3] = OBMData[playerid][pOBMOriginRX];
+							OBMOriginSave[playerid][4] = OBMData[playerid][pOBMOriginRY];
+							OBMOriginSave[playerid][5] = OBMData[playerid][pOBMOriginRZ];
+
+							Streamer_SetFloatData(STREAMER_TYPE_OBJECT, OBMObject[playerid], E_STREAMER_DRAW_DISTANCE, 3000.0);
+
+							SetDynamicObjectMaterial(OBMObject[playerid], 0, 10765, "airportgnd_sfse", "white", -256);
+
+							Streamer_Update(playerid);
+
+							EditDynamicObject(playerid, OBMObject[playerid]);
+
+							OBMEditMode[playerid] = OBME_ORIGIN;
+
+							SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+							SendClientMessage(playerid, STEALTH_GREEN, "Editing your objectmetry origin");
+						}
+						
+						// Set rotation orientation
+						case 18:
+						{
+							if(!OBMData[playerid][OriginSet]) 
+							{
+								SendClientMessage(playerid, STEALTH_YELLOW, "Please set your origin first");
+								OBMEditor(playerid);
+							}
+							else
+							{
+								OBMObject[playerid] = CreateDynamicObject(1974, OBMData[playerid][pOBMOriginX], OBMData[playerid][pOBMOriginY], OBMData[playerid][pOBMOriginZ], OBMData[playerid][pOBMOrientationRX], OBMData[playerid][pOBMOrientationRY], OBMData[playerid][pOBMOrientationRZ], -1, -1, playerid);
+
+								OBMOrientationSave[playerid][0] = OBMData[playerid][pOBMOrientationRX];
+								OBMOrientationSave[playerid][1] = OBMData[playerid][pOBMOrientationRY];
+								OBMOrientationSave[playerid][2] = OBMData[playerid][pOBMOrientationRZ];
+
+								Streamer_SetFloatData(STREAMER_TYPE_OBJECT, OBMObject[playerid], E_STREAMER_DRAW_DISTANCE, 3000.0);
+
+								SetDynamicObjectMaterial(OBMObject[playerid], 0, 10765, "airportgnd_sfse", "white", -256);
+
+								Streamer_Update(playerid);
+
+								EditDynamicObject(playerid, OBMObject[playerid]);
+
+								OBMEditMode[playerid] = OMBE_ORIENT;
+
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_GREEN, "Editing your rotation orientation");
+							}
+						}
+
+						// Apply objects to map
+						case 19:
+						{
+							inline OBMApply(apid, adialogid, aresponse, alistitem, string:atext[])
+							{
+								#pragma unused alistitem, adialogid, apid, atext
+								if(aresponse)
+								{
+									ApplyOBM(playerid);
+									SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+									SendClientMessage(playerid, STEALTH_GREEN, "Current objectmetry applied to your map");
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMApply, DIALOG_STYLE_MSGBOX, "Texture Studio", "Apply this objectmetry to your map?", "On", "Off");
+						}
+
+						// Reset values
+						case 20:
+						{
+							inline OBMReset(epid, edialogid, eresponse, elistitem, string:etext[])
+							{
+								#pragma unused elistitem, edialogid, epid, etext
+								if(eresponse)
+								{
+									ResetOBMValues(playerid);
+									ClearOBMStack(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMReset, DIALOG_STYLE_MSGBOX, "Texture Studio", "Reset all values?", "Ok", "Cancel");
+						}
+						
+						// Hide object stack
+						case 21:
+						{
+							inline OBMHideStack(hpid, hdialogid, hresponse, hlistitem, string:htext[])
+							{
+								#pragma unused hlistitem, hdialogid, hpid, htext
+								if(hresponse) ClearOBMStack(playerid);
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMHideStack, DIALOG_STYLE_MSGBOX, "Texture Studio", "Hide objectmetry?", "Ok", "Cancel");
+						}
+					}
+				}
+				else
+				{
+					EditingMode[playerid] = false;
+					SetEditMode(playerid, EDIT_MODE_NONE);
+				}
+			}
+			
+			format(line, sizeof(line), "Set Type: %s\nModel: %i\nParts: %i\nDegrees: %i\nHorizontal Seperation: %f\nVertical Seperation: %f\nFace Center: %s\nOriginX: %f\nOriginY: %f\nOriginZ: %f\nOriginRX: %f\nOriginRY: %f\nOriginRZ: %f\nOrientationRX: %f\nOrientationRY: %f\nOrientationRZ: %f\nRadius: %f\nSet Origin\nSet Rotation Orientation\nApply Objects to map\nReset Values\nHide Objects",
+				OBMTypes[OBMData[playerid][pOBMType]],
+				OBMData[playerid][pOBMModel],
+				OBMData[playerid][pOBMParts],
+				OBMData[playerid][pOBMDegrees],
+				OBMData[playerid][pOBMhsep],
+				OBMData[playerid][pOBMvsep],
+				OBMData[playerid][pOBMfacecenter] ? FaceCenterOnOff[0] : FaceCenterOnOff[1],
+				OBMData[playerid][pOBMOriginX],
+				OBMData[playerid][pOBMOriginY],
+				OBMData[playerid][pOBMOriginZ],
+				OBMData[playerid][pOBMOriginRX],
+				OBMData[playerid][pOBMOriginRY],
+				OBMData[playerid][pOBMOriginRZ],
+				OBMData[playerid][pOBMOrientationRX],
+				OBMData[playerid][pOBMOrientationRY],
+				OBMData[playerid][pOBMOrientationRZ],
+				OBMData[playerid][pOBMRadius]
+			);
+			
+			Dialog_ShowCallback(playerid, using inline OBMEdit, DIALOG_STYLE_LIST, "Texture Studio", line, "Ok", "Cancel");
+		}
+		case 10 .. 100: {
+			inline OBMEdit(opid, odialogid, oresponse, olistitem, string:otext[])
+			{
+				#pragma unused olistitem, odialogid, opid, otext
+
+				if(oresponse)
+				{
+					switch(olistitem)
+					{
+						// Set type
+						case 0 :
+						{
+							inline OBMType(tpid, tdialogid, tresponse, tlistitem, string:ttext[])
+							{
+								#pragma unused tlistitem, tdialogid, tpid, ttext
+								if(tresponse) OBMData[playerid][pOBMType] = tlistitem;
+								OBMEditor(playerid);
+								UpdateOBM(playerid);
+							}
+							line[0] = '\0';
+							for(new i = 0; i < sizeof(OBMTypes); i++) format(line, sizeof(line), "%s%s\n", line, OBMTypes[i]);
+							Dialog_ShowCallback(playerid, using inline OBMType, DIALOG_STYLE_LIST, "Texture Studio", line, "Ok", "Cancel");
+						}
+						
+						// Model
+						case 1 :
+						{
+							inline OBMModel(mpid, mdialogid, mresponse, mlistitem, string:mtext[])
+							{
+								#pragma unused mlistitem, mdialogid, mpid, mtext
+								if(mresponse)
+								{
+									new model = strval(mtext);
+									OBMData[playerid][pOBMModel] = model;
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMModel, DIALOG_STYLE_INPUT, "Texture Studio", "Select a model", "Ok", "Cancel");
+						}
+						
+						// Face Center
+						case 2 :
+						{
+							inline OBMFaceCenter(fpid, fdialogid, fresponse, flistitem, string:ftext[])
+							{
+								#pragma unused flistitem, fdialogid, fpid, ftext
+								if(fresponse) OBMData[playerid][pOBMfacecenter] = true;
+								else OBMData[playerid][pOBMfacecenter] = false;
+								UpdateOBM(playerid);
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMFaceCenter, DIALOG_STYLE_MSGBOX, "Texture Studio", "Face Center", "On", "Off");
+						}
+						
+						// Fill Center
+						case 3 :
+						{
+							inline OBMFaceCenter(fpid, fdialogid, fresponse, flistitem, string:ftext[])
+							{
+								#pragma unused flistitem, fdialogid, fpid, ftext
+								if(fresponse) OBMData[playerid][pOBMFill] = true;
+								else OBMData[playerid][pOBMFill] = false;
+								UpdateOBM(playerid);
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMFaceCenter, DIALOG_STYLE_MSGBOX, "Texture Studio", "Face Center", "On", "Off");
+						}
+						
+						// OriginX
+						case 4 :
+						{
+							inline OBMOX(oxpid, oxdialogid, oxresponse, oxlistitem, string:oxtext[])
+							{
+								#pragma unused oxlistitem, oxdialogid, oxpid, oxtext
+								if(oxresponse)
+								{
+									OBMData[playerid][pOBMOriginX] = floatstr(oxtext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMOX, DIALOG_STYLE_INPUT, "Texture Studio", "Origin X", "Ok", "Cancel");
+						}
+						
+						// OriginY
+						case 5 :
+						{
+							inline OBMOY(oypid, oydialogid, oyresponse, oylistitem, string:oytext[])
+							{
+								#pragma unused oylistitem, oydialogid, oypid, oytext
+								if(oyresponse)
+								{
+									OBMData[playerid][pOBMOriginY] = floatstr(oytext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMOY, DIALOG_STYLE_INPUT, "Texture Studio", "Origin Y", "Ok", "Cancel");
+						}
+
+						// OriginZ
+						case 6 :
+						{
+							inline OBMOZ(ozpid, ozdialogid, ozresponse, ozlistitem, string:oztext[])
+							{
+								#pragma unused ozlistitem, ozdialogid, ozpid, oztext
+								if(ozresponse)
+								{
+									OBMData[playerid][pOBMOriginZ] = floatstr(oztext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMOZ, DIALOG_STYLE_INPUT, "Texture Studio", "Origin Z", "Ok", "Cancel");
+						}
+						
+						// EndX
+						case 7 :
+						{
+							inline OBMOX(oxpid, oxdialogid, oxresponse, oxlistitem, string:oxtext[])
+							{
+								#pragma unused oxlistitem, oxdialogid, oxpid, oxtext
+								if(oxresponse)
+								{
+									OBMData[playerid][pOBMEndX] = floatstr(oxtext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMOX, DIALOG_STYLE_INPUT, "Texture Studio", "End X", "Ok", "Cancel");
+						}
+						
+						// EndY
+						case 8 :
+						{
+							inline OBMOY(oypid, oydialogid, oyresponse, oylistitem, string:oytext[])
+							{
+								#pragma unused oylistitem, oydialogid, oypid, oytext
+								if(oyresponse)
+								{
+									OBMData[playerid][pOBMEndY] = floatstr(oytext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMOY, DIALOG_STYLE_INPUT, "Texture Studio", "End Y", "Ok", "Cancel");
+						}
+
+						// EndZ
+						case 9 :
+						{
+							inline OBMOZ(ozpid, ozdialogid, ozresponse, ozlistitem, string:oztext[])
+							{
+								#pragma unused ozlistitem, ozdialogid, ozpid, oztext
+								if(ozresponse)
+								{
+									OBMData[playerid][pOBMEndZ] = floatstr(oztext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMOZ, DIALOG_STYLE_INPUT, "Texture Studio", "End Z", "Ok", "Cancel");
+						}
+
+						// OriginRX
+						case 10 :
+						{
+							inline OBMORX(orxpid, orxdialogid, orxresponse, orxlistitem, string:orxtext[])
+							{
+								#pragma unused orxlistitem, orxdialogid, orxpid, orxtext
+								if(orxresponse)
+								{
+									OBMData[playerid][pOBMOriginRX] = floatstr(orxtext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMORX, DIALOG_STYLE_INPUT, "Texture Studio", "Origin RX", "Ok", "Cancel");
+
+
+						}
+
+						// OriginRY
+						case 11:
+						{
+							inline OBMORY(orypid, orydialogid, oryresponse, orylistitem, string:orytext[])
+							{
+								#pragma unused orylistitem, orydialogid, orypid, orytext
+								if(oryresponse)
+								{
+									OBMData[playerid][pOBMOriginRY] = floatstr(orytext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMORY, DIALOG_STYLE_INPUT, "Texture Studio", "Origin RY", "Ok", "Cancel");
+						}
+
+						// OriginRZ
+						case 12:
+						{
+							inline OBMORZ(orzpid, orzdialogid, orzresponse, orzlistitem, string:orztext[])
+							{
+								#pragma unused orzlistitem, orzdialogid, orzpid, orztext
+								if(orzresponse)
+								{
+									OBMData[playerid][pOBMOriginRZ] = floatstr(orztext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMORZ, DIALOG_STYLE_INPUT, "Texture Studio", "Origin RZ", "Ok", "Cancel");
+
+						}
+
+						// OrientationRX
+						case 13:
+						{
+							inline OBMORTRX(ortrxpid, ortrxdialogid, ortrxresponse, ortrxlistitem, string:ortrxtext[])
+							{
+								#pragma unused ortrxlistitem, ortrxdialogid, ortrxpid, ortrxtext
+								if(ortrxresponse)
+								{
+									OBMData[playerid][pOBMOrientationRX] = floatstr(ortrxtext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMORTRX, DIALOG_STYLE_INPUT, "Texture Studio", "Orientation RX", "Ok", "Cancel");
+						}
+
+						// OrientationRY
+						case 14:
+						{
+							inline OBMORTRY(ortrypid, ortrydialogid, ortryresponse, ortrylistitem, string:ortrytext[])
+							{
+								#pragma unused ortrylistitem, ortrydialogid, ortrypid, ortrytext
+								if(ortryresponse)
+								{
+									OBMData[playerid][pOBMOrientationRY] = floatstr(ortrytext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMORTRY, DIALOG_STYLE_INPUT, "Texture Studio", "Orientation RY", "Ok", "Cancel");
+						}
+
+						// OrientationRZ
+						case 15:
+						{
+							inline OBMORTRZ(ortrzpid, ortrzdialogid, ortrzresponse, ortrzlistitem, string:ortrztext[])
+							{
+								#pragma unused ortrzlistitem, ortrzdialogid, ortrzpid, ortrztext
+								if(ortrzresponse)
+								{
+									OBMData[playerid][pOBMOrientationRZ] = floatstr(ortrztext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMORTRZ, DIALOG_STYLE_INPUT, "Texture Studio", "Orientation RZ", "Ok", "Cancel");
+						}
+						
+						// Length
+						case 16:
+						{
+							inline OBMHS(hpid, hdialogid, hresponse, hlistitem, string:htext[])
+							{
+								#pragma unused hlistitem, hdialogid, hpid, htext
+								if(hresponse)
+								{
+									OBMData[playerid][pOBMLength] = floatstr(htext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMHS, DIALOG_STYLE_INPUT, "Texture Studio", "Dimension", "Ok", "Cancel");
+						}
+						
+						// Width
+						case 17:
+						{
+							inline OBMHS(hpid, hdialogid, hresponse, hlistitem, string:htext[])
+							{
+								#pragma unused hlistitem, hdialogid, hpid, htext
+								if(hresponse)
+								{
+									OBMData[playerid][pOBMWidth] = floatstr(htext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMHS, DIALOG_STYLE_INPUT, "Texture Studio", "Dimension", "Ok", "Cancel");
+						}
+						
+						// Height
+						case 18:
+						{
+							inline OBMHS(hpid, hdialogid, hresponse, hlistitem, string:htext[])
+							{
+								#pragma unused hlistitem, hdialogid, hpid, htext
+								if(hresponse)
+								{
+									OBMData[playerid][pOBMHeight] = floatstr(htext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMHS, DIALOG_STYLE_INPUT, "Texture Studio", "Dimension", "Ok", "Cancel");
+						}
+						
+						// Length Segments
+						case 19:
+						{
+							inline OBMHS(hpid, hdialogid, hresponse, hlistitem, string:htext[])
+							{
+								#pragma unused hlistitem, hdialogid, hpid, htext
+								if(hresponse)
+								{
+									OBMData[playerid][pOBMLSegs] = strval(htext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMHS, DIALOG_STYLE_INPUT, "Texture Studio", "Dimension Segments", "Ok", "Cancel");
+						}
+						
+						// Width Segments
+						case 20:
+						{
+							inline OBMHS(hpid, hdialogid, hresponse, hlistitem, string:htext[])
+							{
+								#pragma unused hlistitem, hdialogid, hpid, htext
+								if(hresponse)
+								{
+									OBMData[playerid][pOBMWSegs] = strval(htext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMHS, DIALOG_STYLE_INPUT, "Texture Studio", "Dimension Segments", "Ok", "Cancel");
+						}
+						
+						// Height Segments
+						case 21:
+						{
+							inline OBMHS(hpid, hdialogid, hresponse, hlistitem, string:htext[])
+							{
+								#pragma unused hlistitem, hdialogid, hpid, htext
+								if(hresponse)
+								{
+									OBMData[playerid][pOBMHSegs] = strval(htext);
+									UpdateOBM(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMHS, DIALOG_STYLE_INPUT, "Texture Studio", "Dimension Segments", "Ok", "Cancel");
+						}
+
+
+						// Set origin
+						case 22:
+						{
+							if(!OBMData[playerid][OriginSet])
+							{
+								new Float:x, Float:y, Float:z, Float:fa;
+								GetPosFaInFrontOfPlayer(playerid, 2.0, x, y, z, fa);
+								OBMObject[playerid] = CreateDynamicObject(1974, x, y, z, 0.0, 0.0, 0.0, -1, -1, playerid);
+							}
+							else OBMObject[playerid] = CreateDynamicObject(1974, OBMData[playerid][pOBMOriginX], OBMData[playerid][pOBMOriginY], OBMData[playerid][pOBMOriginZ], OBMData[playerid][pOBMOriginRX], OBMData[playerid][pOBMOriginRY], OBMData[playerid][pOBMOriginRZ], -1, -1, playerid);
+
+							OBMOriginSave[playerid][0] = OBMData[playerid][pOBMOriginX];
+							OBMOriginSave[playerid][1] = OBMData[playerid][pOBMOriginY];
+							OBMOriginSave[playerid][2] = OBMData[playerid][pOBMOriginZ];
+							OBMOriginSave[playerid][3] = OBMData[playerid][pOBMOriginRX];
+							OBMOriginSave[playerid][4] = OBMData[playerid][pOBMOriginRY];
+							OBMOriginSave[playerid][5] = OBMData[playerid][pOBMOriginRZ];
+
+							Streamer_SetFloatData(STREAMER_TYPE_OBJECT, OBMObject[playerid], E_STREAMER_DRAW_DISTANCE, 3000.0);
+
+							SetDynamicObjectMaterial(OBMObject[playerid], 0, 10765, "airportgnd_sfse", "white", -256);
+
+							Streamer_Update(playerid);
+
+							EditDynamicObject(playerid, OBMObject[playerid]);
+
+							OBMEditMode[playerid] = OBME_ORIGIN;
+
+							SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+							SendClientMessage(playerid, STEALTH_GREEN, "Editing your objectmetry origin");
+						}
+						
+						// Set rotation orientation
+						case 23:
+						{
+							if(!OBMData[playerid][OriginSet]) 
+							{
+								SendClientMessage(playerid, STEALTH_YELLOW, "Please set your origin first");
+								OBMEditor(playerid);
+							}
+							else
+							{
+								OBMObject[playerid] = CreateDynamicObject(1974, OBMData[playerid][pOBMOriginX], OBMData[playerid][pOBMOriginY], OBMData[playerid][pOBMOriginZ], OBMData[playerid][pOBMOrientationRX], OBMData[playerid][pOBMOrientationRY], OBMData[playerid][pOBMOrientationRZ], -1, -1, playerid);
+
+								OBMOrientationSave[playerid][0] = OBMData[playerid][pOBMOrientationRX];
+								OBMOrientationSave[playerid][1] = OBMData[playerid][pOBMOrientationRY];
+								OBMOrientationSave[playerid][2] = OBMData[playerid][pOBMOrientationRZ];
+
+								Streamer_SetFloatData(STREAMER_TYPE_OBJECT, OBMObject[playerid], E_STREAMER_DRAW_DISTANCE, 3000.0);
+
+								SetDynamicObjectMaterial(OBMObject[playerid], 0, 10765, "airportgnd_sfse", "white", -256);
+
+								Streamer_Update(playerid);
+
+								EditDynamicObject(playerid, OBMObject[playerid]);
+
+								OBMEditMode[playerid] = OMBE_ORIENT;
+
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_GREEN, "Editing your rotation orientation");
+							}
+						}
+
+						// Apply objects to map
+						case 24:
+						{
+							inline OBMApply(apid, adialogid, aresponse, alistitem, string:atext[])
+							{
+								#pragma unused alistitem, adialogid, apid, atext
+								if(aresponse)
+								{
+									ApplyOBM(playerid);
+									SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+									SendClientMessage(playerid, STEALTH_GREEN, "Current objectmetry applied to your map");
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMApply, DIALOG_STYLE_MSGBOX, "Texture Studio", "Apply this objectmetry to your map?", "On", "Off");
+						}
+
+						// Reset values
+						case 25:
+						{
+							inline OBMReset(epid, edialogid, eresponse, elistitem, string:etext[])
+							{
+								#pragma unused elistitem, edialogid, epid, etext
+								if(eresponse)
+								{
+									ResetOBMValues(playerid);
+									ClearOBMStack(playerid);
+								}
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMReset, DIALOG_STYLE_MSGBOX, "Texture Studio", "Reset all values?", "Ok", "Cancel");
+						}
+						
+						// Hide object stack
+						case 26:
+						{
+							inline OBMHideStack(hpid, hdialogid, hresponse, hlistitem, string:htext[])
+							{
+								#pragma unused hlistitem, hdialogid, hpid, htext
+								if(hresponse) ClearOBMStack(playerid);
+								OBMEditor(playerid);
+							}
+							Dialog_ShowCallback(playerid, using inline OBMHideStack, DIALOG_STYLE_MSGBOX, "Texture Studio", "Hide objectmetry?", "Ok", "Cancel");
+						}
+					}
+				}
+				else
+				{
+					EditingMode[playerid] = false;
+					SetEditMode(playerid, EDIT_MODE_NONE);
+				}
+			}
+			
+			format(line, sizeof(line), "Set Type: %s\nModel: %i\nFace Center: %s\nFill: %s\n\
+				OriginX: %f\nOriginY: %f\nOriginZ: %f\n\
+				EndX: %f\nEndY: %f\nEndZ: %f\n\
+				OriginRX: %f\nOriginRY: %f\nOriginRZ: %f\n\
+				OrientationRX: %f\nOrientationRY: %f\nOrientationRZ: %f\n\
+				Length: %f\nWidth: %f\nHeight: %f\n\
+				Length Segments: %i\nWidth Segments: %i\nHeight Segments: %i\n\
+				Set Origin\nSet Rotation Orientation\nApply Objects to map\nReset Values\nHide Objects",
+				OBMTypes[OBMData[playerid][pOBMType]],
+				OBMData[playerid][pOBMModel],
+				OBMData[playerid][pOBMfacecenter] ? FaceCenterOnOff[0] : FaceCenterOnOff[1],
+				OBMData[playerid][pOBMFill] ? FaceCenterOnOff[0] : FaceCenterOnOff[1],
+				OBMData[playerid][pOBMOriginX],
+				OBMData[playerid][pOBMOriginY],
+				OBMData[playerid][pOBMOriginZ],
+				OBMData[playerid][pOBMEndX],
+				OBMData[playerid][pOBMEndY],
+				OBMData[playerid][pOBMEndZ],
+				OBMData[playerid][pOBMOriginRX],
+				OBMData[playerid][pOBMOriginRY],
+				OBMData[playerid][pOBMOriginRZ],
+				OBMData[playerid][pOBMOrientationRX],
+				OBMData[playerid][pOBMOrientationRY],
+				OBMData[playerid][pOBMOrientationRZ],
+				OBMData[playerid][pOBMLength],
+				OBMData[playerid][pOBMWidth],
+				OBMData[playerid][pOBMHeight],
+				OBMData[playerid][pOBMLSegs],
+				OBMData[playerid][pOBMWSegs],
+				OBMData[playerid][pOBMHSegs]
+			);
+			
+			Dialog_ShowCallback(playerid, using inline OBMEdit, DIALOG_STYLE_LIST, "Texture Studio", line, "Ok", "Cancel");
+		}
+		default: {
+			inline OBMEdit(opid, odialogid, oresponse, olistitem, string:otext[])
+			{
+				#pragma unused olistitem, odialogid, opid, otext
+
+				if(oresponse && olistitem == 0)
+				{
+					inline OBMType(tpid, tdialogid, tresponse, tlistitem, string:ttext[])
+					{
+						#pragma unused tlistitem, tdialogid, tpid, ttext
+						if(tresponse) OBMData[playerid][pOBMType] = tlistitem;
+						OBMEditor(playerid);
+						UpdateOBM(playerid);
+					}
+					line[0] = '\0';
+					for(new i = 0; i < sizeof(OBMTypes); i++) format(line, sizeof(line), "%s%s\n", line, OBMTypes[i]);
+					Dialog_ShowCallback(playerid, using inline OBMType, DIALOG_STYLE_LIST, "Texture Studio", line, "Ok", "Cancel");
+				}
+			}
+			format(line, sizeof(line), "{FF0000}Set Type: %s", OBMTypes[OBMData[playerid][pOBMType]]);
+			
+			Dialog_ShowCallback(playerid, using inline OBMEdit, DIALOG_STYLE_LIST, "Texture Studio", line, "Ok", "Cancel");
+		}
+	}
+	
+	return 1;
+}
+
+static UpdateOBM(playerid)
+{
+	// Clear the stack
+    ClearOBMStack(playerid);
+
+	// Apply OBM settings
+	if(OBMData[playerid][pOBMModel] > 0)
+	{
+		switch(OBMData[playerid][pOBMType])
+		{
+	 		case OBM_NONE: { }
+		    case OBM_CIRCLE: { CreateDynamicObjectCircle(playerid,
+				OBMData[playerid][pOBMModel],
+				OBMData[playerid][pOBMDegrees],
+				OBMData[playerid][pOBMOriginX], OBMData[playerid][pOBMOriginY], OBMData[playerid][pOBMOriginZ],
+				OBMData[playerid][pOBMOriginRX], OBMData[playerid][pOBMOriginRY], OBMData[playerid][pOBMOriginRZ],
+				OBMData[playerid][pOBMOrientationRX], OBMData[playerid][pOBMOrientationRY], OBMData[playerid][pOBMOrientationRZ],
+				OBMData[playerid][pOBMRadius],
+				OBMData[playerid][pOBMhsep],
+				OBMData[playerid][pOBMfacecenter]
+			);	}
+
+
+		    case OBM_SPHERE: { CreateDynamicObjectSphere(playerid,
+				OBMData[playerid][pOBMModel],
+				OBMData[playerid][pOBMDegrees],
+				OBMData[playerid][pOBMOriginX], OBMData[playerid][pOBMOriginY], OBMData[playerid][pOBMOriginZ],
+				OBMData[playerid][pOBMOriginRX], OBMData[playerid][pOBMOriginRY], OBMData[playerid][pOBMOriginRZ],
+				OBMData[playerid][pOBMOrientationRX], OBMData[playerid][pOBMOrientationRY], OBMData[playerid][pOBMOrientationRZ],
+				OBMData[playerid][pOBMRadius],
+				OBMData[playerid][pOBMhsep],
+				OBMData[playerid][pOBMvsep],
+				OBMData[playerid][pOBMfacecenter]
+			);	}
+
+
+		    case OBM_SPIRAL: { CreateDynamicObjectSpiral(playerid,
+				OBMData[playerid][pOBMModel],
+				OBMData[playerid][pOBMDegrees],
+				OBMData[playerid][pOBMOriginX], OBMData[playerid][pOBMOriginY], OBMData[playerid][pOBMOriginZ],
+				OBMData[playerid][pOBMOriginRX], OBMData[playerid][pOBMOriginRY], OBMData[playerid][pOBMOriginRZ],
+				OBMData[playerid][pOBMOrientationRX], OBMData[playerid][pOBMOrientationRY], OBMData[playerid][pOBMOrientationRZ],
+				OBMData[playerid][pOBMRadius],
+				OBMData[playerid][pOBMhsep],
+				OBMData[playerid][pOBMvsep],
+				OBMData[playerid][pOBMfacecenter]
+			);	}
+
+
+		    case OBM_HELIX: { CreateDynamicObjectHelix(playerid,
+				OBMData[playerid][pOBMModel],
+				OBMData[playerid][pOBMDegrees],
+				OBMData[playerid][pOBMOriginX], OBMData[playerid][pOBMOriginY], OBMData[playerid][pOBMOriginZ],
+				OBMData[playerid][pOBMOriginRX], OBMData[playerid][pOBMOriginRY], OBMData[playerid][pOBMOriginRZ],
+				OBMData[playerid][pOBMOrientationRX], OBMData[playerid][pOBMOrientationRY], OBMData[playerid][pOBMOrientationRZ],
+				OBMData[playerid][pOBMRadius],
+				OBMData[playerid][pOBMhsep],
+				OBMData[playerid][pOBMvsep],
+				OBMData[playerid][pOBMfacecenter]
+			);	}
+
+
+		    case OBM_CLYINDER: { CreateDynamicObjectCylinder(playerid,
+				OBMData[playerid][pOBMModel],
+				OBMData[playerid][pOBMDegrees],
+				OBMData[playerid][pOBMOriginX], OBMData[playerid][pOBMOriginY], OBMData[playerid][pOBMOriginZ],
+				OBMData[playerid][pOBMOriginRX], OBMData[playerid][pOBMOriginRY], OBMData[playerid][pOBMOriginRZ],
+				OBMData[playerid][pOBMOrientationRX], OBMData[playerid][pOBMOrientationRY], OBMData[playerid][pOBMOrientationRZ],
+				OBMData[playerid][pOBMRadius],
+				OBMData[playerid][pOBMhsep],
+				OBMData[playerid][pOBMvsep],
+				OBMData[playerid][pOBMParts],
+				OBMData[playerid][pOBMfacecenter]
+			);	}
+
+
+		    case OBM_CONE: { CreateDynamicObjectCone(playerid,
+				OBMData[playerid][pOBMModel],
+				OBMData[playerid][pOBMDegrees],
+				OBMData[playerid][pOBMOriginX], OBMData[playerid][pOBMOriginY], OBMData[playerid][pOBMOriginZ],
+				OBMData[playerid][pOBMOriginRX], OBMData[playerid][pOBMOriginRY], OBMData[playerid][pOBMOriginRZ],
+				OBMData[playerid][pOBMOrientationRX], OBMData[playerid][pOBMOrientationRY], OBMData[playerid][pOBMOrientationRZ],
+				OBMData[playerid][pOBMRadius],
+				OBMData[playerid][pOBMhsep],
+				OBMData[playerid][pOBMvsep],
+				OBMData[playerid][pOBMParts],
+				OBMData[playerid][pOBMfacecenter]
+			);	}
+
+		    case OBM_WHIRL: { CreateDynamicObjectWhirl(playerid,
+				OBMData[playerid][pOBMModel],
+				OBMData[playerid][pOBMDegrees],
+				OBMData[playerid][pOBMOriginX], OBMData[playerid][pOBMOriginY], OBMData[playerid][pOBMOriginZ],
+				OBMData[playerid][pOBMOriginRX], OBMData[playerid][pOBMOriginRY], OBMData[playerid][pOBMOriginRZ],
+				OBMData[playerid][pOBMOrientationRX], OBMData[playerid][pOBMOrientationRY], OBMData[playerid][pOBMOrientationRZ],
+				OBMData[playerid][pOBMRadius],
+				OBMData[playerid][pOBMhsep],
+				OBMData[playerid][pOBMfacecenter]
+			);	}
+
+
+		    case OBM_CIRCLEIN: { CreateDynamicCircleIn(playerid,
+				OBMData[playerid][pOBMModel],
+				OBMData[playerid][pOBMDegrees],
+				OBMData[playerid][pOBMOriginX], OBMData[playerid][pOBMOriginY], OBMData[playerid][pOBMOriginZ],
+				OBMData[playerid][pOBMOriginRX], OBMData[playerid][pOBMOriginRY], OBMData[playerid][pOBMOriginRZ],
+				OBMData[playerid][pOBMOrientationRX], OBMData[playerid][pOBMOrientationRY], OBMData[playerid][pOBMOrientationRZ],
+				OBMData[playerid][pOBMRadius],
+				OBMData[playerid][pOBMhsep],
+				OBMData[playerid][pOBMParts],
+				OBMData[playerid][pOBMfacecenter]
+			);	}
+			
+		    case OBM_CIRCLEOUT: { CreateDynamicCircleOut(playerid,
+				OBMData[playerid][pOBMModel],
+				OBMData[playerid][pOBMDegrees],
+				OBMData[playerid][pOBMOriginX], OBMData[playerid][pOBMOriginY], OBMData[playerid][pOBMOriginZ],
+				OBMData[playerid][pOBMOriginRX], OBMData[playerid][pOBMOriginRY], OBMData[playerid][pOBMOriginRZ],
+				OBMData[playerid][pOBMOrientationRX], OBMData[playerid][pOBMOrientationRY], OBMData[playerid][pOBMOrientationRZ],
+				OBMData[playerid][pOBMRadius],
+				OBMData[playerid][pOBMhsep],
+				OBMData[playerid][pOBMParts],
+				OBMData[playerid][pOBMfacecenter]
+			);	}
+			
+			//////////////////Non Round
+		    case OBM_LINE: { CreateDynamicLine(playerid,
+				OBMData[playerid][pOBMModel],
+				OBMData[playerid][pOBMOriginX], OBMData[playerid][pOBMOriginY], OBMData[playerid][pOBMOriginZ],
+				OBMData[playerid][pOBMEndX], OBMData[playerid][pOBMEndY], OBMData[playerid][pOBMEndZ],
+				OBMData[playerid][pOBMOrientationRX], OBMData[playerid][pOBMOrientationRY], OBMData[playerid][pOBMOrientationRZ],
+				OBMData[playerid][pOBMLSegs]
+			);	}
+		
+		    case OBM_RECTANGLE: { CreateDynamicQuadrilateral(playerid,
+				OBMData[playerid][pOBMModel],
+				OBMData[playerid][pOBMOriginX], OBMData[playerid][pOBMOriginY], OBMData[playerid][pOBMOriginZ],
+				OBMData[playerid][pOBMOriginRX], OBMData[playerid][pOBMOriginRY], OBMData[playerid][pOBMOriginRZ],
+				OBMData[playerid][pOBMOrientationRX], OBMData[playerid][pOBMOrientationRY], OBMData[playerid][pOBMOrientationRZ],
+				OBMData[playerid][pOBMLength], OBMData[playerid][pOBMWidth],
+				OBMData[playerid][pOBMLSegs], OBMData[playerid][pOBMWSegs],
+				OBMData[playerid][pOBMFill]
+			);	}
+		
+		    case OBM_RECTPRISM: { CreateDynamicPrism(playerid,
+				OBMData[playerid][pOBMModel],
+				OBMData[playerid][pOBMOriginX], OBMData[playerid][pOBMOriginY], OBMData[playerid][pOBMOriginZ],
+				OBMData[playerid][pOBMOriginRX], OBMData[playerid][pOBMOriginRY], OBMData[playerid][pOBMOriginRZ],
+				OBMData[playerid][pOBMOrientationRX], OBMData[playerid][pOBMOrientationRY], OBMData[playerid][pOBMOrientationRZ],
+				OBMData[playerid][pOBMLength], OBMData[playerid][pOBMWidth], OBMData[playerid][pOBMHeight],
+				OBMData[playerid][pOBMLSegs], OBMData[playerid][pOBMWSegs], OBMData[playerid][pOBMHSegs],
+				OBMData[playerid][pOBMFill]
+			);	}
+		}
+	}
+	return 1;
+}
+
+
+
+
+OnPlayerEditDOOBM(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
+{
+	#pragma unused objectid
+	
+	// Edit origin
+	if(OBMEditMode[playerid] == OBME_ORIGIN)
+	{
+		if(response == EDIT_RESPONSE_FINAL)
+		{
+	   	    OBMData[playerid][pOBMOriginX] = x;
+	 		OBMData[playerid][pOBMOriginY] = y;
+	 		OBMData[playerid][pOBMOriginZ] = z;
+	   	    OBMData[playerid][pOBMOriginRX] = rx;
+	 		OBMData[playerid][pOBMOriginRY] = ry;
+	 		OBMData[playerid][pOBMOriginRZ] = rz;
+			SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		    SendClientMessage(playerid, STEALTH_GREEN, "Objectmetry origin set");
+			DestroyDynamicObject(OBMObject[playerid]);
+	        OBMData[playerid][OriginSet] = true;
+			UpdateOBM(playerid);
+	        OBMEditor(playerid);
+		}
+		else if(response == EDIT_RESPONSE_UPDATE)
+		{
+	   	    OBMData[playerid][pOBMOriginX] = x;
+	 		OBMData[playerid][pOBMOriginY] = y;
+	 		OBMData[playerid][pOBMOriginZ] = z;
+	   	    OBMData[playerid][pOBMOriginRX] = rx;
+	 		OBMData[playerid][pOBMOriginRY] = ry;
+	 		OBMData[playerid][pOBMOriginRZ] = rz;
+	 		UpdateOBM(playerid);
+
+		}
+		else if(response == EDIT_RESPONSE_CANCEL)
+		{
+			OBMData[playerid][pOBMOriginX] = OBMOriginSave[playerid][0];
+			OBMData[playerid][pOBMOriginY] = OBMOriginSave[playerid][1];
+			OBMData[playerid][pOBMOriginZ] = OBMOriginSave[playerid][2];
+			OBMData[playerid][pOBMOriginRX] = OBMOriginSave[playerid][3];
+			OBMData[playerid][pOBMOriginRY] = OBMOriginSave[playerid][4];
+			OBMData[playerid][pOBMOriginRZ] = OBMOriginSave[playerid][5];
+
+			DestroyDynamicObject(OBMObject[playerid]);
+			UpdateOBM(playerid);
+			OBMEditor(playerid);
+		}
+	}
+	
+	// Edit orientation
+	else if(OBMEditMode[playerid] == OMBE_ORIENT)
+	{
+		if(response == EDIT_RESPONSE_FINAL)
+		{
+	   	    OBMData[playerid][pOBMOrientationRX] = rx;
+	 		OBMData[playerid][pOBMOrientationRY] = ry;
+	 		OBMData[playerid][pOBMOrientationRZ] = rz;
+			SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		    SendClientMessage(playerid, STEALTH_GREEN, "Objectmetry orientation set");
+			DestroyDynamicObject(OBMObject[playerid]);
+			UpdateOBM(playerid);
+	        OBMEditor(playerid);
+		}
+		else if(response == EDIT_RESPONSE_UPDATE)
+		{
+	   	    OBMData[playerid][pOBMOrientationRX] = rx;
+	 		OBMData[playerid][pOBMOrientationRY] = ry;
+	 		OBMData[playerid][pOBMOrientationRZ] = rz;
+	 		UpdateOBM(playerid);
+		}
+		else if(response == EDIT_RESPONSE_CANCEL)
+		{
+			OBMData[playerid][pOBMOrientationRX] = OBMOrientationSave[playerid][0];
+			OBMData[playerid][pOBMOrientationRY] = OBMOrientationSave[playerid][1];
+			OBMData[playerid][pOBMOrientationRZ] = OBMOrientationSave[playerid][2];
+
+			DestroyDynamicObject(OBMObject[playerid]);
+			UpdateOBM(playerid);
+			OBMEditor(playerid);
+		}
+	}
+	return 1;
+}

+ 831 - 0
Texture-Studio-master/filterscripts/tstudio/osearch.pwn

@@ -0,0 +1,831 @@
+
+#define         MAX_SEARCH_OBJECT           200
+#define         MAX_OS_PAGE                 20
+
+#define         OS_MIN_ZOOM_CONSTRAINT      2.0
+#define         OS_MAX_ZOOM_CONSTRAINT      0.5
+
+static Text:RotXLeft;
+static Text:RotYLeft;
+static Text:RotZLeft;
+static Text:ZoomLeft;
+static Text:RotXRight;
+static Text:RotYRight;
+static Text:RotZRight;
+static Text:ZoomRight;
+static Text:PageLeft;
+static Text:PageRight;
+static Text:Click_OS_Create;
+static Text:OS_Background_0;
+static Text:OS_Background_1;
+static Text:OS_Background_2;
+static Text:OS_Background_3;
+static Text:OSearch_HighLight[MAX_OS_PAGE];
+
+static PlayerText:SearchDisplayModel[MAX_PLAYERS];
+static PlayerText:OSearchIndex[MAX_PLAYERS][MAX_OS_PAGE];
+
+enum SEARCHINFO
+{
+	SearchModel,
+	SearchName[50],
+}
+static SearchObjects[MAX_PLAYERS][MAX_SEARCH_OBJECT][SEARCHINFO];
+static TotalObjectFound[MAX_PLAYERS];
+static CurrObjectPage[MAX_PLAYERS];
+static CurrOSHighlight[MAX_PLAYERS];
+static Float:CurrOSXRot[MAX_PLAYERS] = { -20.0, ... };
+static Float:CurrOSYRot[MAX_PLAYERS] = { 0.0, ... };
+static Float:CurrOSZRot[MAX_PLAYERS] = { -50.0, ... };
+static Float:CurrOSZoom[MAX_PLAYERS] = { 1.0, ... };
+
+enum {
+	//==, !=, >, <, >=, <=
+	OPER_EQUAL,
+	OPER_NOT_EQUAL,
+	OPER_MORE,
+	OPER_LESS,
+	OPER_MORE_EQUAL,
+	OPER_LESS_EQUAL,
+	
+	//+, -, *, /, %
+	OPER_PLUS,
+	OPER_MINUS,
+	OPER_MULT,
+	OPER_DIV,
+	OPER_MOD,
+
+	//!, &&, ||
+	OPER_NOT,
+	OPER_AND,
+	OPER_OR,
+
+	//(, )
+	OPER_OPEN,
+	OPER_CLOSE,
+	
+	NUMERIC
+}
+
+static Operators[16][3] = {
+	"==", "!=", ">", "<", ">=", "<=",
+	"+", "-", "*", "/", "%",
+	"!", "&&", "||",
+	"(", ")"
+};
+
+public OnFilterScriptInit()
+{
+	CreateSearchDraws();
+	foreach(new i : Player)
+	{
+		CreatePlayerSearchDraw(i);
+	}
+
+	#if defined OS_OnFilterScriptInit
+		OS_OnFilterScriptInit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptInit
+	#undef OnFilterScriptInit
+#else
+	#define _ALS_OnFilterScriptInit
+#endif
+#define OnFilterScriptInit OS_OnFilterScriptInit
+#if defined OS_OnFilterScriptInit
+	forward OS_OnFilterScriptInit();
+#endif
+
+public OnFilterScriptExit()
+{
+	DestroySearchDraws();
+	foreach(new i : Player)
+	{
+	    DestroyPlayerSearchDraw(i);
+	}
+
+	#if defined OS_OnFilterScriptExit
+		OS_OnFilterScriptExit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptExit
+	#undef OnFilterScriptExit
+#else
+	#define _ALS_OnFilterScriptExit
+#endif
+#define OnFilterScriptExit OS_OnFilterScriptExit
+#if defined OS_OnFilterScriptExit
+	forward OS_OnFilterScriptExit();
+#endif
+
+
+public OnPlayerConnect(playerid)
+{
+    CreatePlayerSearchDraw(playerid);
+	CurrOSXRot[playerid] = -20.0;
+	CurrOSYRot[playerid] = 0.0;
+	CurrOSZRot[playerid] = -50.0;
+	CurrOSZoom[playerid] = 1.0;
+
+	#if defined OS_OnPlayerConnect
+		OS_OnPlayerConnect(playerid);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerConnect
+	#undef OnPlayerConnect
+#else
+	#define _ALS_OnPlayerConnect
+#endif
+#define OnPlayerConnect OS_OnPlayerConnect
+#if defined OS_OnPlayerConnect
+	forward OS_OnPlayerConnect(playerid);
+#endif
+
+// Search for object names
+YCMD:osearch(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Search for an object model by keyword.");
+		return 1;
+	}
+
+	if(GetEditMode(playerid) != EDIT_MODE_OSEARCH) NoEditingMode(playerid);
+
+    MapOpenCheck();
+
+	for(new i = 0; i < MAX_SEARCH_OBJECT; i++) SearchObjects[playerid][i][SearchModel] = -1;
+	new line[128];
+	new totalobjectsfound;
+	for(new i; i < sizeof(ObjectList); i++)
+	{
+        if(strfind(ObjectList[i][oName],arg, true) != -1)
+		{
+			if(totalobjectsfound == 0) SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	        format(line, sizeof(line), "Object Name: %s Model ID: %i", ObjectList[i][oName],ObjectList[i][oID]);
+	        SendClientMessage(playerid, STEALTH_GREEN, line);
+	        SearchObjects[playerid][totalobjectsfound][SearchModel] = ObjectList[i][oID];
+	        format(SearchObjects[playerid][totalobjectsfound][SearchName], 50, "%s", ObjectList[i][oName]);
+	        totalobjectsfound++;
+		}
+        if(totalobjectsfound == MAX_SEARCH_OBJECT)
+        {
+            SendClientMessage(playerid, STEALTH_YELLOW, "Maximum amount of objects found!");
+            break;
+        }
+	}
+
+	if(!totalobjectsfound)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "No objects found try searching again");
+	}
+	else
+	{
+		format(line, sizeof(line), "Total Objects Found: %i", totalobjectsfound);
+		TotalObjectFound[playerid] = totalobjectsfound;
+		ShowObjectList(playerid);
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, line);
+	}
+	return 1;
+}
+
+// Search for objects with expression
+YCMD:osearchex(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Search for an object model by expression.");
+		return 1;
+	}
+
+	if(GetEditMode(playerid) != EDIT_MODE_OSEARCH) NoEditingMode(playerid);
+
+    MapOpenCheck();
+
+	new out[64][24], type[64] = {-1, ...}, count = strexplode(out, arg, " ");
+	for(new i = 0; i < MAX_SEARCH_OBJECT; i++) SearchObjects[playerid][i][SearchModel] = -1;
+	new line[128];
+	new totalobjectsfound, index;
+	
+	for(new c; c < count; c++) {
+		if(!strcmp(out[c], "X", true)) {
+			type[c] = NUMERIC;
+			continue;
+		}
+		if(!strcmp(out[c], "Y", true)) {
+			type[c] = NUMERIC;
+			continue;
+		}
+		if(!strcmp(out[c], "Z", true)) {
+			type[c] = NUMERIC;
+			continue;
+		}
+
+		for(new i; i < sizeof Operators; i++) {
+			if(!strcmp(out[c], Operators[i])) {
+				type[c] = i;
+				break;
+			}
+		}
+		if(type[c] == -1 && isnumeric_f(out[c])) {
+			type[c] = NUMERIC;
+		}
+	}
+
+	new str[128];
+	strcat(str, "SELECT `Model` FROM `AABB` WHERE (");
+	for(new c; c < count; c++) {
+		if(out[c][0] == 'X')
+			format(out[c], sizeof out[], "(MaxX - MinX)");
+		else if(out[c][0] == 'Y')
+			format(out[c], sizeof out[], "(MaxY - MinY)");
+		else if(out[c][0] == 'Z')
+			format(out[c], sizeof out[], "(MaxZ - MinZ)");
+		else switch(type[c]) {
+			case OPER_AND:
+				format(out[c], sizeof out[], " AND ");
+			case OPER_OR:
+				format(out[c], sizeof out[], " OR ");
+			case OPER_NOT:
+				format(out[c], sizeof out[], " NOT ");
+		}
+		
+		strcat(str, out[c]);
+	}
+	strcat(str, ")");
+	
+	MS_RESULT = db_query(MS_DB, str);
+	totalobjectsfound = db_num_rows(MS_RESULT);
+	if(totalobjectsfound) {
+		do
+		{
+			new model = db_get_field_int(MS_RESULT, 0), i = -1;
+			
+			for(new l; l < sizeof(ObjectList); l++) {
+				if(ObjectList[l][oID] == model) {
+					i = l;
+					break;
+				}
+			}
+			
+			if(i == -1) // Invalid Model
+				continue;
+
+			if(index == 0) SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+			format(line, sizeof(line), "Object Name: %s Model ID: %i", ObjectList[i][oName],ObjectList[i][oID]);
+			SendClientMessage(playerid, STEALTH_GREEN, line);
+			SearchObjects[playerid][index][SearchModel] = ObjectList[i][oID];
+			format(SearchObjects[playerid][index][SearchName], 50, "%s", ObjectList[i][oName]);
+			index++;
+
+			if(index == MAX_SEARCH_OBJECT)
+			{
+				SendClientMessage(playerid, STEALTH_YELLOW, "Maximum amount of objects found!");
+				break;
+			}
+		}
+		while(db_next_row(MS_RESULT));
+		
+		format(line, sizeof(line), "Total Objects Found: %i", totalobjectsfound);
+		TotalObjectFound[playerid] = totalobjectsfound;
+		ShowObjectList(playerid);
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, line);
+	}
+	else {
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "No objects found try searching again");
+	}
+	db_free_result(MS_RESULT);
+
+	return 1;
+}
+
+ClickTextDrawOSearch(playerid, Text:clickedid)
+{
+	if (Text:INVALID_TEXT_DRAW == clickedid)
+	{
+		// Textdraws are now closed
+	    ToggleTextDrawOpen(playerid, false);
+
+	    // Player is not in text editing mode anymore
+    	SetCurrTextDraw(playerid, TEXTDRAW_NONE);
+
+		// Hide the text editor
+	    HidePlayerOSDraws(playerid);
+
+		// Cancel textdraw select
+		CancelSelectTextDraw(playerid);
+		
+		// Editing mode off
+		EditingMode[playerid] = false;
+
+		// Click finished processing
+		SetEditMode(playerid, EDIT_MODE_NONE);
+		
+		// Unpause
+		SetTimerEx("PlayerSetGUIPaused", 300, false, "ii", playerid, 0);
+
+	    return 1;
+	}
+
+	// Rotate XLeft
+	else if(RotXLeft == clickedid)
+	{
+        CurrOSXRot[playerid] -= 10.0;
+        if(CurrOSXRot[playerid] < 0.0) CurrOSXRot[playerid] = 350.0;
+        UpdateOSPreview(playerid);
+	}
+
+	else if(RotYLeft == clickedid)
+	{
+        CurrOSYRot[playerid] -= 10.0;
+        if(CurrOSYRot[playerid] < 0.0) CurrOSYRot[playerid] = 350.0;
+        UpdateOSPreview(playerid);
+	}
+
+	else if(RotZLeft == clickedid)
+	{
+        CurrOSZRot[playerid] -= 10.0;
+        if(CurrOSZRot[playerid] < 0.0) CurrOSZRot[playerid] = 350.0;
+        UpdateOSPreview(playerid);
+	}
+
+	else if(RotXRight == clickedid)
+	{
+        CurrOSXRot[playerid] += 10.0;
+        if(CurrOSXRot[playerid] > 359.0) CurrOSXRot[playerid] = 0.0;
+        UpdateOSPreview(playerid);
+	}
+
+	else if(RotYRight == clickedid)
+	{
+        CurrOSYRot[playerid] += 10.0;
+        if(CurrOSYRot[playerid] > 359.0) CurrOSYRot[playerid] = 0.0;
+        UpdateOSPreview(playerid);
+	}
+
+	else if(RotZRight == clickedid)
+	{
+        CurrOSZRot[playerid] += 10.0;
+        if(CurrOSZRot[playerid] > 359.0) CurrOSZRot[playerid] = 0.0;
+        UpdateOSPreview(playerid);
+	}
+
+	else if(ZoomLeft == clickedid)
+	{
+		if(CurrOSZoom[playerid] > OS_MIN_ZOOM_CONSTRAINT) return 1;
+		CurrOSZoom[playerid] += 0.1;
+		UpdateOSPreview(playerid);
+	}
+
+	else if(ZoomRight == clickedid)
+	{
+		if(CurrOSZoom[playerid] < OS_MAX_ZOOM_CONSTRAINT) return 1;
+		CurrOSZoom[playerid] -= 0.1;
+		UpdateOSPreview(playerid);
+	}
+
+	// Scroll object page left
+	else if(PageLeft == clickedid)
+	{
+	    if(CurrObjectPage[playerid] == 0) CurrObjectPage[playerid] = (MAX_SEARCH_OBJECT / MAX_OS_PAGE) - 1;
+		else CurrObjectPage[playerid]--;
+		UpdateOSearchPage(playerid);
+	}
+
+	// Scroll object page right
+	else if(PageRight == clickedid)
+	{
+		if(CurrObjectPage[playerid] == (MAX_SEARCH_OBJECT / MAX_OS_PAGE) - 1) CurrObjectPage[playerid] = 0;
+        else CurrObjectPage[playerid]++;
+		UpdateOSearchPage(playerid);
+	}
+
+	else if(Click_OS_Create == clickedid)
+	{
+		new index = (CurrObjectPage[playerid]*MAX_OS_PAGE) + CurrOSHighlight[playerid];
+		if(SearchObjects[playerid][index][SearchModel] > -1)
+		{
+			new line[128];
+			format(line, sizeof(line), "/cobject %i", SearchObjects[playerid][index][SearchModel]);
+			EditingMode[playerid] = false;
+		    BroadcastCommand(playerid,line);
+			EditingMode[playerid] = true;
+		}
+	}
+
+	return 0;
+}
+
+ClickPlayerTextDrawOSearch(playerid, PlayerText:clickedid)
+{
+	for(new i = 0; i < MAX_OS_PAGE; i++)
+	{
+	    if(clickedid == OSearchIndex[playerid][i])
+	    {
+			CurrOSHighlight[playerid] = i;
+		    UpdateOSHighLight(playerid);
+		    UpdateOSPreview(playerid);
+			return 1;
+	    }
+	}
+	return 0;
+}
+
+static ShowObjectList(playerid)
+{
+	ShowPlayerOSDraws(playerid);
+	UpdateOSearchPage(playerid);
+	SetCurrTextDraw(playerid, TEXTDRAW_OSEARCH);
+	ToggleTextDrawOpen(playerid, true);
+	SetEditMode(playerid, EDIT_MODE_OSEARCH);
+	EditingMode[playerid] = true;
+	CurrObjectPage[playerid] = 0;
+	CurrOSHighlight[playerid] = 0;
+	UpdateOSHighLight(playerid);
+	SelectTextDraw(playerid, 0xD9D919FF);
+	return 1;
+}
+
+static UpdateOSHighLight(playerid)
+{
+	for(new i = 0; i < MAX_OS_PAGE; i++) TextDrawHideForPlayer(playerid, OSearch_HighLight[i]);
+	TextDrawShowForPlayer(playerid, OSearch_HighLight[CurrOSHighlight[playerid]]);
+	UpdateOSPreview(playerid);
+	return 1;
+}
+
+static UpdateOSPreview(playerid)
+{
+    new offset = CurrObjectPage[playerid]*MAX_OS_PAGE;
+    PlayerTextDrawHide(playerid, SearchDisplayModel[playerid]);
+	PlayerTextDrawSetPreviewModel(playerid, SearchDisplayModel[playerid], SearchObjects[playerid][CurrOSHighlight[playerid]+offset][SearchModel]);
+	PlayerTextDrawSetPreviewRot(playerid, SearchDisplayModel[playerid], CurrOSXRot[playerid], CurrOSYRot[playerid], CurrOSZRot[playerid], CurrOSZoom[playerid]);
+    PlayerTextDrawShow(playerid, SearchDisplayModel[playerid]);
+	return 1;
+}
+
+static UpdateOSearchPage(playerid)
+{
+	new line[128];
+	new offset = CurrObjectPage[playerid]*MAX_OS_PAGE;
+	for(new i = 0; i < MAX_OS_PAGE; i++)
+	{
+		if(SearchObjects[playerid][i+offset][SearchModel] > -1)
+		{
+			format(line, sizeof(line), "~r~ID:~g~ %i ~r~Name:~g~ %s",
+			    SearchObjects[playerid][i+offset][SearchModel],
+			    SearchObjects[playerid][i+offset][SearchName]
+			);
+            PlayerTextDrawSetString(playerid, OSearchIndex[playerid][i], line);
+		}
+		else PlayerTextDrawSetString(playerid, OSearchIndex[playerid][i], "~r~ID:~g~ -1 ~r~Name:~g~ None");
+	}
+	UpdateOSPreview(playerid);
+	return 1;
+}
+
+
+static CreateSearchDraws()
+{
+	RotXLeft = TextDrawCreate(150.000000, 320.000000, "LD_BEAT:left");
+	TextDrawBackgroundColor(RotXLeft, 255);
+	TextDrawFont(RotXLeft, 4);
+	TextDrawLetterSize(RotXLeft, 0.500000, 1.000000);
+	TextDrawColor(RotXLeft, 16777215);
+	TextDrawSetOutline(RotXLeft, 0);
+	TextDrawSetProportional(RotXLeft, 1);
+	TextDrawSetShadow(RotXLeft, 1);
+	TextDrawUseBox(RotXLeft, 1);
+	TextDrawBoxColor(RotXLeft, 16777215);
+	TextDrawTextSize(RotXLeft, 20.000000, 20.000000);
+	TextDrawSetSelectable(RotXLeft, 1);
+
+	RotYLeft = TextDrawCreate(150.000000, 340.000000, "LD_BEAT:left");
+	TextDrawBackgroundColor(RotYLeft, 255);
+	TextDrawFont(RotYLeft, 4);
+	TextDrawLetterSize(RotYLeft, 0.500000, 1.000000);
+	TextDrawColor(RotYLeft, 16777215);
+	TextDrawSetOutline(RotYLeft, 0);
+	TextDrawSetProportional(RotYLeft, 1);
+	TextDrawSetShadow(RotYLeft, 1);
+	TextDrawUseBox(RotYLeft, 1);
+	TextDrawBoxColor(RotYLeft, 16777215);
+	TextDrawTextSize(RotYLeft, 20.000000, 20.000000);
+	TextDrawSetSelectable(RotYLeft, 1);
+
+	RotZLeft = TextDrawCreate(150.000000, 360.000000, "LD_BEAT:left");
+	TextDrawBackgroundColor(RotZLeft, 255);
+	TextDrawFont(RotZLeft, 4);
+	TextDrawLetterSize(RotZLeft, 0.500000, 1.000000);
+	TextDrawColor(RotZLeft, 16777215);
+	TextDrawSetOutline(RotZLeft, 0);
+	TextDrawSetProportional(RotZLeft, 1);
+	TextDrawSetShadow(RotZLeft, 1);
+	TextDrawUseBox(RotZLeft, 1);
+	TextDrawBoxColor(RotZLeft, 16777215);
+	TextDrawTextSize(RotZLeft, 20.000000, 20.000000);
+	TextDrawSetSelectable(RotZLeft, 1);
+
+	ZoomLeft = TextDrawCreate(150.000000, 380.000000, "LD_BEAT:left");
+	TextDrawBackgroundColor(ZoomLeft, 255);
+	TextDrawFont(ZoomLeft, 4);
+	TextDrawLetterSize(ZoomLeft, 0.500000, 1.000000);
+	TextDrawColor(ZoomLeft, 16777215);
+	TextDrawSetOutline(ZoomLeft, 0);
+	TextDrawSetProportional(ZoomLeft, 1);
+	TextDrawSetShadow(ZoomLeft, 1);
+	TextDrawUseBox(ZoomLeft, 1);
+	TextDrawBoxColor(ZoomLeft, 16777215);
+	TextDrawTextSize(ZoomLeft, 20.000000, 20.000000);
+	TextDrawSetSelectable(ZoomLeft, 1);
+
+	RotXRight = TextDrawCreate(190.000000, 320.000000, "LD_BEAT:right");
+	TextDrawBackgroundColor(RotXRight, 255);
+	TextDrawFont(RotXRight, 4);
+	TextDrawLetterSize(RotXRight, 0.500000, 1.000000);
+	TextDrawColor(RotXRight, 16777215);
+	TextDrawSetOutline(RotXRight, 0);
+	TextDrawSetProportional(RotXRight, 1);
+	TextDrawSetShadow(RotXRight, 1);
+	TextDrawUseBox(RotXRight, 1);
+	TextDrawBoxColor(RotXRight, 16777215);
+	TextDrawTextSize(RotXRight, 20.000000, 20.000000);
+	TextDrawSetSelectable(RotXRight, 1);
+
+	RotYRight = TextDrawCreate(190.000000, 340.000000, "LD_BEAT:right");
+	TextDrawBackgroundColor(RotYRight, 255);
+	TextDrawFont(RotYRight, 4);
+	TextDrawLetterSize(RotYRight, 0.500000, 1.000000);
+	TextDrawColor(RotYRight, 16777215);
+	TextDrawSetOutline(RotYRight, 0);
+	TextDrawSetProportional(RotYRight, 1);
+	TextDrawSetShadow(RotYRight, 1);
+	TextDrawUseBox(RotYRight, 1);
+	TextDrawBoxColor(RotYRight, 16777215);
+	TextDrawTextSize(RotYRight, 20.000000, 20.000000);
+	TextDrawSetSelectable(RotYRight, 1);
+
+	RotZRight = TextDrawCreate(190.000000, 360.000000, "LD_BEAT:right");
+	TextDrawBackgroundColor(RotZRight, 255);
+	TextDrawFont(RotZRight, 4);
+	TextDrawLetterSize(RotZRight, 0.500000, 1.000000);
+	TextDrawColor(RotZRight, 16777215);
+	TextDrawSetOutline(RotZRight, 0);
+	TextDrawSetProportional(RotZRight, 1);
+	TextDrawSetShadow(RotZRight, 1);
+	TextDrawUseBox(RotZRight, 1);
+	TextDrawBoxColor(RotZRight, 16777215);
+	TextDrawTextSize(RotZRight, 20.000000, 20.000000);
+	TextDrawSetSelectable(RotZRight, 1);
+
+	ZoomRight = TextDrawCreate(190.000000, 380.000000, "LD_BEAT:right");
+	TextDrawBackgroundColor(ZoomRight, 255);
+	TextDrawFont(ZoomRight, 4);
+	TextDrawLetterSize(ZoomRight, 0.500000, 1.000000);
+	TextDrawColor(ZoomRight, 16777215);
+	TextDrawSetOutline(ZoomRight, 0);
+	TextDrawSetProportional(ZoomRight, 1);
+	TextDrawSetShadow(ZoomRight, 1);
+	TextDrawUseBox(ZoomRight, 1);
+	TextDrawBoxColor(ZoomRight, 16777215);
+	TextDrawTextSize(ZoomRight, 20.000000, 20.000000);
+	TextDrawSetSelectable(ZoomRight, 1);
+	
+
+	new Float:pageoffset = 145.0 + (MAX_OS_PAGE * 10.0);
+
+	PageLeft = TextDrawCreate(18.000000, pageoffset, "LD_BEAT:left");
+	TextDrawBackgroundColor(PageLeft, 255);
+	TextDrawFont(PageLeft, 4);
+	TextDrawLetterSize(PageLeft, 0.500000, 1.000000);
+	TextDrawColor(PageLeft, 16777215);
+	TextDrawSetOutline(PageLeft, 0);
+	TextDrawSetProportional(PageLeft, 1);
+	TextDrawSetShadow(PageLeft, 1);
+	TextDrawUseBox(PageLeft, 1);
+	TextDrawBoxColor(PageLeft, 16777215);
+	TextDrawTextSize(PageLeft, 20.000000, 20.000000);
+	TextDrawSetSelectable(PageLeft, 1);
+
+	PageRight = TextDrawCreate(68.000000, pageoffset, "LD_BEAT:right");
+	TextDrawBackgroundColor(PageRight, 255);
+	TextDrawFont(PageRight, 4);
+	TextDrawLetterSize(PageRight, 0.500000, 1.000000);
+	TextDrawColor(PageRight, 16777215);
+	TextDrawSetOutline(PageRight, 0);
+	TextDrawSetProportional(PageRight, 1);
+	TextDrawSetShadow(PageRight, 1);
+	TextDrawUseBox(PageRight, 1);
+	TextDrawBoxColor(PageRight, 16777215);
+	TextDrawTextSize(PageRight, 20.000000, 20.000000);
+	TextDrawSetSelectable(PageRight, 1);
+
+	OS_Background_0 = TextDrawCreate(172.000000, 324.000000, "RotX");
+	TextDrawBackgroundColor(OS_Background_0, 255);
+	TextDrawFont(OS_Background_0, 1);
+	TextDrawLetterSize(OS_Background_0, 0.200000, 1.000000);
+	TextDrawColor(OS_Background_0, -1);
+	TextDrawSetOutline(OS_Background_0, 1);
+	TextDrawSetProportional(OS_Background_0, 1);
+	TextDrawSetSelectable(OS_Background_0, 0);
+
+	OS_Background_1 = TextDrawCreate(172.000000, 344.000000, "RotY");
+	TextDrawBackgroundColor(OS_Background_1, 255);
+	TextDrawFont(OS_Background_1, 1);
+	TextDrawLetterSize(OS_Background_1, 0.200000, 1.000000);
+	TextDrawColor(OS_Background_1, -1);
+	TextDrawSetOutline(OS_Background_1, 1);
+	TextDrawSetProportional(OS_Background_1, 1);
+	TextDrawSetSelectable(OS_Background_1, 0);
+
+	OS_Background_2 = TextDrawCreate(172.000000, 364.000000, "RotZ");
+	TextDrawBackgroundColor(OS_Background_2, 255);
+	TextDrawFont(OS_Background_2, 1);
+	TextDrawLetterSize(OS_Background_2, 0.200000, 1.000000);
+	TextDrawColor(OS_Background_2, -1);
+	TextDrawSetOutline(OS_Background_2, 1);
+	TextDrawSetProportional(OS_Background_2, 1);
+	TextDrawSetSelectable(OS_Background_2, 0);
+
+	OS_Background_3 = TextDrawCreate(170.000000, 384.000000, "Zoom");
+	TextDrawBackgroundColor(OS_Background_3, 255);
+	TextDrawFont(OS_Background_3, 1);
+	TextDrawLetterSize(OS_Background_3, 0.200000, 1.000000);
+	TextDrawColor(OS_Background_3, -1);
+	TextDrawSetOutline(OS_Background_3, 1);
+	TextDrawSetProportional(OS_Background_3, 1);
+	TextDrawSetSelectable(OS_Background_3, 0);
+
+	Click_OS_Create = TextDrawCreate(158.000000, 400.000000, "Create");
+	TextDrawBackgroundColor(Click_OS_Create, 255);
+	TextDrawFont(Click_OS_Create, 1);
+	TextDrawLetterSize(Click_OS_Create, 0.400000, 2.000000);
+	TextDrawColor(Click_OS_Create, -65281);
+	TextDrawSetOutline(Click_OS_Create, 1);
+	TextDrawSetProportional(Click_OS_Create, 1);
+	TextDrawUseBox(Click_OS_Create, 1);
+	TextDrawBoxColor(Click_OS_Create, 0);
+	TextDrawTextSize(Click_OS_Create, 200.000000, 12.000000);
+	TextDrawSetSelectable(Click_OS_Create, 1);
+
+	new Float:y = 130.0;
+	for(new i = 0; i < MAX_OS_PAGE; i++)
+	{
+		OSearch_HighLight[i] = TextDrawCreate(18.000000, y, "_");
+		TextDrawBackgroundColor(OSearch_HighLight[i], 255);
+		TextDrawFont(OSearch_HighLight[i], 1);
+		TextDrawLetterSize(OSearch_HighLight[i], 0.500000, 1.000000);
+		TextDrawColor(OSearch_HighLight[i], -1);
+		TextDrawSetOutline(OSearch_HighLight[i], 0);
+		TextDrawSetProportional(OSearch_HighLight[i], 1);
+		TextDrawSetShadow(OSearch_HighLight[i], 1);
+		TextDrawUseBox(OSearch_HighLight[i], 1);
+		TextDrawBoxColor(OSearch_HighLight[i], 16711730);
+		TextDrawTextSize(OSearch_HighLight[i], 150.000000, 0.000000);
+		TextDrawSetSelectable(OSearch_HighLight[i], 0);
+		y += 10.0;
+	}
+
+	return 1;
+}
+
+static DestroySearchDraws()
+{
+	TextDrawDestroy(RotXLeft);
+	TextDrawDestroy(RotYLeft);
+	TextDrawDestroy(RotZLeft);
+	TextDrawDestroy(ZoomLeft);
+	TextDrawDestroy(RotXRight);
+	TextDrawDestroy(RotYRight);
+	TextDrawDestroy(RotZRight);
+	TextDrawDestroy(ZoomRight);
+	TextDrawDestroy(PageLeft);
+	TextDrawDestroy(PageRight);
+	TextDrawDestroy(OS_Background_0);
+	TextDrawDestroy(OS_Background_1);
+	TextDrawDestroy(OS_Background_2);
+	TextDrawDestroy(OS_Background_3);
+	TextDrawDestroy(Click_OS_Create);
+
+	for(new i = 0; i < MAX_OS_PAGE; i++)
+	{
+		TextDrawDestroy(OSearch_HighLight[i]);
+	}
+	return 1;
+}
+
+static CreatePlayerSearchDraw(playerid)
+{
+	new Float:y = 130.0;
+	for(new i = 0; i < MAX_OS_PAGE; i++)
+	{
+		OSearchIndex[playerid][i] = CreatePlayerTextDraw(playerid,20.000000, y, "~r~ID:~g~ 1337 ~r~Name:~g~ sign_01");
+		PlayerTextDrawBackgroundColor(playerid,OSearchIndex[playerid][i], 255);
+		PlayerTextDrawFont(playerid,OSearchIndex[playerid][i], 1);
+		PlayerTextDrawLetterSize(playerid,OSearchIndex[playerid][i], 0.200000, 1.000000);
+		PlayerTextDrawColor(playerid,OSearchIndex[playerid][i], 16711935);
+		PlayerTextDrawSetOutline(playerid,OSearchIndex[playerid][i], 1);
+		PlayerTextDrawSetProportional(playerid,OSearchIndex[playerid][i], 1);
+		PlayerTextDrawUseBox(playerid,OSearchIndex[playerid][i], 1);
+		PlayerTextDrawBoxColor(playerid,OSearchIndex[playerid][i], 0);
+		PlayerTextDrawTextSize(playerid,OSearchIndex[playerid][i], 300.000000, 10.000000);
+		PlayerTextDrawSetSelectable(playerid,OSearchIndex[playerid][i], 1);
+		y += 10.0;
+	}
+
+	SearchDisplayModel[playerid] = CreatePlayerTextDraw(playerid,120.000000, 127.000000, "ModelDisplay");
+	PlayerTextDrawBackgroundColor(playerid,SearchDisplayModel[playerid], 0);
+	PlayerTextDrawFont(playerid,SearchDisplayModel[playerid], 5);
+	PlayerTextDrawLetterSize(playerid,SearchDisplayModel[playerid], 0.500000, 1.000000);
+	PlayerTextDrawColor(playerid,SearchDisplayModel[playerid], -1);
+	PlayerTextDrawSetOutline(playerid,SearchDisplayModel[playerid], 0);
+	PlayerTextDrawSetProportional(playerid,SearchDisplayModel[playerid], 1);
+	PlayerTextDrawSetShadow(playerid,SearchDisplayModel[playerid], 1);
+	PlayerTextDrawUseBox(playerid,SearchDisplayModel[playerid], 1);
+	PlayerTextDrawBoxColor(playerid,SearchDisplayModel[playerid], 0);
+	PlayerTextDrawTextSize(playerid,SearchDisplayModel[playerid], 200.000000, 200.000000);
+	PlayerTextDrawSetPreviewModel(playerid, SearchDisplayModel[playerid], 1337);
+	PlayerTextDrawSetPreviewRot(playerid, SearchDisplayModel[playerid], -16.000000, 0.000000, -55.000000, 1.000000);
+	PlayerTextDrawSetSelectable(playerid,SearchDisplayModel[playerid], 0);
+
+	return 1;
+}
+
+static DestroyPlayerSearchDraw(playerid)
+{
+	for(new i = 0; i < MAX_OS_PAGE; i++)
+	{
+        PlayerTextDrawDestroy(playerid, OSearchIndex[playerid][i]);
+	}
+	PlayerTextDrawDestroy(playerid, SearchDisplayModel[playerid]);
+	return 1;
+}
+
+static ShowPlayerOSDraws(playerid)
+{
+	TextDrawShowForPlayer(playerid, RotXLeft);
+	TextDrawShowForPlayer(playerid, RotYLeft);
+	TextDrawShowForPlayer(playerid, RotZLeft);
+	TextDrawShowForPlayer(playerid, ZoomLeft);
+	TextDrawShowForPlayer(playerid, RotXRight);
+	TextDrawShowForPlayer(playerid, RotYRight);
+	TextDrawShowForPlayer(playerid, RotZRight);
+	TextDrawShowForPlayer(playerid, ZoomRight);
+	TextDrawShowForPlayer(playerid, PageRight);
+	TextDrawShowForPlayer(playerid, PageLeft);
+	TextDrawShowForPlayer(playerid, OS_Background_0);
+	TextDrawShowForPlayer(playerid, OS_Background_1);
+	TextDrawShowForPlayer(playerid, OS_Background_2);
+	TextDrawShowForPlayer(playerid, OS_Background_3);
+	TextDrawShowForPlayer(playerid, Click_OS_Create);
+
+	for(new i = 0; i < MAX_OS_PAGE; i++)
+	{
+        PlayerTextDrawShow(playerid, OSearchIndex[playerid][i]);
+	}
+	PlayerTextDrawShow(playerid, SearchDisplayModel[playerid]);
+
+}
+
+static HidePlayerOSDraws(playerid)
+{
+	TextDrawHideForPlayer(playerid, RotXLeft);
+	TextDrawHideForPlayer(playerid, RotYLeft);
+	TextDrawHideForPlayer(playerid, RotZLeft);
+	TextDrawHideForPlayer(playerid, ZoomLeft);
+	TextDrawHideForPlayer(playerid, RotXRight);
+	TextDrawHideForPlayer(playerid, RotYRight);
+	TextDrawHideForPlayer(playerid, RotZRight);
+	TextDrawHideForPlayer(playerid, ZoomRight);
+	TextDrawHideForPlayer(playerid, PageRight);
+	TextDrawHideForPlayer(playerid, PageLeft);
+	TextDrawHideForPlayer(playerid, OS_Background_0);
+	TextDrawHideForPlayer(playerid, OS_Background_1);
+	TextDrawHideForPlayer(playerid, OS_Background_2);
+	TextDrawHideForPlayer(playerid, OS_Background_3);
+	TextDrawHideForPlayer(playerid, Click_OS_Create);
+
+	for(new i = 0; i < MAX_OS_PAGE; i++)
+	{
+        PlayerTextDrawHide(playerid, OSearchIndex[playerid][i]);
+   	    TextDrawHideForPlayer(playerid, OSearch_HighLight[i]);
+	}
+	PlayerTextDrawHide(playerid, SearchDisplayModel[playerid]);
+
+}
+
+tsfunc isnumeric_f(str[])
+{
+	new i, ch;
+	while ((ch = str[i++])) if (!('0' <= ch <= '9') && ch != '.') return 0;
+	return !str[i];
+}

+ 671 - 0
Texture-Studio-master/filterscripts/tstudio/propeditor.pwn

@@ -0,0 +1,671 @@
+
+YCMD:oprop(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Edit/view an objects properties.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    EditCheck(playerid);
+    NoEditingMode(playerid);
+
+    ShowObjectPropMenu(playerid);
+
+	return 1;
+}
+
+static propline[2048];
+
+ShowObjectPropMenu(playerid)
+{
+	// Init the prop menu
+    inline SelectObjProp(spid, sdialogid, sresponse, slistitem, string:stext[])
+	{
+		#pragma unused slistitem, sdialogid, spid, stext
+		if(sresponse)
+		{
+		    switch(slistitem)
+		    {
+				// Group
+		        case 0:
+		        {
+				    inline ChangeGroup(epid, edialogid, eresponse, elistitem, string:etext[])
+				    {
+						#pragma unused elistitem, edialogid, epid, etext
+						if(eresponse)
+						{
+							if(!isnull(etext))
+							{
+								SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+								new groupid = strval(etext);
+								ObjectData[CurrObject[playerid]][oGroup] = groupid;
+								OnUpdateGroup3DText(CurrObject[playerid]);
+								UpdateObject3DText(CurrObject[playerid]);
+								sqlite_ObjGroup(CurrObject[playerid]);
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_YELLOW, "Group changed");
+							}
+							else
+							{
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_YELLOW, "You must supply a group!");
+							}
+							ShowObjectPropMenu(playerid);
+						}
+					}
+					Dialog_ShowCallback(playerid, using inline ChangeGroup, DIALOG_STYLE_INPUT, "Texture Studio", "Enter new group", "Ok", "Cancel");
+				}
+				
+				// Model
+				case 1:
+				{
+				    inline ChangeModel(epid, edialogid, eresponse, elistitem, string:etext[])
+				    {
+						#pragma unused elistitem, edialogid, epid, etext
+						if(eresponse)
+						{
+							new model = strval(etext);
+
+							SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+							ObjectData[CurrObject[playerid]][oModel] = model;
+							sqlite_ObjModel(CurrObject[playerid]);
+							RebuildObject(CurrObject[playerid]);
+							SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+							SendClientMessage(playerid, STEALTH_YELLOW, "Model changed");
+						}
+                        ShowObjectPropMenu(playerid);
+				    }
+				    Dialog_ShowCallback(playerid, using inline ChangeModel, DIALOG_STYLE_INPUT, "Texture Studio", "Enter new model", "Ok", "Cancel");
+				}
+				
+				// Position / Rotation
+				case 2..7:
+				{
+
+					inline ChangePosition(epid, edialogid, eresponse, elistitem, string:etext[])
+				    {
+						#pragma unused elistitem, edialogid, epid, etext
+						if(eresponse)
+						{
+						    if(!isnull(etext))
+						    {
+	                            SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								if(slistitem == 2)
+								{
+									SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+									ObjectData[CurrObject[playerid]][oX] = floatstr(etext);
+									SetDynamicObjectPos(ObjectData[CurrObject[playerid]][oID], ObjectData[CurrObject[playerid]][oX], ObjectData[CurrObject[playerid]][oY], ObjectData[CurrObject[playerid]][oZ]);
+									sqlite_UpdateObjectPos(CurrObject[playerid]);
+									UpdateObject3DText(CurrObject[playerid]);
+									SendClientMessage(playerid, STEALTH_GREEN, "X Updated");
+								}
+								if(slistitem == 3)
+								{
+								    SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+									ObjectData[CurrObject[playerid]][oY] = floatstr(etext);
+									SetDynamicObjectPos(ObjectData[CurrObject[playerid]][oID], ObjectData[CurrObject[playerid]][oX], ObjectData[CurrObject[playerid]][oY], ObjectData[CurrObject[playerid]][oZ]);
+									sqlite_UpdateObjectPos(CurrObject[playerid]);
+									UpdateObject3DText(CurrObject[playerid]);
+									SendClientMessage(playerid, STEALTH_GREEN, "Y Updated");
+								}
+								if(slistitem == 4)
+								{
+								    SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+									ObjectData[CurrObject[playerid]][oZ] = floatstr(etext);
+									SetDynamicObjectPos(ObjectData[CurrObject[playerid]][oID], ObjectData[CurrObject[playerid]][oX], ObjectData[CurrObject[playerid]][oY], ObjectData[CurrObject[playerid]][oZ]);
+									sqlite_UpdateObjectPos(CurrObject[playerid]);
+									UpdateObject3DText(CurrObject[playerid]);
+									SendClientMessage(playerid, STEALTH_GREEN, "Z Updated");
+								}
+								
+								if(slistitem == 5)
+								{
+								    SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+									ObjectData[CurrObject[playerid]][oRX] = floatstr(etext);
+									SetDynamicObjectRot(ObjectData[CurrObject[playerid]][oID], ObjectData[CurrObject[playerid]][oRX], ObjectData[CurrObject[playerid]][oRY], ObjectData[CurrObject[playerid]][oRZ]);
+									sqlite_UpdateObjectPos(CurrObject[playerid]);
+									UpdateObject3DText(CurrObject[playerid]);
+									SendClientMessage(playerid, STEALTH_GREEN, "RX Updated");
+								}
+
+								if(slistitem == 6)
+								{
+								    SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+									ObjectData[CurrObject[playerid]][oRY] = floatstr(etext);
+									SetDynamicObjectRot(ObjectData[CurrObject[playerid]][oID], ObjectData[CurrObject[playerid]][oRX], ObjectData[CurrObject[playerid]][oRY], ObjectData[CurrObject[playerid]][oRZ]);
+									sqlite_UpdateObjectPos(CurrObject[playerid]);
+									UpdateObject3DText(CurrObject[playerid]);
+									SendClientMessage(playerid, STEALTH_GREEN, "RY Updated");
+								}
+								
+								if(slistitem == 7)
+								{
+								    SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+									ObjectData[CurrObject[playerid]][oRZ] = floatstr(etext);
+									SetDynamicObjectRot(ObjectData[CurrObject[playerid]][oID], ObjectData[CurrObject[playerid]][oRX], ObjectData[CurrObject[playerid]][oRY], ObjectData[CurrObject[playerid]][oRZ]);
+									sqlite_UpdateObjectPos(CurrObject[playerid]);
+									UpdateObject3DText(CurrObject[playerid]);
+									SendClientMessage(playerid, STEALTH_GREEN, "RZ Updated");
+								}
+							}
+						}
+                        ShowObjectPropMenu(playerid);
+				    }
+				    
+					new line[128];
+					if(slistitem == 2) line = "Enter new X position";
+					if(slistitem == 3) line = "Enter new Y position";
+					if(slistitem == 4) line = "Enter new Z position";
+					if(slistitem == 5) line = "Enter new RX position";
+					if(slistitem == 6) line = "Enter new RY position";
+					if(slistitem == 7) line = "Enter new RZ position";
+					
+				    Dialog_ShowCallback(playerid, using inline ChangePosition, DIALOG_STYLE_INPUT, "Texture Studio", line, "Ok", "Cancel");
+				}
+				
+				// Materials
+				case 8..23:
+				{
+					inline ChangeMaterial(epid, edialogid, eresponse, elistitem, string:etext[])
+				    {
+						#pragma unused elistitem, edialogid, epid, etext
+						if(eresponse)
+						{
+						    new cmd[128];
+						    format(cmd, sizeof(cmd), "/mtset %i %s", slistitem - 8, etext);
+						    BroadcastCommand(playerid, cmd);
+						    
+							printf(cmd);
+						}
+						ShowObjectPropMenu(playerid);
+				    }
+                    Dialog_ShowCallback(playerid, using inline ChangeMaterial, DIALOG_STYLE_INPUT, "Texture Studio", "Enter new material index", "Ok", "Cancel");
+				}
+
+
+				// Colors
+				case 24..39:
+				{
+					inline ChangeColor(epid, edialogid, eresponse, elistitem, string:etext[])
+				    {
+						#pragma unused elistitem, edialogid, epid, etext
+						if(eresponse)
+						{
+						    new cmd[128];
+						    format(cmd, sizeof(cmd), "/mtcolor %i %s", slistitem - 24, etext);
+						    BroadcastCommand(playerid, cmd);
+						}
+						ShowObjectPropMenu(playerid);
+				    }
+                    Dialog_ShowCallback(playerid, using inline ChangeColor, DIALOG_STYLE_INPUT, "Texture Studio", "Enter new color use 0xFFFFFFFF format input", "Ok", "Cancel");
+				}
+
+				// Use text
+				case 40:
+				{
+					inline PropUseText(epid, edialogid, eresponse, elistitem, string:etext[])
+				    {
+						#pragma unused elistitem, edialogid, epid, etext
+						if(eresponse)
+						{
+							if(!ObjectData[CurrObject[playerid]][ousetext])
+							{
+								SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+							    ObjectData[CurrObject[playerid]][ousetext] = 1;
+							    RebuildObject(CurrObject[playerid]);
+								sqlite_ObjUseText(CurrObject[playerid]);
+
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_GREEN, "Text turned on");
+
+							}
+							else
+							{
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_YELLOW, "Text was already on");
+							}
+						}
+						else
+						{
+							if(ObjectData[CurrObject[playerid]][ousetext])
+							{
+							    ObjectData[CurrObject[playerid]][ousetext] = 0;
+							    RebuildObject(CurrObject[playerid]);
+								sqlite_ObjUseText(CurrObject[playerid]);
+
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_GREEN, "Text turned off");
+							}
+							else
+							{
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_YELLOW, "Text was already off");
+							}
+							
+						}
+						
+						ShowObjectPropMenu(playerid);
+				    }
+                    Dialog_ShowCallback(playerid, using inline PropUseText, DIALOG_STYLE_MSGBOX, "Texture Studio", "Turn text on/off", "On", "Off");
+				}
+				
+				// Fontface
+				case 41:
+				{
+					inline PropFontFace(epid, edialogid, eresponse, elistitem, string:etext[])
+				    {
+						#pragma unused elistitem, edialogid, epid, etext
+						if(eresponse)
+						{
+                            SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+						    ObjectData[CurrObject[playerid]][oFontFace] = elistitem;
+						    RebuildObject(CurrObject[playerid]);
+							sqlite_ObjFontFace(CurrObject[playerid]);
+
+							SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+							SendClientMessage(playerid, STEALTH_GREEN, "Font face changed");
+						}
+						ShowObjectPropMenu(playerid);
+				    }
+				    new line[512];
+					for(new i = 0; i < sizeof(FontNames); i++) format(line, sizeof(line), "%s%s\n", line, FontNames[i]);
+                    Dialog_ShowCallback(playerid, using inline PropFontFace, DIALOG_STYLE_LIST, "Texture Studio", line, "Ok", "Cancel");
+				}
+				
+				// oFontSize
+				case 42:
+				{
+					inline PropFontSize(epid, edialogid, eresponse, elistitem, string:etext[])
+				    {
+						#pragma unused elistitem, edialogid, epid, etext
+						if(eresponse)
+						{
+						    SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+						    ObjectData[CurrObject[playerid]][oFontSize] = elistitem;
+						    RebuildObject(CurrObject[playerid]);
+						    sqlite_ObjFontSize(CurrObject[playerid]);
+
+							SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+							SendClientMessage(playerid, STEALTH_GREEN, "Font size changed");
+						}
+						ShowObjectPropMenu(playerid);
+				    }
+				    new line[512];
+					for(new i = 0; i < sizeof(FontSizeNames); i++) format(line, sizeof(line), "%s%s\n", line, FontSizeNames[i]);
+                    Dialog_ShowCallback(playerid, using inline PropFontSize, DIALOG_STYLE_LIST, "Texture Studio", line, "Ok", "Cancel");
+				}
+				
+				// Fontbold
+				case 43:
+				{
+					inline PropFontBold(epid, edialogid, eresponse, elistitem, string:etext[])
+				    {
+						#pragma unused elistitem, edialogid, epid, etext
+						if(eresponse)
+						{
+							if(!ObjectData[CurrObject[playerid]][oFontBold])
+							{
+							    SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+							    ObjectData[CurrObject[playerid]][oFontBold] = 1;
+							    RebuildObject(CurrObject[playerid]);
+							    sqlite_ObjFontBold(CurrObject[playerid]);
+
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_GREEN, "Font bold turned on");
+
+							}
+							else
+							{
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_YELLOW, "Font bold was already on");
+							}
+
+						}
+						else
+						{
+							if(ObjectData[CurrObject[playerid]][oFontBold])
+							{
+							    SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+							    ObjectData[CurrObject[playerid]][oFontBold] = 0;
+							    RebuildObject(CurrObject[playerid]);
+								sqlite_ObjFontBold(CurrObject[playerid]);
+
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_GREEN, "Font bold turned off");
+
+							}
+							else
+							{
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_YELLOW, "Font bold was already off");
+							}
+						}
+
+						ShowObjectPropMenu(playerid);
+				    }
+                    Dialog_ShowCallback(playerid, using inline PropFontBold, DIALOG_STYLE_MSGBOX, "Texture Studio", "Turn bold on/off", "On", "Off");
+
+				}
+				
+				// Font color
+				case 44:
+				{
+					inline ChangeFontColor(epid, edialogid, eresponse, elistitem, string:etext[])
+				    {
+						#pragma unused elistitem, edialogid, epid, etext
+						if(eresponse)
+						{
+                            if(IsHexValue(etext))
+                            {
+                                SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+	     						sscanf(etext, "h", ObjectData[CurrObject[playerid]][oFontColor]);
+							    RebuildObject(CurrObject[playerid]);
+							    sqlite_ObjFontColor(CurrObject[playerid]);
+
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_GREEN, "Font color set");
+                            }
+                            else
+                            {
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_YELLOW, "Invalid hex value");
+                            }
+						}
+						ShowObjectPropMenu(playerid);
+				    }
+                    Dialog_ShowCallback(playerid, using inline ChangeFontColor, DIALOG_STYLE_INPUT, "Texture Studio", "Enter new color use 0xFFFFFFFF format input", "Ok", "Cancel");
+				}
+				
+				// Back color
+				case 45:
+				{
+					inline ChangeFontBackColor(epid, edialogid, eresponse, elistitem, string:etext[])
+				    {
+						#pragma unused elistitem, edialogid, epid, etext
+						if(eresponse)
+						{
+                            if(IsHexValue(etext))
+                            {
+                                SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+	     						sscanf(etext, "h", ObjectData[CurrObject[playerid]][oBackColor]);
+							    RebuildObject(CurrObject[playerid]);
+							    sqlite_ObjBackColor(CurrObject[playerid]);
+
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_GREEN, "Font back color set");
+                            }
+                            else
+                            {
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_YELLOW, "Invalid hex value");
+                            }
+
+						}
+						ShowObjectPropMenu(playerid);
+				    }
+                    Dialog_ShowCallback(playerid, using inline ChangeFontBackColor, DIALOG_STYLE_INPUT, "Texture Studio", "Enter new color use 0xFFFFFFFF format input", "Ok", "Cancel");
+				}
+				
+				// Alignment
+				case 46:
+				{
+					inline PropFontSize(epid, edialogid, eresponse, elistitem, string:etext[])
+				    {
+						#pragma unused elistitem, edialogid, epid, etext
+						if(eresponse)
+						{
+						    SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+						    ObjectData[CurrObject[playerid]][oAlignment] = elistitem;
+						    RebuildObject(CurrObject[playerid]);
+							sqlite_ObjAlignment(CurrObject[playerid]);
+
+							SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+							SendClientMessage(playerid, STEALTH_GREEN, "Font size changed");
+						}
+						ShowObjectPropMenu(playerid);
+				    }
+				    new line[512];
+     				for(new i = 0; i < sizeof(AlignmentNames); i++) format(line, sizeof(line), "%s%s\n", line, AlignmentNames[i]);
+                    Dialog_ShowCallback(playerid, using inline PropFontSize, DIALOG_STYLE_LIST, "Texture Studio", line, "Ok", "Cancel");
+				}
+				
+				// Textsize
+				case 47:
+				{
+					inline ChangeTextSize(epid, edialogid, eresponse, elistitem, string:etext[])
+				    {
+						#pragma unused elistitem, edialogid, epid, etext
+						if(eresponse)
+						{
+							new size = strval(etext);
+							
+							if(size > 0 && size < 201)
+							{
+							    SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+							    ObjectData[CurrObject[playerid]][oTextFontSize] = size;
+							    RebuildObject(CurrObject[playerid]);
+							    sqlite_ObjFontTextSize(CurrObject[playerid]);
+
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_GREEN, "Text size changed");
+							}
+						}
+						ShowObjectPropMenu(playerid);
+				    }
+                    Dialog_ShowCallback(playerid, using inline ChangeTextSize, DIALOG_STYLE_INPUT, "Texture Studio", "A new text size", "Ok", "Cancel");
+				
+				}
+				
+				// Text
+				case 48:
+				{
+					inline ChangeTextString(epid, edialogid, eresponse, elistitem, string:etext[])
+				    {
+						#pragma unused elistitem, edialogid, epid, etext
+						if(eresponse)
+						{
+							if(!isnull(etext))
+							{
+							    SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+							    format(ObjectData[CurrObject[playerid]][oObjectText], MAX_TEXT_LENGTH, "%s", etext);
+							    RebuildObject(CurrObject[playerid]);
+                                sqlite_ObjObjectText(CurrObject[playerid]);
+
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_GREEN, "Text has been changed");
+							}
+						}
+						ShowObjectPropMenu(playerid);
+				    }
+                    Dialog_ShowCallback(playerid, using inline ChangeTextString, DIALOG_STYLE_INPUT, "Texture Studio", "A new text string", "Ok", "Cancel");
+				}
+				
+				// Note
+				case 49:
+				{
+				    inline ChangeNote(epid, edialogid, eresponse, elistitem, string:etext[])
+				    {
+						#pragma unused elistitem, edialogid, epid, etext
+						if(eresponse)
+						{
+							SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+							format(ObjectData[CurrObject[playerid]][oNote], 64, "%s", etext);
+							sqlite_ObjNote(CurrObject[playerid]);
+                            UpdateObject3DText(CurrObject[playerid]);
+							SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+							SendClientMessage(playerid, STEALTH_YELLOW, "Note changed");
+						}
+                        ShowObjectPropMenu(playerid);
+				    }
+				    Dialog_ShowCallback(playerid, using inline ChangeNote, DIALOG_STYLE_INPUT, "Texture Studio", "Enter new note", "Ok", "Cancel");
+				}
+				
+				// Draw Distance
+				case 50:
+				{
+				    inline ChangeDD(epid, edialogid, eresponse, elistitem, string:etext[])
+				    {
+						#pragma unused elistitem, edialogid, epid, etext
+						if(eresponse)
+						{
+							SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+							
+                            ObjectData[CurrObject[playerid]][oDD] = floatstr(etext);
+                            if(ObjectData[CurrObject[playerid]][oDD] == 0.0) ObjectData[CurrObject[playerid]][oDD] = 300.0;
+                            Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[CurrObject[playerid]][oID], E_STREAMER_DRAW_DISTANCE, ObjectData[CurrObject[playerid]][oDD]);
+                            Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[CurrObject[playerid]][oID], E_STREAMER_STREAM_DISTANCE, ObjectData[CurrObject[playerid]][oDD]);
+							
+                            sqlite_UpdateObjectDD(CurrObject[playerid]);
+							SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+							SendClientMessage(playerid, STEALTH_YELLOW, sprintf("Draw distance set to %.2f", ObjectData[CurrObject[playerid]][oDD]));
+						}
+                        ShowObjectPropMenu(playerid);
+				    }
+				    Dialog_ShowCallback(playerid, using inline ChangeDD, DIALOG_STYLE_INPUT, "Texture Studio", "Enter new draw distance", "Ok", "Cancel");
+				}
+		    }
+		}
+	}
+	
+	// Create menu
+	new index = CurrObject[playerid];
+
+	format(propline, sizeof(propline), "{FFFF00}Group: {00FF00}%i\n{FFFF00}Model: {00FF00}%i\n{FFFF00}x: {00FF00}%f\n{FFFF00}y: {00FF00}%f\n{FFFF00}z: {00FF00}%f\n{FFFF00}rx: {00FF00}%f\n{FFFF00}ry: {00FF00}%f\n{FFFF00}rz: {00FF00}%f\n", ObjectData[index][oGroup], ObjectData[index][oModel],
+        ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ], ObjectData[index][oRX], ObjectData[index][oRY], ObjectData[index][oRZ]);
+
+	for(new i = 0; i < MAX_MATERIALS; i++) format(propline, sizeof(propline), "%s{FFFF00}Material Index %i: {00FF00}%i\n", propline, i, ObjectData[index][oTexIndex][i]);
+	for(new i = 0; i < MAX_MATERIALS; i++) format(propline, sizeof(propline), "%s{FFFF00}Material Color %i: {00FF00}%i\n", propline, i, ObjectData[index][oColorIndex][i]);
+
+	format(propline, sizeof(propline), "%s{FFFF00}Usetext: {00FF00}%i\n{FFFF00}FontFace: {00FF00}%s\n{FFFF00}FontSize: {00FF00}%s\n{FFFF00}FontBold: {00FF00}%i\n{FFFF00}FontColor: {00FF00}%i\n{FFFF00}FontBackColor: {00FF00}%i\n{FFFF00}Alignment: {00FF00}%s\n{FFFF00}FontTextSize: {00FF00}%i\n{FFFF00}Text: {00FF00}%s\n", propline,
+        ObjectData[index][ousetext], FontNames[ObjectData[index][oFontFace]], FontSizeNames[ObjectData[index][oFontSize]], ObjectData[index][oFontBold], ObjectData[index][oFontColor],
+        ObjectData[index][oBackColor], AlignmentNames[ObjectData[index][oAlignment]], ObjectData[index][oTextFontSize], ObjectData[index][oObjectText]);
+
+	format(propline, sizeof(propline), "%s{FFFF00}Note: {00FF00}%s\n{FFFF00}Draw Distance: {00FF00}%.2f", propline,
+        ObjectData[index][oNote], ObjectData[index][oDD]);
+
+	Dialog_ShowCallback(playerid, using inline SelectObjProp, DIALOG_STYLE_LIST, "Texture Studio - Object Property editor", propline, "Ok", "Cancel");
+
+	return 1;
+}
+
+YCMD:mprop(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Edit the maps properties.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+    ShowMapPropMenu(playerid);
+
+	return 1;
+}
+
+ShowMapPropMenu(playerid)
+{
+	// Init the prop menu
+    inline SelectMapProp(spid, sdialogid, sresponse, slistitem, string:stext[])
+	{
+		#pragma unused slistitem, sdialogid, spid, stext
+		if(sresponse)
+		{
+		    switch(slistitem)
+		    {
+				// Interior
+		        case 0:
+		        {
+				    inline ChangeInterior(epid, edialogid, eresponse, elistitem, string:etext[])
+				    {
+						#pragma unused elistitem, edialogid, epid, etext
+						if(eresponse)
+						{
+							if(!isnull(etext) || !isnumeric(etext))
+							{
+								MapSetting[mInterior] = strval(etext);
+                                sqlite_UpdateSettings();
+                                
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_YELLOW, "Interior changed");
+							}
+							else
+							{
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_YELLOW, "You must supply an interior index!");
+							}
+						}
+                        ShowMapPropMenu(playerid);
+					}
+					Dialog_ShowCallback(playerid, using inline ChangeInterior, DIALOG_STYLE_INPUT, "Texture Studio", "Enter new interior", "Ok", "Cancel");
+				}
+				
+				// Virtual World
+				case 1:
+				{
+				    inline ChangeVW(epid, edialogid, eresponse, elistitem, string:etext[])
+				    {
+						#pragma unused elistitem, edialogid, epid, etext
+						if(eresponse)
+						{
+							if(!isnull(etext) || !isnumeric(etext))
+							{
+								MapSetting[mVirtualWorld] = strval(etext);
+                                sqlite_UpdateSettings();
+                                
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_YELLOW, "Virtual world changed");
+							}
+							else
+							{
+								SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+								SendClientMessage(playerid, STEALTH_YELLOW, "You must supply a virtual world index!");
+							}
+						}
+                        ShowMapPropMenu(playerid);
+				    }
+				    Dialog_ShowCallback(playerid, using inline ChangeVW, DIALOG_STYLE_INPUT, "Texture Studio", "Enter new virtual world", "Ok", "Cancel");
+				}
+		    }
+		}
+	}
+	
+	format(propline, sizeof(propline), "{FFFF00}Interior: {00FF00}%i\n{FFFF00}Virtual World: {00FF00}%i\n",
+        MapSetting[mInterior], MapSetting[mVirtualWorld]);
+
+	Dialog_ShowCallback(playerid, using inline SelectMapProp, DIALOG_STYLE_LIST, "Texture Studio - Map Property editor", propline, "Ok", "Cancel");
+
+	return 1;
+}
+
+
+RebuildObject(index)
+{
+    // Destroy the object
+	DestroyDynamicObject(ObjectData[index][oID]);
+
+	// Re-create object
+	ObjectData[index][oID] = CreateDynamicObject(ObjectData[index][oModel], ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ], ObjectData[index][oRX], ObjectData[index][oRY], ObjectData[index][oRZ], MapSetting[mVirtualWorld], MapSetting[mInterior], -1, 300.0);
+	Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[index][oID], E_STREAMER_DRAW_DISTANCE, 300.0);
+
+	// Update the streamer
+	foreach(new i : Player)
+	{
+	    if(IsPlayerInRangeOfPoint(i, 300.0, ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ])) Streamer_Update(i);
+	}
+
+	// Update the materials
+	UpdateMaterial(index);
+
+	// Update object text
+	UpdateObjectText(index);
+
+	return 1;
+}
+
+
+

+ 146 - 0
Texture-Studio-master/filterscripts/tstudio/restrict.pwn

@@ -0,0 +1,146 @@
+public OnFilterScriptInit()
+{
+	Iter_Init(Restriction);
+    
+	#if defined RS_OnFilterScriptInit
+		RS_OnFilterScriptInit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptInit
+	#undef OnFilterScriptInit
+#else
+	#define _ALS_OnFilterScriptInit
+#endif
+#define OnFilterScriptInit RS_OnFilterScriptInit
+#if defined RS_OnFilterScriptInit
+	forward RS_OnFilterScriptInit();
+#endif
+
+public OnPlayerDisconnect(playerid, reason)
+{
+	for(new g; g < 51; g++)
+        Iter_Remove(Restriction[g], playerid);
+    
+	#if defined RS_OnPlayerDisconnect
+		RS_OnPlayerDisconnect(playerid, reason);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerDisconnect
+	#undef OnPlayerDisconnect
+#else
+	#define _ALS_OnPlayerDisconnect
+#endif
+#define OnPlayerDisconnect RS_OnPlayerDisconnect
+#if defined RS_OnPlayerDisconnect
+	forward RS_OnPlayerDisconnect(playerid, reason);
+#endif
+
+YCMD:restrict(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "[RCON ONLY] Prevent a group of objects from being edited.");
+		return 1;
+	}
+    
+    if(!IsPlayerAdmin(playerid))
+        return SendClientMessage(playerid, STEALTH_YELLOW, "Only RCON administrators can use this command");
+    
+    new groupid, players[10];
+    if(sscanf(arg, "iA<i>(-1)[10]", groupid, players))
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "/restrict <Group ID> <Optional: Players, up to 10>");
+		SendClientMessage(playerid, STEALTH_GREEN, "If no players are listed then only YOU can edit this group");
+		return 1;
+	}
+    
+    if(!(0 < groupid < MAX_GROUPS))
+        return SendClientMessage(playerid, STEALTH_YELLOW, sprintf("You can only restrict groups 1-%d", MAX_GROUPS - 1));
+    
+    Iter_Clear(Restriction[groupid]);
+    
+    for(new i; i < 10; i++)
+    {
+        if(players[i] != -1)
+            Iter_Add(Restriction[groupid], players[i]);
+        else
+            break;
+    }
+    
+    gRestricted[groupid] = true;
+    
+    foreach(new p: Player)
+    {
+        new bool:cont;
+        for(new i; i < 10; i++)
+        {
+            if(players[i] == p)
+            {
+                cont = true;
+                break;
+            }
+        }
+        if(cont || IsPlayerAdmin(p))
+            continue;
+        
+        if(ObjectData[CurrObject[p]][oGroup] == groupid)
+        {
+            CurrObject[p] = -1;
+            SendClientMessage(p, STEALTH_YELLOW, "You're selected object has been deselected due to a restriction");
+        }
+        
+        new count;
+        foreach(new i : Objects)
+        {
+            if(GroupedObjects[p][i] && ObjectData[i][oGroup] == groupid)
+            {
+                GroupedObjects[p][i] = false;
+                OnUpdateGroup3DText(i);
+                UpdateObject3DText(i);
+                count++;
+            }
+        }
+        if(count)
+        {
+            UpdatePlayerGSelText(p);
+            SendClientMessage(p, STEALTH_YELLOW, sprintf("%i of your grouped objects have been deselected due to a restriction", count));
+        }
+    }
+    
+    SendClientMessage(playerid, STEALTH_GREEN, "You've restricted this group");
+    return 1;
+}
+
+YCMD:unrestrict(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "[RCON ONLY] Allow all players to edit a group.");
+		return 1;
+	}
+    
+    if(!IsPlayerAdmin(playerid))
+        return SendClientMessage(playerid, STEALTH_YELLOW, "Only RCON administrators can use this command");
+    
+    new groupid;
+    if(sscanf(arg, "i", groupid))
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "You must provide a group ID");
+		return 1;
+	}
+    
+    if(!(0 < groupid < MAX_GROUPS))
+        return SendClientMessage(playerid, STEALTH_YELLOW, sprintf("You can only restrict groups 1-%d", MAX_GROUPS - 1));
+    
+    Iter_Clear(Restriction[groupid]);
+    gRestricted[groupid] = false;
+    
+    SendClientMessage(playerid, STEALTH_GREEN, "You've unrestricted this group");
+    return 1;
+}

+ 748 - 0
Texture-Studio-master/filterscripts/tstudio/texteditor.pwn

@@ -0,0 +1,748 @@
+////////////////////////////////////////////////////////////////////////////////
+///Object Text editing module //////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+
+// This is adapted from 420medit
+
+#include "tstudio\fontdata.pwn"
+
+// Text draws background
+new Text:TextEdit_Background_0;
+new Text:TextEdit_Background_2;
+new Text:TextEdit_Background_3;
+new Text:TextEdit_Background_4;
+new Text:TextEdit_Background_5;
+new Text:TextEdit_Background_6;
+new Text:TextEdit_Background_7;
+new Text:TextEdit_Background_8;
+new Text:TextEdit_Background_9;
+
+// Clickable text draws
+new PlayerText:Click_ToggleText[MAX_PLAYERS];
+new PlayerText:Click_SetText[MAX_PLAYERS];
+new PlayerText:Click_SetFont[MAX_PLAYERS];
+new PlayerText:Click_SetFontSize[MAX_PLAYERS];
+new PlayerText:Click_ToggleBold[MAX_PLAYERS];
+new PlayerText:Click_FontColor[MAX_PLAYERS];
+new PlayerText:Click_BackColor[MAX_PLAYERS];
+new PlayerText:Click_Alignment[MAX_PLAYERS];
+new PlayerText:Click_FontTextSize[MAX_PLAYERS];
+
+static bool:TextEditing[MAX_PLAYERS];
+
+#define IsTextEditing(%0) TextEditing[%0]
+
+// Open text editor
+YCMD:text(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Add/edit/remove text on an object. (Only texture slot 0 is supported.)");
+		return 1;
+	}
+
+    NoEditingMode(playerid);
+
+    MapOpenCheck();
+    
+    EditCheck(playerid);
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	SendClientMessage(playerid, STEALTH_GREEN, "Started Editing Text");
+
+	// In editing mode
+	EditingMode[playerid] = true;
+	TextEditing[playerid] = true;
+
+	// Text editing mode
+	SetEditMode(playerid, EDIT_MODE_TEXT);
+	
+	// Update the text editor
+    UpdateTextEditor(playerid);
+
+	// Show the text editor
+    ShowTextEditorDraw(playerid);
+
+	// Set the current textdraw
+	SetCurrTextDraw(playerid, TEXTDRAW_TEXTEDIT);
+
+	// Select textdraw mode
+	SelectTextDraw(playerid, 0xD9D919FF);
+
+	return 1;
+}
+
+// Update the text editor (when opening)
+UpdateTextEditor(playerid)
+{
+	new index = CurrObject[playerid];
+
+	new tmp[64];
+
+   	// Update active status
+	if(GetObjectUseText(index)) PlayerTextDrawSetString(playerid, Click_ToggleText[playerid], "On");
+	else PlayerTextDrawSetString(playerid, Click_ToggleText[playerid], "Off");
+
+	// Update text
+	if(isnull(GetObjectObjectText(index))) PlayerTextDrawSetString(playerid, Click_SetText[playerid], "None");
+	else PlayerTextDrawSetString(playerid, Click_SetText[playerid], "Click To Edit");
+
+	// Update font
+	PlayerTextDrawSetString(playerid, Click_SetFont[playerid], FontNames[GetObjectFontFace(index)]);
+
+	// Update font size
+	PlayerTextDrawSetString(playerid, Click_SetFontSize[playerid], FontSizeNames[GetObjectFontSize(index)]);
+
+	// Update bold
+	if(GetObjectFontBold(index)) PlayerTextDrawSetString(playerid, Click_ToggleBold[playerid], "On");
+	else PlayerTextDrawSetString(playerid, Click_ToggleBold[playerid], "Off");
+
+	// Update font color
+	valstr(tmp, GetObjectFontColor(index));
+	PlayerTextDrawSetString(playerid, Click_FontColor[playerid], tmp);
+
+	// Update back color
+	valstr(tmp, GetObjectBackColor(index));
+	PlayerTextDrawSetString(playerid, Click_BackColor[playerid], tmp);
+
+	// Update alignment
+	if(GetObjectAlignment(index) == 0) PlayerTextDrawSetString(playerid, Click_Alignment[playerid], "Left");
+	else if(GetObjectAlignment(index) == 1) PlayerTextDrawSetString(playerid, Click_Alignment[playerid], "Center");
+	else if(GetObjectAlignment(index) == 2) PlayerTextDrawSetString(playerid, Click_Alignment[playerid], "Right");
+
+	// Update Text Font Size
+	valstr(tmp, GetObjectTextFontSize(index));
+	PlayerTextDrawSetString(playerid, Click_FontTextSize[playerid], tmp);
+}
+
+// Only closes text editor
+forward ClickTextDrawEditText(playerid, Text:clickedid);
+public ClickTextDrawEditText(playerid, Text:clickedid)
+{
+	if (Text:INVALID_TEXT_DRAW == clickedid)
+	{
+		// Textdraws are now closed
+	    ToggleTextDrawOpen(playerid, false);
+
+	    // Player is not in text editing mode anymore
+    	SetCurrTextDraw(playerid, TEXTDRAW_NONE);
+
+		// Hide the text editor
+	    HideTextEditorDraw(playerid);
+
+		// Cancel textdraw select
+		CancelSelectTextDraw(playerid);
+
+		// Click finished processing
+		EditingMode[playerid] = false;
+		SetEditMode(playerid, EDIT_MODE_NONE);
+				
+	    return 1;
+	}
+	return 0;
+}
+
+// Player clicked a textdraw option
+forward ClickPlayerTextDrawEditText(playerid, PlayerText:playertextid);
+public ClickPlayerTextDrawEditText(playerid, PlayerText:playertextid)
+{
+	new index = CurrObject[playerid];
+
+	// Toggle text off and on
+	if(playertextid == Click_ToggleText[playerid])
+	{
+		if(GetObjectUseText(index))
+		{
+            SetObjectUseText(index, false);
+			PlayerTextDrawSetString(playerid, Click_ToggleText[playerid], "Off");
+		}
+		else
+		{
+            SetObjectUseText(index, true);
+			PlayerTextDrawSetString(playerid, Click_ToggleText[playerid], "On");
+		}
+
+		sqlite_ObjUseText(index);
+
+		// Need to update materials when turning off
+		UpdateMaterial(index);
+		
+        UpdateObjectText(index);
+
+       	if(ObjectData[index][oAttachedVehicle] > -1) UpdateAttachedVehicleObject(ObjectData[index][oAttachedVehicle], index, VEHICLE_REATTACH_UPDATE);
+
+		return 1;
+	}
+	
+	// Set the text
+	else if(playertextid == Click_SetText[playerid])
+	{
+		inline Response(pid, dialogid, response, listitem, string:text[])
+		{
+			#pragma unused listitem, dialogid, pid
+			if(response)
+			{
+				if(strlen(text) > 0)
+				{
+					if(strlen(text) < MAX_TEXT_LENGTH)
+					{
+						SetObjectObjectText(index, text);
+						PlayerTextDrawSetString(playerid, Click_SetText[playerid], "Click To Edit");
+
+                        sqlite_ObjObjectText(index);
+
+						UpdateObjectText(index);
+
+			        	if(ObjectData[index][oAttachedVehicle] > -1) UpdateAttachedVehicleObject(ObjectData[index][oAttachedVehicle], index, VEHICLE_REATTACH_UPDATE);
+					}
+					else
+					{
+					    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+					    SendClientMessage(playerid, STEALTH_YELLOW, "Text length is too long");
+					}
+				}
+				else
+				{
+				    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				    SendClientMessage(playerid, STEALTH_YELLOW, "Text must contain at least 1 character.");
+				}
+                return 1;
+			}
+		}
+		new tmptext[MAX_TEXT_LENGTH];
+		strcat(tmptext, ObjectData[index][oObjectText], MAX_TEXT_LENGTH);
+	    FixText(tmptext);
+
+
+		Dialog_ShowCallback(playerid, using inline Response, DIALOG_STYLE_INPUT, "Set Material Text", tmptext, "Ok", "Cancel");
+		return 1;
+	}
+	
+	
+	// Set the font
+	else if(playertextid == Click_SetFont[playerid])
+	{
+		// Increment the font face index
+		SetObjectFontFace(index, GetObjectFontFace(index) + 1);
+		
+		// Too high reset to 0
+		if(GetObjectFontFace(index) == sizeof(FontNames)) SetObjectFontFace(index, 0);
+        PlayerTextDrawSetString(playerid, Click_SetFont[playerid], FontNames[GetObjectFontFace(index)]);
+
+		sqlite_ObjFontFace(index);
+		
+		UpdateObjectText(index);
+
+       	if(ObjectData[index][oAttachedVehicle] > -1) UpdateAttachedVehicleObject(ObjectData[index][oAttachedVehicle], index, VEHICLE_REATTACH_UPDATE);
+		
+        return 1;
+	}
+	
+	// Set font size
+	else if(playertextid == Click_SetFontSize[playerid])
+	{
+		SetObjectFontSize(index, GetObjectFontSize(index) + 1);
+
+		if(GetObjectFontSize(index) == sizeof(FontSizeNames)) SetObjectFontSize(index, 0);
+        PlayerTextDrawSetString(playerid, Click_SetFontSize[playerid], FontSizeNames[GetObjectFontSize(index)]);
+
+        sqlite_ObjFontSize(index);
+        
+        UpdateObjectText(index);
+
+       	if(ObjectData[index][oAttachedVehicle] > -1) UpdateAttachedVehicleObject(ObjectData[index][oAttachedVehicle], index, VEHICLE_REATTACH_UPDATE);
+        
+		return 1;
+	}
+	
+	// Toggle bold on off
+    else if(playertextid == Click_ToggleBold[playerid])
+    {
+		if(GetObjectFontBold(index))
+		{
+            SetObjectFontBold(index, false);
+			PlayerTextDrawSetString(playerid, Click_ToggleBold[playerid], "Off");
+		}
+		else
+		{
+            SetObjectFontBold(index, true);
+			PlayerTextDrawSetString(playerid, Click_ToggleBold[playerid], "On");
+		}
+
+		sqlite_ObjFontBold(index);
+		
+		UpdateObjectText(index);
+
+       	if(ObjectData[index][oAttachedVehicle] > -1) UpdateAttachedVehicleObject(ObjectData[index][oAttachedVehicle], index, VEHICLE_REATTACH_UPDATE);
+        
+		return 1;
+    }
+    
+    	// Set alignment
+    else if(playertextid == Click_Alignment[playerid])
+	{
+		if(GetObjectAlignment(index) < 2) SetObjectAlignment(index, GetObjectAlignment(index) + 1);
+		else SetObjectAlignment(index, 0);
+
+		if(GetObjectAlignment(index) == 0) PlayerTextDrawSetString(playerid, Click_Alignment[playerid], "Left");
+		else if(GetObjectAlignment(index) == 1) PlayerTextDrawSetString(playerid, Click_Alignment[playerid], "Center");
+		else if(GetObjectAlignment(index) == 2) PlayerTextDrawSetString(playerid, Click_Alignment[playerid], "Right");
+
+        sqlite_ObjAlignment(index);
+        
+        UpdateObjectText(index);
+
+       	if(ObjectData[index][oAttachedVehicle] > -1) UpdateAttachedVehicleObject(ObjectData[index][oAttachedVehicle], index, VEHICLE_REATTACH_UPDATE);
+        
+		return 1;
+	}
+	
+	// Set the font text size
+ 	else if(playertextid == Click_FontTextSize[playerid])
+	{
+		inline Response(pid, dialogid, response, listitem, string:text[])
+		{
+			#pragma unused listitem, dialogid, pid
+			if(response)
+			{
+			    new size;
+				size = strval(text);
+				if(size > 0 && size < 200)
+				{
+					SetObjectTextFontSize(index, size);
+                    PlayerTextDrawSetString(playerid, Click_FontTextSize[playerid], text);
+                    
+					sqlite_ObjFontTextSize(index);
+					
+					UpdateObjectText(index);
+
+		        	if(ObjectData[index][oAttachedVehicle] > -1) UpdateAttachedVehicleObject(ObjectData[index][oAttachedVehicle], index, VEHICLE_REATTACH_UPDATE);
+				}
+				else
+				{
+				    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				    SendClientMessage(playerid, STEALTH_YELLOW, "Invalid text font size (0 - 200).");
+				}
+			}
+		}
+		Dialog_ShowCallback(playerid, using inline Response, DIALOG_STYLE_INPUT, "Set Font Text Size", "Choose a Font Text Size", "Ok", "Cancel");
+		return 1;
+	}
+	
+	// Set the font color
+	else if(playertextid == Click_FontColor[playerid])
+	{
+		inline Response(pid, dialogid, response, listitem, string:text[])
+		{
+			#pragma unused listitem, dialogid, pid
+			if(response)
+			{
+				new hexcolor;
+				if(sscanf(text, "h", hexcolor))
+				{
+				    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				    SendClientMessage(playerid, STEALTH_YELLOW, "Invalid hex color.");
+				}
+				else
+				{
+				    // Set the font color
+				    SetFontColor(index, hexcolor);
+					    
+					// Save the font color
+					sqlite_ObjFontColor(index);
+					
+					UpdateObjectText(index);
+
+		        	if(ObjectData[index][oAttachedVehicle] > -1) UpdateAttachedVehicleObject(ObjectData[index][oAttachedVehicle], index, VEHICLE_REATTACH_UPDATE);
+						
+				    new tmp[12];
+					valstr(tmp, hexcolor);
+					PlayerTextDrawSetString(playerid, Click_FontColor[playerid], tmp);
+				}
+			}
+		}
+        Dialog_ShowCallback(playerid, using inline Response, DIALOG_STYLE_INPUT, "Set Font Color", "Enter a hex value for the font color (ARGB) ", "Ok", "Cancel");
+		return 1;
+	}
+
+	// Set Back color
+    else if(playertextid == Click_BackColor[playerid])
+    {
+		inline Response(pid, dialogid, response, listitem, string:text[])
+		{
+			#pragma unused listitem, dialogid, pid
+			if(response)
+			{
+				new hexcolor;
+				if(sscanf(text, "h", hexcolor))
+				{
+				    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				    SendClientMessage(playerid, STEALTH_YELLOW, "Invalid hex color.");
+				}
+				else
+				{
+				    // Set the font color
+				    SetBackColor(index, hexcolor);
+
+					// Save the font color
+					sqlite_ObjBackColor(index);
+
+					UpdateObjectText(index);
+
+		        	if(ObjectData[index][oAttachedVehicle] > -1) UpdateAttachedVehicleObject(ObjectData[index][oAttachedVehicle], index, VEHICLE_REATTACH_UPDATE);
+
+				    new tmp[12];
+					valstr(tmp, hexcolor);
+					PlayerTextDrawSetString(playerid, Click_BackColor[playerid], tmp);
+				}
+			}
+		}
+        Dialog_ShowCallback(playerid, using inline Response, DIALOG_STYLE_INPUT, "Set Back Color", "Enter a hex value for the font color (ARGB) ", "Ok", "Cancel");
+		return 1;
+    }
+
+	return 0;
+}
+
+// Show the editor for a player
+ShowTextEditorDraw(playerid)
+{
+	TextDrawShowForPlayer(playerid,TextEdit_Background_0);
+	TextDrawShowForPlayer(playerid,TextEdit_Background_2);
+	TextDrawShowForPlayer(playerid,TextEdit_Background_3);
+	TextDrawShowForPlayer(playerid,TextEdit_Background_4);
+	TextDrawShowForPlayer(playerid,TextEdit_Background_5);
+	TextDrawShowForPlayer(playerid,TextEdit_Background_6);
+	TextDrawShowForPlayer(playerid,TextEdit_Background_7);
+	TextDrawShowForPlayer(playerid,TextEdit_Background_8);
+	TextDrawShowForPlayer(playerid,TextEdit_Background_9);
+
+	PlayerTextDrawShow(playerid,Click_ToggleText[playerid]);
+	PlayerTextDrawShow(playerid,Click_SetText[playerid]);
+	PlayerTextDrawShow(playerid,Click_SetFont[playerid]);
+	PlayerTextDrawShow(playerid,Click_SetFontSize[playerid]);
+	PlayerTextDrawShow(playerid,Click_ToggleBold[playerid]);
+	PlayerTextDrawShow(playerid,Click_FontColor[playerid]);
+	PlayerTextDrawShow(playerid,Click_BackColor[playerid]);
+	PlayerTextDrawShow(playerid,Click_Alignment[playerid]);
+	PlayerTextDrawShow(playerid,Click_FontTextSize[playerid]);
+
+	TextEditing[playerid] = true;
+
+	// Disable the GUI system while using this system
+	PlayerSetGUIPaused(playerid, true);
+}
+
+// Hide the editor for a player
+HideTextEditorDraw(playerid)
+{
+	TextDrawHideForPlayer(playerid,TextEdit_Background_0);
+	TextDrawHideForPlayer(playerid,TextEdit_Background_2);
+	TextDrawHideForPlayer(playerid,TextEdit_Background_3);
+	TextDrawHideForPlayer(playerid,TextEdit_Background_4);
+	TextDrawHideForPlayer(playerid,TextEdit_Background_5);
+	TextDrawHideForPlayer(playerid,TextEdit_Background_6);
+	TextDrawHideForPlayer(playerid,TextEdit_Background_7);
+	TextDrawHideForPlayer(playerid,TextEdit_Background_8);
+	TextDrawHideForPlayer(playerid,TextEdit_Background_9);
+
+	PlayerTextDrawHide(playerid,Click_ToggleText[playerid]);
+	PlayerTextDrawHide(playerid,Click_SetText[playerid]);
+	PlayerTextDrawHide(playerid,Click_SetFont[playerid]);
+	PlayerTextDrawHide(playerid,Click_SetFontSize[playerid]);
+	PlayerTextDrawHide(playerid,Click_ToggleBold[playerid]);
+	PlayerTextDrawHide(playerid,Click_FontColor[playerid]);
+	PlayerTextDrawHide(playerid,Click_BackColor[playerid]);
+	PlayerTextDrawHide(playerid,Click_Alignment[playerid]);
+	PlayerTextDrawHide(playerid,Click_FontTextSize[playerid]);
+	
+	// Enable the GUI system when complete
+
+	TextEditing[playerid] = false;
+
+	// Put a small pause to prevent any interferring
+	SetTimerEx("PlayerSetGUIPaused", 300, false, "ii", playerid, 0);
+}
+
+
+// Initalize Static draws
+public OnFilterScriptInit()
+{
+	TextEdit_Background_0 = TextDrawCreate(10.000000, 150.000000, "Text On:");
+	TextDrawBackgroundColor(TextEdit_Background_0, 255);
+	TextDrawFont(TextEdit_Background_0, 2);
+	TextDrawLetterSize(TextEdit_Background_0, 0.300000, 1.000000);
+	TextDrawColor(TextEdit_Background_0, 16711935);
+	TextDrawSetOutline(TextEdit_Background_0, 1);
+	TextDrawSetProportional(TextEdit_Background_0, 1);
+	TextDrawSetSelectable(TextEdit_Background_0, 0);
+
+	TextEdit_Background_2 = TextDrawCreate(10.000000, 160.000000, "Text:");
+	TextDrawBackgroundColor(TextEdit_Background_2, 255);
+	TextDrawFont(TextEdit_Background_2, 2);
+	TextDrawLetterSize(TextEdit_Background_2, 0.300000, 1.000000);
+	TextDrawColor(TextEdit_Background_2, 16711935);
+	TextDrawSetOutline(TextEdit_Background_2, 1);
+	TextDrawSetProportional(TextEdit_Background_2, 1);
+	TextDrawSetSelectable(TextEdit_Background_2, 0);
+
+	TextEdit_Background_3 = TextDrawCreate(10.000000, 170.000000, "Font:");
+	TextDrawBackgroundColor(TextEdit_Background_3, 255);
+	TextDrawFont(TextEdit_Background_3, 2);
+	TextDrawLetterSize(TextEdit_Background_3, 0.300000, 1.000000);
+	TextDrawColor(TextEdit_Background_3, 16711935);
+	TextDrawSetOutline(TextEdit_Background_3, 1);
+	TextDrawSetProportional(TextEdit_Background_3, 1);
+	TextDrawSetSelectable(TextEdit_Background_3, 0);
+
+	TextEdit_Background_4 = TextDrawCreate(10.000000, 180.000000, "Font Size:");
+	TextDrawBackgroundColor(TextEdit_Background_4, 255);
+	TextDrawFont(TextEdit_Background_4, 2);
+	TextDrawLetterSize(TextEdit_Background_4, 0.300000, 1.000000);
+	TextDrawColor(TextEdit_Background_4, 16711935);
+	TextDrawSetOutline(TextEdit_Background_4, 1);
+	TextDrawSetProportional(TextEdit_Background_4, 1);
+	TextDrawSetSelectable(TextEdit_Background_4, 0);
+
+	TextEdit_Background_5 = TextDrawCreate(10.000000, 190.000000, "Font Bold:");
+	TextDrawBackgroundColor(TextEdit_Background_5, 255);
+	TextDrawFont(TextEdit_Background_5, 2);
+	TextDrawLetterSize(TextEdit_Background_5, 0.300000, 1.000000);
+	TextDrawColor(TextEdit_Background_5, 16711935);
+	TextDrawSetOutline(TextEdit_Background_5, 1);
+	TextDrawSetProportional(TextEdit_Background_5, 1);
+	TextDrawSetSelectable(TextEdit_Background_5, 0);
+
+	TextEdit_Background_6 = TextDrawCreate(10.000000, 200.000000, "Font Color:");
+	TextDrawBackgroundColor(TextEdit_Background_6, 255);
+	TextDrawFont(TextEdit_Background_6, 2);
+	TextDrawLetterSize(TextEdit_Background_6, 0.300000, 1.000000);
+	TextDrawColor(TextEdit_Background_6, 16711935);
+	TextDrawSetOutline(TextEdit_Background_6, 1);
+	TextDrawSetProportional(TextEdit_Background_6, 1);
+	TextDrawSetSelectable(TextEdit_Background_6, 0);
+
+	TextEdit_Background_7 = TextDrawCreate(10.000000, 211.000000, "Back Color:");
+	TextDrawBackgroundColor(TextEdit_Background_7, 255);
+	TextDrawFont(TextEdit_Background_7, 2);
+	TextDrawLetterSize(TextEdit_Background_7, 0.300000, 1.000000);
+	TextDrawColor(TextEdit_Background_7, 16711935);
+	TextDrawSetOutline(TextEdit_Background_7, 1);
+	TextDrawSetProportional(TextEdit_Background_7, 1);
+	TextDrawSetSelectable(TextEdit_Background_7, 0);
+
+	TextEdit_Background_8 = TextDrawCreate(10.000000, 222.000000, "Alignment:");
+	TextDrawBackgroundColor(TextEdit_Background_8, 255);
+	TextDrawFont(TextEdit_Background_8, 2);
+	TextDrawLetterSize(TextEdit_Background_8, 0.300000, 1.000000);
+	TextDrawColor(TextEdit_Background_8, 16711935);
+	TextDrawSetOutline(TextEdit_Background_8, 1);
+	TextDrawSetProportional(TextEdit_Background_8, 1);
+	TextDrawSetSelectable(TextEdit_Background_8, 0);
+
+	TextEdit_Background_9 = TextDrawCreate(10.000000, 233.000000, "Font Text Size:");
+	TextDrawBackgroundColor(TextEdit_Background_9, 255);
+	TextDrawFont(TextEdit_Background_9, 2);
+	TextDrawLetterSize(TextEdit_Background_9, 0.300000, 1.000000);
+	TextDrawColor(TextEdit_Background_9, 16711935);
+	TextDrawSetOutline(TextEdit_Background_9, 1);
+	TextDrawSetProportional(TextEdit_Background_9, 1);
+	TextDrawSetSelectable(TextEdit_Background_9, 0);
+
+	foreach(new i : Player)
+	{
+	    CreatePlayerTextDraws(i);
+	
+	}
+
+	#if defined TE_OnFilterScriptInit
+		TE_OnFilterScriptInit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptInit
+	#undef OnFilterScriptInit
+#else
+	#define _ALS_OnFilterScriptInit
+#endif
+#define OnFilterScriptInit TE_OnFilterScriptInit
+#if defined TE_OnFilterScriptInit
+	forward TE_OnFilterScriptInit();
+#endif
+
+public OnFilterScriptExit()
+{
+	foreach(new i : Player)
+	{
+		TextDrawDestroy(TextEdit_Background_0);
+		TextDrawDestroy(TextEdit_Background_2);
+		TextDrawDestroy(TextEdit_Background_3);
+		TextDrawDestroy(TextEdit_Background_4);
+		TextDrawDestroy(TextEdit_Background_5);
+		TextDrawDestroy(TextEdit_Background_6);
+		TextDrawDestroy(TextEdit_Background_7);
+		TextDrawDestroy(TextEdit_Background_8);
+		TextDrawDestroy(TextEdit_Background_9);
+
+		PlayerTextDrawDestroy(i,Click_ToggleText[i]);
+		PlayerTextDrawDestroy(i,Click_SetText[i]);
+		PlayerTextDrawDestroy(i,Click_SetFont[i]);
+		PlayerTextDrawDestroy(i,Click_SetFontSize[i]);
+		PlayerTextDrawDestroy(i,Click_ToggleBold[i]);
+		PlayerTextDrawDestroy(i,Click_FontColor[i]);
+		PlayerTextDrawDestroy(i,Click_BackColor[i]);
+		PlayerTextDrawDestroy(i,Click_Alignment[i]);
+		PlayerTextDrawDestroy(i,Click_FontTextSize[i]);
+
+	}
+
+	#if defined TE_OnFilterScriptExit
+		TE_OnFilterScriptExit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptExit
+	#undef OnFilterScriptExit
+#else
+	#define _ALS_OnFilterScriptExit
+#endif
+#define OnFilterScriptExit TE_OnFilterScriptExit
+#if defined TE_OnFilterScriptExit
+	forward TE_OnFilterScriptExit();
+#endif
+
+
+public OnPlayerConnect(playerid)
+{
+	CreatePlayerTextDraws(playerid);
+    TextEditing[playerid] = false;
+
+	#if defined TE_OnPlayerConnect
+		TE_OnPlayerConnect(playerid);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerConnect
+	#undef OnPlayerConnect
+#else
+	#define _ALS_OnPlayerConnect
+#endif
+#define OnPlayerConnect TE_OnPlayerConnect
+#if defined TE_OnPlayerConnect
+	forward TE_OnPlayerConnect(playerid);
+#endif
+
+CreatePlayerTextDraws(playerid)
+{
+	Click_ToggleText[playerid] = CreatePlayerTextDraw(playerid,141.000000, 150.000000, "Off");
+	PlayerTextDrawBackgroundColor(playerid,Click_ToggleText[playerid], 255);
+	PlayerTextDrawFont(playerid,Click_ToggleText[playerid], 2);
+	PlayerTextDrawLetterSize(playerid,Click_ToggleText[playerid], 0.300000, 1.000000);
+	PlayerTextDrawColor(playerid,Click_ToggleText[playerid], -16776961);
+	PlayerTextDrawSetOutline(playerid,Click_ToggleText[playerid], 1);
+	PlayerTextDrawSetProportional(playerid,Click_ToggleText[playerid], 1);
+	PlayerTextDrawUseBox(playerid,Click_ToggleText[playerid], 1);
+	PlayerTextDrawBoxColor(playerid,Click_ToggleText[playerid], 0);
+	PlayerTextDrawTextSize(playerid,Click_ToggleText[playerid], 165.000000, 8.000000);
+	PlayerTextDrawSetSelectable(playerid,Click_ToggleText[playerid], 1);
+
+	Click_SetText[playerid] = CreatePlayerTextDraw(playerid,141.000000, 160.000000, "None");
+	PlayerTextDrawBackgroundColor(playerid,Click_SetText[playerid], 255);
+	PlayerTextDrawFont(playerid,Click_SetText[playerid], 2);
+	PlayerTextDrawLetterSize(playerid,Click_SetText[playerid], 0.300000, 1.000000);
+	PlayerTextDrawColor(playerid,Click_SetText[playerid], -16776961);
+	PlayerTextDrawSetOutline(playerid,Click_SetText[playerid], 1);
+	PlayerTextDrawSetProportional(playerid,Click_SetText[playerid], 1);
+	PlayerTextDrawUseBox(playerid,Click_SetText[playerid], 1);
+	PlayerTextDrawBoxColor(playerid,Click_SetText[playerid], 0);
+	PlayerTextDrawTextSize(playerid,Click_SetText[playerid], 497.000000, 8.000000);
+	PlayerTextDrawSetSelectable(playerid,Click_SetText[playerid], 1);
+
+	Click_SetFont[playerid] = CreatePlayerTextDraw(playerid,141.000000, 170.000000, "Ariel");
+	PlayerTextDrawBackgroundColor(playerid,Click_SetFont[playerid], 255);
+	PlayerTextDrawFont(playerid,Click_SetFont[playerid], 2);
+	PlayerTextDrawLetterSize(playerid,Click_SetFont[playerid], 0.300000, 1.000000);
+	PlayerTextDrawColor(playerid,Click_SetFont[playerid], -16776961);
+	PlayerTextDrawSetOutline(playerid,Click_SetFont[playerid], 1);
+	PlayerTextDrawSetProportional(playerid,Click_SetFont[playerid], 1);
+	PlayerTextDrawUseBox(playerid,Click_SetFont[playerid], 1);
+	PlayerTextDrawBoxColor(playerid,Click_SetFont[playerid], 0);
+	PlayerTextDrawTextSize(playerid,Click_SetFont[playerid], 190.000000, 8.000000);
+	PlayerTextDrawSetSelectable(playerid,Click_SetFont[playerid], 1);
+
+	Click_SetFontSize[playerid] = CreatePlayerTextDraw(playerid,141.000000, 180.000000, "32 x 32");
+	PlayerTextDrawBackgroundColor(playerid,Click_SetFontSize[playerid], 255);
+	PlayerTextDrawFont(playerid,Click_SetFontSize[playerid], 2);
+	PlayerTextDrawLetterSize(playerid,Click_SetFontSize[playerid], 0.300000, 1.000000);
+	PlayerTextDrawColor(playerid,Click_SetFontSize[playerid], -16776961);
+	PlayerTextDrawSetOutline(playerid,Click_SetFontSize[playerid], 1);
+	PlayerTextDrawSetProportional(playerid,Click_SetFontSize[playerid], 1);
+	PlayerTextDrawUseBox(playerid,Click_SetFontSize[playerid], 1);
+	PlayerTextDrawBoxColor(playerid,Click_SetFontSize[playerid], 0);
+	PlayerTextDrawTextSize(playerid,Click_SetFontSize[playerid], 221.000000, 8.000000);
+	PlayerTextDrawSetSelectable(playerid,Click_SetFontSize[playerid], 1);
+
+	Click_ToggleBold[playerid] = CreatePlayerTextDraw(playerid,141.000000, 190.000000, "Off");
+	PlayerTextDrawBackgroundColor(playerid,Click_ToggleBold[playerid], 255);
+	PlayerTextDrawFont(playerid,Click_ToggleBold[playerid], 2);
+	PlayerTextDrawLetterSize(playerid,Click_ToggleBold[playerid], 0.300000, 1.000000);
+	PlayerTextDrawColor(playerid,Click_ToggleBold[playerid], -16776961);
+	PlayerTextDrawSetOutline(playerid,Click_ToggleBold[playerid], 1);
+	PlayerTextDrawSetProportional(playerid,Click_ToggleBold[playerid], 1);
+	PlayerTextDrawUseBox(playerid,Click_ToggleBold[playerid], 1);
+	PlayerTextDrawBoxColor(playerid,Click_ToggleBold[playerid], 0);
+	PlayerTextDrawTextSize(playerid,Click_ToggleBold[playerid], 165.000000, 8.000000);
+	PlayerTextDrawSetSelectable(playerid,Click_ToggleBold[playerid], 1);
+
+	Click_FontColor[playerid] = CreatePlayerTextDraw(playerid,141.000000, 200.000000, "255");
+	PlayerTextDrawBackgroundColor(playerid,Click_FontColor[playerid], 255);
+	PlayerTextDrawFont(playerid,Click_FontColor[playerid], 2);
+	PlayerTextDrawLetterSize(playerid,Click_FontColor[playerid], 0.300000, 1.000000);
+	PlayerTextDrawColor(playerid,Click_FontColor[playerid], -16776961);
+	PlayerTextDrawSetOutline(playerid,Click_FontColor[playerid], 1);
+	PlayerTextDrawSetProportional(playerid,Click_FontColor[playerid], 1);
+	PlayerTextDrawUseBox(playerid,Click_FontColor[playerid], 1);
+	PlayerTextDrawBoxColor(playerid,Click_FontColor[playerid], 0);
+	PlayerTextDrawTextSize(playerid,Click_FontColor[playerid], 190.000000, 8.000000);
+	PlayerTextDrawSetSelectable(playerid,Click_FontColor[playerid], 1);
+
+	Click_BackColor[playerid] = CreatePlayerTextDraw(playerid,141.000000, 210.000000, "255");
+	PlayerTextDrawBackgroundColor(playerid,Click_BackColor[playerid], 255);
+	PlayerTextDrawFont(playerid,Click_BackColor[playerid], 2);
+	PlayerTextDrawLetterSize(playerid,Click_BackColor[playerid], 0.300000, 1.000000);
+	PlayerTextDrawColor(playerid,Click_BackColor[playerid], -16776961);
+	PlayerTextDrawSetOutline(playerid,Click_BackColor[playerid], 1);
+	PlayerTextDrawSetProportional(playerid,Click_BackColor[playerid], 1);
+	PlayerTextDrawUseBox(playerid,Click_BackColor[playerid], 1);
+	PlayerTextDrawBoxColor(playerid,Click_BackColor[playerid], 0);
+	PlayerTextDrawTextSize(playerid,Click_BackColor[playerid], 190.000000, 8.000000);
+	PlayerTextDrawSetSelectable(playerid,Click_BackColor[playerid], 1);
+
+	Click_Alignment[playerid] = CreatePlayerTextDraw(playerid,141.000000, 220.000000, "Right");
+	PlayerTextDrawBackgroundColor(playerid,Click_Alignment[playerid], 255);
+	PlayerTextDrawFont(playerid,Click_Alignment[playerid], 2);
+	PlayerTextDrawLetterSize(playerid,Click_Alignment[playerid], 0.300000, 1.000000);
+	PlayerTextDrawColor(playerid,Click_Alignment[playerid], -16776961);
+	PlayerTextDrawSetOutline(playerid,Click_Alignment[playerid], 1);
+	PlayerTextDrawSetProportional(playerid,Click_Alignment[playerid], 1);
+	PlayerTextDrawUseBox(playerid,Click_Alignment[playerid], 1);
+	PlayerTextDrawBoxColor(playerid,Click_Alignment[playerid], 0);
+	PlayerTextDrawTextSize(playerid,Click_Alignment[playerid], 190.000000, 8.000000);
+	PlayerTextDrawSetSelectable(playerid, Click_Alignment[playerid], 1);
+
+	Click_FontTextSize[playerid] = CreatePlayerTextDraw(playerid,141.000000, 231.000000, "24");
+	PlayerTextDrawBackgroundColor(playerid,Click_FontTextSize[playerid], 255);
+	PlayerTextDrawFont(playerid,Click_FontTextSize[playerid], 2);
+	PlayerTextDrawLetterSize(playerid,Click_FontTextSize[playerid], 0.300000, 1.000000);
+	PlayerTextDrawColor(playerid,Click_FontTextSize[playerid], -16776961);
+	PlayerTextDrawSetOutline(playerid,Click_FontTextSize[playerid], 1);
+	PlayerTextDrawSetProportional(playerid,Click_FontTextSize[playerid], 1);
+	PlayerTextDrawUseBox(playerid,Click_FontTextSize[playerid], 1);
+	PlayerTextDrawBoxColor(playerid,Click_FontTextSize[playerid], 0);
+	PlayerTextDrawTextSize(playerid,Click_FontTextSize[playerid], 190.000000, 8.000000);
+	PlayerTextDrawSetSelectable(playerid,Click_FontTextSize[playerid], 1);
+
+	return 1;
+}
+

+ 1714 - 0
Texture-Studio-master/filterscripts/tstudio/texviewer.pwn

@@ -0,0 +1,1714 @@
+
+#undef MAX_PLAYERS
+#define MAX_PLAYERS 10
+
+// 420 Colors
+#define         STEALTH_GREEN          0x33DD1100
+#define         STEALTH_ORANGE         0xFF880000
+#define         STEALTH_YELLOW         0xFFFF00AA
+
+// Define preview states
+#define         PREVIEW_STATE_NONE              0
+#define         PREVIEW_STATE_ALLTEXTURES       1
+#define         PREVIEW_STATE_THEME             2
+#define         PREVIEW_STATE_SEARCH            3
+
+// Default player texture when slot is empty
+#define         DEFAULT_TEXTURE                 6375
+
+// enum for menu data
+enum MENU3DINFO
+{
+    TPreviewState,
+	CurrTexturePage,
+    Menus3D,
+    CurrThemePage,
+    CurrSearchPage,
+    PlayerText:Menu3D_Model_Info,
+}
+
+// Menu Data
+new Menu3DData[MAX_PLAYERS][MENU3DINFO];
+
+static PlayerThemeIndex[MAX_PLAYERS][sizeof(ObjectTextures)];
+static PlayerThemeCount[MAX_PLAYERS];
+static PlayerSearchIndex[MAX_PLAYERS][sizeof(ObjectTextures)];
+static PlayerSearchResults[MAX_PLAYERS];
+
+
+static Text:Click_SetTexture[16];
+static Text:Click_ClearTexture[16];
+static Text:Click_SetColor[16];
+static Text:Click_CloseTexture;
+
+static PlayerText:Player_TextureInfo[MAX_PLAYERS][MAX_MATERIALS];
+static PlayerText:Click_TextureAll[MAX_PLAYERS];
+
+static bool:SelectingTexture[MAX_PLAYERS];
+static bool:TextureAll[MAX_PLAYERS];
+
+static CurrTexturingIndex[MAX_PLAYERS];
+
+
+Float: GetPlayerCameraFacingAngle(playerid)
+{
+    new Float: vX, Float: vY;
+    if(GetPlayerCameraFrontVector(playerid, vX, vY, Float: playerid))
+	{
+        if((vX = -atan2(vX, vY)) < 0.0) return vX + 360.0;
+        return vX;
+    }
+    return 0.0;
+}
+
+sqlite_ThemeSetup()
+{
+	new DBResult:r = db_query(ThemeDataDB, "SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'default_theme'");
+
+	if(!db_num_rows(r))
+	{
+		db_query(ThemeDataDB, "CREATE TABLE IF NOT EXISTS `default_theme` (TIndex INTEGER)");
+		db_query(ThemeDataDB, "INSERT INTO `default_theme` (`TIndex`) VALUES(455)");
+		db_query(ThemeDataDB, "INSERT INTO `default_theme` (`TIndex`) VALUES(463)");
+	}
+	db_free_result(r);
+	
+	foreach(new i : Player)
+	{
+        PlayerThemeCount[i] = 0;
+	    LoadPlayerTheme(i, "default_theme");
+	}
+	
+	return 1;
+}
+
+// Delete for include
+public OnFilterScriptInit()
+{
+	foreach(new i : Player)
+	{
+	    InitText3DDraw(i);
+		InitPlayerTextureInfo(i);
+	}
+
+	new Float:ypos = 100.0;
+
+	for(new i = 0; i < MAX_MATERIALS; i++)
+	{
+		// Will set the currently selected texture
+		Click_SetTexture[i] = TextDrawCreate(40.000000, ypos, "LD_BEAT:square");
+		TextDrawBackgroundColor(Click_SetTexture[i], 255);
+		TextDrawFont(Click_SetTexture[i], 4);
+		TextDrawLetterSize(Click_SetTexture[i], 0.500000, 1.000000);
+		TextDrawColor(Click_SetTexture[i], 16711935);
+		TextDrawSetOutline(Click_SetTexture[i], 0);
+		TextDrawSetProportional(Click_SetTexture[i], 1);
+		TextDrawSetShadow(Click_SetTexture[i], 1);
+		TextDrawUseBox(Click_SetTexture[i], 1);
+		TextDrawBoxColor(Click_SetTexture[i], 255);
+		TextDrawTextSize(Click_SetTexture[i], 10.000000, 10.000000);
+
+		TextDrawSetSelectable(Click_SetTexture[i], 1);
+
+		// Will set the currently selected color
+		Click_SetColor[i] = TextDrawCreate(25.000000, ypos, "LD_BEAT:square");
+		TextDrawBackgroundColor(Click_SetColor[i], 255);
+		TextDrawFont(Click_SetColor[i], 4);
+		TextDrawLetterSize(Click_SetColor[i], 0.500000, 1.000000);
+		TextDrawColor(Click_SetColor[i], 0x33CCFFFF);
+		TextDrawSetOutline(Click_SetColor[i], 0);
+		TextDrawSetProportional(Click_SetColor[i], 1);
+		TextDrawSetShadow(Click_SetColor[i], 1);
+		TextDrawUseBox(Click_SetColor[i], 1);
+		TextDrawBoxColor(Click_SetColor[i], 255);
+		TextDrawTextSize(Click_SetColor[i], 10.000000, 10.000000);
+
+		TextDrawSetSelectable(Click_SetColor[i], 1);
+
+		// Will set the currently selected color
+		Click_ClearTexture[i] = TextDrawCreate(10.000000, ypos, "LD_BEAT:square");
+		TextDrawBackgroundColor(Click_ClearTexture[i], 255);
+		TextDrawFont(Click_ClearTexture[i], 4);
+		TextDrawLetterSize(Click_ClearTexture[i], 0.500000, 1.000000);
+		TextDrawColor(Click_ClearTexture[i], 0xFF0000FF);
+		TextDrawSetOutline(Click_ClearTexture[i], 0);
+		TextDrawSetProportional(Click_ClearTexture[i], 1);
+		TextDrawSetShadow(Click_ClearTexture[i], 1);
+		TextDrawUseBox(Click_ClearTexture[i], 1);
+		TextDrawBoxColor(Click_ClearTexture[i], 255);
+		TextDrawTextSize(Click_ClearTexture[i], 10.000000, 10.000000);
+
+		TextDrawSetSelectable(Click_ClearTexture[i], 1);
+
+		ypos += 15.0;
+	}
+	
+	
+	Click_CloseTexture = TextDrawCreate(57.000000, ypos, "Close");
+	TextDrawBackgroundColor(Click_CloseTexture, 255);
+	TextDrawFont(Click_CloseTexture, 2);
+	TextDrawLetterSize(Click_CloseTexture, 0.200000, 1.000000);
+	TextDrawColor(Click_CloseTexture, -1);
+	TextDrawSetOutline(Click_CloseTexture, 1);
+	TextDrawSetProportional(Click_CloseTexture, 1);
+	TextDrawUseBox(Click_CloseTexture, 1);
+	TextDrawBoxColor(Click_CloseTexture, 0);
+	TextDrawTextSize(Click_CloseTexture, 80.000000, 10.000000);
+	TextDrawSetSelectable(Click_CloseTexture, 1);
+
+	#if defined TV_OnFilterScriptInit
+		TV_OnFilterScriptInit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptInit
+	#undef OnFilterScriptInit
+#else
+	#define _ALS_OnFilterScriptInit
+#endif
+#define OnFilterScriptInit TV_OnFilterScriptInit
+#if defined TV_OnFilterScriptInit
+	forward TV_OnFilterScriptInit();
+#endif
+
+
+public OnFilterScriptExit()
+{
+	foreach(new i : Player)
+	{
+    	// Close tool if it's open
+		if(Menu3DData[i][TPreviewState] == PREVIEW_STATE_ALLTEXTURES)
+		{
+			CancelSelect3DMenu(i);
+			Destroy3DMenu(Menu3DData[i][Menus3D]);
+			Menu3DData[i][TPreviewState] = PREVIEW_STATE_NONE;
+	    }
+	    
+		for(new j = 0; j < MAX_MATERIALS; j++)
+		{
+			PlayerTextDrawDestroy(i, Player_TextureInfo[i][j]);
+			PlayerTextDrawDestroy(i, Click_TextureAll[i]);
+		}
+
+		PlayerTextDrawDestroy(i, Menu3DData[i][Menu3D_Model_Info]);
+	}
+	
+	for(new i = 0; i < MAX_MATERIALS; i++)
+	{
+		TextDrawDestroy(Click_SetTexture[i]);
+		TextDrawDestroy(Click_ClearTexture[i]);
+		TextDrawDestroy(Click_SetColor[i]);
+	}
+	
+	TextDrawDestroy(Click_CloseTexture);
+
+	#if defined TV_OnFilterScriptExit
+		TV_OnFilterScriptExit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptExit
+	#undef OnFilterScriptExit
+#else
+	#define _ALS_OnFilterScriptExit
+#endif
+#define OnFilterScriptExit TV_OnFilterScriptExit
+#if defined TV_OnFilterScriptExit
+	forward TV_OnFilterScriptExit();
+#endif
+
+
+// Hook for include
+public OnPlayerConnect(playerid)
+{
+	InitText3DDraw(playerid);
+	InitPlayerTextureInfo(playerid);
+	PlayerThemeCount[playerid] = 0;
+	LoadPlayerTheme(playerid, "default_theme");
+	// Create texture editor
+
+	#if defined TV_OnPlayerConnect
+		TV_OnPlayerConnect(playerid);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerConnect
+	#undef OnPlayerConnect
+#else
+	#define _ALS_OnPlayerConnect
+#endif
+#define OnPlayerConnect TV_OnPlayerConnect
+#if defined TV_OnPlayerConnect
+	forward TV_OnPlayerConnect(playerid);
+#endif
+
+InitText3DDraw(playerid)
+{
+	Menu3DData[playerid][Menu3D_Model_Info] = CreatePlayerTextDraw(playerid,630.000000, 400.000000, "Model: TXD: Texture:");
+	PlayerTextDrawAlignment(playerid,Menu3DData[playerid][Menu3D_Model_Info], 3);
+	PlayerTextDrawBackgroundColor(playerid,Menu3DData[playerid][Menu3D_Model_Info], 255);
+	PlayerTextDrawFont(playerid,Menu3DData[playerid][Menu3D_Model_Info], 2);
+	PlayerTextDrawLetterSize(playerid,Menu3DData[playerid][Menu3D_Model_Info], 0.300000, 1.000000);
+	PlayerTextDrawColor(playerid,Menu3DData[playerid][Menu3D_Model_Info], 16711935);
+	PlayerTextDrawSetOutline(playerid,Menu3DData[playerid][Menu3D_Model_Info], 1);
+	PlayerTextDrawSetProportional(playerid,Menu3DData[playerid][Menu3D_Model_Info], 1);
+	PlayerTextDrawSetSelectable(playerid,Menu3DData[playerid][Menu3D_Model_Info], 0);
+	return 1;
+}
+
+// Player disconnected
+public OnPlayerDisconnect(playerid, reason)
+{
+	// Out of preview state
+    Menu3DData[playerid][TPreviewState] = PREVIEW_STATE_NONE;
+	CancelSelect3DMenu(playerid);
+	
+	// Did the player have a menu?
+	if(Menu3DData[playerid][Menus3D] != INVALID_3DMENU)
+	{
+		// Destroy it
+        Destroy3DMenu(Menu3DData[playerid][Menus3D]);
+        Menu3DData[playerid][Menus3D] = INVALID_3DMENU;
+	}
+	
+	SelectingTexture[playerid] = false;
+	TextureAll[playerid] = false;
+    CurrTexturingIndex[playerid] = 0;
+
+	#if defined TV_OnPlayerDisconnect
+		TV_OnPlayerDisconnect(playerid, reason);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerDisconnect
+	#undef OnPlayerDisconnect
+#else
+	#define _ALS_OnPlayerDisconnect
+#endif
+#define OnPlayerDisconnect TV_OnPlayerDisconnect
+#if defined TV_OnPlayerDisconnect
+	forward TV_OnPlayerDisconnect(playerid, reason);
+#endif
+
+static BitArray:FoundTextures<(sizeof(ObjectTextures) + 1)>, sFoundTextures[4096];
+YCMD:tsearch(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Search for texture indexes by keyword.");
+		return 1;
+	}
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	if(isnull(arg)) return SendClientMessage(playerid, STEALTH_YELLOW, "You must supply a texture search string");
+
+    new line[128];
+	new numfound, lastpage, page;
+
+	inline TexSearch(pid, dialogid, response, listitem, string:text[])
+	{
+        #pragma unused listitem, dialogid, pid, text
+		if(response)
+		{
+			if(!strcmp(text, "Next Page ->"))
+				page++;
+			else if(!strcmp(text, "Previous Page <-"))
+				page--;
+			
+			if(page != lastpage)
+			{
+				sFoundTextures[0] = '\0';
+				
+				if(page)
+					strcat(sFoundTextures, "{00CC00}Previous Page <-{FFFFFF}\n");
+				
+				for(new i, j; i < sizeof(ObjectTextures); i++)
+				{
+					if(Bit_Get(FoundTextures, i))
+					{
+						if((page * 100) < j < ((page + 1) * 100) + 1)
+						{
+							strcat(sFoundTextures, sprintf("%i:%s\n", i, ObjectTextures[i][TextureName]));
+							
+							if(j == ((page + 1) * 100))
+							{
+								strcat(sFoundTextures, "{00CC00}Next Page ->");
+								break;
+							}
+						}
+						j++;
+					}
+				}
+				
+				lastpage = page;
+				Dialog_ShowCallback(playerid, using inline TexSearch, DIALOG_STYLE_LIST, "Texture Studio - Texture Search", sFoundTextures, "Ok", "Cancel");
+			}
+			else
+			{
+				new index;
+				sscanf(text, "p<:>i", index);
+				format(line, sizeof(line), "/mtextures %i", index);
+				BroadcastCommand(playerid, line);
+			}
+		}
+	}
+
+
+    Bit_SetAll(FoundTextures, false);
+	sFoundTextures[0] = '\0';
+	for(new i = 0; i < sizeof(ObjectTextures); i++)
+	{
+	    if(strfind(ObjectTextures[i][TextureName], arg, true) > -1)
+ 	    {
+			//strcat(sFoundTextures, sprintf("%i:%s\n", i, ObjectTextures[i][TextureName]));
+	        Bit_Let(FoundTextures, i);
+			numfound++;
+	        //if(numfound == 100) break;
+	    }
+	}
+	if(numfound)
+	{
+		format(line, sizeof(line), "Found %i textures", numfound);
+		SendClientMessage(playerid, STEALTH_GREEN, line);
+		
+		for(new i, j; i < sizeof(ObjectTextures); i++)
+		{
+			if(Bit_Get(FoundTextures, i))
+			{
+				strcat(sFoundTextures, sprintf("%i:%s\n", i, ObjectTextures[i][TextureName]));
+				
+				j++;
+				if(j == 100)
+				{
+					strcat(sFoundTextures, "Next Page ->");
+					break;
+				}
+			}
+		}
+		
+		Dialog_ShowCallback(playerid, using inline TexSearch, DIALOG_STYLE_LIST, "Texture Studio - Texture Search", sFoundTextures, "Ok", "Cancel");
+	}
+	else SendClientMessage(playerid, STEALTH_YELLOW, "No textures found with that string");
+	return 1;
+}
+
+// All texture mode
+YCMD:mtextures(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Open 3D texture viewer.");
+		SendClientMessage(playerid, STEALTH_YELLOW, "Controls on-foot:");
+		SendClientMessage(playerid, STEALTH_GREEN, "    Y - Last Texture, H - Next Texture");
+		SendClientMessage(playerid, STEALTH_GREEN, "    Num 4 - Last Page, Num 6 - Next Page");
+		SendClientMessage(playerid, STEALTH_YELLOW, "Controls in flymode:");
+		SendClientMessage(playerid, STEALTH_GREEN, "    Enter + Num 4 - Last Texture, Enter + Num 6 - Next Texture");
+		SendClientMessage(playerid, STEALTH_GREEN, "    Num 4 - Last Page, Num 6 - Next Page");
+		return 1;
+	}
+
+	new index = strval(arg);
+	if(index < 1 || index > sizeof(ObjectTextures) - 1) Menu3DData[playerid][CurrTexturePage] = 0;
+	else
+	{
+		Menu3DData[playerid][CurrTexturePage] = (index - 1) / 16;
+		Select3DMenuBox(playerid, Menu3DData[playerid][Menus3D], (index - 1) % 16);
+	}
+	
+	// No menu created yet
+	if(Menu3DData[playerid][TPreviewState] == PREVIEW_STATE_NONE)
+	{
+	    CreateTexViewer(playerid);
+        Menu3DData[playerid][TPreviewState] = PREVIEW_STATE_ALLTEXTURES;
+		
+		// Update textures
+		for(new i = 0; i < 16; i++)
+		{
+		    SetBoxMaterial(Menu3DData[playerid][Menus3D],i,0,ObjectTextures[i+Menu3DData[playerid][CurrTexturePage] * 16 + 1][TModel],ObjectTextures[i+Menu3DData[playerid][CurrTexturePage] * 16 + 1][TXDName],ObjectTextures[i+Menu3DData[playerid][CurrTexturePage] * 16 + 1][TextureName], 0xFFFFFFFF, 0xFF999999);
+		}
+
+		// Update the info texdraw
+		UpdateTextureInfo(playerid, SelectedBox[playerid]);
+
+   		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Texture selection tool opened - All Textures");
+		SendClientMessage(playerid, STEALTH_GREEN, "View /thelp for texture selection controls");
+
+	}
+	
+	// Menu was open update to next slot
+	else if(Menu3DData[playerid][TPreviewState] == PREVIEW_STATE_ALLTEXTURES)
+	{
+		if(index == 0) DestroyTexViewer(playerid);
+		else
+		{
+			for(new i = 0; i < 16; i++)
+			{
+			    SetBoxMaterial(Menu3DData[playerid][Menus3D],i,0,ObjectTextures[i+Menu3DData[playerid][CurrTexturePage] * 16 + 1][TModel],ObjectTextures[i+Menu3DData[playerid][CurrTexturePage] * 16 + 1][TXDName],ObjectTextures[i+Menu3DData[playerid][CurrTexturePage] * 16 + 1][TextureName], 0xFFFFFFFF, 0xFF999999);
+			}
+
+			UpdateTextureInfo(playerid, SelectedBox[playerid]);
+
+	   		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+			SendClientMessage(playerid, STEALTH_GREEN, "Texture selection slot changed - All Textures");
+		}
+	}
+	else if(Menu3DData[playerid][TPreviewState] !=  PREVIEW_STATE_ALLTEXTURES)
+	{
+        Menu3DData[playerid][CurrTexturePage] = 0;
+		Select3DMenu(playerid, Menu3DData[playerid][Menus3D]);
+		
+		for(new i = 0; i < 16; i++)
+		{
+		    SetBoxMaterial(Menu3DData[playerid][Menus3D],i,0,ObjectTextures[i+Menu3DData[playerid][CurrTexturePage] * 16 + 1][TModel],ObjectTextures[i+Menu3DData[playerid][CurrTexturePage] * 16 + 1][TXDName],ObjectTextures[i+Menu3DData[playerid][CurrTexturePage] * 16 + 1][TextureName], 0xFFFFFFFF, 0xFF999999);
+		}
+
+		Menu3DData[playerid][TPreviewState] = PREVIEW_STATE_ALLTEXTURES;
+
+		UpdateTextureInfo(playerid, SelectedBox[playerid]);
+
+   		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Switched to viewing all textures");
+	}
+
+	return 1;
+}
+
+
+YCMD:ttextures(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "View a saved set of textures in the 3D texture viewer.");
+		SendClientMessage(playerid, STEALTH_YELLOW, "Controls on-foot:");
+		SendClientMessage(playerid, STEALTH_GREEN, "    Y - Last Texture, H - Next Texture");
+		SendClientMessage(playerid, STEALTH_GREEN, "    Num 4 - Last Page, Num 6 - Next Page");
+		SendClientMessage(playerid, STEALTH_YELLOW, "Controls in flymode:");
+		SendClientMessage(playerid, STEALTH_GREEN, "    Enter + Num 4 - Last Texture, Enter + Num 6 - Next Texture");
+		SendClientMessage(playerid, STEALTH_GREEN, "    Num 4 - Last Page, Num 6 - Next Page");
+		return 1;
+	}
+
+	new index = strval(arg);
+	if(!strlen(arg) || index <= 15 || index >= PlayerThemeCount[playerid]) Menu3DData[playerid][CurrThemePage] = 0;
+	else
+	{
+		Menu3DData[playerid][CurrThemePage] = (index - 1) / 16;
+		Select3DMenuBox(playerid, Menu3DData[playerid][Menus3D], (index - 1) % 16);
+	}
+
+	// No menu created yet
+	if(Menu3DData[playerid][TPreviewState] == PREVIEW_STATE_NONE)
+	{
+	    CreateTexViewer(playerid);
+        Menu3DData[playerid][TPreviewState] = PREVIEW_STATE_THEME;
+
+        UpdateThemeTextures(playerid);
+
+		// Update the info texdraw
+		UpdateTextureInfo(playerid, SelectedBox[playerid]);
+
+   		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Texture selection tool opened - Theme Textures");
+		SendClientMessage(playerid, STEALTH_GREEN, "View /thelp for texture selection controls");
+	}
+   	else if(Menu3DData[playerid][TPreviewState] == PREVIEW_STATE_THEME)
+	{
+		if(index == 0) DestroyTexViewer(playerid);
+		else
+		{
+            UpdateThemeTextures(playerid);
+			UpdateTextureInfo(playerid, SelectedBox[playerid]);
+
+	   		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+			SendClientMessage(playerid, STEALTH_GREEN, "Texture selection slot changed - All Textures");
+		}
+	}
+	else if(Menu3DData[playerid][TPreviewState] != PREVIEW_STATE_THEME)
+	{
+        Menu3DData[playerid][CurrTexturePage] = 0;
+		Select3DMenu(playerid, Menu3DData[playerid][Menus3D]);
+        
+		Menu3DData[playerid][TPreviewState] = PREVIEW_STATE_THEME;
+
+        UpdateThemeTextures(playerid);
+   		UpdateTextureInfo(playerid, SelectedBox[playerid]);
+
+   		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Switched to viewing theme textures");
+	}
+
+	return 1;
+}
+
+YCMD:mtsearch(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Same as /tsearch, but in the 3D texture viewer.");
+		SendClientMessage(playerid, STEALTH_YELLOW, "Controls on-foot:");
+		SendClientMessage(playerid, STEALTH_GREEN, "    Y - Last Texture, H - Next Texture");
+		SendClientMessage(playerid, STEALTH_GREEN, "    Num 4 - Last Page, Num 6 - Next Page");
+		SendClientMessage(playerid, STEALTH_YELLOW, "Controls in flymode:");
+		SendClientMessage(playerid, STEALTH_GREEN, "    Enter + Num 4 - Last Texture, Enter + Num 6 - Next Texture");
+		SendClientMessage(playerid, STEALTH_GREEN, "    Num 4 - Last Page, Num 6 - Next Page");
+		return 1;
+	}
+
+	if(isnull(arg)) DestroyTexViewer(playerid);
+
+	PlayerSearchResults[playerid] = 0;
+	for(new i = 0; i < sizeof(ObjectTextures); i++)
+	{
+	    if(strfind(ObjectTextures[i][TextureName], arg, true) > -1)
+ 	    {
+			PlayerSearchIndex[playerid][PlayerSearchResults[playerid]] = i;
+			PlayerSearchResults[playerid]++;
+	    }
+		else PlayerSearchIndex[playerid][i] = -1;
+	}
+	
+	if(PlayerSearchResults[playerid])
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, sprintf("Found %i textures", PlayerSearchResults[playerid]));
+		
+		if(Menu3DData[playerid][TPreviewState] == PREVIEW_STATE_NONE)
+		{
+			CreateTexViewer(playerid);
+			Menu3DData[playerid][TPreviewState] = PREVIEW_STATE_SEARCH;
+
+			UpdateSearchTextures(playerid);
+			UpdateTextureInfo(playerid, SelectedBox[playerid]);
+
+			SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+			SendClientMessage(playerid, STEALTH_GREEN, "Texture selection tool opened - Search Results");
+			SendClientMessage(playerid, STEALTH_GREEN, "View /thelp for texture selection controls");
+		}
+		else if(Menu3DData[playerid][TPreviewState] == PREVIEW_STATE_SEARCH)
+		{
+			Menu3DData[playerid][CurrTexturePage] = 0;
+			Select3DMenu(playerid, Menu3DData[playerid][Menus3D]);
+			
+			UpdateSearchTextures(playerid);
+			UpdateTextureInfo(playerid, SelectedBox[playerid]);
+
+			SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+			SendClientMessage(playerid, STEALTH_GREEN, "Texture search results updated - Search Results");
+		}
+		else if(Menu3DData[playerid][TPreviewState] != PREVIEW_STATE_SEARCH)
+		{
+			Menu3DData[playerid][CurrTexturePage] = 0;
+			Select3DMenu(playerid, Menu3DData[playerid][Menus3D]);
+			
+			Menu3DData[playerid][TPreviewState] = PREVIEW_STATE_SEARCH;
+
+			UpdateSearchTextures(playerid);
+			UpdateTextureInfo(playerid, SelectedBox[playerid]);
+
+			SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+			SendClientMessage(playerid, STEALTH_GREEN, "Switched to viewing search /mtsearch results");
+		}
+	}
+	else 
+	{
+		DestroyTexViewer(playerid);
+		
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "No textures found with that string");
+	}
+	return 1;
+}
+
+
+static UpdateThemeTextures(playerid)
+{
+	for(new i = 0; i < 16; i++)
+	{
+		if(PlayerThemeIndex[playerid][i + 16 * Menu3DData[playerid][CurrThemePage]] == -1)
+		//if(PlayerThemeIndex[playerid][i + 16 * Menu3DData[playerid][CurrThemePage]] >= PlayerThemeCount[playerid])
+		{
+	    	SetBoxMaterial(Menu3DData[playerid][Menus3D],i,0,
+				ObjectTextures[DEFAULT_TEXTURE][TModel],
+				ObjectTextures[DEFAULT_TEXTURE][TXDName],
+			   	ObjectTextures[DEFAULT_TEXTURE][TextureName],
+			   	0x80FF0000, 0x80990000);
+		}
+		else
+		{
+	    	SetBoxMaterial(Menu3DData[playerid][Menus3D],i,0,
+				ObjectTextures[PlayerThemeIndex[playerid][i + 16 * Menu3DData[playerid][CurrThemePage]]][TModel],
+				ObjectTextures[PlayerThemeIndex[playerid][i + 16 * Menu3DData[playerid][CurrThemePage]]][TXDName],
+				ObjectTextures[PlayerThemeIndex[playerid][i + 16 * Menu3DData[playerid][CurrThemePage]]][TextureName],
+			   	0xFFFFFFFF, 0xFF999999);
+		}
+	}
+}
+
+static UpdateSearchTextures(playerid)
+{
+	for(new i = 0; i < 16; i++)
+	{
+	   	if(PlayerSearchIndex[playerid][i + 16 * Menu3DData[playerid][CurrSearchPage]] == -1)
+	   	//if(PlayerThemeIndex[playerid][i + 16 * Menu3DData[playerid][CurrSearchPage]] >= PlayerSearchResults[playerid])
+		{
+	    	SetBoxMaterial(Menu3DData[playerid][Menus3D],i,0,
+				ObjectTextures[DEFAULT_TEXTURE][TModel],
+				ObjectTextures[DEFAULT_TEXTURE][TXDName],
+			   	ObjectTextures[DEFAULT_TEXTURE][TextureName],
+			   	0x80FF0000, 0x80990000);
+		}
+		else
+		{
+	    	SetBoxMaterial(Menu3DData[playerid][Menus3D],i,0,
+				ObjectTextures[PlayerSearchIndex[playerid][i + 16 * Menu3DData[playerid][CurrSearchPage]]][TModel],
+				ObjectTextures[PlayerSearchIndex[playerid][i + 16 * Menu3DData[playerid][CurrSearchPage]]][TXDName],
+				ObjectTextures[PlayerSearchIndex[playerid][i + 16 * Menu3DData[playerid][CurrSearchPage]]][TextureName],
+			   	0xFFFFFFFF, 0xFF999999);
+		}
+	}
+}
+
+
+OnPlayerKeyStateChangeMenu(playerid,newkeys,oldkeys)
+{
+	#pragma unused oldkeys
+	
+	new line[128];
+	
+	if(newkeys & 16 || oldkeys & 16) return 0;
+	if(EditingMode[playerid] && GetEditMode(playerid) != EDIT_MODE_TEXTURING) return 0;
+
+	// Scroll right
+	if(newkeys & KEY_ANALOG_RIGHT || (((newkeys & (KEY_CROUCH | KEY_CTRL_BACK)) == (KEY_CROUCH | KEY_CTRL_BACK)) && ((oldkeys & (KEY_CROUCH | KEY_CTRL_BACK)) != (KEY_CROUCH | KEY_CTRL_BACK))))
+	{
+		if(Menu3DData[playerid][TPreviewState] == PREVIEW_STATE_ALLTEXTURES)
+		{
+			Menu3DData[playerid][CurrTexturePage]++;
+
+            if(Menu3DData[playerid][CurrTexturePage] > (sizeof(ObjectTextures) / 16))
+				Menu3DData[playerid][CurrTexturePage] = 0;
+			else if((sizeof(ObjectTextures) / 16) - (Menu3DData[playerid][CurrTexturePage] - 1) < 0)
+				Menu3DData[playerid][CurrTexturePage] = (sizeof(ObjectTextures) / 16);
+
+			for(new i = 0; i < 16; i++)
+			{
+                if(Menu3DData[playerid][CurrTexturePage] * 16 + i + 1 >= sizeof(ObjectTextures))
+                {
+                    SetBoxMaterial(Menu3DData[playerid][Menus3D],i,0,
+                        ObjectTextures[DEFAULT_TEXTURE][TModel],
+                        ObjectTextures[DEFAULT_TEXTURE][TXDName],
+                        ObjectTextures[DEFAULT_TEXTURE][TextureName],
+                        0x80FF0000, 0x80990000);
+                }
+                else
+                {
+                    SetBoxMaterial(Menu3DData[playerid][Menus3D],i,0,
+                        ObjectTextures[i+Menu3DData[playerid][CurrTexturePage] * 16 + 1][TModel],
+                        ObjectTextures[i+Menu3DData[playerid][CurrTexturePage] * 16 + 1][TXDName],
+                        ObjectTextures[i+Menu3DData[playerid][CurrTexturePage] * 16 + 1][TextureName],
+                        0xFFFFFFFF, 0xFF999999);
+                }
+            }
+		}
+		else if(Menu3DData[playerid][TPreviewState] == PREVIEW_STATE_THEME)
+		{
+			if(PlayerThemeCount[playerid] <= 16) Menu3DData[playerid][CurrThemePage] = 0;
+			else
+			{
+				Menu3DData[playerid][CurrThemePage]++;
+
+				if(Menu3DData[playerid][CurrThemePage] > (PlayerThemeCount[playerid] / 16))
+					Menu3DData[playerid][CurrThemePage] = 0;
+				else if((PlayerThemeCount[playerid] / 16) - (Menu3DData[playerid][CurrThemePage] - 1) < 0)
+					Menu3DData[playerid][CurrThemePage] = (PlayerThemeCount[playerid] / 16);
+				
+				UpdateThemeTextures(playerid);
+			}
+		}
+		else if(Menu3DData[playerid][TPreviewState] == PREVIEW_STATE_SEARCH)
+		{
+			if(PlayerSearchResults[playerid] <= 16) Menu3DData[playerid][CurrSearchPage] = 0;
+			else
+			{
+				Menu3DData[playerid][CurrSearchPage]++;
+
+				if(Menu3DData[playerid][CurrSearchPage] > (PlayerSearchResults[playerid] / 16))
+					Menu3DData[playerid][CurrSearchPage] = 0;
+				else if((PlayerSearchResults[playerid] / 16) - (Menu3DData[playerid][CurrSearchPage] - 1) < 0)
+					Menu3DData[playerid][CurrSearchPage] = (PlayerSearchResults[playerid] / 16);
+				
+				UpdateSearchTextures(playerid);
+			}
+		}
+		// Update the info
+		UpdateTextureInfo(playerid, SelectedBox[playerid]);
+
+		return 1;
+	}
+
+	// Pressed left (Same as right almost)
+	else if(newkeys & KEY_ANALOG_LEFT || (((newkeys & (KEY_CROUCH | KEY_YES)) == (KEY_CROUCH | KEY_YES)) && ((oldkeys & (KEY_CROUCH | KEY_YES)) != (KEY_CROUCH | KEY_YES))))
+	{
+		if(Menu3DData[playerid][TPreviewState] == PREVIEW_STATE_ALLTEXTURES)
+		{
+	        // Last 16 entries
+			Menu3DData[playerid][CurrTexturePage]--;
+
+			// Too high of entries set default
+			if(Menu3DData[playerid][CurrTexturePage] < 0)
+				Menu3DData[playerid][CurrTexturePage] = (sizeof(ObjectTextures) / 16);
+			else if(Menu3DData[playerid][CurrTexturePage] >= (sizeof(ObjectTextures) / 16))
+				Menu3DData[playerid][CurrTexturePage] = 0;
+            
+			for(new i = 0; i < 16; i++)
+			{
+                if(Menu3DData[playerid][CurrTexturePage] * 16 + i + 1 >= sizeof(ObjectTextures))
+                {
+                    SetBoxMaterial(Menu3DData[playerid][Menus3D],i,0,
+                        ObjectTextures[DEFAULT_TEXTURE][TModel],
+                        ObjectTextures[DEFAULT_TEXTURE][TXDName],
+                        ObjectTextures[DEFAULT_TEXTURE][TextureName],
+                        0x80FF0000, 0x80990000);
+                }
+                else
+                {
+                    SetBoxMaterial(Menu3DData[playerid][Menus3D],i,0,
+                        ObjectTextures[i+Menu3DData[playerid][CurrTexturePage] * 16 + 1][TModel],
+                        ObjectTextures[i+Menu3DData[playerid][CurrTexturePage] * 16 + 1][TXDName],
+                        ObjectTextures[i+Menu3DData[playerid][CurrTexturePage] * 16 + 1][TextureName],
+                        0xFFFFFFFF, 0xFF999999);
+                }
+            }
+		}
+		else if(Menu3DData[playerid][TPreviewState] == PREVIEW_STATE_THEME)
+		{
+			if(PlayerThemeCount[playerid] <= 16) Menu3DData[playerid][CurrThemePage] = 0;
+			else
+			{
+				Menu3DData[playerid][CurrThemePage]--;
+
+				if(Menu3DData[playerid][CurrThemePage] < 0)
+					Menu3DData[playerid][CurrThemePage] = (PlayerThemeCount[playerid] / 16);
+				else if(Menu3DData[playerid][CurrThemePage] >= (PlayerThemeCount[playerid] / 16))
+					Menu3DData[playerid][CurrThemePage] = 0;
+					
+				//Menu3DData[playerid][CurrThemePage] -= 16;
+                //
+				//if(Menu3DData[playerid][CurrThemePage] < 1) Menu3DData[playerid][CurrThemePage] = PlayerThemeCount[playerid] - 16 - 1;
+				//if(Menu3DData[playerid][CurrThemePage] >= PlayerThemeCount[playerid] - 1) Menu3DData[playerid][CurrThemePage] = PlayerThemeCount[playerid] - 1;
+
+				UpdateThemeTextures(playerid);
+			}
+		}
+		else if(Menu3DData[playerid][TPreviewState] == PREVIEW_STATE_SEARCH)
+		{
+			if(PlayerSearchResults[playerid] <= 16) Menu3DData[playerid][CurrSearchPage] = 0;
+			else
+			{
+				Menu3DData[playerid][CurrSearchPage]--;
+
+				if(Menu3DData[playerid][CurrSearchPage] < 0)
+					Menu3DData[playerid][CurrSearchPage] = (PlayerSearchResults[playerid] / 16);
+				else if(Menu3DData[playerid][CurrSearchPage] >= (PlayerSearchResults[playerid] / 16))
+					Menu3DData[playerid][CurrSearchPage] = 0;
+
+				UpdateSearchTextures(playerid);
+			}
+		}
+			
+		// Update the info
+        UpdateTextureInfo(playerid, SelectedBox[playerid]);
+
+		return 1;
+	}
+
+	//
+	else if(newkeys & KEY_SPRINT && (FlyMode[playerid] || newkeys & KEY_HANDBRAKE))
+	{
+		// Add to your theme
+	    if(Menu3DData[playerid][TPreviewState] != PREVIEW_STATE_THEME)
+	    {
+			new addt = AddTextureToTheme(playerid, 1 + 16 * Menu3DData[playerid][CurrTexturePage] + SelectedBox[playerid]);
+			if(addt >= 0)
+			{
+		   		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_GREEN, "Texture added to theme selection");
+			}
+			else if(addt == -1)
+			{
+		   		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_GREEN, "This texture is already added");
+			}
+			else if(addt == -2)
+			{
+		   		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_GREEN, "Tried to add too many textures to your theme");
+			}
+			return 1;
+		}
+	}
+
+	// Set current select material to object
+	else if(newkeys & KEY_WALK)
+	{
+	    if(Menu3DData[playerid][TPreviewState] == PREVIEW_STATE_ALLTEXTURES)
+	    {
+			if(TextureAll[playerid])
+			{
+				format(line, sizeof(line), "/mtsetall %i %i", CurrTexturingIndex[playerid], 1 + 16 * Menu3DData[playerid][CurrTexturePage] + SelectedBox[playerid]);
+				BroadcastCommand(playerid, line);
+			}
+			else
+			{
+				format(line, sizeof(line), "/mtset %i %i", CurrTexturingIndex[playerid], 1 + 16 * Menu3DData[playerid][CurrTexturePage] + SelectedBox[playerid]);
+				BroadcastCommand(playerid, line);
+			}
+			return 1;
+	    }
+        else if(Menu3DData[playerid][TPreviewState] == PREVIEW_STATE_THEME)
+        {
+			if(TextureAll[playerid])
+			{
+				format(line, sizeof(line), "/mtsetall %i %i", CurrTexturingIndex[playerid], 16 * Menu3DData[playerid][CurrThemePage] + SelectedBox[playerid]);
+				BroadcastCommand(playerid, line);
+			}
+			else
+			{
+				format(line, sizeof(line), "/mtset %i %i", CurrTexturingIndex[playerid], 16 * Menu3DData[playerid][CurrThemePage] + SelectedBox[playerid]);
+				BroadcastCommand(playerid, line);
+			}
+			return 1;
+        }
+        else if(Menu3DData[playerid][TPreviewState] == PREVIEW_STATE_SEARCH)
+        {
+			if(TextureAll[playerid])
+			{
+				format(line, sizeof(line), "/mtsetall %i %i", CurrTexturingIndex[playerid], 16 * Menu3DData[playerid][CurrSearchPage] + SelectedBox[playerid]);
+				BroadcastCommand(playerid, line);
+			}
+			else
+			{
+				format(line, sizeof(line), "/mtset %i %i", CurrTexturingIndex[playerid], 16 * Menu3DData[playerid][CurrSearchPage] + SelectedBox[playerid]);
+				BroadcastCommand(playerid, line);
+			}
+			return 1;
+        }
+	}
+	
+	return 0;
+}
+
+
+OnPlayerKeyStateChangeTex(playerid,newkeys,oldkeys)
+{
+	#pragma unused oldkeys
+	if( newkeys & KEY_NO || (IsFlyMode(playerid) && newkeys & KEY_JUMP) )
+	{
+	    if(GetEditMode(playerid) == EDIT_MODE_TEXTURING)
+		{
+			SelectTextDraw(playerid, 0xD9D919FF);
+			return 1;
+		}
+	}
+	return 0;
+}
+
+
+static AddTextureToTheme(playerid, index)
+{
+    for(new i = 1; i < sizeof(ObjectTextures); i++)
+	{
+		if(index == PlayerThemeIndex[playerid][i])
+			return -1;
+		else if(PlayerThemeIndex[playerid][i] == -1)
+		{
+			PlayerThemeIndex[playerid][i] = index;
+			PlayerThemeCount[playerid]++;
+			return i;
+		}
+	}
+	return -2;
+}
+
+// To menu change effects when changing selection
+public OnPlayerChange3DMenuBox(playerid,MenuID,boxid)
+{
+	UpdateTextureInfo(playerid, boxid);
+	return 1;
+}
+
+// Update selection info text
+static UpdateTextureInfo(playerid, boxid)
+{
+	// Standard texture viewer
+	new line[128];
+	if(Menu3DData[playerid][TPreviewState] == PREVIEW_STATE_ALLTEXTURES)
+	{
+		if((boxid + 16 * Menu3DData[playerid][CurrTexturePage] + 1) < sizeof(ObjectTextures))
+		{
+			format(line, sizeof(line), "~n~~n~Model: %i TXD: %s Texture: %s~n~~r~Index: %i/%i", ObjectTextures[boxid + 16 * Menu3DData[playerid][CurrTexturePage]][TModel],
+				ObjectTextures[boxid + 16 * Menu3DData[playerid][CurrTexturePage]][TXDName],
+				ObjectTextures[boxid + 16 * Menu3DData[playerid][CurrTexturePage]][TextureName],
+				Menu3DData[playerid][CurrTexturePage] * 16 + boxid + 1, sizeof(ObjectTextures) - 1);
+		}
+		else
+		{
+			format(line, sizeof(line), "~n~~n~Model: %i TXD: %s Texture: %s~n~~r~Index: %i/%i", ObjectTextures[0][TModel],
+				ObjectTextures[0][TXDName],
+				ObjectTextures[0][TextureName],
+				Menu3DData[playerid][CurrTexturePage] * 16 + boxid + 1, sizeof(ObjectTextures) - 1);
+		}
+	}
+	else if(Menu3DData[playerid][TPreviewState] == PREVIEW_STATE_THEME)
+	{
+		if(PlayerThemeIndex[playerid][boxid + 16 * Menu3DData[playerid][CurrThemePage]] != -1)
+		//if((boxid + 16 * Menu3DData[playerid][CurrThemePage]) < sizeof(ObjectTextures))
+		{
+			format(line, sizeof(line), "~n~~n~Model: %i TXD: %s Texture: %s~n~~r~Index: %i/%i~n~Theme Index: %i/%i",
+				ObjectTextures[PlayerThemeIndex[playerid][boxid + 16 * Menu3DData[playerid][CurrThemePage]]][TModel],
+				ObjectTextures[PlayerThemeIndex[playerid][boxid + 16 * Menu3DData[playerid][CurrThemePage]]][TXDName],
+				ObjectTextures[PlayerThemeIndex[playerid][boxid + 16 * Menu3DData[playerid][CurrThemePage]]][TextureName],
+				PlayerThemeIndex[playerid][boxid + 16 * Menu3DData[playerid][CurrThemePage]], sizeof(ObjectTextures) - 1,
+				boxid + 16 * Menu3DData[playerid][CurrThemePage] + 1, PlayerThemeCount[playerid]);
+		}
+		else
+		{
+			format(line, sizeof(line), "~n~~n~Model: %i TXD: %s Texture: %s~n~~r~Index: %i/%i~n~Theme Index: %i/%i",
+				ObjectTextures[0][TModel],
+				ObjectTextures[0][TXDName],
+				ObjectTextures[0][TextureName],
+				PlayerThemeIndex[playerid][boxid + 16 * Menu3DData[playerid][CurrThemePage]], sizeof(ObjectTextures) - 1,
+				boxid + 16 * Menu3DData[playerid][CurrThemePage] + 1, PlayerThemeCount[playerid]);
+		}
+	}
+	else if(Menu3DData[playerid][TPreviewState] == PREVIEW_STATE_SEARCH)
+	{
+		if(PlayerSearchIndex[playerid][boxid + 16 * Menu3DData[playerid][CurrSearchPage]] != -1)
+		//if((boxid + 16 * Menu3DData[playerid][CurrSearchPage]) < sizeof(ObjectTextures))
+		{
+			format(line, sizeof(line), "~n~~n~Model: %i TXD: %s Texture: %s~n~~r~Index: %i/%i~n~Search Index: %i/%i",
+				ObjectTextures[PlayerSearchIndex[playerid][boxid + 16 * Menu3DData[playerid][CurrSearchPage]]][TModel],
+				ObjectTextures[PlayerSearchIndex[playerid][boxid + 16 * Menu3DData[playerid][CurrSearchPage]]][TXDName],
+				ObjectTextures[PlayerSearchIndex[playerid][boxid + 16 * Menu3DData[playerid][CurrSearchPage]]][TextureName],
+				PlayerSearchIndex[playerid][boxid + 16 * Menu3DData[playerid][CurrSearchPage]], sizeof(ObjectTextures) - 1,
+				boxid + 16 * Menu3DData[playerid][CurrSearchPage] + 1, PlayerSearchResults[playerid]);
+		}
+		else
+		{
+			format(line, sizeof(line), "~n~~n~Model: %i TXD: %s Texture: %s~n~~r~Index: %i/%i~n~Search Index: %i/%i",
+				ObjectTextures[0][TModel],
+				ObjectTextures[0][TXDName],
+				ObjectTextures[0][TextureName],
+				PlayerSearchIndex[playerid][boxid + 16 * Menu3DData[playerid][CurrSearchPage]], sizeof(ObjectTextures) - 1,
+				boxid + 16 * Menu3DData[playerid][CurrSearchPage] + 1, PlayerSearchResults[playerid]);
+		}
+	}
+	PlayerTextDrawSetString(playerid, Menu3DData[playerid][Menu3D_Model_Info], line);
+	
+	return 1;
+}
+
+static CreateTexViewer(playerid)
+{
+	// Get position
+	new Float:x, Float: y, Float:z, Float:fa;
+	GetPlayerPos(playerid, x, y, z);
+
+	if(FlyMode[playerid])
+	{
+		fa = GetPlayerCameraFacingAngle(playerid);
+		z -= 1.0;
+	}
+	else GetPlayerFacingAngle(playerid, fa);
+	
+	// Calculate position to left of player
+	x = (x + 1.75 * floatsin(-fa + -90,degrees));
+	y = (y + 1.75 * floatcos(-fa + -90,degrees));
+
+	// Calculate create offset
+	if(FlyMode[playerid])
+	{
+		x = (x + 4.0 * floatsin(-fa,degrees));
+		y = (y + 4.0 * floatcos(-fa,degrees));
+	}
+	else
+	{
+		x = (x + 2.0 * floatsin(-fa,degrees));
+		y = (y + 2.0 * floatcos(-fa,degrees));
+	}
+
+    Menu3DData[playerid][Menus3D] = Create3DMenu(playerid, x, y, z, fa, 16);
+	Select3DMenu(playerid, Menu3DData[playerid][Menus3D]);
+    PlayerTextDrawShow(playerid, Menu3DData[playerid][Menu3D_Model_Info]);
+
+	return 1;
+}
+
+static DestroyTexViewer(playerid)
+{
+	CancelSelect3DMenu(playerid);
+	Destroy3DMenu(Menu3DData[playerid][Menus3D]);
+	Menu3DData[playerid][TPreviewState] = PREVIEW_STATE_NONE;
+	PlayerTextDrawHide(playerid, Menu3DData[playerid][Menu3D_Model_Info]);
+
+	return 1;
+}
+
+YCMD:savetheme(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Save a few textures as a theme to be used later.");
+		return 1;
+	}
+
+	new count;
+	new DBResult:r;
+
+	// Any theme to save?
+	for(new i = 0; i < sizeof(ObjectTextures); i++)
+	{
+		if(PlayerThemeIndex[playerid][i] != -1)
+		{
+			count++;
+			break;
+	    }
+	}
+	if(count == 0)
+	{
+  		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "You have no textures to save to theme!");
+	}
+	else
+	{
+	    inline SaveTheme(tpid, tdialogid, tresponse, tlistitem, string:ttext[])
+		{
+			#pragma unused tlistitem, tdialogid, tpid, ttext
+
+			if(tresponse)
+			{
+				if(isnull(ttext))
+				{
+			  		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+					SendClientMessage(playerid, STEALTH_YELLOW, "You must supply a theme name to save!");
+				}
+
+				r = db_query(ThemeDataDB, "SELECT * FROM sqlite_master");
+
+				if(db_num_rows(r) > 0)
+				{
+				    for(new i = 0; i < db_num_rows(r); i++)
+				    {
+						new Field[32];
+						
+						db_get_field_assoc(r, "name", Field, 64);
+
+				        if(!strcmp(Field, ttext))
+						{
+						    inline ReplaceTheme(rpid, rdialogid, rresponse, rlistitem, string:rtext[])
+							{
+							    #pragma unused rlistitem, rdialogid, rpid, rtext
+							    if(rresponse)
+								{
+									SavePlayerTheme(playerid, ttext,true);
+							  		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+									SendClientMessage(playerid, STEALTH_GREEN, "Theme has been saved!");
+								}
+						    }
+						    Dialog_ShowCallback(playerid, using inline ReplaceTheme, DIALOG_STYLE_MSGBOX, "Texture Studio", "There is a theme with this name aready replace?", "Ok", "Cancel");
+							return 1;
+						}
+						db_next_row(r);
+				    }
+				    
+   					SavePlayerTheme(playerid, ttext);
+			  		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+					SendClientMessage(playerid, STEALTH_GREEN, "Theme has been saved!");
+				    
+				}
+	   			db_free_result(r);
+			}
+		}
+		Dialog_ShowCallback(playerid, using inline SaveTheme, DIALOG_STYLE_INPUT, "Texture Studio", "Choose a theme name to save to", "Ok", "Cancel");
+
+	}
+	return 1;
+}
+
+
+YCMD:deletetheme(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Delete a saved texture theme.");
+		return 1;
+	}
+
+	new DBResult:r = db_query(ThemeDataDB, "SELECT * FROM sqlite_master");
+
+	if(db_num_rows(r))
+	{
+		new Field[64];
+		new line[1024];
+		for(new i = 0; i < db_num_rows(r); i++)
+		{
+			db_get_field_assoc(r, "name", Field, 64);
+			format(line, sizeof(line), "%s%s\n", line, Field);
+			db_next_row(r);
+		}
+
+		inline DeleteTheme(lpid, ldialogid, lresponse, llistitem, string:ltext[])
+		{
+			#pragma unused llistitem, ldialogid, lpid, ltext
+			if(lresponse)
+			{
+			    inline ClearTheme(cpid, cdialogid, cresponse, clistitem, string:ctext[])
+			    {
+					#pragma unused clistitem, cdialogid, cpid, ctext
+					if(cresponse)
+					{
+						if(strcmp("default_theme", ltext))
+						{
+							new q[128];
+							format(q, sizeof(q), "DROP TABLE `%s`", ltext);
+							db_free_result(db_query(ThemeDataDB, q));
+
+							SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+							SendClientMessage(playerid, STEALTH_GREEN, "Theme deleted!");
+						}
+						else
+						{
+							SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+							SendClientMessage(playerid, STEALTH_YELLOW, "You can not delete the default theme!");
+						}
+					}
+			    }
+                Dialog_ShowCallback(playerid, using inline ClearTheme, DIALOG_STYLE_MSGBOX, "Texture Studio", "Delete theme?", "Ok", "Cancel");
+			}
+		}
+        Dialog_ShowCallback(playerid, using inline DeleteTheme, DIALOG_STYLE_LIST, "Delete a theme", line, "Ok", "Cancel");
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "There are no themes to delete!");
+	}
+
+	db_free_result(r);
+
+	return 1;
+}
+
+
+YCMD:loadtheme(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Load a saved texture theme.");
+		return 1;
+	}
+
+	new DBResult:r = db_query(ThemeDataDB, "SELECT * FROM sqlite_master");
+	
+	if(db_num_rows(r))
+	{
+		new Field[64];
+		new line[1024];
+		for(new i = 0; i < db_num_rows(r); i++)
+		{
+			db_get_field_assoc(r, "name", Field, 64);
+			format(line, sizeof(line), "%s%s\n", line, Field);
+			db_next_row(r);
+		}
+
+		inline LoadTheme(lpid, ldialogid, lresponse, llistitem, string:ltext[])
+		{
+			#pragma unused llistitem, ldialogid, lpid, ltext
+			if(lresponse)
+			{
+			    inline ClearTheme(cpid, cdialogid, cresponse, clistitem, string:ctext[])
+			    {
+			        #pragma unused clistitem, cdialogid, cpid, ctext
+			        if(cresponse) LoadPlayerTheme(playerid, ltext, true);
+			        else LoadPlayerTheme(playerid, ltext, false);
+
+			  		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+					SendClientMessage(playerid, STEALTH_GREEN, "Theme has been loaded!");
+			    }
+                Dialog_ShowCallback(playerid, using inline ClearTheme, DIALOG_STYLE_MSGBOX, "Texture Studio", "Clear existing theme?", "Ok", "Cancel");
+			}
+		}
+        Dialog_ShowCallback(playerid, using inline LoadTheme, DIALOG_STYLE_LIST, "Texture Studio - Load a theme", line, "Ok", "Cancel");
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "There are no themes to load!");
+	}
+	
+	db_free_result(r);
+	
+	return 1;
+}
+
+static SavePlayerTheme(playerid, name[], bool:deletedb=false)
+{
+	new q[128];
+
+	if(deletedb) format(q, sizeof(q), "DELETE FROM `%s`", name);
+	else format(q, sizeof(q), "CREATE TABLE IF NOT EXISTS `%s` (TIndex INTEGER)", name);
+	db_free_result(db_query(ThemeDataDB, q));
+	
+	for(new i = 0; i < sizeof(ObjectTextures); i++)
+	{
+		if(PlayerThemeIndex[playerid][i] != -1)
+		{
+		    format(q, sizeof(q), "INSERT INTO `%s` (`TIndex`) VALUES(%i)", name, PlayerThemeIndex[playerid][i]);
+		    db_free_result(db_query(ThemeDataDB, q));
+		}
+		else break;
+	}
+	
+	return 1;
+}
+
+static LoadPlayerTheme(playerid, name[], bool:cleararray=true)
+{
+	new q[128];
+	new DBResult:r;
+	format(q, sizeof(q), "SELECT * FROM `%s`", name);
+	r = db_query(ThemeDataDB, q);
+	
+	if(db_num_rows(r))
+	{
+		if(cleararray)
+		{
+			for(new i = 0; i < sizeof(ObjectTextures); i++) PlayerThemeIndex[playerid][i] = -1;
+			PlayerThemeCount[playerid] = 0;
+		}
+		
+	    for(new i = 0; i < db_num_rows(r); i++)
+	    {
+			for(new j, currpos; j < sizeof(ObjectTextures); j++)
+			{
+			    if(PlayerThemeIndex[playerid][j] == -1)
+			    {
+					currpos = j;
+					new Field[8];
+					db_get_field_assoc(r, "TIndex", Field, 8);
+					PlayerThemeIndex[playerid][currpos] = strval(Field);
+					PlayerThemeCount[playerid]++;
+					break;
+			    }
+			}
+			db_next_row(r);
+		}
+		db_free_result(r);
+	}
+	return 1;
+}
+
+
+
+YCMD:settindex(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Set currently selected texturing index.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+	new index = strval(arg);
+	if(index < 0 || index > 15) return SendClientMessage(playerid, STEALTH_YELLOW, "Usage: /settindex <index> (0-15)");
+
+	CurrTexturingIndex[playerid] = index;
+	new line[128];
+	format(line, sizeof(line), "Current texturing index set to %i", index);
+	SendClientMessage(playerid, STEALTH_GREEN, line);
+
+	return 1;
+}
+
+
+YCMD:stexture(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Texture editor.");
+		return 1;
+	}
+
+    MapOpenCheck();
+	EditCheck(playerid);
+
+	if(GetEditMode(playerid) == EDIT_MODE_TEXTURING)
+	{
+	    SetCurrTextDraw(playerid, TEXTDRAW_NONE);
+		SetEditMode(playerid, EDIT_MODE_NONE);
+		EditingMode[playerid] = false;
+
+		for(new i = 0; i < MAX_MATERIALS; i++)
+		{
+			TextDrawHideForPlayer(playerid, Click_SetTexture[i]);
+			TextDrawHideForPlayer(playerid, Click_ClearTexture[i]);
+			TextDrawHideForPlayer(playerid, Click_SetColor[i]);
+			TextDrawHideForPlayer(playerid, Click_CloseTexture);
+			PlayerTextDrawHide(playerid, Player_TextureInfo[playerid][i]);
+			PlayerTextDrawHide(playerid, Click_TextureAll[playerid]);
+		}
+        SetTimerEx("PlayerSetGUIPaused", 300, false, "ii", playerid, 0);
+	    CancelSelectTextDraw(playerid);
+	}
+	else
+	{
+		SetEditMode(playerid, EDIT_MODE_TEXTURING);
+		SetCurrTextDraw(playerid, TEXTDRAW_MATERIALS);
+        EditingMode[playerid] = true;
+		SelectTextDraw(playerid, 0xD9D919FF);
+		PlayerSetGUIPaused(playerid, true);
+
+		for(new i = 0; i < MAX_MATERIALS; i++)
+		{
+			TextDrawShowForPlayer(playerid, Click_SetTexture[i]);
+			TextDrawShowForPlayer(playerid, Click_ClearTexture[i]);
+			TextDrawShowForPlayer(playerid, Click_SetColor[i]);
+			TextDrawShowForPlayer(playerid, Click_CloseTexture);
+			UpdateTextureSlot(playerid, i);
+			PlayerTextDrawShow(playerid, Player_TextureInfo[playerid][i]);
+			PlayerTextDrawShow(playerid, Click_TextureAll[playerid]);
+		}
+	}
+	return 1;
+}
+
+static InitPlayerTextureInfo(playerid)
+{
+	new Float:ypos = 100.0;
+
+	for(new i = 0; i < MAX_MATERIALS; i++)
+	{
+		Player_TextureInfo[playerid][i] = CreatePlayerTextDraw(playerid,57.000000, ypos, "(0) None");
+		PlayerTextDrawBackgroundColor(playerid,Player_TextureInfo[playerid][i], 255);
+		PlayerTextDrawFont(playerid,Player_TextureInfo[playerid][i], 2);
+		PlayerTextDrawLetterSize(playerid,Player_TextureInfo[playerid][i], 0.200000, 1.000000);
+		PlayerTextDrawColor(playerid,Player_TextureInfo[playerid][i], -1);
+		PlayerTextDrawSetOutline(playerid,Player_TextureInfo[playerid][i], 1);
+		PlayerTextDrawSetProportional(playerid,Player_TextureInfo[playerid][i], 1);
+		PlayerTextDrawSetSelectable(playerid,Player_TextureInfo[playerid][i], 0);
+		ypos += 15.0;
+	}
+	
+	Click_TextureAll[playerid] = CreatePlayerTextDraw(playerid, 10.000000, ypos, "All");
+	PlayerTextDrawBackgroundColor(playerid, Click_TextureAll[playerid], 255);
+	PlayerTextDrawFont(playerid, Click_TextureAll[playerid], 2);
+	PlayerTextDrawLetterSize(playerid, Click_TextureAll[playerid], 0.200000, 1.000000);
+	PlayerTextDrawColor(playerid, Click_TextureAll[playerid], 0xFF0000FF);
+	PlayerTextDrawSetOutline(playerid, Click_TextureAll[playerid], 1);
+	PlayerTextDrawSetProportional(playerid, Click_TextureAll[playerid], 1);
+	PlayerTextDrawUseBox(playerid, Click_TextureAll[playerid], 1);
+	PlayerTextDrawBoxColor(playerid, Click_TextureAll[playerid], 0);
+	PlayerTextDrawTextSize(playerid, Click_TextureAll[playerid], 30.000000, 10.000000);
+	PlayerTextDrawSetSelectable(playerid, Click_TextureAll[playerid], 1);
+	
+	return 1;
+}
+
+ClickTextDrawEditMat(playerid, Text:clickedid)
+{
+	for(new i = 0; i < MAX_MATERIALS; i++)
+	{
+		// Player clicked set texture
+	    if(Click_SetTexture[i] == clickedid)
+	    {
+	        SelectingTexture[playerid] = true;
+			CurrTexturingIndex[playerid] = i;
+	        CancelSelectTextDraw(playerid);
+
+			SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+			new line[128];
+			format(line, sizeof(line), "Editing texture index %i use /mtextures - /ttextures to select a texture");
+			SendClientMessage(playerid, STEALTH_GREEN, line);
+
+	        return 1;
+	    }
+		// Player clicked set color
+	    else if(Click_SetColor[i] == clickedid)
+	    {
+	    	inline SelectColorMet(spid, sdialogid, sresponse, slistitem, string:stext[])
+			{
+				#pragma unused slistitem, sdialogid, spid, stext
+				if(sresponse)
+				{
+					new line[128];
+				    switch(slistitem)
+				    {
+				        case 0:
+						{
+                            inline SelectHexColor(hpid, hdialogid, hresponse, hlistitem, string:htext[])
+                            {
+								#pragma unused hlistitem, hdialogid, hpid, htext
+								if(hresponse)
+								{
+									if(TextureAll[playerid])
+									{
+										format(line, sizeof(line), "/mtcolorall %i %s", i, htext);
+										BroadcastCommand(playerid, line);
+									}
+									else
+									{
+										format(line, sizeof(line), "/mtcolor %i %s", i, htext);
+										BroadcastCommand(playerid, line);
+									}
+								}
+                            }
+                            Dialog_ShowCallback(playerid, using inline SelectHexColor, DIALOG_STYLE_INPUT, "Texture Studio - Input Hex Color", "Hex color ( 0x00000000 ) ARGB", "Ok", "Cancel");
+						}
+				        case 1:
+						{
+							new red, green, blue, alpha;
+                            inline SelectRed(redpid, reddialogid, redresponse, redlistitem, string:redtext[])
+                            {
+                                #pragma unused redlistitem, reddialogid, redpid, redtext
+								if(redresponse)
+								{
+									red = strval(redtext);
+									if(red < 0 || red > 255) Dialog_ShowCallback(playerid, using inline SelectRed, DIALOG_STYLE_INPUT, "Texture Studio - Color Combinator", "Enter Red Value <0 - 255>", "Ok", "Cancel");
+									else
+									{
+									    inline SelectGreen(greenpid, greendialogid, greenresponse, greenlistitem, string:greentext[])
+									    {
+									        #pragma unused greenlistitem, greendialogid, greenpid, greentext
+											if(greenresponse)
+											{
+												green = strval(greentext);
+												if(green < 0 || green > 255) Dialog_ShowCallback(playerid, using inline SelectGreen, DIALOG_STYLE_INPUT, "Texture Studio - Color Combinator", "Enter Green Value <0 - 255>", "Ok", "Cancel");
+												else
+												{
+												    inline SelectBlue(bluepid, bluedialogid, blueresponse, bluelistitem, string:bluetext[])
+												    {
+												        #pragma unused bluelistitem, bluedialogid, bluepid, bluetext
+														if(blueresponse)
+														{
+															blue = strval(bluetext);
+															if(blue < 0 || blue > 255) Dialog_ShowCallback(playerid, using inline SelectBlue, DIALOG_STYLE_INPUT, "Texture Studio - Color Combinator", "Enter Blue Value <0 - 255>", "Ok", "Cancel");
+															else
+															{
+															    inline SelectAlpha(alphapid, alphadialogid, alpharesponse, alphalistitem, string:alphatext[])
+															    {
+															        #pragma unused alphalistitem, alphadialogid, alphapid, alphatext
+																	if(alpharesponse)
+																	{
+																		if(isnull(alphatext)) alpha = 255;
+																		else alpha = strval(alphatext);
+																		if(alpha < 0 || alpha > 255) Dialog_ShowCallback(playerid, using inline SelectAlpha, DIALOG_STYLE_INPUT, "Texture Studio - Color Combinator", "Enter Alpha Value <0 - 255>\nNote: Leaving this empty is full alpha 255", "Ok", "Cancel");
+																		else
+																		{
+																		   	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+                                                                            new index = CurrObject[playerid];
+
+                                                                            if(TextureAll[playerid])
+																			{
+																				foreach(new j : Objects)
+																				{
+																				    if(ObjectData[j][oModel] == ObjectData[CurrObject[playerid]][oModel])
+																				    {
+																				        ObjectData[j][oColorIndex][i] = ARGB(alpha, red, green, blue);
+
+																						// Destroy the object
+																					    DestroyDynamicObject(ObjectData[j][oID]);
+
+																						// Re-create object
+																						ObjectData[j][oID] = CreateDynamicObject(ObjectData[j][oModel], ObjectData[j][oX], ObjectData[j][oY], ObjectData[j][oZ], ObjectData[j][oRX], ObjectData[j][oRY], ObjectData[j][oRZ], -1, -1, -1, 300.0);
+																						Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[j][oID], E_STREAMER_DRAW_DISTANCE, 300.0);
+
+																						// Update the materials
+																						UpdateMaterial(j);
+
+																						// Save this material index to the data base
+																						sqlite_SaveColorIndex(j);
+																				    }
+
+																				}
+																				// Update the streamer
+																				foreach(new j : Player)
+																				{
+																				    if(IsPlayerInRangeOfPoint(j, 300.0, ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ])) Streamer_Update(j);
+																				}
+
+																				SendClientMessage(playerid, STEALTH_GREEN, "Changed All Color");
+
+																			}
+																			else
+																			{
+																				// Set the color
+																		        ObjectData[index][oColorIndex][i] = ARGB(alpha, red, green, blue);
+
+																				// Destroy the object
+																			    DestroyDynamicObject(ObjectData[index][oID]);
+
+																				// Re-create object
+																				ObjectData[index][oID] = CreateDynamicObject(ObjectData[index][oModel], ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ], ObjectData[index][oRX], ObjectData[index][oRY], ObjectData[index][oRZ], -1, -1, -1, 300.0);
+																				Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[index][oID], E_STREAMER_DRAW_DISTANCE, 300.0);
+
+																				// Update the materials
+																				UpdateMaterial(index);
+
+																				// Save this material index to the data base
+																				sqlite_SaveColorIndex(index);
+
+																				// Update texture tool
+																		        UpdateTextureSlot(playerid, i);
+
+																				// Update the streamer
+																				foreach(new j : Player)
+																				{
+																				    if(IsPlayerInRangeOfPoint(j, 300.0, ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ])) Streamer_Update(j);
+																				}
+
+																				SendClientMessage(playerid, STEALTH_GREEN, "Changed Color");
+																			}
+																		}
+																	}
+																}
+																Dialog_ShowCallback(playerid, using inline SelectAlpha, DIALOG_STYLE_INPUT, "Texture Studio - Color Combinator", "Enter Alpha Value <0 - 255>\nNote: Leaving this empty is full alpha 255", "Ok", "Cancel");
+															}
+														}
+													}
+													Dialog_ShowCallback(playerid, using inline SelectBlue, DIALOG_STYLE_INPUT, "Texture Studio - Color Combinator", "Enter Blue Value <0 - 255>", "Ok", "Cancel");
+												}
+											}
+									    }
+									    Dialog_ShowCallback(playerid, using inline SelectGreen, DIALOG_STYLE_INPUT, "Texture Studio - Color Combinator", "Enter Green Value <0 - 255>", "Ok", "Cancel");
+									}
+								}
+                            }
+                            Dialog_ShowCallback(playerid, using inline SelectRed, DIALOG_STYLE_INPUT, "Texture Studio - Color Combinator", "Enter Red Value <0 - 255>", "Ok", "Cancel");
+						}
+				        case 2:
+						{
+                            inline SelectWebColor(wpid, wdialogid, wresponse, wlistitem, string:wtext[])
+							{
+							    #pragma unused wlistitem, wdialogid, wpid, wtext
+								if(wresponse)
+							    {
+									if(TextureAll[playerid])
+									{
+								        format(line, sizeof(line), "/mtcolorall %i %s", i, WebColorsARGB[wlistitem]);
+								        BroadcastCommand(playerid, line);
+									}
+									else
+									{
+								        format(line, sizeof(line), "/mtcolor %i %s", i, WebColorsARGB[wlistitem]);
+								        BroadcastCommand(playerid, line);
+									}
+							    }
+							}
+                            Dialog_ShowCallback(playerid, using inline SelectWebColor, DIALOG_STYLE_LIST, "Texture Studio - Select Web Color", webcolors, "Ok", "Cancel");
+						}
+						case 3:
+						{
+                            if(TextureAll[playerid])
+                            {
+	      						format(line, sizeof(line), "/mtcolorall %i 0x00000000", i);
+								BroadcastCommand(playerid, line);
+							}
+							else
+							{
+	      						format(line, sizeof(line), "/mtcolor %i 0x00000000", i);
+								BroadcastCommand(playerid, line);
+							}
+						}
+				    }
+				}
+			}
+			Dialog_ShowCallback(playerid, using inline SelectColorMet, DIALOG_STYLE_LIST, "Texture Studio - Select Color Method", "Hex Value\nCombinator\nWeb Colors\nReset Color", "Ok", "Cancel");
+			return 1;
+	    }
+    	// Player clicked clear texture/color
+	    else if(Click_ClearTexture[i] == clickedid)
+	    {
+			if(TextureAll[playerid])
+			{
+				new line[128];
+				format(line, sizeof(line), "/mtsetall %i 0", i);
+				BroadcastCommand(playerid, line);
+				format(line, sizeof(line), "/mtcolorall %i 0x00000000", i);
+				BroadcastCommand(playerid, line);
+				format(line, sizeof(line), "Cleared texture and color on slot %i for all objects", i);
+				SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_GREEN, line);
+			}
+			else
+			{
+				new line[128];
+				format(line, sizeof(line), "/mtset %i 0", i);
+				BroadcastCommand(playerid, line);
+				format(line, sizeof(line), "/mtcolor %i 0x00000000", i);
+				BroadcastCommand(playerid, line);
+				format(line, sizeof(line), "Cleared texture and color on slot %i", i);
+				SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_GREEN, line);
+			}
+			return 1;
+	    }
+	}
+
+	if(clickedid == Click_CloseTexture) BroadcastCommand(playerid, "/stexture");
+	return 0;
+}
+
+
+ClickPlayerTextDrawEditMat(playerid, PlayerText:playertextid)
+{
+	if(Click_TextureAll[playerid] == playertextid)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		if(TextureAll[playerid])
+		{
+		    TextureAll[playerid] = false;
+		    PlayerTextDrawHide(playerid, Click_TextureAll[playerid]);
+		    PlayerTextDrawColor(playerid, Click_TextureAll[playerid], 0xFF0000FF);
+		    PlayerTextDrawShow(playerid, Click_TextureAll[playerid]);
+		    SendClientMessage(playerid, STEALTH_GREEN, "Only the object you are currently editing will be textured");
+		}
+		else
+		{
+		    TextureAll[playerid] = true;
+		    PlayerTextDrawHide(playerid, Click_TextureAll[playerid]);
+		    PlayerTextDrawColor(playerid, Click_TextureAll[playerid], 0x00FF00FF);
+		    PlayerTextDrawShow(playerid, Click_TextureAll[playerid]);
+		    SendClientMessage(playerid, STEALTH_GREEN, "All like objects will now be textured");
+		}
+		return 1;
+    }
+	return 0;
+}
+
+UpdateTextureSlot(playerid, index)
+{
+	new line[128];
+	
+	if(ObjectData[CurrObject[playerid]][oTexIndex][index] != 0)
+	{
+		format(line, sizeof(line), "~g~Texture: %s ~r~Index: %i",
+			ObjectTextures[ObjectData[CurrObject[playerid]][oTexIndex][index]][TextureName],
+			ObjectData[CurrObject[playerid]][oTexIndex][index]);
+        PlayerTextDrawSetString(playerid, Player_TextureInfo[playerid][index], line);
+	}
+	else PlayerTextDrawSetString(playerid, Player_TextureInfo[playerid][index], "~g~None");
+
+}

+ 5389 - 0
Texture-Studio-master/filterscripts/tstudio/tsmain.pwn

@@ -0,0 +1,5389 @@
+////////////////////////////////////////////////////////////////////////////////
+/// Standard Callbacks /////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+
+public OnFilterScriptInit()
+{
+	print("----------------------------------------------");
+	print("----Texture Studio By [uL]Pottus and Crayder--");
+	print("------------------------------------Loaded----");
+
+	SystemDB = db_open_persistent("tstudio/system.db");
+	ThemeDataDB = db_open_persistent("tstudio/themedata.db");
+    
+	sqlite_ThemeSetup();
+	sqlite_LoadBindString();
+	
+	ResetSettings();
+
+	Streamer_ToggleErrorCallback(1); // Enable Streammer Error Callback
+	
+	#if defined AddSimpleModel // DL-SUPPORT
+	Streamer_SetVisibleItems(STREAMER_TYPE_OBJECT, 1500);
+	#endif
+	
+	return 1;
+}
+
+public OnFilterScriptExit()
+{
+	print("----------------------------------------------");
+	print("----Texture Studio By [uL]Pottus and Crayder--");
+	print("------------------------------------Unloaded--");
+
+	// Delete all map objects
+	DeleteMapObjects(false);
+
+	// Clear all removed buildings
+	ClearRemoveBuildings();
+
+	foreach(new i : Player)
+	{
+ 		ClearCopyBuffer(i);
+	}
+    
+	// Always close map
+	if(MapOpen)
+    {
+		db_free_persistent(EditMap);
+		sqlite_UpdateSettings();
+	}
+	db_free_persistent(SystemDB);
+	db_free_persistent(ThemeDataDB);
+
+	foreach(new i : Player)
+	{
+	    CancelSelectTextDraw(i);
+	}
+
+	return 1;
+}
+
+public OnPlayerConnect(playerid)
+{
+    RemoveAllBuildings(playerid);
+    
+    SendClientMessage(playerid, STEALTH_GREEN, "Welcome to Texture Studio!");
+    SendClientMessage(playerid, STEALTH_GREEN, sprintf("There are currently %i commands registered, check \"/thelp\" to see them!", Command_GetPlayerCommandCount(playerid)));
+	
+	new bool:found, bool:warn, string[36];
+	for (new i, j = Command_GetPlayerCommandCount(playerid); i < j; i++)
+  	{
+  	    format(string, 36, "%s", Command_GetNext(i, playerid));
+		//foreach(new c : Command()) {
+		
+		for(new k; k < sizeof(Commands); k++) {
+			if(!strcmp(Commands[k][cName], string)) {
+				found = true;
+				break;
+			}
+		}
+		if(!found) {
+			printf("    /thelp missing command: %s", string);
+			warn = true;
+		}
+		else
+			found = false;
+	}
+	if(warn)
+		printf("Warning: There's something missing or extra in /thelp for player %i.\n    (Report to Crayder on SA-MP Discord if this message ever shows)", playerid);
+	
+	return 1;
+}
+
+public OnPlayerDisconnect(playerid, reason)
+{
+	CurrObject[playerid] = -1;
+	EditingMode[playerid] = false;
+	TextDrawOpen[playerid] = false;
+	PivotPointOn[playerid] = false;
+	SetEditMode(playerid, EDIT_MODE_NONE);
+	SetCurrTextDraw(playerid, TEXTDRAW_NONE);
+	ClearCopyBuffer(playerid);
+	return 1;
+}
+
+public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ) return 0;
+
+SetCurrObject(playerid, index)
+{
+    if(CanSelectObject(playerid, index))
+    {
+        CurrObject[playerid] = index;
+        CallLocalFunction("OnPlayerObjectSelectChange", "ii", playerid, index);
+        return 1;
+    }
+    return 0;
+}
+
+OnPlayerKeyStateChangeOEdit(playerid,newkeys,oldkeys)
+{
+	#pragma unused oldkeys
+	if(GetEditMode(playerid) == EDIT_MODE_OBJECT)
+	{
+		// Clone object
+	    if(newkeys & KEY_WALK)
+		{
+			Edit_SetObjectPos(CurrObject[playerid], CurrEditPos[playerid][0], CurrEditPos[playerid][1], CurrEditPos[playerid][2], CurrEditPos[playerid][3], CurrEditPos[playerid][4], CurrEditPos[playerid][5], true);
+            SetCurrObject(playerid, CloneObject(CurrObject[playerid]));
+            EditDynamicObject(playerid, ObjectData[CurrObject[playerid]][oID]);
+            SendClientMessage(playerid, STEALTH_GREEN, "Object has been cloned");
+	    }
+
+		// Update object position
+	    else if(newkeys & KEY_SECONDARY_ATTACK)
+	    {
+			Edit_SetObjectPos(CurrObject[playerid], CurrEditPos[playerid][0], CurrEditPos[playerid][1], CurrEditPos[playerid][2], CurrEditPos[playerid][3], CurrEditPos[playerid][4], CurrEditPos[playerid][5], true);
+			SendClientMessage(playerid, STEALTH_GREEN, "Object position updated and saved");
+	    }
+	}
+	return 0;
+}
+
+// player finished editing an object; Fix For new streamer version
+public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ) return 0;
+
+// player finished editing an object
+public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
+{
+	//printf("%i, %i, %i, %i", playerid, objectid, response, GetEditMode(playerid));
+	switch(GetEditMode(playerid))
+	{
+	    case EDIT_MODE_OBJECT:
+	    {
+			// Player finished editing an object
+			if(response == EDIT_RESPONSE_FINAL)
+			{
+				Edit_SetObjectPos(CurrObject[playerid], x, y, z, rx, ry, rz, true);
+
+				SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_GREEN, "Object edit has been saved");
+
+				EditingMode[playerid] = false;
+				SetEditMode(playerid, EDIT_MODE_NONE);
+			}
+			else if(response == EDIT_RESPONSE_UPDATE)
+			{
+				CurrEditPos[playerid][0] = x;
+				CurrEditPos[playerid][1] = y;
+				CurrEditPos[playerid][2] = z;
+				CurrEditPos[playerid][3] = rx;
+				CurrEditPos[playerid][4] = ry;
+				CurrEditPos[playerid][5] = rz;
+			}
+
+			// Cancel editing
+			else if(response == EDIT_RESPONSE_CANCEL)
+			{
+				SetDynamicObjectPos(ObjectData[CurrObject[playerid]][oID], ObjectData[CurrObject[playerid]][oX], ObjectData[CurrObject[playerid]][oY], ObjectData[CurrObject[playerid]][oZ]);
+				SetDynamicObjectRot(ObjectData[CurrObject[playerid]][oID], ObjectData[CurrObject[playerid]][oRX], ObjectData[CurrObject[playerid]][oRY], ObjectData[CurrObject[playerid]][oRZ]);
+
+				SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_YELLOW, "Cancelled object editing");
+
+				EditingMode[playerid] = false;
+				SetEditMode(playerid, EDIT_MODE_NONE);
+			}
+		}
+
+		case EDIT_MODE_PIVOT:
+		{
+			if(response == EDIT_RESPONSE_FINAL)
+			{
+				SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_GREEN, "Pivot has been saved");
+
+				DestroyDynamicObject(PivotObject[playerid]);
+
+				PivotPoint[playerid][xPos] = x;
+				PivotPoint[playerid][yPos] = y;
+				PivotPoint[playerid][zPos] = z;
+
+				EditingMode[playerid] = false;
+				SetEditMode(playerid, EDIT_MODE_NONE);
+
+		    }
+    		else if(response == EDIT_RESPONSE_CANCEL)
+			{
+				SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_YELLOW, "Cancelled Pivot editing");
+
+				DestroyDynamicObject(PivotObject[playerid]);
+
+				EditingMode[playerid] = false;
+				SetEditMode(playerid, EDIT_MODE_NONE);
+
+			}
+		}
+		case EDIT_MODE_OBJECTGROUP: OnPlayerEditDOGroup(playerid, objectid, response, x, y, z, rx, ry, rz);
+		case EDIT_MODE_OBM: OnPlayerEditDOOBM(playerid, objectid, response, x, y, z, rx, ry, rz);
+
+		case EDIT_MODE_VOBJECT: OnPlayerEditVObject(playerid, objectid, response, x, y, z, rx, ry, rz);
+	}
+
+	#if defined MA_OnPlayerEditDynamicObject
+		MA_OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz);
+	#endif
+	return 0;
+}
+#if defined _ALS_OnPlayerEditDynamicObject
+	#undef OnPlayerEditDynamicObject
+#else
+	#define _ALS_OnPlayerEditDynamicObject
+#endif
+#define OnPlayerEditDynamicObject MA_OnPlayerEditDynamicObject
+#if defined MA_OnPlayerEditDynamicObject
+	forward MA_OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz);
+#endif
+
+
+
+// Player clicked a dynamic object; Fix For new streamer version
+public OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ) return 0;
+
+// Player clicked a dynamic object
+public OnPlayerSelectDynamicObject(playerid, objectid, modelid, Float:x, Float:y, Float:z)
+{
+	switch(GetEditMode(playerid))
+	{
+		case EDIT_MODE_SELECTION:
+		{
+		    new Keys,ud,lr,index;
+		    GetPlayerKeys(playerid,Keys,ud,lr);
+
+			// Find edit object
+			foreach(new i : Objects)
+			{
+				// Object found
+			    if(ObjectData[i][oID] == objectid)
+				{
+					index = i;
+				    break;
+				}
+			}
+
+			if(Keys & KEY_CTRL_BACK || (InFlyMode(playerid) && (Keys & KEY_SECONDARY_ATTACK)))
+			//if(Keys & KEY_CTRL_BACK)
+			{
+				CopyCopyBuffer(playerid, index);
+
+			    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		    	SendClientMessage(playerid, STEALTH_GREEN, "Copied object textures/color/text to buffer");
+			}
+			else if(Keys & KEY_WALK)
+			{
+				PasteCopyBuffer(playerid, index);
+
+			    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_GREEN, "Pasted your copy buffer to object");
+			}
+			else
+			{
+				SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+				if(SetCurrObject(playerid, index)) {
+                    new line[128];
+                    format(line, sizeof(line), "You have selected object index %i for editing", index);
+                    SendClientMessage(playerid, STEALTH_GREEN, line);
+                }
+                else
+                    SendClientMessage(playerid, STEALTH_YELLOW, "You can not select objects in this object's group");
+			}
+		}
+	}
+	return 0;
+}
+
+// Streamer Error Log
+public Streamer_OnPluginError(const error[])
+{
+	printf("Streamer Plugin Error: %s", error);
+}
+
+// Player clicked textdraw
+public OnPlayerClickTextDraw(playerid, Text:clickedid)
+{
+	// Text editing mode
+	if(GetCurrTextDraw(playerid) == TEXTDRAW_TEXTEDIT) if(ClickTextDrawEditText(playerid, Text:clickedid)) return 1;
+    if(GetCurrTextDraw(playerid) == TEXTDRAW_MATERIALS) if(ClickTextDrawEditMat(playerid, Text:clickedid)) return 1;
+    if(GetCurrTextDraw(playerid) == TEXTDRAW_LISTSEL) if(ClickTextDrawListSel(playerid, Text:clickedid)) return 1;
+    if(GetCurrTextDraw(playerid) == TEXTDRAW_OSEARCH) if(ClickTextDrawOSearch(playerid, Text:clickedid)) return 1;
+
+	#if defined MA_OnPlayerClickTextDraw
+		return MA_OnPlayerClickTextDraw(playerid, Text:clickedid);
+	#endif
+	return 0;
+}
+#if defined _ALS_OnPlayerClickTextDraw
+	#undef OnPlayerClickTextDraw
+#else
+	#define _ALS_OnPlayerClickTextDraw
+#endif
+#define OnPlayerClickTextDraw MA_OnPlayerClickTextDraw
+#if defined MA_OnPlayerClickTextDraw
+	forward MA_OnPlayerClickTextDraw(playerid, Text:clickedid);
+#endif
+
+
+// Player clicked player textdraw
+public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
+{
+	// Text editing mode
+    if(GetCurrTextDraw(playerid) == TEXTDRAW_TEXTEDIT) if(ClickPlayerTextDrawEditText(playerid, PlayerText:playertextid)) return 1;
+    if(GetCurrTextDraw(playerid) == TEXTDRAW_MATERIALS) if(ClickPlayerTextDrawEditMat(playerid, PlayerText:playertextid)) return 1;
+    if(GetCurrTextDraw(playerid) == TEXTDRAW_LISTSEL) if(ClickPlayerTextListSel(playerid, PlayerText:playertextid)) return 1;
+    if(GetCurrTextDraw(playerid) == TEXTDRAW_OSEARCH) if(ClickPlayerTextDrawOSearch(playerid, PlayerText:playertextid)) return 1;
+
+	#if defined MA_OnPlayerClickPlayerTextDraw
+		return MA_OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid);
+	#endif
+	return 0;
+}
+#if defined _ALS_OnPlayerClickPlayerTD
+	#undef OnPlayerClickPlayerTextDraw
+#else
+	#define _ALS_OnPlayerClickPlayerTD
+#endif
+#define OnPlayerClickPlayerTextDraw MA_OnPlayerClickPlayerTextDraw
+#if defined MA_OnPlayerClickPlayerTextDraw
+	forward MA_OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid);
+#endif
+
+
+public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
+{
+	if(OnPlayerKeyStateChangeOEdit(playerid,newkeys,oldkeys)) return 1;
+    if(OnPlayerKeyStateChange3DMenu(playerid,newkeys,oldkeys)) return 1;
+    if(OnPlayerKeyStateGroupChange(playerid, newkeys, oldkeys)) return 1;
+    if(OnPlayerKeyStateMenuChange(playerid, newkeys, oldkeys)) return 1;
+    if(OnPlayerKeyStateChangeTex(playerid,newkeys,oldkeys)) return 1;
+    if(OnPlayerKeyStateChangeLSel(playerid,newkeys,oldkeys)) return 1;
+    if(OnPlayerKeyStateChangeCMD(playerid,newkeys,oldkeys)) return 1;
+	return 1;
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+/// Standard Callbacks End//////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+
+
+////////////////////////////////////////////////////////////////////////////////
+/// Sqlite query functions /////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+
+// Load query stmt
+static DBStatement:loadstmt;
+
+// Loads map objects from a data base
+sqlite_LoadMapObjects()
+{
+	new tmpobject[OBJECTINFO];
+	new currindex;
+
+	loadstmt = db_prepare(EditMap, "SELECT * FROM `Objects`");
+
+	// Bind our results
+    stmt_bind_result_field(loadstmt, 0, DB::TYPE_INT, currindex);
+    stmt_bind_result_field(loadstmt, 1, DB::TYPE_INT, tmpobject[oModel]);
+    stmt_bind_result_field(loadstmt, 2, DB::TYPE_FLOAT, tmpobject[oX]);
+    stmt_bind_result_field(loadstmt, 3, DB::TYPE_FLOAT, tmpobject[oY]);
+    stmt_bind_result_field(loadstmt, 4, DB::TYPE_FLOAT, tmpobject[oZ]);
+    stmt_bind_result_field(loadstmt, 5, DB::TYPE_FLOAT, tmpobject[oRX]);
+    stmt_bind_result_field(loadstmt, 6, DB::TYPE_FLOAT, tmpobject[oRY]);
+    stmt_bind_result_field(loadstmt, 7, DB::TYPE_FLOAT, tmpobject[oRZ]);
+    stmt_bind_result_field(loadstmt, 8, DB::TYPE_ARRAY, tmpobject[oTexIndex], MAX_MATERIALS);
+    stmt_bind_result_field(loadstmt, 9, DB::TYPE_ARRAY, tmpobject[oColorIndex], MAX_MATERIALS);
+    stmt_bind_result_field(loadstmt, 10, DB::TYPE_INT, tmpobject[ousetext]);
+    stmt_bind_result_field(loadstmt, 11, DB::TYPE_INT, tmpobject[oFontFace]);
+    stmt_bind_result_field(loadstmt, 12, DB::TYPE_INT, tmpobject[oFontSize]);
+    stmt_bind_result_field(loadstmt, 13, DB::TYPE_INT, tmpobject[oFontBold]);
+    stmt_bind_result_field(loadstmt, 14, DB::TYPE_INT, tmpobject[oFontColor]);
+    stmt_bind_result_field(loadstmt, 15, DB::TYPE_INT, tmpobject[oBackColor]);
+    stmt_bind_result_field(loadstmt, 16, DB::TYPE_INT, tmpobject[oAlignment]);
+    stmt_bind_result_field(loadstmt, 17, DB::TYPE_INT, tmpobject[oTextFontSize]);
+    stmt_bind_result_field(loadstmt, 18, DB::TYPE_STRING, tmpobject[oObjectText], MAX_TEXT_LENGTH);
+    stmt_bind_result_field(loadstmt, 19, DB::TYPE_INT, tmpobject[oGroup]);
+    stmt_bind_result_field(loadstmt, 20, DB::TYPE_STRING, tmpobject[oNote], 64);
+    stmt_bind_result_field(loadstmt, 21, DB::TYPE_FLOAT, tmpobject[oDD]);
+
+	// Execute query
+    if(stmt_execute(loadstmt))
+    {
+		new count;
+        while(stmt_fetch_row(loadstmt))
+        {
+			// Load object into database at specified index (Don't save to sqlite database)
+			AddDynamicObject(tmpobject[oModel], tmpobject[oX], tmpobject[oY], tmpobject[oZ], tmpobject[oRX], tmpobject[oRY], tmpobject[oRZ], currindex, false, .dd = tmpobject[oDD]);
+
+			// Set textures and colors
+			for(new i = 0; i < MAX_MATERIALS; i++)
+			{
+                ObjectData[currindex][oTexIndex][i] = tmpobject[oTexIndex][i];
+	            ObjectData[currindex][oColorIndex][i] = tmpobject[oColorIndex][i];
+			}
+
+			// Get all text settings
+		   	ObjectData[currindex][ousetext] = tmpobject[ousetext];
+		    ObjectData[currindex][oFontFace] = tmpobject[oFontFace];
+		    ObjectData[currindex][oFontSize] = tmpobject[oFontSize];
+		    ObjectData[currindex][oFontBold] = tmpobject[oFontBold];
+		    ObjectData[currindex][oFontColor] = tmpobject[oFontColor];
+		    ObjectData[currindex][oBackColor] = tmpobject[oBackColor];
+		    ObjectData[currindex][oAlignment] = tmpobject[oAlignment];
+		    ObjectData[currindex][oTextFontSize] = tmpobject[oTextFontSize];
+		    ObjectData[currindex][oGroup] = tmpobject[oGroup];
+
+			// Get any text string
+			format(ObjectData[currindex][oObjectText], MAX_TEXT_LENGTH, "%s", tmpobject[oObjectText]);
+			format(ObjectData[currindex][oNote], MAX_TEXT_LENGTH, "%s", tmpobject[oNote]);
+
+			// We need to update textures and materials
+			UpdateMaterial(currindex);
+
+			// Update the object text
+			UpdateObjectText(currindex);
+
+			// Update 3d text
+			UpdateObject3DText(currindex, true);
+			
+			count++;
+        }
+		stmt_close(loadstmt);
+        return count;
+    }
+	stmt_close(loadstmt);
+    return 0;
+}
+
+// Insert stmt statement
+new DBStatement:insertstmt;
+new InsertObjectString[512];
+
+// Sqlite query functions
+sqlite_InsertObject(index)
+{
+	// Inserts a new index
+	if(!InsertObjectString[0])
+	{
+		// Prepare query
+		strimplode(" ",
+			InsertObjectString,
+			sizeof(InsertObjectString),
+			"INSERT INTO `Objects`",
+	        "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
+		);
+		// Prepare data base for writing
+	}
+	insertstmt = db_prepare(EditMap, InsertObjectString);
+
+	// Bind values
+
+
+	// Bind our results
+    stmt_bind_value(insertstmt, 0, DB::TYPE_INT, index);
+    stmt_bind_value(insertstmt, 1, DB::TYPE_INT, ObjectData[index][oModel]);
+    stmt_bind_value(insertstmt, 2, DB::TYPE_FLOAT, ObjectData[index][oX]);
+    stmt_bind_value(insertstmt, 3, DB::TYPE_FLOAT, ObjectData[index][oY]);
+    stmt_bind_value(insertstmt, 4, DB::TYPE_FLOAT, ObjectData[index][oZ]);
+    stmt_bind_value(insertstmt, 5, DB::TYPE_FLOAT, ObjectData[index][oRX]);
+    stmt_bind_value(insertstmt, 6, DB::TYPE_FLOAT, ObjectData[index][oRY]);
+    stmt_bind_value(insertstmt, 7, DB::TYPE_FLOAT, ObjectData[index][oRZ]);
+    stmt_bind_value(insertstmt, 8, DB::TYPE_ARRAY, ObjectData[index][oTexIndex], MAX_MATERIALS);
+    stmt_bind_value(insertstmt, 9, DB::TYPE_ARRAY, ObjectData[index][oColorIndex], MAX_MATERIALS);
+    stmt_bind_value(insertstmt, 10, DB::TYPE_INT, ObjectData[index][ousetext]);
+    stmt_bind_value(insertstmt, 11, DB::TYPE_INT, ObjectData[index][oFontFace]);
+    stmt_bind_value(insertstmt, 12, DB::TYPE_INT, ObjectData[index][oFontSize]);
+    stmt_bind_value(insertstmt, 13, DB::TYPE_INT, ObjectData[index][oFontBold]);
+    stmt_bind_value(insertstmt, 14, DB::TYPE_INT, ObjectData[index][oFontColor]);
+    stmt_bind_value(insertstmt, 15, DB::TYPE_INT, ObjectData[index][oBackColor]);
+    stmt_bind_value(insertstmt, 16, DB::TYPE_INT, ObjectData[index][oAlignment]);
+    stmt_bind_value(insertstmt, 17, DB::TYPE_INT, ObjectData[index][oTextFontSize]);
+    stmt_bind_value(insertstmt, 18, DB::TYPE_STRING, ObjectData[index][oObjectText], MAX_TEXT_LENGTH);
+    stmt_bind_value(insertstmt, 19, DB::TYPE_INT, ObjectData[index][oGroup]);
+    stmt_bind_value(insertstmt, 20, DB::TYPE_STRING, ObjectData[index][oNote]);
+    stmt_bind_value(insertstmt, 21, DB::TYPE_FLOAT, ObjectData[index][oDD]);
+
+    stmt_execute(insertstmt);
+	stmt_close(insertstmt);
+}
+
+// Remove a object from the database
+sqlite_RemoveObject(index)
+{
+	new Query[128];
+	format(Query, sizeof(Query), "DELETE FROM `Objects` WHERE `IndexID` = '%i'", index);
+
+	db_free_result(db_query(EditMap, Query));
+	return 1;
+}
+
+
+sqlite_CreateNewMap()
+{
+    sqlite_CreateMapDB();
+    sqlite_CreateRBDB();
+    sqlite_CreateVehicle();
+    sqlite_CreateSettings();
+	sqlite_InitSettings();
+}
+
+new NewMapString[512];
+sqlite_CreateMapDB()
+{
+	if(!NewMapString[0])
+	{
+		strimplode(" ",
+			NewMapString,
+			sizeof(NewMapString),
+			"CREATE TABLE IF NOT EXISTS `Objects`",
+			"(IndexID INTEGER,",
+			"ModelID INTEGER,",
+			"xPos REAL,",
+			"yPos REAL,",
+			"zPos REAL,",
+			"rxRot REAL,",
+			"ryRot REAL,",
+			"rzRot REAL,",
+			"TextureIndex TEXT,",
+			"ColorIndex TEXT,",
+			"usetext INTEGER,",
+			"FontFace INTEGER,",
+			"FontSize INTEGER,",
+			"FontBold INTEGER,",
+			"FontColor INTEGER,",
+			"BackColor INTEGER,",
+			"Alignment INTEGER,",
+			"TextFontSize INTEGER,",
+			"ObjectText TEXT,",
+			"GroupID INTEGER,",
+			"Note TEXT,",
+			"DrawDistance REAL DEFAULT 300.0);"
+		);
+	}
+
+	db_exec(EditMap, NewMapString);
+}
+
+// Version 1.2 removebuilding import lines
+new NewRemoveString[512];
+sqlite_CreateRBDB()
+{
+	if(!NewRemoveString[0])
+	{
+		strimplode(" ",
+			NewRemoveString,
+			sizeof(NewRemoveString),
+			"CREATE TABLE IF NOT EXISTS `RemovedBuildings`",
+			"(ModelID INTEGER,",
+			"xPos REAL,",
+			"yPos REAL,",
+			"zPos REAL,",
+			"Range REAL);"
+		);
+	}
+	db_exec(EditMap, NewRemoveString);
+}
+
+new NewSettingsString[512];
+sqlite_CreateSettings()
+{
+	if(!NewSettingsString[0])
+	{
+		strimplode(" ",
+			NewSettingsString,
+			sizeof(NewSettingsString),
+			"CREATE TABLE IF NOT EXISTS `Settings`",
+			"(Version INTEGER DEFAULT 0,",
+			"LastTime INTEGER DEFAULT 0,",
+			"Author TEXT DEFAULT 'Creator',",
+			"SpawnX REAL DEFAULT 0.0,",
+			"SpawnY REAL DEFAULT 0.0,",
+			"SpawnZ REAL DEFAULT 0.0,",
+			"Interior INTEGER DEFAULT -1,",
+			"VirtualWorld INTEGER DEFAULT -1);"
+		);
+	}
+	db_exec(EditMap, NewSettingsString);
+}
+
+new DBStatement:insertsettingstmt;
+new InitSettingsString[512];
+sqlite_InitSettings()
+{
+	// Insert the initial values
+	if(!InitSettingsString[0])
+	{
+		// Prepare query
+		strimplode(" ",
+			InitSettingsString,
+			sizeof(InitSettingsString),
+			"INSERT INTO `Settings`",
+	        "VALUES(?, ?, ?, ?, ?, ?, ?, ?)"
+		);
+		// Prepare data base for writing
+	}
+	insertsettingstmt = db_prepare(EditMap, InitSettingsString);
+    
+	// Bind our results
+    stmt_bind_value(insertsettingstmt, 0, DB::TYPE_INT, MapSetting[mVersion]);
+    stmt_bind_value(insertsettingstmt, 1, DB::TYPE_INT, MapSetting[mLastEdit]);
+    stmt_bind_value(insertsettingstmt, 2, DB::TYPE_STRING, MapSetting[mAuthor]);
+    stmt_bind_value(insertsettingstmt, 3, DB::TYPE_FLOAT, MapSetting[mSpawn][xPos]);
+    stmt_bind_value(insertsettingstmt, 4, DB::TYPE_FLOAT, MapSetting[mSpawn][yPos]);
+    stmt_bind_value(insertsettingstmt, 5, DB::TYPE_FLOAT, MapSetting[mSpawn][zPos]);
+    stmt_bind_value(insertsettingstmt, 6, DB::TYPE_INT, MapSetting[mInterior]);
+    stmt_bind_value(insertsettingstmt, 7, DB::TYPE_INT, MapSetting[mVirtualWorld]);
+
+    stmt_execute(insertsettingstmt);
+	stmt_close(insertsettingstmt);
+}
+
+// Makes any version updates
+sqlite_UpdateDB()
+{
+	sqlite_CreateRBDB();
+	sqlite_CreateVehicle();
+	
+	new dbver = db_query_int(EditMap, "SELECT Version FROM Settings");
+	new major = (dbver >> 16) & 0xFF, minor = (dbver >> 8) & 0xFF, patch = (dbver & 0xFF) + 96;
+	
+	#pragma unused major, minor, patch
+	
+	if(minor < 9)
+	{
+		ResetSettings();
+		sqlite_CreateSettings();
+		sqlite_InitSettings();
+
+		// Version 1.3
+		if(!ColumnExists(EditMap, "Objects", "GroupID")) db_exec(EditMap, "ALTER TABLE `Objects` ADD COLUMN `GroupID` INTEGER DEFAULT 0");
+		
+		// Version 1.9
+		if(!ColumnExists(EditMap, "Objects", "Note"))
+		{
+			db_exec(EditMap, "ALTER TABLE `Objects` ADD COLUMN `Note` TEXT DEFAULT ''");
+			db_exec(EditMap, "ALTER TABLE `Objects` ADD COLUMN `DrawDistance` REAL DEFAULT 300.0");
+			db_exec(EditMap, "ALTER TABLE `Vehicles` ADD COLUMN `CarSiren` INTEGER DEFAULT 0");
+		}
+    }
+	
+	/* example: Less than 1.9b
+	if(major <= 1 && minor <= 9 && patch <= 'b'))
+	{
+		print("worked");
+		sqlite_CreateRangeRemoved();
+		sqlite_InitSettings();
+    }*/
+	
+	
+    /*new dbver = db_query_int(EditMap, "SELECT Version FROM Settings");
+    if(dbver != TS_VERSION)
+    {
+        printf("Map version (%i.%i%c) does not match TS version (%i.%i%c)",
+            (dbver & 0x00FF0000), (dbver & 0x0000FF00), (dbver & 0x000000FF) + 96,
+            (TS_VERSION & 0x00FF0000), (TS_VERSION & 0x0000FF00), (TS_VERSION & 0x000000FF) + 96);
+    
+        if((dbver & 0x00FF0000) > (TS_VERSION & 0x00FF0000)) // Major version, changes were made that are needed to edit this map
+            printf("Map major version is higher than TS version, update TS to edit this map.");
+        else if((dbver & 0x0000FF00) > (TS_VERSION & 0x0000FF00)) // Minor version, changes were made that affect this map
+            printf("Map minor version is higher than TS version, update TS to edit this map correctly.");
+        else if((dbver & 0x000000FF) > (TS_VERSION & 0x000000FF)) // Patch, backwards compatible
+            printf("Your version of TS is old, consider updating.");
+        
+        if((dbver & 0x00FF0000) < (TS_VERSION & 0x00FF0000)) // Major version, making updates
+            printf("Map major version is lower than TS version, updating map.");
+        else if((dbver & 0x0000FF00) < (TS_VERSION & 0x0000FF00)) // Minor version, making updates
+            printf("Map minor version is lower than TS version, updating map.");
+        else if((dbver & 0x000000FF) < (TS_VERSION & 0x000000FF)) // Patch, backwards compatible
+            printf("Map version is compatible with TS version.");
+    }*/
+	
+    sqlite_UpdateSettings();
+	return 1;
+}
+
+
+new DBStatement:texturestmt;
+new TextureUpdateString[512];
+
+// Saves a specific texture index to DB
+sqlite_SaveMaterialIndex(index)
+{
+	// Inserts a new index
+	if(!TextureUpdateString[0])
+	{
+		// Prepare query
+		strimplode(" ",
+			TextureUpdateString,
+			sizeof(TextureUpdateString),
+			"UPDATE `Objects` SET",
+			"`TextureIndex` = ?",
+			"WHERE `IndexID` = ?"
+		);
+	}
+    texturestmt = db_prepare(EditMap, TextureUpdateString);
+
+	// Bind values
+	stmt_bind_value(texturestmt, 0, DB::TYPE_ARRAY, ObjectData[index][oTexIndex], MAX_MATERIALS);
+	stmt_bind_value(texturestmt, 1, DB::TYPE_INT, index);
+
+	// Execute stmt
+    stmt_execute(texturestmt);
+	stmt_close(texturestmt);
+
+	return 1;
+}
+
+new DBStatement:colorstmt;
+new ColorUpdateString[512];
+
+// Saves a specific texture index to DB
+sqlite_SaveColorIndex(index)
+{
+	// Inserts a new index
+	if(!ColorUpdateString[0])
+	{
+		// Prepare query
+		strimplode(" ",
+			ColorUpdateString,
+			sizeof(ColorUpdateString),
+			"UPDATE `Objects` SET",
+			"`ColorIndex` = ?",
+			"WHERE `IndexID` = ?"
+		);
+	}
+
+    colorstmt = db_prepare(EditMap, ColorUpdateString);
+
+	// Bind values
+	stmt_bind_value(colorstmt, 0, DB::TYPE_ARRAY, ObjectData[index][oColorIndex], MAX_MATERIALS);
+	stmt_bind_value(colorstmt, 1, DB::TYPE_INT, index);
+
+	// Execute stmt
+    stmt_execute(colorstmt);
+	stmt_close(colorstmt);
+
+	return 1;
+}
+
+
+new DBStatement:posupdatestmt;
+new PosUpdateString[512];
+
+sqlite_UpdateObjectPos(index)
+{
+	// Inserts a new index
+	if(!PosUpdateString[0])
+	{
+		// Prepare query
+		strimplode(" ",
+			PosUpdateString,
+			sizeof(PosUpdateString),
+			"UPDATE `Objects` SET",
+			"`xPos` = ?,",
+			"`yPos` = ?,",
+			"`zPos` = ?,",
+			"`rxRot` = ?,",
+			"`ryRot` = ?,",
+			"`rzRot` = ?",
+			"WHERE `IndexID` = ?"
+		);
+	}
+    posupdatestmt = db_prepare(EditMap, PosUpdateString);
+
+	// Bind values
+	stmt_bind_value(posupdatestmt, 0, DB::TYPE_FLOAT, ObjectData[index][oX]);
+	stmt_bind_value(posupdatestmt, 1, DB::TYPE_FLOAT, ObjectData[index][oY]);
+	stmt_bind_value(posupdatestmt, 2, DB::TYPE_FLOAT, ObjectData[index][oZ]);
+	stmt_bind_value(posupdatestmt, 3, DB::TYPE_FLOAT, ObjectData[index][oRX]);
+	stmt_bind_value(posupdatestmt, 4, DB::TYPE_FLOAT, ObjectData[index][oRY]);
+	stmt_bind_value(posupdatestmt, 5, DB::TYPE_FLOAT, ObjectData[index][oRZ]);
+	stmt_bind_value(posupdatestmt, 6, DB::TYPE_INT, index);
+
+	// Execute stmt
+    stmt_execute(posupdatestmt);
+	stmt_close(posupdatestmt);
+
+	foreach(new i : Player)
+	{
+		if(CurrObject[i] == index) OnObjectUpdatePos(i, index);
+	}
+
+    return 1;
+}
+
+new DBStatement:ddupdatestmt;
+new DDUpdateString[512];
+
+sqlite_UpdateObjectDD(index)
+{
+	// Inserts a new index
+	if(!DDUpdateString[0])
+	{
+		// Prepare query
+		strimplode(" ",
+			DDUpdateString,
+			sizeof(DDUpdateString),
+			"UPDATE `Objects` SET",
+			"`DrawDistance` = ?",
+			"WHERE `IndexID` = ?"
+		);
+	}
+    ddupdatestmt = db_prepare(EditMap, DDUpdateString);
+
+	// Bind values
+	stmt_bind_value(ddupdatestmt, 0, DB::TYPE_FLOAT, ObjectData[index][oDD]);
+	stmt_bind_value(ddupdatestmt, 1, DB::TYPE_INT, index);
+
+	// Execute stmt
+    stmt_execute(ddupdatestmt);
+	stmt_close(ddupdatestmt);
+
+    return 1;
+}
+
+
+// Update sql object text
+new DBStatement:objecttextallsave;
+new ObjectTextSave[512];
+
+sqlite_SaveAllObjectText(index)
+{
+	if(!ObjectTextSave[0])
+	{
+		strimplode(" ",
+			ObjectTextSave,
+			sizeof(ObjectTextSave),
+			"UPDATE `Objects` SET",
+			"`usetext` = ?,",
+			"`FontFace` = ?,",
+			"`FontSize` = ?,",
+			"`FontBold` = ?,",
+			"`FontColor` = ?,",
+			"`BackColor` = ?,",
+			"`Alignment` = ?,",
+			"`TextFontSize` = ?,",
+			"`ObjectText` = ?",
+			"WHERE `IndexID` = ?"
+		);
+	}
+
+	objecttextallsave = db_prepare(EditMap, ObjectTextSave);
+
+	// Bind values
+	stmt_bind_value(objecttextallsave, 0, DB::TYPE_INT, ObjectData[index][ousetext]);
+	stmt_bind_value(objecttextallsave, 1, DB::TYPE_INT, ObjectData[index][oFontFace]);
+	stmt_bind_value(objecttextallsave, 2, DB::TYPE_INT, ObjectData[index][oFontSize]);
+	stmt_bind_value(objecttextallsave, 3, DB::TYPE_INT, ObjectData[index][oFontBold]);
+	stmt_bind_value(objecttextallsave, 4, DB::TYPE_INT, ObjectData[index][oFontColor]);
+	stmt_bind_value(objecttextallsave, 5, DB::TYPE_INT, ObjectData[index][oBackColor]);
+	stmt_bind_value(objecttextallsave, 6, DB::TYPE_INT, ObjectData[index][oAlignment]);
+	stmt_bind_value(objecttextallsave, 7, DB::TYPE_INT, ObjectData[index][oTextFontSize]);
+	stmt_bind_value(objecttextallsave, 8, DB::TYPE_STRING, ObjectData[index][oObjectText]);
+	stmt_bind_value(objecttextallsave, 9, DB::TYPE_INT, index);
+
+	stmt_execute(objecttextallsave);
+	stmt_close(objecttextallsave);
+}
+
+
+
+// Update sql use text
+new DBStatement:usetextupdatestmt;
+new UseTextString[512];
+
+sqlite_ObjUseText(index)
+{
+	if(!UseTextString[0])
+	{
+		strimplode(" ",
+			UseTextString,
+			sizeof(UseTextString),
+			"UPDATE `Objects` SET",
+			"`usetext` = ?",
+			"WHERE `IndexID` = ?"
+		);
+	}
+
+	usetextupdatestmt = db_prepare(EditMap, UseTextString);
+
+	// Bind values
+	stmt_bind_value(usetextupdatestmt, 0, DB::TYPE_INT, ObjectData[index][ousetext]);
+	stmt_bind_value(usetextupdatestmt, 1, DB::TYPE_INT, index);
+
+	// Execute stmt
+    stmt_execute(usetextupdatestmt);
+	stmt_close(usetextupdatestmt);
+	return 1;
+}
+
+// Update sql fontface
+new DBStatement:fontfaceupdatestmt;
+new FontFaceString[512];
+
+sqlite_ObjFontFace(index)
+{
+	if(!FontFaceString[0])
+	{
+		strimplode(" ",
+			FontFaceString,
+			sizeof(FontFaceString),
+			"UPDATE `Objects` SET",
+			"`FontFace` = ?",
+			"WHERE `IndexID` = ?"
+		);
+	}
+
+	fontfaceupdatestmt = db_prepare(EditMap, FontFaceString);
+
+	// Bind values
+	stmt_bind_value(fontfaceupdatestmt, 0, DB::TYPE_INT, ObjectData[index][oFontFace]);
+	stmt_bind_value(fontfaceupdatestmt, 1, DB::TYPE_INT, index);
+
+	// Execute stmt
+    stmt_execute(fontfaceupdatestmt);
+	stmt_close(fontfaceupdatestmt);
+	return 1;
+}
+
+// Update sql fontsize
+new DBStatement:fontsizeupdatestmt;
+new FontSizeString[512];
+
+sqlite_ObjFontSize(index)
+{
+	if(!FontSizeString[0])
+	{
+		strimplode(" ",
+			FontSizeString,
+			sizeof(FontSizeString),
+			"UPDATE `Objects` SET",
+			"`FontSize` = ?",
+			"WHERE `IndexID` = ?"
+		);
+	}
+	fontsizeupdatestmt = db_prepare(EditMap, FontSizeString);
+
+	// Bind values
+	stmt_bind_value(fontsizeupdatestmt, 0, DB::TYPE_INT, ObjectData[index][oFontSize]);
+	stmt_bind_value(fontsizeupdatestmt, 1, DB::TYPE_INT, index);
+
+	// Execute stmt
+    stmt_execute(fontsizeupdatestmt);
+	stmt_close(fontsizeupdatestmt);
+	return 1;
+}
+
+
+
+// Update sql fontbold
+new DBStatement:fontboldupdatestmt;
+new FontBoldString[512];
+
+sqlite_ObjFontBold(index)
+{
+	if(!FontBoldString[0])
+	{
+		strimplode(" ",
+			FontBoldString,
+			sizeof(FontBoldString),
+			"UPDATE `Objects` SET",
+			"`FontBold` = ?",
+			"WHERE `IndexID` = ?"
+		);
+	}
+
+	fontboldupdatestmt = db_prepare(EditMap, FontBoldString);
+
+	// Bind values
+	stmt_bind_value(fontboldupdatestmt, 0, DB::TYPE_INT, ObjectData[index][oFontBold]);
+	stmt_bind_value(fontboldupdatestmt, 1, DB::TYPE_INT, index);
+
+	// Execute stmt
+    stmt_execute(fontboldupdatestmt);
+	stmt_close(fontboldupdatestmt);
+	return 1;
+}
+
+// Update sql fontcolor
+new DBStatement:fontcolorupdatestmt;
+new FontColorString[512];
+
+sqlite_ObjFontColor(index)
+{
+	if(!FontColorString[0])
+	{
+		strimplode(" ",
+			FontColorString,
+			sizeof(FontColorString),
+			"UPDATE `Objects` SET",
+			"`FontColor` = ?",
+			"WHERE `IndexID` = ?"
+		);
+	}
+
+	fontcolorupdatestmt = db_prepare(EditMap, FontColorString);
+
+	// Bind values
+	stmt_bind_value(fontcolorupdatestmt, 0, DB::TYPE_INT, ObjectData[index][oFontColor]);
+	stmt_bind_value(fontcolorupdatestmt, 1, DB::TYPE_INT, index);
+
+	// Execute stmt
+    stmt_execute(fontcolorupdatestmt);
+	stmt_close(fontcolorupdatestmt);
+	return 1;
+}
+
+// Update sql backcolor
+new DBStatement:backcolorupdatestmt;
+new BackColorString[512];
+
+sqlite_ObjBackColor(index)
+{
+	if(!BackColorString[0])
+	{
+		strimplode(" ",
+			BackColorString,
+			sizeof(BackColorString),
+			"UPDATE `Objects` SET",
+			"`BackColor` = ?",
+			"WHERE `IndexID` = ?"
+		);
+	}
+
+	backcolorupdatestmt = db_prepare(EditMap, BackColorString);
+
+	// Bind values
+	stmt_bind_value(backcolorupdatestmt, 0, DB::TYPE_INT, ObjectData[index][oBackColor]);
+	stmt_bind_value(backcolorupdatestmt, 1, DB::TYPE_INT, index);
+
+	// Execute stmt
+    stmt_execute(backcolorupdatestmt);
+	stmt_close(backcolorupdatestmt);
+	return 1;
+}
+
+// Update sql alignment
+new DBStatement:alignmentupdatestmt;
+new AlignmentString[512];
+
+
+sqlite_ObjAlignment(index)
+{
+	if(!AlignmentString[0])
+	{
+		strimplode(" ",
+			AlignmentString,
+			sizeof(AlignmentString),
+			"UPDATE `Objects` SET",
+			"`Alignment` = ?",
+			"WHERE `IndexID` = ?"
+		);
+	}
+
+	alignmentupdatestmt = db_prepare(EditMap, AlignmentString);
+
+	// Bind values
+	stmt_bind_value(alignmentupdatestmt, 0, DB::TYPE_INT, ObjectData[index][oAlignment]);
+	stmt_bind_value(alignmentupdatestmt, 1, DB::TYPE_INT, index);
+
+	// Execute stmt
+    stmt_execute(alignmentupdatestmt);
+	stmt_close(alignmentupdatestmt);
+	return 1;
+}
+
+// Update sql textsize
+new DBStatement:textsizeupdatestmt;
+new TextSizeString[512];
+
+sqlite_ObjFontTextSize(index)
+{
+	if(!TextSizeString[0])
+	{
+		strimplode(" ",
+			TextSizeString,
+			sizeof(TextSizeString),
+			"UPDATE `Objects` SET",
+			"`TextFontSize` = ?",
+			"WHERE `IndexID` = ?"
+		);
+	}
+
+	textsizeupdatestmt = db_prepare(EditMap, TextSizeString);
+
+	// Bind values
+	stmt_bind_value(textsizeupdatestmt, 0, DB::TYPE_INT, ObjectData[index][oTextFontSize]);
+	stmt_bind_value(textsizeupdatestmt, 1, DB::TYPE_INT, index);
+
+	// Execute stmt
+    stmt_execute(textsizeupdatestmt);
+	stmt_close(textsizeupdatestmt);
+	return 1;
+}
+
+// Update sql object text
+new DBStatement:objecttextupdatestmt;
+new ObjectTextString[512];
+
+sqlite_ObjObjectText(index)
+{
+	if(!ObjectTextString[0])
+	{
+		strimplode(" ",
+			ObjectTextString,
+			sizeof(ObjectTextString),
+			"UPDATE `Objects` SET",
+			"`ObjectText` = ?",
+			"WHERE `IndexID` = ?"
+		);
+	}
+
+	objecttextupdatestmt = db_prepare(EditMap, ObjectTextString);
+
+	// Bind values
+	stmt_bind_value(objecttextupdatestmt, 0, DB::TYPE_STRING, ObjectData[index][oObjectText]);
+	stmt_bind_value(objecttextupdatestmt, 1, DB::TYPE_INT, index);
+
+	// Execute stmt
+    stmt_execute(objecttextupdatestmt);
+	stmt_close(objecttextupdatestmt);
+	return 1;
+}
+
+// Update sql object group
+new DBStatement:objectgroupupdatestmt;
+new ObjectGroupString[512];
+
+sqlite_ObjGroup(index)
+{
+	if(!ObjectTextString[0])
+	{
+		strimplode(" ",
+			ObjectGroupString,
+			sizeof(ObjectGroupString),
+			"UPDATE `Objects` SET",
+			"`GroupID` = ?",
+			"WHERE `IndexID` = ?"
+		);
+	}
+
+	objectgroupupdatestmt = db_prepare(EditMap, ObjectGroupString);
+
+	// Bind values
+	stmt_bind_value(objectgroupupdatestmt, 0, DB::TYPE_INT, ObjectData[index][oGroup]);
+	stmt_bind_value(objectgroupupdatestmt, 1, DB::TYPE_INT, index);
+
+	// Execute stmt
+    stmt_execute(objectgroupupdatestmt);
+	stmt_close(objectgroupupdatestmt);
+	return 1;
+}
+
+
+// Update sql object model
+new DBStatement:objectmodelupdatestmt;
+new ObjectModelString[512];
+
+sqlite_ObjModel(index)
+{
+	if(!ObjectModelString[0])
+	{
+		strimplode(" ",
+			ObjectModelString,
+			sizeof(ObjectModelString),
+			"UPDATE `Objects` SET",
+			"`ModelID` = ?",
+			"WHERE `IndexID` = ?"
+		);
+	}
+	objectmodelupdatestmt = db_prepare(EditMap, ObjectModelString);
+
+	// Bind values
+	stmt_bind_value(objectmodelupdatestmt, 0, DB::TYPE_INT, ObjectData[index][oModel]);
+	stmt_bind_value(objectmodelupdatestmt, 1, DB::TYPE_INT, index);
+
+	// Execute stmt
+    stmt_execute(objectmodelupdatestmt);
+	stmt_close(objectmodelupdatestmt);
+	return 1;
+}
+
+// Update sql object note
+new DBStatement:objectnoteupdatestmt;
+new ObjectNoteString[512];
+
+sqlite_ObjNote(index)
+{
+	if(!ObjectNoteString[0])
+	{
+		strimplode(" ",
+			ObjectNoteString,
+			sizeof(ObjectNoteString),
+			"UPDATE `Objects` SET",
+			"`Note` = ?",
+			"WHERE `IndexID` = ?"
+		);
+	}
+	objectnoteupdatestmt = db_prepare(EditMap, ObjectNoteString);
+
+	// Bind values
+	stmt_bind_value(objectnoteupdatestmt, 0, DB::TYPE_STRING, ObjectData[index][oNote]);
+	stmt_bind_value(objectnoteupdatestmt, 1, DB::TYPE_INT, index);
+
+	// Execute stmt
+    stmt_execute(objectnoteupdatestmt);
+	stmt_close(objectnoteupdatestmt);
+	return 1;
+}
+
+
+// Insert a remove building to DB
+new DBStatement:insertremovebuldingstmt;
+new InsertRemoveBuildingString[256];
+
+sqlite_InsertRemoveBuilding(index)
+{
+	// Inserts a new index
+	if(!InsertRemoveBuildingString[0])
+	{
+		// Prepare query
+		strimplode(" ",
+			InsertRemoveBuildingString,
+			sizeof(InsertRemoveBuildingString),
+			"INSERT INTO `RemovedBuildings`",
+	        "VALUES(?, ?, ?, ?, ?)"
+		);
+		// Prepare data base for writing
+	}
+	insertremovebuldingstmt = db_prepare(EditMap, InsertRemoveBuildingString);
+
+	// Bind our results
+    stmt_bind_value(insertremovebuldingstmt, 0, DB::TYPE_INT, RemoveData[index][rModel]);
+    stmt_bind_value(insertremovebuldingstmt, 1, DB::TYPE_FLOAT, RemoveData[index][rX]);
+    stmt_bind_value(insertremovebuldingstmt, 2, DB::TYPE_FLOAT, RemoveData[index][rY]);
+    stmt_bind_value(insertremovebuldingstmt, 3, DB::TYPE_FLOAT, RemoveData[index][rZ]);
+    stmt_bind_value(insertremovebuldingstmt, 4, DB::TYPE_FLOAT, RemoveData[index][rRange]);
+
+    stmt_execute(insertremovebuldingstmt);
+	stmt_close(insertremovebuldingstmt);
+}
+
+// Update settings in DB
+new DBStatement:updatesettingstmt;
+new InsertSettingsString[256];
+
+sqlite_UpdateSettings()
+{
+	if(!InsertSettingsString[0])
+	{
+		strimplode(" ",
+			InsertSettingsString,
+			sizeof(InsertSettingsString),
+			"UPDATE `Settings` SET",
+			"`Version` = ?,",
+			"`LastTime` = ?,",
+			"`Author` = ?,",
+			"`SpawnX` = ?,",
+			"`SpawnY` = ?,",
+			"`SpawnZ` = ?,",
+			"`Interior` = ?,",
+			"`VirtualWorld` = ?",
+            // Hacky way to change all of the data without a unique, pointless column
+			"WHERE `Version` in (SELECT `Version` FROM Settings LIMIT 1)"
+		);
+	}
+	updatesettingstmt = db_prepare(EditMap, InsertSettingsString);
+    
+	// Bind our results
+    stmt_bind_value(updatesettingstmt, 0, DB::TYPE_INT, TS_VERSION);
+    stmt_bind_value(updatesettingstmt, 1, DB::TYPE_INT, gettime());
+    stmt_bind_value(updatesettingstmt, 2, DB::TYPE_STRING, MapSetting[mAuthor]);
+    stmt_bind_value(updatesettingstmt, 3, DB::TYPE_FLOAT, MapSetting[mSpawn][xPos]);
+    stmt_bind_value(updatesettingstmt, 4, DB::TYPE_FLOAT, MapSetting[mSpawn][yPos]);
+    stmt_bind_value(updatesettingstmt, 5, DB::TYPE_FLOAT, MapSetting[mSpawn][zPos]);
+    stmt_bind_value(updatesettingstmt, 6, DB::TYPE_INT, MapSetting[mInterior]);
+    stmt_bind_value(updatesettingstmt, 7, DB::TYPE_INT, MapSetting[mVirtualWorld]);
+
+    // Execute statement
+    stmt_execute(updatesettingstmt);
+	stmt_close(updatesettingstmt);
+}
+
+// Load any remove buildings
+new DBStatement:loadremovebuldingstmt;
+
+sqlite_LoadRemoveBuildings()
+{
+	new tmpremove[REMOVEINFO];
+
+	loadremovebuldingstmt = db_prepare(EditMap, "SELECT * FROM `RemovedBuildings`");
+
+	// Bind our results
+    stmt_bind_result_field(loadremovebuldingstmt, 0, DB::TYPE_INT, tmpremove[rModel]);
+    stmt_bind_result_field(loadremovebuldingstmt, 1, DB::TYPE_FLOAT, tmpremove[rX]);
+    stmt_bind_result_field(loadremovebuldingstmt, 2, DB::TYPE_FLOAT, tmpremove[rY]);
+    stmt_bind_result_field(loadremovebuldingstmt, 3, DB::TYPE_FLOAT, tmpremove[rZ]);
+    stmt_bind_result_field(loadremovebuldingstmt, 4, DB::TYPE_FLOAT, tmpremove[rRange]);
+
+	// Execute query
+    if(stmt_execute(loadremovebuldingstmt))
+    {
+		new count;
+        while(stmt_fetch_row(loadremovebuldingstmt))
+        {
+			// Add the removed building
+			AddRemoveBuilding(tmpremove[rModel], tmpremove[rX], tmpremove[rY], tmpremove[rZ], tmpremove[rRange], false);
+			count++;
+        }
+		stmt_close(loadremovebuldingstmt);
+        return count;
+    }
+	stmt_close(loadremovebuldingstmt);
+    return 0;
+}
+
+// Load settings
+new DBStatement:loadsettingstmt;
+
+sqlite_LoadSettings()
+{
+    new tmpsetting[MAPOPTIONS];
+
+	loadsettingstmt = db_prepare(EditMap, "SELECT * FROM `Settings`");
+
+	// Bind our results
+    stmt_bind_result_field(loadsettingstmt, 0, DB::TYPE_INT, tmpsetting[mVersion]);
+    stmt_bind_result_field(loadsettingstmt, 1, DB::TYPE_INT, tmpsetting[mLastEdit]);
+    stmt_bind_result_field(loadsettingstmt, 2, DB::TYPE_STRING, tmpsetting[mAuthor], MAX_PLAYER_NAME);
+    stmt_bind_result_field(loadsettingstmt, 3, DB::TYPE_FLOAT, tmpsetting[mSpawn][xPos]);
+    stmt_bind_result_field(loadsettingstmt, 4, DB::TYPE_FLOAT, tmpsetting[mSpawn][yPos]);
+    stmt_bind_result_field(loadsettingstmt, 5, DB::TYPE_FLOAT, tmpsetting[mSpawn][zPos]);
+    stmt_bind_result_field(loadsettingstmt, 6, DB::TYPE_INT, tmpsetting[mInterior]);
+    stmt_bind_result_field(loadsettingstmt, 7, DB::TYPE_INT, tmpsetting[mVirtualWorld]);
+    
+    // Set to default
+    //ResetSettings();
+
+	// Execute query
+    if(stmt_execute(loadsettingstmt))
+    {
+        if(stmt_fetch_row(loadsettingstmt))
+        {
+            // Set to loaded data
+            MapSetting = tmpsetting;
+			return 1;
+        }
+    }
+	stmt_close(loadsettingstmt);
+    return 0;
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+/// Sqlite query functions end /////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+
+
+////////////////////////////////////////////////////////////////////////////////
+/// Support functions //////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+
+// Resets all data on a object slot
+ResetObjectIndex(index)
+{
+	new tmpobject[OBJECTINFO];
+	ObjectData[index] = tmpobject;
+	return 1;
+}
+
+// Sets the material/and or color of an object
+UpdateMaterial(index)
+{
+	for(new i = 0; i < MAX_MATERIALS; i++)
+	{
+		if(ObjectData[index][oTexIndex][i] != 0) SetDynamicObjectMaterial(ObjectData[index][oID], i, GetTModel(ObjectData[index][oTexIndex][i]), GetTXDName(ObjectData[index][oTexIndex][i]), GetTextureName(ObjectData[index][oTexIndex][i]), ObjectData[index][oColorIndex][i]);
+		else if(ObjectData[index][oColorIndex][i] != 0) SetDynamicObjectMaterial(ObjectData[index][oID], i, -1, "none", "none", ObjectData[index][oColorIndex][i]);
+	}
+	return 1;
+}
+
+// Highlights a object
+HighlightObject(index)
+{
+    for(new i = 0; i < MAX_MATERIALS; i++) SetDynamicObjectMaterial(ObjectData[index][oID], i, -1, "none", "none", HIGHLIGHT_OBJECT_COLOR);
+	return 1;
+}
+
+
+// Updates any text for an object
+UpdateObjectText(index)
+{
+	// Dialogs return literal values this will fix that issue to display correctly
+	new tmptext[MAX_TEXT_LENGTH];
+	strcat(tmptext, ObjectData[index][oObjectText], MAX_TEXT_LENGTH);
+    FixText(tmptext);
+
+	if(ObjectData[index][ousetext])
+	{
+		SetDynamicObjectMaterialText(ObjectData[index][oID],
+			0,
+			tmptext,
+			FontSizes[ObjectData[index][oFontSize]],
+			FontNames[ObjectData[index][oFontFace]],
+			ObjectData[index][oTextFontSize],
+			ObjectData[index][oFontBold],
+			ObjectData[index][oFontColor],
+			ObjectData[index][oBackColor],
+			ObjectData[index][oAlignment]);
+		return 1;
+	}
+	return 0;
+}
+
+// Fixes new line and tabs in material text
+FixText(text[])
+{
+	new len = strlen(text);
+	if(len > 1)
+	{
+		for(new i = 0; i < len; i++)
+		{
+			if(text[i] == 92)
+			{
+				// New line
+			    if(text[i+1] == 'n')
+			    {
+					text[i] = '\n';
+					for(new j = i+1; j < len; j++) text[j] = text[j+1], text[j+1] = 0;
+					continue;
+			    }
+
+				// Tab
+			    if(text[i+1] == 't')
+			    {
+					text[i] = '\t';
+					for(new j = i+1; j < len-1; j++) text[j] = text[j+1], text[j+1] = 0;
+					continue;
+			    }
+
+				// Literal
+			    if(text[i+1] == 92)
+			    {
+					text[i] = 92;
+					for(new j = i+1; j < len-1; j++) text[j] = text[j+1], text[j+1] = 0;
+			    }
+			}
+		}
+	}
+	return 1;
+}
+
+
+Edit_SetObjectPos(index, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, bool:save)
+{
+
+    SaveUndoInfo(index, UNDO_TYPE_EDIT);
+
+	ObjectData[index][oX] = x;
+    ObjectData[index][oY] = y;
+    ObjectData[index][oZ] = z;
+    ObjectData[index][oRX] = rx;
+    ObjectData[index][oRY] = ry;
+    ObjectData[index][oRZ] = rz;
+
+	SetDynamicObjectPos(ObjectData[index][oID], ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ]);
+	SetDynamicObjectRot(ObjectData[index][oID], ObjectData[index][oRX], ObjectData[index][oRY], ObjectData[index][oRZ]);
+
+	if(save)
+	{
+		// Update object 3d text position
+		UpdateObject3DText(index);
+
+		// Update the database
+	    sqlite_UpdateObjectPos(index);
+	}
+
+	return 1;
+}
+
+UpdateObject3DText(index, bool:newobject=false)
+{
+	OnUpdateGroup3DText(index);
+
+	if(!newobject) DestroyDynamic3DTextLabel(ObjectData[index][oTextID]);
+
+    if(!TextOption[tShowText] && !TextOption[tAlwaysShowNew] && newobject)
+        return 1;
+    
+	// 3D Text Label (To identify objects)
+	new line[128];
+	format(line, sizeof(line), "Ind: {33DD11}%i%s", index,
+        (TextOption[tShowGroup] ? sprintf(" {FF8800}Grp:{33DD11} %i", ObjectData[index][oGroup]) : ("")));
+    
+    // Append note
+    if(TextOption[tShowModel])
+    {
+        strcat(line, sprintf("\n{FF8800}Model: {33DD11}%i\n{FF8800}Name: {33DD11}%s", ObjectData[index][oModel], GetModelName(ObjectData[index][oModel])));
+    }
+    
+    // Append note
+    if(TextOption[tShowNote] && strlen(ObjectData[index][oNote]))
+    {
+        strcat(line, sprintf("\n{FF8800}Note: {33DD11}%s", ObjectData[index][oNote]));
+    }
+
+	// Shows the models index
+	if(ObjectData[index][oAttachedVehicle] > -1)
+	{
+		ObjectData[index][oTextID] = CreateDynamic3DTextLabel(line, 0xFF8800FF, ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ], TEXT3D_DRAW_DIST, INVALID_PLAYER_ID, CarData[ObjectData[index][oAttachedVehicle]][CarID]);
+		Update3DAttachCarPos(index, ObjectData[index][oAttachedVehicle]);
+	}
+	else ObjectData[index][oTextID] = CreateDynamic3DTextLabel(line, 0xFF8800FF, ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ], TEXT3D_DRAW_DIST);
+
+	// Update the streamer
+	foreach(new i : Player)
+	{
+	    if(IsPlayerInRangeOfPoint(i, 300.0, ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ])) Streamer_Update(i);
+	}
+
+	return 1;
+}
+
+// Rotation functions (Thanks to Stylock)
+
+// Calculates group object / whole map rotations
+tsfunc AttachObjectToPoint(objectid, Float:px, Float:py, Float:pz, Float:prx, Float:pry, Float:prz, &Float:RetX, &Float:RetY, &Float:RetZ, &Float:RetRX, &Float:RetRY, &Float:RetRZ, sync_rotation = 1)
+{
+    new
+        Float:g_sin[3],
+        Float:g_cos[3],
+
+        Float:off_x,
+        Float:off_y,
+        Float:off_z;
+
+    EDIT_FloatEulerFix(prx, pry, prz);
+
+
+    off_x = ObjectData[objectid][oX] - px; // static offset
+    off_y = ObjectData[objectid][oY] - py; // static offset
+    off_z = ObjectData[objectid][oZ] - pz; // static offset
+
+    // Calculate the new position
+    EDIT_FloatConvertValue(prx, pry, prz, g_sin, g_cos);
+    RetX = px + off_x * g_cos[1] * g_cos[2] - off_x * g_sin[0] * g_sin[1] * g_sin[2] - off_y * g_cos[0] * g_sin[2] + off_z * g_sin[1] * g_cos[2] + off_z * g_sin[0] * g_cos[1] * g_sin[2];
+    RetY = py + off_x * g_cos[1] * g_sin[2] + off_x * g_sin[0] * g_sin[1] * g_cos[2] + off_y * g_cos[0] * g_cos[2] + off_z * g_sin[1] * g_sin[2] - off_z * g_sin[0] * g_cos[1] * g_cos[2];
+    RetZ = pz - off_x * g_cos[0] * g_sin[1] + off_y * g_sin[0] + off_z * g_cos[0] * g_cos[1];
+
+    if (sync_rotation)
+    {
+        // Calculate the new rotation
+        EDIT_FloatConvertValue(asin(g_cos[0] * g_cos[1]), atan2(g_sin[0], g_cos[0] * g_sin[1]) + ObjectData[objectid][oRZ], atan2(g_cos[1] * g_cos[2] * g_sin[0] - g_sin[1] * g_sin[2], g_cos[2] * g_sin[1] - g_cos[1] * g_sin[0] * -g_sin[2]), g_sin, g_cos);
+ 	  	EDIT_FloatConvertValue(asin(g_cos[0] * g_sin[1]), atan2(g_cos[0] * g_cos[1], g_sin[0]), atan2(g_cos[2] * g_sin[0] * g_sin[1] - g_cos[1] * g_sin[2], g_cos[1] * g_cos[2] + g_sin[0] * g_sin[1] * g_sin[2]), g_sin, g_cos);
+        EDIT_FloatConvertValue(atan2(g_sin[0], g_cos[0] * g_cos[1]) + ObjectData[objectid][oRX], asin(g_cos[0] * g_sin[1]), atan2(g_cos[2] * g_sin[0] * g_sin[1] + g_cos[1] * g_sin[2], g_cos[1] * g_cos[2] - g_sin[0] * g_sin[1] * g_sin[2]), g_sin, g_cos);
+
+   	    RetRX = asin(g_cos[1] * g_sin[0]);
+		RetRY = atan2(g_sin[1], g_cos[0] * g_cos[1]) + ObjectData[objectid][oRY];
+		RetRZ = atan2(g_cos[0] * g_sin[2] - g_cos[2] * g_sin[0] * g_sin[1], g_cos[0] * g_cos[2] + g_sin[0] * g_sin[1] * g_sin[2]);
+    }
+}
+
+tsfunc AttachObjectToPoint_GroupEdit(objectid, Float:offx, Float:offy, Float:offz, Float:px, Float:py, Float:pz, Float:prx, Float:pry, Float:prz, &Float:RetX, &Float:RetY, &Float:RetZ, &Float:RetRX, &Float:RetRY, &Float:RetRZ, sync_rotation = 1)
+{
+    new
+        Float:g_sin[3],
+        Float:g_cos[3],
+        Float:off_x,
+        Float:off_y,
+        Float:off_z;
+
+    EDIT_FloatEulerFix(prx, pry, prz);
+
+    off_x = offx - px; // static offset
+    off_y = offy - py; // static offset
+    off_z = offz - pz; // static offset
+
+    // Calculate the new position
+    EDIT_FloatConvertValue(prx, pry, prz, g_sin, g_cos);
+    RetX = px + off_x * g_cos[1] * g_cos[2] - off_x * g_sin[0] * g_sin[1] * g_sin[2] - off_y * g_cos[0] * g_sin[2] + off_z * g_sin[1] * g_cos[2] + off_z * g_sin[0] * g_cos[1] * g_sin[2];
+    RetY = py + off_x * g_cos[1] * g_sin[2] + off_x * g_sin[0] * g_sin[1] * g_cos[2] + off_y * g_cos[0] * g_cos[2] + off_z * g_sin[1] * g_sin[2] - off_z * g_sin[0] * g_cos[1] * g_cos[2];
+    RetZ = pz - off_x * g_cos[0] * g_sin[1] + off_y * g_sin[0] + off_z * g_cos[0] * g_cos[1];
+
+    if (sync_rotation)
+    {
+        // Calculate the new rotation
+        EDIT_FloatConvertValue(asin(g_cos[0] * g_cos[1]), atan2(g_sin[0], g_cos[0] * g_sin[1]) + ObjectData[objectid][oRZ], atan2(g_cos[1] * g_cos[2] * g_sin[0] - g_sin[1] * g_sin[2], g_cos[2] * g_sin[1] - g_cos[1] * g_sin[0] * -g_sin[2]), g_sin, g_cos);
+ 	  	EDIT_FloatConvertValue(asin(g_cos[0] * g_sin[1]), atan2(g_cos[0] * g_cos[1], g_sin[0]), atan2(g_cos[2] * g_sin[0] * g_sin[1] - g_cos[1] * g_sin[2], g_cos[1] * g_cos[2] + g_sin[0] * g_sin[1] * g_sin[2]), g_sin, g_cos);
+        EDIT_FloatConvertValue(atan2(g_sin[0], g_cos[0] * g_cos[1]) + ObjectData[objectid][oRX], asin(g_cos[0] * g_sin[1]), atan2(g_cos[2] * g_sin[0] * g_sin[1] + g_cos[1] * g_sin[2], g_cos[1] * g_cos[2] - g_sin[0] * g_sin[1] * g_sin[2]), g_sin, g_cos);
+
+   	    RetRX = asin(g_cos[1] * g_sin[0]);
+		RetRY = atan2(g_sin[1], g_cos[0] * g_cos[1]) + ObjectData[objectid][oRY];
+		RetRZ = atan2(g_cos[0] * g_sin[2] - g_cos[2] * g_sin[0] * g_sin[1], g_cos[0] * g_cos[2] + g_sin[0] * g_sin[1] * g_sin[2]);
+    }
+}
+
+
+tsfunc AttachPoint(Float:offx, Float:offy, Float:offz, Float:offrx, Float:offry, Float:offrz, Float:px, Float:py, Float:pz, Float:prx, Float:pry, Float:prz, &Float:RetX, &Float:RetY, &Float:RetZ, &Float:RetRX, &Float:RetRY, &Float:RetRZ, sync_rotation = 1)
+{
+    new
+        Float:g_sin[3],
+        Float:g_cos[3],
+        Float:off_x,
+        Float:off_y,
+        Float:off_z;
+
+    EDIT_FloatEulerFix(prx, pry, prz);
+
+    off_x = offx - px; // static offset
+    off_y = offy - py; // static offset
+    off_z = offz - pz; // static offset
+
+    // Calculate the new position
+    EDIT_FloatConvertValue(prx, pry, prz, g_sin, g_cos);
+    RetX = px + off_x * g_cos[1] * g_cos[2] - off_x * g_sin[0] * g_sin[1] * g_sin[2] - off_y * g_cos[0] * g_sin[2] + off_z * g_sin[1] * g_cos[2] + off_z * g_sin[0] * g_cos[1] * g_sin[2];
+    RetY = py + off_x * g_cos[1] * g_sin[2] + off_x * g_sin[0] * g_sin[1] * g_cos[2] + off_y * g_cos[0] * g_cos[2] + off_z * g_sin[1] * g_sin[2] - off_z * g_sin[0] * g_cos[1] * g_cos[2];
+    RetZ = pz - off_x * g_cos[0] * g_sin[1] + off_y * g_sin[0] + off_z * g_cos[0] * g_cos[1];
+
+    if (sync_rotation)
+    {
+        // Calculate the new rotation
+        EDIT_FloatConvertValue(asin(g_cos[0] * g_cos[1]), atan2(g_sin[0], g_cos[0] * g_sin[1]) + offrz, atan2(g_cos[1] * g_cos[2] * g_sin[0] - g_sin[1] * g_sin[2], g_cos[2] * g_sin[1] - g_cos[1] * g_sin[0] * -g_sin[2]), g_sin, g_cos);
+ 	  	EDIT_FloatConvertValue(asin(g_cos[0] * g_sin[1]), atan2(g_cos[0] * g_cos[1], g_sin[0]), atan2(g_cos[2] * g_sin[0] * g_sin[1] - g_cos[1] * g_sin[2], g_cos[1] * g_cos[2] + g_sin[0] * g_sin[1] * g_sin[2]), g_sin, g_cos);
+        EDIT_FloatConvertValue(atan2(g_sin[0], g_cos[0] * g_cos[1]) + offrx, asin(g_cos[0] * g_sin[1]), atan2(g_cos[2] * g_sin[0] * g_sin[1] + g_cos[1] * g_sin[2], g_cos[1] * g_cos[2] - g_sin[0] * g_sin[1] * g_sin[2]), g_sin, g_cos);
+
+   	    RetRX = asin(g_cos[1] * g_sin[0]);
+		RetRY = atan2(g_sin[1], g_cos[0] * g_cos[1]) + offry;
+		RetRZ = atan2(g_cos[0] * g_sin[2] - g_cos[2] * g_sin[0] * g_sin[1], g_cos[0] * g_cos[2] + g_sin[0] * g_sin[1] * g_sin[2]);
+    }
+}
+
+
+
+
+
+tsfunc EDIT_FloatConvertValue(Float:rot_x, Float:rot_y, Float:rot_z, Float:sin[3], Float:cos[3])
+{
+    sin[0] = floatsin(rot_x, degrees);
+    sin[1] = floatsin(rot_y, degrees);
+    sin[2] = floatsin(rot_z, degrees);
+    cos[0] = floatcos(rot_x, degrees);
+    cos[1] = floatcos(rot_y, degrees);
+    cos[2] = floatcos(rot_z, degrees);
+    return 1;
+}
+
+/*
+ * Fixes a bug that causes objects to not rotate
+ * correctly when rotating on the Z axis only.
+ */
+tsfunc EDIT_FloatEulerFix(&Float:rot_x, &Float:rot_y, &Float:rot_z)
+{
+    EDIT_FloatGetRemainder(rot_x, rot_y, rot_z);
+    if((!floatcmp(rot_x, 0.0) || !floatcmp(rot_x, 360.0))
+    && (!floatcmp(rot_y, 0.0) || !floatcmp(rot_y, 360.0)))
+    {
+        rot_y = 0.00000002;
+    }
+    return 1;
+}
+
+tsfunc EDIT_FloatGetRemainder(&Float:rot_x, &Float:rot_y, &Float:rot_z)
+{
+    EDIT_FloatRemainder(rot_x, 360.0);
+    EDIT_FloatRemainder(rot_y, 360.0);
+    EDIT_FloatRemainder(rot_z, 360.0);
+    return 1;
+}
+
+tsfunc EDIT_FloatRemainder(&Float:remainder, Float:value)
+{
+    if(remainder >= value)
+    {
+        while(remainder >= value)
+        {
+            remainder = remainder - value;
+        }
+    }
+    else if(remainder < 0.0)
+    {
+        while(remainder < 0.0)
+        {
+            remainder = remainder + value;
+        }
+    }
+    return 1;
+}
+
+// Gets the center of the map
+GetMapCenter(&Float:X, &Float:Y, &Float:Z)
+{
+	new Float:highX = -9999999.0;
+	new Float:highY = -9999999.0;
+	new Float:highZ = -9999999.0;
+
+	new Float:lowX  = 9999999.0;
+	new Float:lowY  = 9999999.0;
+	new Float:lowZ  = 9999999.0;
+
+	new count;
+
+	foreach(new i : Objects)
+	{
+		if(ObjectData[i][oX] > highX) highX = ObjectData[i][oX];
+		if(ObjectData[i][oY] > highY) highY = ObjectData[i][oY];
+		if(ObjectData[i][oZ] > highZ) highZ = ObjectData[i][oZ];
+		if(ObjectData[i][oX] < lowX) lowX = ObjectData[i][oX];
+		if(ObjectData[i][oY] < lowY) lowY = ObjectData[i][oY];
+		if(ObjectData[i][oZ] < lowZ) lowZ = ObjectData[i][oZ];
+		count++;
+	}
+
+	// Not enough objects grouped
+	if(count < 2) return 0;
+
+
+	X = (highX + lowX) / 2;
+	Y = (highY + lowY) / 2;
+	Z = (highZ + lowZ) / 2;
+
+	return 1;
+}
+
+AddDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, index = -1, bool:sqlsave = true, Float:dd = 300.0)
+{
+	// Index was not specified get a free index
+	if(index == -1) index = Iter_Free(Objects);
+
+	//Found free index
+	if(index != -1)
+	{
+		// Add iterator
+		Iter_Add(Objects, index);
+
+		// Create object and set data
+		ObjectData[index][oID] = CreateDynamicObject(modelid, x, y, z, rx, ry, rz, MapSetting[mVirtualWorld], MapSetting[mInterior], -1, dd);
+		Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[index][oID], E_STREAMER_DRAW_DISTANCE, dd);
+		
+		#if defined COMPILE_MANGLE
+			ObjectData[index][oCAID] = CA_CreateObject(modelid, x, y, z, rx, ry, rz, true);
+		#endif
+		
+		// Update the streamer
+		foreach(new i : Player)
+		{
+		    if(IsPlayerInRangeOfPoint(i, 300.0, x, y, z)) Streamer_Update(i);
+		}
+
+		ObjectData[index][oModel] = modelid;
+		ObjectData[index][oX] = x;
+		ObjectData[index][oY] = y;
+		ObjectData[index][oZ] = z;
+		ObjectData[index][oRX] = rx;
+		ObjectData[index][oRY] = ry;
+		ObjectData[index][oRZ] = rz;
+		ObjectData[index][oDD] = dd;
+
+		ObjectData[index][oAttachedVehicle] = -1;
+
+		if(sqlsave)
+		{
+	   		ObjectData[index][ousetext] = 0;
+	    	ObjectData[index][oFontFace] = 0;
+	    	ObjectData[index][oFontSize] = 0;
+	    	ObjectData[index][oFontBold] = 0;
+	    	ObjectData[index][oFontColor] = 0;
+	    	ObjectData[index][oBackColor] = 0;
+	    	ObjectData[index][oAlignment] = 0;
+	    	ObjectData[index][oTextFontSize] = 20;
+	    	ObjectData[index][oGroup] = 0;
+
+			format(ObjectData[index][oObjectText], MAX_TEXT_LENGTH, "%s", "None");
+
+			sqlite_InsertObject(index);
+		}
+
+		return index;
+	}
+	else print("Error: Tried to add too many dynamic objects");
+	return index;
+}
+
+DeleteDynamicObject(index, bool:sqlsave = true)
+{
+	OnDeleteGroup3DText(index);
+
+	new next;
+	if(Iter_Contains(Objects, index))
+	{
+		if(ObjectData[index][oAttachedVehicle] > -1) UpdateAttachedObjectRef(ObjectData[index][oAttachedVehicle], index);
+
+	    DestroyDynamicObject(ObjectData[index][oID]);
+	    DestroyDynamic3DTextLabel(ObjectData[index][oTextID]);
+
+	    Iter_SafeRemove(Objects, index, next);
+
+		ResetObjectIndex(index);
+
+		GroupUpdate(index);
+		
+		#if defined COMPILE_MANGLE
+			CA_DestroyObject(ObjectData[index][oCAID]);
+		#endif
+
+		if(sqlsave) sqlite_RemoveObject(index);
+
+		return next;
+	}
+	print("Error: Tried to delete a object which does not exist");
+	return -1;
+}
+
+CloneObject(index, grouptask=0)
+{
+	if(Iter_Contains(Objects, index))
+	{
+    	new cindex = AddDynamicObject(ObjectData[index][oModel], ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ], ObjectData[index][oRX], ObjectData[index][oRY], ObjectData[index][oRZ], .dd = ObjectData[index][oDD]);
+
+  		ObjectData[cindex][ousetext] = ObjectData[index][ousetext];
+	   	ObjectData[cindex][oFontFace] = ObjectData[index][oFontFace];
+	   	ObjectData[cindex][oFontSize] = ObjectData[index][oFontSize];
+	   	ObjectData[cindex][oFontBold] = ObjectData[index][oFontBold];
+	   	ObjectData[cindex][oFontColor] = ObjectData[index][oFontColor];
+	   	ObjectData[cindex][oBackColor] = ObjectData[index][oBackColor];
+	   	ObjectData[cindex][oAlignment] = ObjectData[index][oAlignment];
+	   	ObjectData[cindex][oTextFontSize] = ObjectData[index][oTextFontSize];
+	   	ObjectData[cindex][oGroup] = ObjectData[index][oGroup];
+
+		for(new i = 0; i < MAX_MATERIALS; i++)
+		{
+			ObjectData[cindex][oTexIndex][i] = ObjectData[index][oTexIndex][i];
+			ObjectData[cindex][oColorIndex][i] = ObjectData[index][oColorIndex][i];
+		}
+
+	   	format(ObjectData[cindex][oNote], 64, "%s", ObjectData[index][oNote]);
+		format(ObjectData[cindex][oObjectText], MAX_TEXT_LENGTH, "%s", ObjectData[index][oObjectText]);
+
+		// Update the materials
+		UpdateMaterial(cindex);
+
+		// Update object text
+		UpdateObjectText(cindex);
+
+		// Update 3D text
+		UpdateObject3DText(cindex, true);
+
+		// Save materials to material database
+		sqlite_SaveMaterialIndex(cindex);
+
+		// Save colors to material database
+		sqlite_SaveColorIndex(cindex);
+
+		// Save any text
+		sqlite_SaveAllObjectText(cindex);
+
+		if(grouptask > 0) SaveUndoInfo(cindex, UNDO_TYPE_CREATED, grouptask);
+		else SaveUndoInfo(cindex, UNDO_TYPE_CREATED);
+
+		return cindex;
+  	}
+	printf("ERROR: Tried to clone a non-existant object");
+	return -1;
+}
+
+
+// Deletes all map objects
+DeleteMapObjects(bool:sqlsave)
+{
+	if(sqlsave)
+	{
+		db_begin_transaction(EditMap);
+		foreach(new i : Objects)
+		{
+			i = DeleteDynamicObject(i, true);
+		}
+		db_end_transaction(EditMap);
+	}
+	else
+	{
+		foreach(new i : Objects)
+		{
+			i = DeleteDynamicObject(i, false);
+		}
+	}
+	
+	// Reset any player variables
+	foreach(new i : Player)
+	{
+		SetCurrObject(i, -1);
+	}
+	return 1;
+}
+
+// Add a remove building
+AddRemoveBuilding(model, Float:x, Float:y, Float:z, Float:range, savesql = true)
+{
+	for(new i = 0; i < MAX_REMOVE_BUILDING; i++)
+	{
+	    if(RemoveData[i][rModel] == 0)
+	    {
+	        RemoveData[i][rModel] = model;
+	        RemoveData[i][rX] = x;
+	        RemoveData[i][rY] = y;
+	        RemoveData[i][rZ] = z;
+	        RemoveData[i][rRange] = range;
+
+			if(savesql) sqlite_InsertRemoveBuilding(i);
+
+			foreach(new j : Player)
+			{
+				RemoveBuildingForPlayer(j, model, x, y, z, range);
+			}
+			return 1;
+	    }
+	}
+	return 0;
+}
+
+ClearRemoveBuildings()
+{
+	new count;
+	for(new i = 0; i < MAX_REMOVE_BUILDING; i++)
+	{
+		if(RemoveData[i][rModel] != 0)
+		{
+		    RemoveData[i][rModel] = 0;
+		    count++;
+		}
+	}
+	if(count)
+	{
+		SendClientMessageToAll(STEALTH_YELLOW, "Warning: The previous map had removed objects you will have to reconnect to see them");
+
+		ResetGTADeletedObjects();
+	}
+	return 1;
+}
+
+RemoveAllBuildings(playerid)
+{
+	for(new i = 0; i < MAX_REMOVE_BUILDING; i++)
+	{
+	    if(RemoveData[i][rModel] != 0)
+	    {
+			RemoveBuildingForPlayer(playerid, RemoveData[i][rModel], RemoveData[i][rX], RemoveData[i][rY], RemoveData[i][rZ], RemoveData[i][rRange]);
+	    }
+	}
+}
+
+// Is string a hexvalue
+IsHexValue(hstring[])
+{
+	if(strlen(hstring) < 10) return 0;
+	if(hstring[0] == 48 && hstring[1] == 120)
+	{
+		for(new i = 2; i < 10; i++)
+		{
+			if(hstring[i] == 48 || hstring[i] == 49 || hstring[i] == 50 || hstring[i] == 51 || hstring[i] == 52 ||
+				hstring[i] == 53 || hstring[i] == 54 || hstring[i] == 55 || hstring[i] == 56 || hstring[i] == 57 ||
+				hstring[i] == 65 || hstring[i] == 66 || hstring[i] == 67 || hstring[i] == 68 || hstring[i] == 69 ||
+				hstring[i] == 70) continue;
+			else return 0;
+		}
+	}
+	else return 0;
+	return 1;
+}
+
+// Get position in front of player also returns facing angle
+GetPosFaInFrontOfPlayer(playerid, Float:OffDist, &Float:Pxx, &Float:Pyy, &Float:Pzz, &Float:Fa, Float:rotoff = 0.0)
+{
+	if(!IsPlayerConnected(playerid)) return 0;
+	new
+	    Float:playerpos[3],
+		Float:FacingA;
+	GetPlayerPos(playerid, playerpos[0], playerpos[1], playerpos[2]);
+	GetPlayerFacingAngle(playerid, FacingA);
+	FacingA += rotoff;
+
+	Pxx = (playerpos[0] + OffDist * floatsin(-FacingA,degrees));
+	Pyy = (playerpos[1] + OffDist * floatcos(-FacingA,degrees));
+	Pzz = playerpos[2];
+	Fa = (FacingA > 180) ? (FacingA - 180) : (FacingA + 180);
+	return 1;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Support functions end///////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+/// Commands  //////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+
+// Echo text to player useful for keybind (Autohotkey)
+YCMD:echo(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Echo text in the chat. Useful for binds and external keybinds.");
+		return 1;
+	}
+
+	SendClientMessage(playerid, -1, arg);
+	return 1;
+}
+
+
+// Pick a map to load
+YCMD:loadmap(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Load a saved map.");
+		return 1;
+	}
+
+	// Map was already open
+	if(MapOpen)
+	{
+		// Confirm open map
+	    inline Confirm(cpid, cdialogid, cresponse, clistitem, string:ctext[])
+		{
+			#pragma unused clistitem, cdialogid, cpid, ctext
+
+			// Open a map
+		    if(cresponse)
+			{
+                // Update map settings
+                sqlite_UpdateSettings();
+                
+                // Close map
+				db_free_persistent(EditMap);
+
+				// Delete all map objects
+                DeleteMapObjects(false);
+
+				// Clear all removed buildings
+				ClearRemoveBuildings();
+                
+                // Reset settings
+                ResetSettings();
+
+				// Clean up vehicles
+				ClearVehicles();
+
+				// Clear copy buffer
+	            foreach(new i : Player)
+				{
+					ClearCopyBuffer(i);
+				}
+
+				// Load map
+				LoadMap(playerid);
+			}
+		}
+		Dialog_ShowCallback(playerid, using inline Confirm, DIALOG_STYLE_MSGBOX, "Texture Studio", "You have a map open are you sure you want to load another map?\n(Note: Your map is already saved)", "Ok", "Cancel");
+	}
+	else LoadMap(playerid);
+	return 1;
+}
+
+// Resets settings array
+ResetSettings()
+{
+    MapSetting[mVersion] = 0;
+    format(MapSetting[mAuthor], MAX_PLAYER_NAME, "Creator");
+    MapSetting[mLastEdit] = 0;
+    MapSetting[mInterior] = -1;
+    MapSetting[mVirtualWorld] = -1;
+    MapSetting[mSpawn][xPos] = 0.0;
+    MapSetting[mSpawn][yPos] = 0.0;
+    MapSetting[mSpawn][zPos] = 0.0;
+    return 1;
+}
+
+// Load map function call
+LoadMap(playerid)
+{
+	// Loop through saved maps
+
+	new dir:dHandle = dir_open("./scriptfiles/tstudio/SavedMaps/");
+	new item[40], type;
+	new line[1024];
+	new extension[3];
+	new fcount;
+
+	// Create a load list
+	while(dir_list(dHandle, item, type))
+	{
+   		if(type != FM_DIR)
+	    {
+			// We need to check extension
+			if(strlen(item) > 3)
+			{
+				format(extension, sizeof(extension), "%s%s", item[strlen(item) - 2],item[strlen(item) - 1]);
+
+				// File is apparently a db
+				if(!strcmp(extension, "db"))
+				{
+					format(line, sizeof(line), "%s\n%s", item, line);
+					fcount++;
+				}
+			}
+	    }
+	}
+
+	// Files were found
+	if(fcount > 0)
+	{
+        inline Select(spid, sdialogid, sresponse, slistitem, string:stext[])
+        {
+            #pragma unused slistitem, sdialogid, spid
+
+			// Player selected map to load
+            if(sresponse)
+            {
+				ClearAllUndoInfo();
+
+				format(MapName, sizeof(MapName), "tstudio/SavedMaps/%s", stext);
+
+				// Map is now open
+                EditMap = db_open_persistent(MapName);
+
+                // Load the maps settings
+                sqlite_LoadSettings();
+                
+				// Perform any version updates
+				sqlite_UpdateDB();
+
+				// Load the maps remove buildings
+			    new rmcount = sqlite_LoadRemoveBuildings();
+
+                // Load the maps objects
+                new ocount = sqlite_LoadMapObjects();
+
+				// Load any vehicles
+			    sqlite_LoadCars();
+
+				// Map is now open
+                MapOpen = true;
+
+				// Default editing mode
+   				EditingMode[playerid] = false;
+				SetEditMode(playerid,EDIT_MODE_NONE);
+
+				SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_GREEN, sprintf("You have loaded a map with %i objects and %i removed buildings.", ocount, rmcount));
+                
+                new DBResult:timeResult = db_query(EditMap, sprintf("SELECT datetime(%i, 'unixepoch', 'localtime')", MapSetting[mLastEdit]));
+                new timestr[64];
+                db_get_field(timeResult, 0, timestr, 64);
+                db_free_result(timeResult);
+                
+                if(MapSetting[mLastEdit])
+				{
+                    SendClientMessage(playerid, STEALTH_GREEN, sprintf("This map was created by %s.", MapSetting[mAuthor]));
+                    SendClientMessage(playerid, STEALTH_GREEN, sprintf("This map was last edited on %s.", timestr)); // by %s
+                }
+				
+                // Update the maps settings, so the last edit time updates
+                sqlite_UpdateSettings();
+            }
+        }
+        Dialog_ShowCallback(playerid, using inline Select, DIALOG_STYLE_LIST, "Texture Studio (Load Map)", line, "Ok", "Cancel");
+	}
+	// No files found
+ 	else
+	{
+	    inline CreateMap(cpid, cdialogid, cresponse, clistitem, string:ctext[])
+	    {
+            #pragma unused clistitem, cdialogid, cpid, ctext
+ 			if(cresponse) NewMap(playerid);
+	    }
+	    Dialog_ShowCallback(playerid, using inline CreateMap, DIALOG_STYLE_MSGBOX, "Texture Studio", "There are no maps to load create a new map?", "Ok", "Cancel");
+	}
+	return 1;
+}
+
+// Rename a map
+YCMD:renamemap(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Rename a saved map.");
+		return 1;
+	}
+
+	MapOpenCheck();
+
+	// Confirm rename map
+	inline Confirm(cpid, cdialogid, cresponse, clistitem, string:ctext[])
+	{
+		#pragma unused clistitem, cdialogid, cpid
+
+		// Rename a map
+		if(cresponse)
+		{
+			if(!isnull(ctext))
+			{
+				new newname[128];
+				format(newname, 128, "tstudio/SavedMaps/%s.db", ctext);
+				
+				if(!fexist(newname))
+				{
+					// Close the old map
+					db_free_persistent(EditMap);
+					
+					// Rename the old map
+					file_copy(sprintf("./scriptfiles/%s", MapName), sprintf("./scriptfiles/%s", newname));
+					file_delete(sprintf("./scriptfiles/%s", MapName));
+					MapName = newname;
+					
+					// Open the new map
+					EditMap = db_open_persistent(MapName);
+
+					SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+					SendClientMessage(playerid, STEALTH_GREEN, "You have renamed a map");
+				}
+				else
+				{
+					SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+					SendClientMessage(playerid, STEALTH_YELLOW, "A map with that name already exists");
+					Dialog_ShowCallback(playerid, using inline Confirm, DIALOG_STYLE_INPUT, "Texture Studio", "Enter a new name for the current map below.", "Ok", "Cancel");
+				}
+			}
+			else
+			{
+				SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_YELLOW, "You must give your map a filename");
+				Dialog_ShowCallback(playerid, using inline Confirm, DIALOG_STYLE_INPUT, "Texture Studio", "Enter a new name for the current map below.", "Ok", "Cancel");
+			}
+		}
+	}
+	Dialog_ShowCallback(playerid, using inline Confirm, DIALOG_STYLE_INPUT, "Texture Studio", "Enter a new name for the current map below.", "Ok", "Cancel");
+	return 1;
+}
+
+// Delete a map
+YCMD:deletemap(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Delete a saved map. (Use with caution!)");
+		return 1;
+	}
+
+	MapOpenCheck();
+
+	// Confirm delete map
+	inline Confirm(cpid, cdialogid, cresponse, clistitem, string:ctext[])
+	{
+		#pragma unused clistitem, cdialogid, cpid, ctext
+
+		// Delete a map
+		if(cresponse)
+		{
+			// Close and delete map
+			db_free_persistent(EditMap);
+			fremove(MapName);
+
+			ClearAllUndoInfo();
+
+			// Delete all map objects
+			DeleteMapObjects(false);
+
+			// Clear all removed buildings
+			ClearRemoveBuildings();
+
+			// Clean up vehicles
+			ClearVehicles();
+
+			// No map open
+			MapOpen = false;
+
+			// Reset player variables
+			foreach(new i : Player)
+			{
+				CancelEdit(i);
+				EditingMode[i] = false;
+				SetCurrObject(playerid, -1);
+				ClearCopyBuffer(i);
+			}
+
+			SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+			SendClientMessage(playerid, STEALTH_GREEN, "You have deleted a map");
+		}
+	}
+	Dialog_ShowCallback(playerid, using inline Confirm, DIALOG_STYLE_MSGBOX, "Texture Studio", "Are you sure you want to delete this map?\n(Note: Once deleted, there is no going back)", "Ok", "Cancel");
+	return 1;
+}
+
+// Create a new map
+YCMD:newmap(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Open a new map.");
+		return 1;
+	}
+
+	// Map was already open
+	if(MapOpen)
+	{
+		// Confirm open map
+	    inline Confirm(cpid, cdialogid, cresponse, clistitem, string:ctext[])
+		{
+			#pragma unused clistitem, cdialogid, cpid, ctext
+
+			// Open a map
+		    if(cresponse)
+			{
+				// Close map
+				db_free_persistent(EditMap);
+
+				ClearAllUndoInfo();
+
+				// Delete all map objects
+                DeleteMapObjects(false);
+
+				// Clear all removed buildings
+				ClearRemoveBuildings();
+
+				// Clean up vehicles
+				ClearVehicles();
+
+				// No map open
+                MapOpen = false;
+
+				// Load map
+				NewMap(playerid);
+
+				// Reset player variables
+				foreach(new i : Player)
+				{
+                    CancelEdit(i);
+					EditingMode[i] = false;
+                    SetCurrObject(playerid, -1);
+                    ClearCopyBuffer(i);
+				}
+			}
+		}
+		Dialog_ShowCallback(playerid, using inline Confirm, DIALOG_STYLE_MSGBOX, "Texture Studio", "You have a map open are you sure you want to create a new map?\n(Note: Your map is already saved)", "Ok", "Cancel");
+	}
+	else NewMap(playerid);
+	return 1;
+}
+
+// New map function call
+NewMap(playerid)
+{
+    inline CreateMap(cpid, cdialogid, cresponse, clistitem, string:ctext[])
+	{
+	    #pragma unused clistitem, cdialogid, cpid
+		if(cresponse)
+	    {
+			if(!isnull(ctext))
+			{
+				format(MapName, sizeof(MapName), "tstudio/SavedMaps/%s.db", ctext);
+
+				if(!fexist(MapName))
+				{
+					// Open the map for editing
+		            EditMap = db_open_persistent(MapName);
+
+					// Create new table for map
+		            sqlite_CreateNewMap();
+                    
+					// Map is now open
+		            MapOpen = true;
+
+                    // Set map default settings
+                    MapSetting[mVersion] = TS_VERSION;
+                    MapSetting[mLastEdit] = gettime();
+					GetPlayerName(playerid, MapSetting[mAuthor], MAX_PLAYER_NAME);
+                    MapSetting[mSpawn][xPos] = 0.0;
+                    MapSetting[mSpawn][yPos] = 0.0;
+                    MapSetting[mSpawn][zPos] = 0.0;
+                    MapSetting[mInterior] = -1;
+                    MapSetting[mVirtualWorld] = -1;
+    
+                    // Update the map settings, to set the last edit time and insert the player name
+                    sqlite_UpdateSettings();
+
+					SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+					SendClientMessage(playerid, STEALTH_GREEN, "You have created a new map");
+				}
+				else
+				{
+					SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+					SendClientMessage(playerid, STEALTH_YELLOW, "A map with that name already exists");
+					NewMap(playerid);
+				}
+			}
+			else
+			{
+				SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_YELLOW, "You must give your new map a filename");
+				NewMap(playerid);
+			}
+	    }
+	}
+	Dialog_ShowCallback(playerid, using inline CreateMap, DIALOG_STYLE_INPUT, "Texture Studio", "Enter a new map name", "Ok", "Cancel");
+}
+
+// Imports CreateObject() or CreateDynamic() raw code
+YCMD:importmap(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Import a map from a text file.");
+		return 1;
+	}
+
+	if(MapOpen)
+	{
+		// The map already has objects
+		if(Iter_Count(Objects))
+		{
+			// Ask to load more objects
+		    inline Import(ipid, idialogid, iresponse, ilistitem, string:itext[])
+			{
+				#pragma unused ilistitem, idialogid, ipid, itext
+				if(iresponse) ImportMap(playerid);
+			}
+	        Dialog_ShowCallback(playerid, using inline Import, DIALOG_STYLE_MSGBOX, "Texture Studio", "This map has objects are you import more objects?", "Ok", "Cancel");
+		}
+		// No map loaded import a new map
+		else ImportMap(playerid);
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "A map must be open before trying to import");
+	}
+	return 1;
+}
+
+// Import map function
+ImportMap(playerid)
+{
+	new dir:dHandle = dir_open("./scriptfiles/tstudio/ImportMaps/");
+	new templine[256];
+	new tempmap[256];
+	new item[40], itype;
+	new line[1024];
+	new fcount;
+	new templast, templastid[32];
+	new tmp[16];
+	new tmpobject[OBJECTINFO];
+	new tmpremove[REMOVEINFO];
+
+	// Create a load list
+	while(dir_list(dHandle, item, itype))
+	{
+   		if(itype != FM_DIR)
+	    {
+			format(line, sizeof(line), "%s\n%s", item, line);
+			fcount++;
+	    }
+	}
+
+	// Found import files
+	if(fcount > 0)
+	{
+        inline Select(spid, sdialogid, sresponse, slistitem, string:stext[])
+        {
+            #pragma unused slistitem, sdialogid, spid
+			// Selected a file
+            if(sresponse)
+            {
+				SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_GREEN, "Map importing has started, this make a while depending on map size");
+
+				format(tempmap, 64, "tstudio/ImportMaps/%s",stext);
+
+				new File:f;
+				new icount, rcount;
+				f = fopen(tempmap,io_read);
+
+				// Read lines and import data
+				db_begin_transaction(EditMap);
+				while(fread(f,templine,sizeof(templine),false))
+				{
+					strtrim(templine);
+				
+					new type;
+			  		if(strfind(templine, "CreateObject(", true) != -1) type = 1;
+			        else if(strfind(templine, "CreateDynamicObject(", true) != -1) type = 1;
+			        else if(strfind(templine, "RemoveBuildingForPlayer(", true) != -1) type = 2;
+			        else if(strfind(templine, "SetObjectMaterial(", true) != -1) type = 3;
+			        else if(strfind(templine, "SetDynamicObjectMaterial(", true) != -1) type = 3;
+			        else if(strfind(templine, "SetObjectMaterialText(", true) != -1) type = 4;
+			        else if(strfind(templine, "SetDynamicObjectMaterialText(", true) != -1) type = 4;
+					else continue;
+					
+					new assignment = strfind(templine, "="); 
+					if(assignment != -1) {
+						strmid(templastid, templine, 0, assignment);
+						strtrim(templastid);
+					}
+					
+					strmid(templine, templine, strfind(templine, "(") + 1, strfind(templine, ");"), sizeof(templine));
+
+					if(type == 1)
+					{
+						if(sscanf(templine, "p<,>iffffff", tmpobject[oModel], tmpobject[oX], tmpobject[oY], tmpobject[oZ], tmpobject[oRX], tmpobject[oRY], tmpobject[oRZ]))
+							continue;
+						
+						// Create the new object
+				        templast = AddDynamicObject(tmpobject[oModel], tmpobject[oX], tmpobject[oY], tmpobject[oZ], tmpobject[oRX], tmpobject[oRY], tmpobject[oRZ]);
+	                    icount++;
+					}
+					else if(type == 2)
+					{
+						if(sscanf(templine, "p<,>s[16]iffff", tmp, tmpremove[rModel], tmpremove[rX], tmpremove[rY], tmpremove[rZ], tmpremove[rRange]))
+							continue;
+
+						// Delete building
+						AddRemoveBuilding(tmpremove[rModel], tmpremove[rX], tmpremove[rY], tmpremove[rZ], tmpremove[rRange], true);
+
+					    rcount++;
+					}
+					else if(type == 3)
+					{
+						strreplace(templine, "\"", "");//"
+						
+						new tempindex, tempmodel, temptxd[32], temptexture[32], tempcolor;
+						if(sscanf(templine, "p<,>s[16]iis[32]s[32]h", tmp, tempindex, tempmodel, temptxd, temptexture, tempcolor))
+							continue;
+						
+						if(strcmp(tmp, templastid)) // Stuff before '=' doesn't equal stuff in first param
+							continue;
+						
+						ObjectData[templast][oColorIndex][tempindex] = tempcolor;
+						for(new i = 0; i < sizeof(ObjectTextures); i++)
+						{
+							if(!strcmp(ObjectTextures[i][TextureName], temptexture))
+							{
+								ObjectData[templast][oTexIndex][tempindex] = i;
+								break;
+							}
+						}
+                        
+                        sqlite_SaveMaterialIndex(templast);
+                        sqlite_SaveColorIndex(templast);
+			
+                        UpdateMaterial(templast);
+					}
+					else if(type == 4)
+					{
+						//SetObjectMaterialText(tmp, text[], index, mat_size, fontface[], fontsize, bold, color, backcolor, alignment)
+                        
+                        // start by extracting text[], removing it from the parameters
+                        // then sscanf all other params separate
+					}
+                    
+                    UpdateObject3DText(templast, true);
+				}
+				db_end_transaction(EditMap);
+
+				format(templine, sizeof(templine), "%i objects were imported, %i removed buildings were imported", icount, rcount);
+				SendClientMessage(playerid, STEALTH_GREEN, templine);
+
+				// Were done importing
+				fclose(f);
+            }
+		}
+        Dialog_ShowCallback(playerid, using inline Select, DIALOG_STYLE_LIST, "Texture Studio (Import Map)", line, "Ok", "Cancel");
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "There are no maps to import");
+	}
+	return 1;
+}
+
+
+YCMD:export(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Export current map.");
+		return 1;
+	}
+
+	MapOpenCheck();
+
+	inline Export(epid, edialogid, eresponse, elistitem, string:etext[])
+	{
+        #pragma unused elistitem, edialogid, epid, etext
+		if(eresponse)
+		{
+		    switch(elistitem)
+		    {
+		        case 0: BroadcastCommand(playerid, "/exportmap");
+				case 1: BroadcastCommand(playerid, "/exportallmap");
+		        case 2: BroadcastCommand(playerid, "/avexport");
+		        case 3: BroadcastCommand(playerid, "/avexportall");
+		    }
+		}
+	}
+
+	Dialog_ShowCallback(playerid, using inline Export, DIALOG_STYLE_LIST, "Texture Studio (Export Mode)", "Export Map\nExport All Map To Filerscript\nExport Current Car\nExport All Cars", "Ok", "Cancel");
+	return 1;
+}
+
+
+// Export map to create object
+YCMD:exportmap(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Export current map to a text file.");
+		return 1;
+	}
+
+	MapOpenCheck();
+
+	// Ask for a map name
+	inline ExportMap(epid, edialogid, eresponse, elistitem, string:etext[])
+	{
+	    #pragma unused elistitem, edialogid, epid
+	    if(eresponse)
+	    {
+			// Was a map name supplied ?
+			if(!isnull(etext))
+			{
+				// Get the draw distance
+	            inline DrawDist(dpid, ddialogid, dresponse, dlistitem, string:dtext[])
+	            {
+	                #pragma unused dlistitem, ddialogid, dpid
+					new Float:dist;
+
+					// Set the drawdistance
+					if(dresponse)
+					{
+                        if(sscanf(dtext, "f", dist)) dist = 300.0;
+                        /*else foreach(new i : Objects)
+                        {
+                            if(ObjectData[i][oDD] == 300.0) // Default oDD
+                                ObjectData[i][oDD] = dist;
+                        }*/
+					}
+					else dist = 300.0;
+                    
+
+					new exportmap[256];
+
+					// Check map name length
+					if(strlen(etext) >= 20)
+					{
+						SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+						SendClientMessage(playerid, STEALTH_YELLOW, "Choose a shorter map name to export to...");
+						return 1;
+					}
+
+					// Format the output name
+					format(exportmap, sizeof(exportmap), "tstudio/ExportMaps/%s.txt", etext);
+
+					// Map exists ask to remove
+				    if(fexist(exportmap))
+					{
+						inline RemoveMap(rpid, rdialogid, rresponse, rlistitem, string:rtext[])
+						{
+					        #pragma unused rlistitem, rdialogid, rpid, rtext
+
+							// Remove map and export
+					        if(rresponse)
+					        {
+					            fremove(exportmap);
+					            MapExport(playerid, exportmap, dist);
+					        }
+						}
+						Dialog_ShowCallback(playerid, using inline RemoveMap, DIALOG_STYLE_MSGBOX, "Texture Studio (Export Map)", "A export exists with this name replace?", "Ok", "Cancel");
+					}
+					// We can start the export
+					else MapExport(playerid, exportmap, dist);
+				}
+            	Dialog_ShowCallback(playerid, using inline DrawDist, DIALOG_STYLE_INPUT, "Texture Studio (Map Export)", "Enter the draw distance for objects\n(Note: Default draw distance is 300.0)", "Ok", "Cancel");
+			}
+			else
+			{
+				SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_YELLOW, "You can't export a map with no name");
+				Dialog_ShowCallback(playerid, using inline ExportMap, DIALOG_STYLE_INPUT, "Texture Studio (Map Export)", "Enter a export map name", "Ok", "Cancel");
+			}
+		}
+	}
+	Dialog_ShowCallback(playerid, using inline ExportMap, DIALOG_STYLE_INPUT, "Texture Studio (Map Export)", "Enter a export map name", "Ok", "Cancel");
+	return 1;
+}
+
+
+// Start exporting
+MapExport(playerid, mapname[], Float:drawdist)
+{
+	new exportmap[256];
+
+	format(exportmap, sizeof(exportmap), "%s", mapname);
+
+    inline ExportType(epid, edialogid, eresponse, elistitem, string:etext[])
+    {
+		#pragma unused edialogid, epid, etext
+		if(eresponse)
+		{
+			new mobjects;
+			new templine[256];
+			new File:f;
+			f = fopen(exportmap,io_write);
+
+			fwrite(f,"//Map Exported with Texture Studio By: [uL]Pottus////////////////////////////////////////////////////////////////\r\n");
+			fwrite(f,"//////////////////////////////////////////////and Crayder////////////////////////////////////////////////////////\r\n");
+			fwrite(f,"/////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n");
+
+			fwrite(f,"\r\n//Map Information////////////////////////////////////////////////////////////////////////////////////////////////\r\n");
+            
+            new DBResult:timeResult = db_query(EditMap, sprintf("SELECT datetime(%i, 'unixepoch', 'localtime')", gettime()));
+            new timestr[64];
+            db_get_field(timeResult, 0, timestr, 64);
+            db_free_result(timeResult);
+            
+            fwrite(f,"/*\r\n");
+            fwrite(f,sprintf("\tExported on \"%s\" by \"%s\"\r\n", timestr, ReturnPlayerName(playerid)));
+            fwrite(f,sprintf("\tCreated by \"%s\"\r\n", MapSetting[mAuthor]));
+            if(MapSetting[mSpawn][xPos])
+                fwrite(f,sprintf("\tSpawn Position: %f, %f, %f\r\n", MapSetting[mSpawn][xPos], MapSetting[mSpawn][yPos], MapSetting[mSpawn][zPos]));
+            fwrite(f,"*/");
+			
+            fwrite(f,"\r\n/////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n");
+
+			if(RemoveData[0][rModel] != 0) fwrite(f,"\r\n//Remove Buildings///////////////////////////////////////////////////////////////////////////////////////////////\r\n");
+
+			for(new i = 0; i < MAX_REMOVE_BUILDING; i++)
+			{
+			    if(RemoveData[i][rModel] != 0)
+			    {
+					format(templine, sizeof(templine), "RemoveBuildingForPlayer(playerid, %i, %.3f, %.3f, %.3f, %.3f);\r\n", RemoveData[i][rModel], RemoveData[i][rX], RemoveData[i][rY], RemoveData[i][rZ], RemoveData[i][rRange]);
+                    fwrite(f,templine);
+				}
+			}
+
+			fwrite(f,"\r\n//Objects////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n");
+
+			// Temp object for setting materials
+			format(templine,sizeof(templine),"new tmpobjid;\r\n");
+			fwrite(f,templine);
+
+			// Write all objects with materials first
+			foreach(new i : Objects)
+			{
+			    if(ObjectData[i][oAttachedVehicle] > -1) continue;
+
+				new bool:writeobject, Float:odd = (ObjectData[i][oDD] != 300.0 ? ObjectData[i][oDD] : drawdist);
+
+				// Does the object have materials?
+		        for(new j = 0; j < MAX_MATERIALS; j++)
+		        {
+		            if(ObjectData[i][oTexIndex][j] != 0 || ObjectData[i][oColorIndex][j] != 0 || ObjectData[i][ousetext])
+		            {
+						writeobject = true;
+						break;
+					}
+				}
+
+				// Object had materials we will write them to the export file
+				if(writeobject)
+				{
+					mobjects++;
+
+					// Write the create object line
+					if(elistitem == 0)
+					{
+				        format(templine,sizeof(templine),"tmpobjid = CreateObject(%i, %f, %f, %f, %f, %f, %f, %.2f); %s\r\n",ObjectData[i][oModel],ObjectData[i][oX],ObjectData[i][oY],ObjectData[i][oZ],ObjectData[i][oRX],ObjectData[i][oRY],ObjectData[i][oRZ],odd,
+                            strlen(ObjectData[i][oNote]) ? sprintf("// %s", ObjectData[i][oNote]) : (""));
+				        fwrite(f,templine);
+					}
+
+					// Write the create dynamic object line
+					else if(elistitem == 1)
+					{
+						format(templine,sizeof(templine),"tmpobjid = CreateDynamicObjectEx(%i, %f, %f, %f, %f, %f, %f, %.2f, %.2f); %s\r\n",ObjectData[i][oModel],ObjectData[i][oX],ObjectData[i][oY],ObjectData[i][oZ],ObjectData[i][oRX],ObjectData[i][oRY],ObjectData[i][oRZ],odd,odd,
+                            strlen(ObjectData[i][oNote]) ? sprintf("// %s", ObjectData[i][oNote]) : (""));
+				        fwrite(f,templine);
+					}
+					else if(elistitem  == 2)
+					{
+						format(templine,sizeof(templine),"tmpobjid = CreateDynamicObject(%i, %f, %f, %f, %f, %f, %f, -1, -1, -1, %.2f, %.2f); %s\r\n",ObjectData[i][oModel],ObjectData[i][oX],ObjectData[i][oY],ObjectData[i][oZ],ObjectData[i][oRX],ObjectData[i][oRY],ObjectData[i][oRZ],odd,odd,
+                            strlen(ObjectData[i][oNote]) ? sprintf("// %s", ObjectData[i][oNote]) : (""));
+				        fwrite(f,templine);
+					}
+
+					// Write all materials and colors
+		  			for(new j = 0; j < MAX_MATERIALS; j++)
+		        	{
+						// Does object have a texture set?
+			            if(ObjectData[i][oTexIndex][j] != 0)
+			            {
+							if(elistitem == 0)
+							{
+								format(templine,sizeof(templine),"SetObjectMaterial(tmpobjid, %i, %i, %c%s%c, %c%s%c, 0x%X);\r\n", j, GetTModel(ObjectData[i][oTexIndex][j]), 34, GetTXDName(ObjectData[i][oTexIndex][j]), 34, 34,GetTextureName(ObjectData[i][oTexIndex][j]), 34, ObjectData[i][oColorIndex][j]);
+								fwrite(f,templine);
+							}
+							else if(elistitem == 1 || elistitem == 2)
+							{
+								format(templine,sizeof(templine),"SetDynamicObjectMaterial(tmpobjid, %i, %i, %c%s%c, %c%s%c, 0x%X);\r\n", j, GetTModel(ObjectData[i][oTexIndex][j]), 34, GetTXDName(ObjectData[i][oTexIndex][j]), 34, 34,GetTextureName(ObjectData[i][oTexIndex][j]), 34, ObjectData[i][oColorIndex][j]);
+								fwrite(f,templine);
+							}
+			            }
+			            // No texture how about a color?
+			            else if(ObjectData[i][oColorIndex][j] != 0)
+			            {
+							if(elistitem == 0)
+							{
+								format(templine,sizeof(templine),"SetObjectMaterial(tmpobjid, %i, -1, %c%s%c, %c%s%c, 0x%X);\r\n", j, 34, "none", 34, 34,"none", 34, ObjectData[i][oColorIndex][j]);
+								fwrite(f,templine);
+							}
+							else if(elistitem == 1 || elistitem == 2)
+							{
+								format(templine,sizeof(templine),"SetDynamicObjectMaterial(tmpobjid, %i, -1, %c%s%c, %c%s%c, 0x%X);\r\n", j, 34, "none", 34, 34,"none", 34, ObjectData[i][oColorIndex][j]);
+								fwrite(f,templine);
+							}
+						}
+					}
+
+					// Write any text
+					if(ObjectData[i][ousetext])
+					{
+						if(elistitem == 0)
+						{
+							format(templine,sizeof(templine),"SetObjectMaterialText(tmpobjid, %c%s%c, 0, %i, %c%s%c, %i, %i, 0x%X, 0x%X, %i);\r\n",
+								34, ObjectData[i][oObjectText], 34,
+								FontSizes[ObjectData[i][oFontSize]],
+								34, FontNames[ObjectData[i][oFontFace]], 34,
+								ObjectData[i][oTextFontSize],
+								ObjectData[i][oFontBold],
+								ObjectData[i][oFontColor],
+								ObjectData[i][oBackColor],
+								ObjectData[i][oAlignment]
+							);
+						}
+						else if(elistitem == 1 || elistitem == 2)
+						{
+							format(templine,sizeof(templine),"SetDynamicObjectMaterialText(tmpobjid, 0, %c%s%c, %i, %c%s%c, %i, %i, 0x%X, 0x%X, %i);\r\n",
+								34, ObjectData[i][oObjectText], 34,
+								FontSizes[ObjectData[i][oFontSize]],
+								34, FontNames[ObjectData[i][oFontFace]], 34,
+								ObjectData[i][oTextFontSize],
+								ObjectData[i][oFontBold],
+								ObjectData[i][oFontColor],
+								ObjectData[i][oBackColor],
+								ObjectData[i][oAlignment]
+							);
+						}
+						fwrite(f,templine);
+					}
+				}
+			}
+
+			if(mobjects)
+			{
+				fwrite(f,"/////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n");
+				fwrite(f,"/////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n");
+				fwrite(f,"/////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n");
+			}
+
+			// We need to write all of the objects that didn't have materials set now
+			foreach(new i : Objects)
+			{
+			    if(ObjectData[i][oAttachedVehicle] > -1) continue;
+
+				new bool:writeobject = true, Float:odd = (ObjectData[i][oDD] != 300.0 ? ObjectData[i][oDD] : drawdist);
+
+				// Does the object have materials?
+		        for(new j = 0; j < MAX_MATERIALS; j++)
+		        {
+					// This object has already been written
+		            if(ObjectData[i][oTexIndex][j] != 0 || ObjectData[i][oColorIndex][j] != 0 || ObjectData[i][ousetext])
+		            {
+						writeobject = false;
+						break;
+					}
+				}
+
+				// Object has not been exported yet export
+				if(writeobject)
+				{
+					if(elistitem == 0)
+					{
+				        format(templine,sizeof(templine),"tmpobjid = CreateObject(%i, %f, %f, %f, %f, %f, %f, %.2f); %s\r\n",ObjectData[i][oModel],ObjectData[i][oX],ObjectData[i][oY],ObjectData[i][oZ],ObjectData[i][oRX],ObjectData[i][oRY],ObjectData[i][oRZ],odd,
+				            strlen(ObjectData[i][oNote]) ? sprintf("// %s", ObjectData[i][oNote]) : (""));
+				        fwrite(f,templine);
+					}
+					else if(elistitem == 1)
+					{
+				        format(templine,sizeof(templine),"tmpobjid = CreateDynamicObjectEx(%i, %f, %f, %f, %f, %f, %f, %.2f, %.2f); %s\r\n",ObjectData[i][oModel],ObjectData[i][oX],ObjectData[i][oY],ObjectData[i][oZ],ObjectData[i][oRX],ObjectData[i][oRY],ObjectData[i][oRZ],odd,odd,
+				            strlen(ObjectData[i][oNote]) ? sprintf("// %s", ObjectData[i][oNote]) : (""));
+				        fwrite(f,templine);
+					}
+					else if(elistitem == 2)
+					{
+						format(templine,sizeof(templine),"tmpobjid = CreateDynamicObject(%i, %f, %f, %f, %f, %f, %f, -1, -1, -1, %.2f, %.2f); %s\r\n",ObjectData[i][oModel],ObjectData[i][oX],ObjectData[i][oY],ObjectData[i][oZ],ObjectData[i][oRX],ObjectData[i][oRY],ObjectData[i][oRZ],odd,odd,
+				            strlen(ObjectData[i][oNote]) ? sprintf("// %s", ObjectData[i][oNote]) : (""));
+				        fwrite(f,templine);
+					}
+				}
+			}
+
+			fclose(f);
+			SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+			format(templine, sizeof(templine), "Map has been exported to %s", exportmap);
+			SendClientMessage(playerid, STEALTH_GREEN, templine);
+
+		}
+	}
+    Dialog_ShowCallback(playerid, using inline ExportType, DIALOG_STYLE_LIST, "Texture Studio (Export Map)", "Type 1 - CreateObject()\nType 2 - CreateDynamicObjectEx()\nType 3 - CreateDynamicObject", "Ok", "Cancel");
+
+	return 1;
+}
+
+// Export map to create object
+YCMD:exportallmap(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Export current map to a filterscript.");
+		return 1;
+	}
+
+	MapOpenCheck();
+
+	// Ask for a map name
+	inline ExportMap(epid, edialogid, eresponse, elistitem, string:etext[])
+	{
+	    #pragma unused elistitem, edialogid, epid
+	    if(eresponse)
+	    {
+			// Was a map name supplied ?
+			if(!isnull(etext))
+			{
+				// Get the draw distance
+	            inline DrawDist(dpid, ddialogid, dresponse, dlistitem, string:dtext[])
+	            {
+	                #pragma unused dlistitem, ddialogid, dpid
+					new Float:dist;
+
+					// Set the drawdistance
+					if(dresponse)
+					{
+                        if(sscanf(dtext, "f", dist)) dist = 300.0;
+					}
+					else dist = 300.0;
+
+					new exportmap[256];
+
+					// Check map name length
+					if(strlen(etext) >= 20)
+					{
+						SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+						SendClientMessage(playerid, STEALTH_YELLOW, "Choose a shorter map name to export to...");
+						return 1;
+					}
+
+					// Format the output name
+					format(exportmap, sizeof(exportmap), "tstudio/ExportMaps/%s.pwn", etext);
+
+					// Map exists ask to remove
+				    if(fexist(exportmap))
+					{
+						inline RemoveMap(rpid, rdialogid, rresponse, rlistitem, string:rtext[])
+						{
+					        #pragma unused rlistitem, rdialogid, rpid, rtext
+
+							// Remove map and export
+					        if(rresponse)
+					        {
+					            fremove(exportmap);
+					            MapExportAll(playerid, exportmap, dist);
+					        }
+						}
+						Dialog_ShowCallback(playerid, using inline RemoveMap, DIALOG_STYLE_MSGBOX, "Texture Studio (Export Map)", "A export exists with this name replace?", "Ok", "Cancel");
+					}
+					// We can start the export
+					else MapExportAll(playerid, exportmap, dist);
+				}
+            	Dialog_ShowCallback(playerid, using inline DrawDist, DIALOG_STYLE_INPUT, "Texture Studio (Map Export)", "Enter the draw distance for objects\n(Note: Default draw distance is 300.0)", "Ok", "Cancel");
+			}
+			else
+			{
+				SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_YELLOW, "You can't export a map with no name");
+				Dialog_ShowCallback(playerid, using inline ExportMap, DIALOG_STYLE_INPUT, "Texture Studio (Map All Export)", "Enter a export map name", "Ok", "Cancel");
+			}
+		}
+	}
+	Dialog_ShowCallback(playerid, using inline ExportMap, DIALOG_STYLE_INPUT, "Texture Studio (Map All Export)", "Enter a export map name", "Ok", "Cancel");
+	return 1;
+}
+
+static MapExportAll(playerid, name[], Float:drawdist)
+{
+	new File:f = fopen(name, io_write);
+	new templine[256];
+	new mobjects;
+
+	// Header
+	fwrite(f,"//Map Filterscript Exported with Texture Studio By: [uL]Pottus///////////////////////////////////////////////////\r\n");
+	fwrite(f,"///////////////////////////////////////////////////////////and Crayder///////////////////////////////////////////\r\n");
+	fwrite(f,"/////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n");
+
+    fwrite(f,"\r\n//Map Information////////////////////////////////////////////////////////////////////////////////////////////////\r\n");
+    
+    new DBResult:timeResult = db_query(EditMap, sprintf("SELECT datetime(%i, 'unixepoch', 'localtime')", gettime()));
+    new timestr[64];
+    db_get_field(timeResult, 0, timestr, 64);
+    db_free_result(timeResult);
+    fwrite(f,"/*\r\n");
+    fwrite(f,sprintf("\tExported on \"%s\" by \"%s\"\r\n", timestr, ReturnPlayerName(playerid)));
+    fwrite(f,sprintf("\tCreated by \"%s\"\r\n", MapSetting[mAuthor]));
+    if(MapSetting[mSpawn][xPos])
+        fwrite(f,sprintf("\tSpawn Position: %f, %f, %f\r\n", MapSetting[mSpawn][xPos], MapSetting[mSpawn][yPos], MapSetting[mSpawn][zPos]));
+    fwrite(f,"*/");
+    
+    fwrite(f,"\r\n/////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n");
+    
+	// Includes
+	fwrite(f, "#include <a_samp>\r\n");
+	fwrite(f, "#include <streamer>\r\n\n");
+
+	new CarCount = Iter_Count(Cars);
+	new CurrCar;
+
+	// Car id
+	for(new i = 0; i < CarCount; i++)
+	{
+		format(templine, sizeof(templine), "new carvid_%i;\r\n", i);
+		fwrite(f, templine);
+	}
+
+	fwrite(f, "\n");
+
+	// Init script
+    fwrite(f, "public OnFilterScriptInit()\r\n");
+    fwrite(f, "{ \r\n");
+    fwrite(f,"    new tmpobjid;\r\n\n");
+
+	foreach(new i : Cars)
+	{
+		format(templine, sizeof(templine), "    carvid_%i = CreateVehicle(%i,%.3f,%.3f,%.3f,%.3f,%i,%i,-1);\r\n",
+	        CurrCar++, CarData[i][CarModel], CarData[i][CarSpawnX], CarData[i][CarSpawnY], CarData[i][CarSpawnZ], CarData[i][CarSpawnFA], CarData[i][CarColor1], CarData[i][CarColor2]
+		);
+        fwrite(f, templine);
+	}
+
+	CurrCar = 0;
+
+    fwrite(f, "\n");
+
+	foreach(new i : Cars)
+	{
+		// Mod components
+		for(new j = 0; j < MAX_CAR_COMPONENTS; j++)
+		{
+		    if(CarData[i][CarComponents][j] > 0)
+		    {
+		        format(templine, sizeof(templine), "    AddVehicleComponent(carvid_%i, %i);\r\n", CurrCar, CarData[i][CarComponents][j]);
+				fwrite(f, templine);
+		    }
+		}
+		CurrCar++;
+	}
+
+    CurrCar = 0;
+
+    fwrite(f, "\n");
+
+	foreach(new i : Cars)
+	{
+		// Paintjob
+		if(CarData[i][CarPaintJob] < 3)
+		{
+	        format(templine, sizeof(templine), "    ChangeVehiclePaintjob(carvid_%i, %i);\r\n", CurrCar, CarData[i][CarPaintJob]);
+			fwrite(f, templine);
+		}
+		CurrCar++;
+	}
+
+    CurrCar = 0;
+
+    fwrite(f, "\n");
+
+	foreach(new i : Cars)
+	{
+		// Objects
+	    for(new j = 0; j < MAX_CAR_OBJECTS; j++)
+	    {
+			// No object
+	        if(CarData[i][CarObjectRef][j] == -1) continue;
+	        new oindex = CarData[i][CarObjectRef][j];
+
+			// Create object
+			format(templine,sizeof(templine),"    tmpobjid = CreateDynamicObject(%i,0.0,0.0,-1000.0,0.0,0.0,0.0,-1,-1,-1,300.0,300.0); %s\r\n",ObjectData[oindex][oModel],
+	            strlen(ObjectData[i][oNote]) ? sprintf("// %s", ObjectData[i][oNote]) : (""));
+            fwrite(f,templine);
+
+
+			// Write all materials and colors
+			for(new k = 0; k < MAX_MATERIALS; k++)
+	    	{
+				// Does object have a texture set?
+	            if(ObjectData[oindex][oTexIndex][k] != 0)
+	            {
+					format(templine,sizeof(templine),"    SetDynamicObjectMaterial(tmpobjid, %i, %i, %c%s%c, %c%s%c, 0x%X);\r\n",
+						k, GetTModel(ObjectData[oindex][oTexIndex][k]), 34, GetTXDName(ObjectData[oindex][oTexIndex][k]), 34, 34,GetTextureName(ObjectData[oindex][oTexIndex][k]), 34, ObjectData[oindex][oColorIndex][k]
+					);
+
+					fwrite(f,templine);
+	            }
+
+	            // No texture how about a color?
+	            else if(ObjectData[oindex][oColorIndex][k] != 0)
+	            {
+					format(templine,sizeof(templine),"    SetDynamicObjectMaterial(tmpobjid, %i, -1, %c%s%c, %c%s%c, 0x%X);\r\n", j, 34, "none", 34, 34,"none", 34, ObjectData[oindex][oColorIndex][k]);
+					fwrite(f,templine);
+				}
+			}
+
+			// Write any text
+			if(ObjectData[oindex][ousetext])
+			{
+				format(templine,sizeof(templine),"    SetDynamicObjectMaterialText(tmpobjid, 0, %c%s%c, %i, %c%s%c, %i, %i, 0x%X, 0x%X, %i);\r\n",
+					34, ObjectData[oindex][oObjectText], 34,
+					FontSizes[ObjectData[oindex][oFontSize]],
+					34, FontNames[ObjectData[oindex][oFontFace]], 34,
+					ObjectData[oindex][oTextFontSize],
+					ObjectData[oindex][oFontBold],
+					ObjectData[oindex][oFontColor],
+					ObjectData[oindex][oBackColor],
+					ObjectData[oindex][oAlignment]
+				);
+				fwrite(f,templine);
+			}
+
+			// Attach object to vehicle
+			format(templine, sizeof(templine), "    AttachDynamicObjectToVehicle(tmpobjid, carvid_%i, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f);\r\n",
+				CurrCar, CarData[i][COX], CarData[i][COY][j], CarData[i][COZ][j], CarData[i][CORX][j], CarData[i][CORY][j], CarData[i][CORZ][j]
+			);
+
+			fwrite(f,templine);
+		}
+		CurrCar++;
+
+		fwrite(f, "\n");
+	}
+
+	// Write Objects
+
+	// Write all objects with materials first
+	foreach(new i : Objects)
+	{
+	    if(ObjectData[i][oAttachedVehicle] > -1) continue;
+
+        new bool:writeobject, Float:odd = (ObjectData[i][oDD] != 300.0 ? ObjectData[i][oDD] : drawdist);
+
+		// Does the object have materials?
+        for(new j = 0; j < MAX_MATERIALS; j++)
+        {
+            if(ObjectData[i][oTexIndex][j] != 0 || ObjectData[i][oColorIndex][j] != 0 || ObjectData[i][ousetext])
+            {
+				writeobject = true;
+				break;
+			}
+		}
+
+		// Object had materials we will write them to the export file
+		if(writeobject)
+		{
+			mobjects++;
+
+			format(templine,sizeof(templine),"    tmpobjid = CreateDynamicObject(%i, %f, %f, %f, %f, %f, %f, -1, -1, -1, %.2f, %.2f); %s\r\n",ObjectData[i][oModel],ObjectData[i][oX],ObjectData[i][oY],ObjectData[i][oZ],ObjectData[i][oRX],ObjectData[i][oRY],ObjectData[i][oRZ],odd,odd,
+	            strlen(ObjectData[i][oNote]) ? sprintf("// %s", ObjectData[i][oNote]) : (""));
+			fwrite(f,templine);
+
+			// Write all materials and colors
+  			for(new j = 0; j < MAX_MATERIALS; j++)
+        	{
+				// Does object have a texture set?
+	            if(ObjectData[i][oTexIndex][j] != 0)
+	            {
+					format(templine,sizeof(templine),"    SetDynamicObjectMaterial(tmpobjid, %i, %i, %c%s%c, %c%s%c, 0x%X);\r\n", j, GetTModel(ObjectData[i][oTexIndex][j]), 34, GetTXDName(ObjectData[i][oTexIndex][j]), 34, 34,GetTextureName(ObjectData[i][oTexIndex][j]), 34, ObjectData[i][oColorIndex][j]);
+					fwrite(f,templine);
+	            }
+	            // No texture how about a color?
+	            else if(ObjectData[i][oColorIndex][j] != 0)
+	            {
+					format(templine,sizeof(templine),"    SetDynamicObjectMaterial(tmpobjid, %i, -1, %c%s%c, %c%s%c, 0x%X);\r\n", j, 34, "none", 34, 34,"none", 34, ObjectData[i][oColorIndex][j]);
+					fwrite(f,templine);
+				}
+			}
+
+			// Write any text
+			if(ObjectData[i][ousetext])
+			{
+				format(templine,sizeof(templine),"    SetDynamicObjectMaterialText(tmpobjid, 0, %c%s%c, %i, %c%s%c, %i, %i, 0x%X, 0x%X, %i);\r\n",
+					34, ObjectData[i][oObjectText], 34,
+					FontSizes[ObjectData[i][oFontSize]],
+					34, FontNames[ObjectData[i][oFontFace]], 34,
+					ObjectData[i][oTextFontSize],
+					ObjectData[i][oFontBold],
+					ObjectData[i][oFontColor],
+					ObjectData[i][oBackColor],
+					ObjectData[i][oAlignment]
+				);
+				fwrite(f,templine);
+			}
+		}
+	}
+
+	// We need to write all of the objects that didn't have materials set now
+	foreach(new i : Objects)
+	{
+	    if(ObjectData[i][oAttachedVehicle] > -1) continue;
+
+        new bool:writeobject = true, Float:odd = (ObjectData[i][oDD] != 300.0 ? ObjectData[i][oDD] : drawdist);
+
+		// Does the object have materials?
+        for(new j = 0; j < MAX_MATERIALS; j++)
+        {
+			// This object has already been written
+            if(ObjectData[i][oTexIndex][j] != 0 || ObjectData[i][oColorIndex][j] != 0 || ObjectData[i][ousetext])
+            {
+				writeobject = false;
+				break;
+			}
+		}
+
+		// Object has not been exported yet export
+		if(writeobject)
+		{
+			format(templine,sizeof(templine),"    tmpobjid = CreateDynamicObject(%i, %f, %f, %f, %f, %f, %f, -1, -1, -1, %.2f, %.2f); %s\r\n",ObjectData[i][oModel],ObjectData[i][oX],ObjectData[i][oY],ObjectData[i][oZ],ObjectData[i][oRX],ObjectData[i][oRY],ObjectData[i][oRZ],odd,odd,
+	            strlen(ObjectData[i][oNote]) ? sprintf("// %s", ObjectData[i][oNote]) : (""));
+			fwrite(f,templine);
+		}
+	}
+
+	fwrite(f, "\r\n");
+
+	fwrite(f, "    for(new i = 0; i < MAX_PLAYERS; i++)\r\n");
+    fwrite(f, "    { \r\n");
+    fwrite(f, "        if(!IsPlayerConnected(i)) continue; \r\n");
+    fwrite(f, "        OnPlayerConnect(i); \r\n");
+	fwrite(f, "    } \r\n\n");
+	fwrite(f, "    return 1; \r\n\n");
+    fwrite(f, "} \r\n\n");
+
+	CurrCar = 0;
+
+	// Exit script
+    fwrite(f, "public OnFilterScriptExit()\r\n");
+    fwrite(f, "{ \r\n");
+
+	foreach(new i : Cars)
+	{
+		format(templine, sizeof(templine), "    DestroyVehicle(carvid_%i);\r\n", CurrCar);
+    	fwrite(f, templine);
+        CurrCar++;
+	}
+
+    fwrite(f, "} \r\n\n");
+
+	// Remove building script
+    fwrite(f, "public OnPlayerConnect(playerid)\r\n");
+    fwrite(f, "{ \r\n");
+
+	for(new i = 0; i < MAX_REMOVE_BUILDING; i++)
+	{
+	    if(RemoveData[i][rModel] != 0)
+	    {
+			format(templine, sizeof(templine), "	RemoveBuildingForPlayer(playerid, %i, %.3f, %.3f, %.3f, %.3f);\r\n", RemoveData[i][rModel], RemoveData[i][rX], RemoveData[i][rY], RemoveData[i][rZ], RemoveData[i][rRange]);
+            fwrite(f,templine);
+		}
+	}
+
+    fwrite(f, "} \r\n\n");
+
+    CurrCar = 0;
+
+	// Vehicle respawn
+    fwrite(f, "public OnVehicleSpawn(vehicleid)\r\n");
+
+    fwrite(f, "{ \r\n");
+    foreach(new i : Cars)
+    {
+		if(CurrCar == 0) format(templine, sizeof(templine), "    if(vehicleid == carvid_%i)\r\n", CurrCar);
+		else format(templine, sizeof(templine), "    else if(vehicleid == carvid_%i)\r\n", CurrCar);
+        fwrite(f, templine);
+
+		fwrite(f, "    {\r\n");
+
+		// Mod components
+		for(new j = 0; j < MAX_CAR_COMPONENTS; j++)
+		{
+		    if(CarData[i][CarComponents][j] > 0)
+		    {
+		        format(templine, sizeof(templine), "        AddVehicleComponent(carvid_%i, %i);\r\n", CurrCar, CarData[i][CarComponents][i]);
+				fwrite(f, templine);
+		    }
+		}
+
+		// Paintjob
+		if(CarData[i][CarPaintJob] < 3)
+		{
+	        format(templine, sizeof(templine), "        ChangeVehiclePaintjob(carvid_%i, %i);\r\n", CurrCar, CarData[i][CarPaintJob]);
+			fwrite(f, templine);
+		}
+
+	    fwrite(f, "    }\r\n");
+
+        CurrCar++;
+	}
+
+    fwrite(f, "} \r\n");
+
+    fclose(f);
+
+	format(templine, sizeof(templine), "Exported vehicles to filterscript %s", name);
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	SendClientMessage(playerid, STEALTH_GREEN, templine);
+
+	return 1;
+}
+
+// Selects a object for editing
+YCMD:sel(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Select an object by index.");
+		return 1;
+	}
+
+	NoEditingMode(playerid);
+
+    MapOpenCheck();
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	if(isnull(arg)) return SendClientMessage(playerid, STEALTH_YELLOW, "Usage: /sel <index> selects a object to edit");
+	new index = strval(arg);
+	if(index < 0) return SendClientMessage(playerid, STEALTH_YELLOW, "The index can not be negative numbers");
+
+	if(Iter_Contains(Objects, index))
+	{
+		if(SetCurrObject(playerid, index)) {
+            new line[128];
+            format(line, sizeof(line), "You have selected object index %i for editing", index);
+            SendClientMessage(playerid, STEALTH_GREEN, line);
+        }
+        else
+            SendClientMessage(playerid, STEALTH_YELLOW, "You can not select objects in this object's group");
+	}
+	else SendClientMessage(playerid, STEALTH_YELLOW, "That object does not exist!");
+	return 1;
+}
+
+YCMD:dsel(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Deselect current object.");
+		return 1;
+	}
+
+    MapOpenCheck();
+	EditCheck(playerid);
+	NoEditingMode(playerid);
+
+    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	SendClientMessage(playerid, STEALTH_GREEN, "Selection has been deselected");
+
+    SetCurrObject(playerid, -1);
+
+	return 1;
+}
+
+// Selects the closest object to player
+YCMD:scsel(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Selects closest object.");
+		return 1;
+	}
+
+	NoEditingMode(playerid);
+    MapOpenCheck();
+
+	new Float:dist = 9999999.0, Float:tmpdist, index = -1;
+
+	foreach(new i : Objects)
+	{
+        if(!CanSelectObject(playerid, i))
+            continue;
+        
+		tmpdist = GetPlayerDistanceFromPoint(playerid, ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+		if(tmpdist < dist)
+		{
+		    dist = tmpdist;
+		    index = i;
+		}
+	}
+
+    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	if(index > -1)
+	{
+		SetCurrObject(playerid, index);
+		new line[128];
+		format(line, sizeof(line), "You have selected object index %i for editing", index);
+		SendClientMessage(playerid, STEALTH_GREEN, line);
+	}
+	else SendClientMessage(playerid, STEALTH_YELLOW, "There are no objects");
+
+	return 1;
+}
+
+// Deletes the closest object to player
+YCMD:dcsel(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Destroy closest object.");
+		return 1;
+	}
+
+	NoEditingMode(playerid);
+    MapOpenCheck();
+
+	new Float:dist = 9999999.0, Float:tmpdist, index = -1;
+
+	foreach(new i : Objects)
+	{
+		if(!CanSelectObject(playerid, i))
+            continue;
+        
+		tmpdist = GetPlayerDistanceFromPoint(playerid, ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+		if(tmpdist < dist)
+		{
+		    dist = tmpdist;
+		    index = i;
+		}
+	}
+
+    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	if(index > -1)
+	{
+		SaveUndoInfo(index, UNDO_TYPE_DELETED);
+
+		DeleteDynamicObject(index);
+
+		foreach(new i : Player)
+		{
+			if(i == playerid) continue;
+			if(CurrObject[index] == CurrObject[i]) SetCurrObject(i, -1);
+		}
+        SetCurrObject(playerid, -1);
+
+		new line[128];
+		format(line, sizeof(line), "You have deleted object index %i", index);
+		SendClientMessage(playerid, STEALTH_GREEN, line);
+
+	}
+	else SendClientMessage(playerid, STEALTH_YELLOW, "There are no objects");
+
+	return 1;
+}
+
+
+YCMD:csel(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Select an object using cursor.");
+		SendClientMessage(playerid, STEALTH_YELLOW, "Holding 'H' ('Enter' in /flymode) while clicking an object will copy properties to buffer.");
+		SendClientMessage(playerid, STEALTH_YELLOW, "Holding 'Walk Key' while clicking an object will paste properties from buffer.");
+		return 1;
+	}
+
+    NoEditingMode(playerid);
+
+    MapOpenCheck();
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+	if(Iter_Count(Objects))
+	{
+		SetEditMode(playerid, EDIT_MODE_SELECTION);
+		SelectObject(playerid);
+		SendClientMessage(playerid, STEALTH_GREEN, "Entered Object Selection Mode");
+	}
+	else SendClientMessage(playerid, STEALTH_YELLOW, "There are no objects right now");
+
+	return 1;
+}
+
+
+// Set a material of an object
+YCMD:mtset(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Set the material of an object.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	EditCheck(playerid);
+
+	if(GetEditMode(playerid) != EDIT_MODE_TEXTURING) NoEditingMode(playerid);
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+	new index = CurrObject[playerid];
+	new mindex;
+	new tref;
+
+	if(GetMaterials(playerid, arg, mindex, tref))
+	{
+		SaveUndoInfo(index, UNDO_TYPE_EDIT);
+
+		SetMaterials(index, mindex, tref);
+
+		UpdateObjectText(index);
+
+        UpdateTextureSlot(playerid, mindex);
+
+       	if(ObjectData[index][oAttachedVehicle] > -1) UpdateAttachedVehicleObject(ObjectData[index][oAttachedVehicle], index, VEHICLE_REATTACH_UPDATE);
+
+		// Update the streamer
+		foreach(new i : Player)
+		{
+		    if(IsPlayerInRangeOfPoint(i, 300.0, ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ])) Streamer_Update(i);
+		}
+
+		SendClientMessage(playerid, STEALTH_GREEN, "Changed Material");
+	}
+	return 1;
+}
+
+// Set all materials of a certain type
+YCMD:mtsetall(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Set the material of all objects of the same model.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	EditCheck(playerid);
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+	new index = CurrObject[playerid];
+	new mindex;
+	new tref;
+	new time = GetTickCount();
+
+	if(GetMaterials(playerid, arg, mindex, tref))
+	{
+		db_begin_transaction(EditMap);
+		foreach(new i : Objects)
+		{
+			if(ObjectData[i][oModel] == ObjectData[CurrObject[playerid]][oModel])
+			{
+				SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+				SetMaterials(i, mindex, tref);
+				UpdateObjectText(i);
+
+	        	if(ObjectData[i][oAttachedVehicle] > -1) UpdateAttachedVehicleObject(ObjectData[i][oAttachedVehicle], i, VEHICLE_REATTACH_UPDATE);
+			}
+		}
+		db_end_transaction(EditMap);
+
+        SendClientMessage(playerid, STEALTH_GREEN, "Changed All Materials");
+
+		foreach(new i : Player)
+		{
+  			if(IsPlayerInRangeOfPoint(i, 300.0, ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ])) Streamer_Update(i);
+		}
+		UpdateTextureSlot(playerid, mindex);
+	}
+	return 1;
+}
+
+YCMD:ogroup(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Set the group ID of current object.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	EditCheck(playerid);
+
+	NoEditingMode(playerid);
+
+	if (!(0 <= strval(arg) < MAX_GROUPS))
+		return SendClientMessage(playerid, STEALTH_YELLOW, sprintf("The group id must be from 0 to %d", MAX_GROUPS - 1));
+
+    new index = CurrObject[playerid];
+
+	SaveUndoInfo(index, UNDO_TYPE_EDIT);
+
+    ObjectData[index][oGroup] = strval(arg);
+
+    sqlite_ObjGroup(index);
+
+    UpdateObject3DText(index);
+
+    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	new line[128];
+    format(line, sizeof(line), "You have changed the group ID of this object to: %i", ObjectData[index][oGroup]);
+    SendClientMessage(playerid, STEALTH_GREEN, line);
+
+	return 1;
+}
+
+
+
+tsfunc ColumnExists(DB:database, table[], columnname[])
+{
+	new q[128];
+	format(q, sizeof(q), "pragma table_info(%s)", table);
+
+	new DBResult:r = db_query(database, q);
+	new Field[64];
+	if(db_num_rows(r))
+	{
+	    for(new i = 0; i < db_num_rows(r); i++)
+	    {
+	        db_get_field_assoc(r, "name", Field, 64);
+	        if(!strcmp(Field, columnname))
+	        {
+	            db_free_result(r);
+	            return 1;
+	        }
+			db_next_row(r);
+	    }
+	}
+    db_free_result(r);
+	return 0;
+}
+
+
+YCMD:clone(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Clone current object with all properties.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	EditCheck(playerid);
+
+	NoEditingMode(playerid);
+
+	SetCurrObject(playerid, CloneObject(CurrObject[playerid]));
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	SendClientMessage(playerid, STEALTH_GREEN, "Cloned your selected object the new object is now your selection");
+
+	return 1;
+}
+
+YCMD:copy(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Copy an objects properties to the clipboard.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	EditCheck(playerid);
+
+	NoEditingMode(playerid);
+
+    CopyCopyBuffer(playerid, CurrObject[playerid]);
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	SendClientMessage(playerid, STEALTH_GREEN, "Copied object textures/color/text to buffer");
+
+
+    return 1;
+
+}
+
+CopyCopyBuffer(playerid, index)
+{
+    for(new i = 0; i < MAX_MATERIALS; i++)
+    {
+		CopyBuffer[playerid][cTexIndex][i] = ObjectData[index][oTexIndex][i];
+		CopyBuffer[playerid][cColorIndex][i] = ObjectData[index][oColorIndex][i];
+		CopyBuffer[playerid][cusetext] = ObjectData[index][ousetext];
+		CopyBuffer[playerid][cFontFace] = ObjectData[index][oFontFace];
+		CopyBuffer[playerid][cFontSize] = ObjectData[index][oFontSize];
+		CopyBuffer[playerid][cFontBold] = ObjectData[index][oFontBold];
+		CopyBuffer[playerid][cFontColor] = ObjectData[index][oFontColor];
+		CopyBuffer[playerid][cBackColor] = ObjectData[index][oBackColor];
+		CopyBuffer[playerid][cAlignment] = ObjectData[index][oAlignment];
+		CopyBuffer[playerid][cTextFontSize] = ObjectData[index][oTextFontSize];
+		strcat((CopyBuffer[playerid][cObjectText][0] = '\0', CopyBuffer[playerid][cObjectText]), ObjectData[index][oObjectText], MAX_TEXT_LENGTH);
+    }
+    return 1;
+}
+
+YCMD:clear(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Clears current clipboard.");
+		return 1;
+	}
+
+    ClearCopyBuffer(playerid);
+    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	SendClientMessage(playerid, STEALTH_GREEN, "Cleared your copy buffer");
+	return 1;
+}
+
+YCMD:paste(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Paste copied propeties to current object.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	EditCheck(playerid);
+
+	NoEditingMode(playerid);
+
+	PasteCopyBuffer(playerid, CurrObject[playerid]);
+    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	SendClientMessage(playerid, STEALTH_GREEN, "Pasted your copy buffer to object");
+
+	return 1;
+}
+
+PasteCopyBuffer(playerid, index)
+{
+    for(new i = 0; i < MAX_MATERIALS; i++)
+    {
+		ObjectData[index][oTexIndex][i] = CopyBuffer[playerid][cTexIndex][i];
+		ObjectData[index][oColorIndex][i] = CopyBuffer[playerid][cColorIndex][i];
+    }
+
+	ObjectData[index][ousetext] = CopyBuffer[playerid][cusetext];
+	ObjectData[index][oFontFace] = CopyBuffer[playerid][cFontFace];
+	ObjectData[index][oFontSize] = CopyBuffer[playerid][cFontSize];
+	ObjectData[index][oFontBold] = CopyBuffer[playerid][cFontBold];
+	ObjectData[index][oFontColor] = CopyBuffer[playerid][cFontColor];
+	ObjectData[index][oBackColor] = CopyBuffer[playerid][cBackColor];
+	ObjectData[index][oAlignment] = CopyBuffer[playerid][cAlignment];
+	ObjectData[index][oTextFontSize] = CopyBuffer[playerid][cTextFontSize];
+	strcat((ObjectData[index][oObjectText][0] = '\0', ObjectData[index][oObjectText]), CopyBuffer[playerid][cObjectText], MAX_TEXT_LENGTH);
+
+    // Destroy the object
+    DestroyDynamicObject(ObjectData[index][oID]);
+
+	// Re-create object
+	ObjectData[index][oID] = CreateDynamicObject(ObjectData[index][oModel], ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ], ObjectData[index][oRX], ObjectData[index][oRY], ObjectData[index][oRZ], MapSetting[mVirtualWorld], MapSetting[mInterior], -1, 300.0);
+	Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[index][oID], E_STREAMER_DRAW_DISTANCE, 300.0);
+
+	// Update the streamer
+	foreach(new i : Player)
+	{
+	    if(IsPlayerInRangeOfPoint(i, 300.0, ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ])) Streamer_Update(i);
+	}
+
+	// Update the materials
+	UpdateMaterial(index);
+
+	// Update object text
+	UpdateObjectText(index);
+
+   	if(ObjectData[index][oAttachedVehicle] > -1) UpdateAttachedVehicleObject(ObjectData[index][oAttachedVehicle], index, VEHICLE_REATTACH_UPDATE);
+
+	// Save materials to material database
+	sqlite_SaveMaterialIndex(index);
+
+	// Save colors to material database
+	sqlite_SaveColorIndex(index);
+
+	// Save all text
+	sqlite_SaveAllObjectText(index);
+
+	return 1;
+}
+
+ClearCopyBuffer(playerid)
+{
+    for(new i = 0; i < MAX_MATERIALS; i++)
+    {
+		CopyBuffer[playerid][cTexIndex][i] = 0;
+		CopyBuffer[playerid][cColorIndex][i] = 0;
+		CopyBuffer[playerid][cusetext] = 0;
+		CopyBuffer[playerid][cFontFace] = 0;
+		CopyBuffer[playerid][cFontSize] = 0;
+		CopyBuffer[playerid][cFontBold] = 0;
+		CopyBuffer[playerid][cFontColor] = 0;
+		CopyBuffer[playerid][cBackColor] = 0;
+		CopyBuffer[playerid][cAlignment] = 0;
+		CopyBuffer[playerid][cTextFontSize] = 20;
+		format(CopyBuffer[playerid][cObjectText], MAX_TEXT_LENGTH, "None");
+    }
+	return 1;
+}
+
+// Gets the mindex and tref from command arguments
+GetMaterials(playerid, arg[], &mindex, &tref)
+{
+	if(sscanf(arg, "ii", mindex, tref))
+	{
+		SendClientMessage(playerid, STEALTH_YELLOW, "Usage: /mtset <material index> <texture array reference>");
+		return 0;
+	}
+
+	if(mindex < 0 || mindex > MAX_MATERIALS - 1)
+	{
+	    new line[128];
+		format(line, sizeof(line), "The material selection must be between <0 - %i>", MAX_MATERIALS - 1);
+		SendClientMessage(playerid, STEALTH_YELLOW, line);
+		return 0;
+	}
+
+	if(tref < 0 || tref > MAX_TEXTURES - 1)
+	{
+		new line[128];
+		format(line, sizeof(line), "The texture reference must be between <0 - %i>", MAX_TEXTURES - 1);
+		SendClientMessage(playerid, STEALTH_YELLOW, line);
+		return 0;
+	}
+	return 1;
+}
+
+// Set the materials for an object
+SetMaterials(index, mindex, tref)
+{
+	// Set the texture
+	ObjectData[index][oTexIndex][mindex] = tref;
+
+	// Destroy the object
+    DestroyDynamicObject(ObjectData[index][oID]);
+
+	// Re-create object
+	ObjectData[index][oID] = CreateDynamicObject(ObjectData[index][oModel], ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ], ObjectData[index][oRX], ObjectData[index][oRY], ObjectData[index][oRZ], MapSetting[mVirtualWorld], MapSetting[mInterior], -1, 300.0);
+	Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[index][oID], E_STREAMER_DRAW_DISTANCE, 300.0);
+
+	// Update streamer for all
+	foreach(new i : Player) Streamer_UpdateEx(i, ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ]);
+
+	// Update the materials
+	UpdateMaterial(index);
+
+	// Save this material index to the data base
+	sqlite_SaveMaterialIndex(index);
+}
+
+
+YCMD:ogoto(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Moves camera to the current object's position.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	EditCheck(playerid);
+
+	NoEditingMode(playerid);
+
+	if(!InFlyMode(playerid))
+	{
+	   	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	   	SendClientMessage(playerid, STEALTH_YELLOW, "You must be in flymode to use this command");
+	   	return 1;
+	}
+
+   	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+   	SendClientMessage(playerid, STEALTH_GREEN, "Moved to object currently being edited");
+
+	SetFlyModePos(playerid, ObjectData[CurrObject[playerid]][oX], ObjectData[CurrObject[playerid]][oY], ObjectData[CurrObject[playerid]][oZ]);
+	return 1;
+}
+
+
+// Set a color of an object
+YCMD:mtcolor(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Set the color of an object.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	EditCheck(playerid);
+
+	if(GetEditMode(playerid) != EDIT_MODE_TEXTURING) NoEditingMode(playerid);
+
+   	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+	new index = CurrObject[playerid];
+
+	new mindex;
+	new HexColor[12];
+
+	sscanf(arg, "is[12]", mindex, HexColor);
+
+	if(mindex < 0 || mindex > MAX_MATERIALS - 1)
+	{
+	    new line[128];
+		format(line, sizeof(line), "The material selection must be between <0 - %i>", MAX_MATERIALS - 1);
+		return SendClientMessage(playerid, STEALTH_YELLOW, line);
+	}
+
+	if(IsHexValue(HexColor))
+	{
+		SaveUndoInfo(index, UNDO_TYPE_EDIT);
+
+		// Set the color
+        sscanf(HexColor, "h", ObjectData[index][oColorIndex][mindex]);
+
+		// Destroy the object
+	    DestroyDynamicObject(ObjectData[index][oID]);
+
+		// Re-create object
+		ObjectData[index][oID] = CreateDynamicObject(ObjectData[index][oModel], ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ], ObjectData[index][oRX], ObjectData[index][oRY], ObjectData[index][oRZ], MapSetting[mVirtualWorld], MapSetting[mInterior], -1, 300.0);
+		Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[index][oID], E_STREAMER_DRAW_DISTANCE, 300.0);
+
+		// Update the materials
+		UpdateMaterial(index);
+
+		UpdateObjectText(index);
+
+       	if(ObjectData[index][oAttachedVehicle] > -1) UpdateAttachedVehicleObject(ObjectData[index][oAttachedVehicle], index, VEHICLE_REATTACH_UPDATE);
+
+		// Save this material index to the data base
+		sqlite_SaveColorIndex(index);
+
+		// Update texture tool
+        UpdateTextureSlot(playerid, mindex);
+
+		// Update the streamer
+		foreach(new i : Player)
+		{
+		    if(IsPlayerInRangeOfPoint(i, 300.0, ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ])) Streamer_Update(i);
+		}
+
+		SendClientMessage(playerid, STEALTH_GREEN, "Changed Color");
+
+	}
+	else
+	{
+	    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	    SendClientMessage(playerid, STEALTH_YELLOW, "Invalid hex color.");
+	}
+
+	return 1;
+}
+
+// Set a color of an object
+YCMD:mtcolorall(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Set the color of all objects of the same model.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	EditCheck(playerid);
+
+   	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+	new index = CurrObject[playerid];
+
+	new mindex;
+	new HexColor[12];
+
+	sscanf(arg, "is[12]", mindex, HexColor);
+
+	if(mindex < 0 || mindex > MAX_MATERIALS - 1)
+	{
+	    new line[128];
+		format(line, sizeof(line), "The material selection must be between <0 - %i>", MAX_MATERIALS - 1);
+		return SendClientMessage(playerid, STEALTH_YELLOW, line);
+	}
+
+	if(IsHexValue(HexColor))
+	{
+		new hcolor;
+		sscanf(HexColor, "h", hcolor);
+
+		new time = GetTickCount();
+
+		db_begin_transaction(EditMap);
+		foreach(new i : Objects)
+		{
+		    if(ObjectData[i][oModel] == ObjectData[CurrObject[playerid]][oModel])
+		    {
+				SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+
+		        ObjectData[i][oColorIndex][mindex] = hcolor;
+
+				// Destroy the object
+			    DestroyDynamicObject(ObjectData[i][oID]);
+
+				// Re-create object
+				ObjectData[i][oID] = CreateDynamicObject(ObjectData[i][oModel], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ], MapSetting[mVirtualWorld], MapSetting[mInterior], -1, 300.0);
+				Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[i][oID], E_STREAMER_DRAW_DISTANCE, 300.0);
+
+				// Update the materials
+				UpdateMaterial(i);
+
+				UpdateObjectText(i);
+
+	        	if(ObjectData[i][oAttachedVehicle] > -1) UpdateAttachedVehicleObject(ObjectData[i][oAttachedVehicle], i, VEHICLE_REATTACH_UPDATE);
+
+				// Save this material index to the data base
+				sqlite_SaveColorIndex(i);
+		    }
+
+		}
+		db_end_transaction(EditMap);
+		
+		// Update the streamer
+		foreach(new i : Player)
+		{
+		    if(IsPlayerInRangeOfPoint(i, 300.0, ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ])) Streamer_Update(i);
+		}
+
+		SendClientMessage(playerid, STEALTH_GREEN, "Changed All Color");
+
+	}
+	else
+	{
+	    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	    SendClientMessage(playerid, STEALTH_YELLOW, "Invalid hex color.");
+	}
+
+	return 1;
+}
+
+YCMD:oswap(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Change the model of current object.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	EditCheck(playerid);
+
+   	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+	new id = strval(arg);
+	if(id > 0 && id < 20000)
+	{
+		new index = CurrObject[playerid];
+        ObjectData[index][oModel] = id;
+
+        SaveUndoInfo(index, UNDO_TYPE_EDIT);
+
+		// Destroy the object
+	    DestroyDynamicObject(ObjectData[index][oID]);
+
+		// Re-create object
+		ObjectData[index][oID] = CreateDynamicObject(ObjectData[index][oModel], ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ], ObjectData[index][oRX], ObjectData[index][oRY], ObjectData[index][oRZ], MapSetting[mVirtualWorld], MapSetting[mInterior], -1, 300.0);
+		Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[index][oID], E_STREAMER_DRAW_DISTANCE, 300.0);
+
+		// Update streamer for all
+		foreach(new i : Player) Streamer_UpdateEx(i, ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ]);
+
+		// Update the materials
+		UpdateMaterial(index);
+
+		// Update the text
+		UpdateObjectText(index);
+
+		// Save changes to database
+		sqlite_ObjModel(index);
+	}
+	else SendClientMessage(playerid, STEALTH_YELLOW, "Invalid Model");
+	return 1;
+}
+
+// Reset all materials
+YCMD:mtreset(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Reset all materials and colors of current object.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	EditCheck(playerid);
+
+   	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+	new index = CurrObject[playerid];
+
+	SaveUndoInfo(index, UNDO_TYPE_EDIT);
+
+   	for(new i = 0; i < MAX_MATERIALS; i++)
+	{
+		ObjectData[index][oTexIndex][i] = 0;
+		ObjectData[index][oColorIndex][i] = 0;
+	    UpdateTextureSlot(playerid, i);
+	}
+    UpdateMaterial(index);
+
+  	sqlite_SaveMaterialIndex(index);
+    sqlite_SaveColorIndex(index);
+
+	return 1;
+}
+
+
+// Enter edit mode
+YCMD:editobject(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Edit current object.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	EditCheck(playerid);
+
+   	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+   	if(ObjectData[CurrObject[playerid]][oAttachedVehicle] > -1) return EditVehicleObject(playerid);
+
+   	if(!EditingMode[playerid])
+	{
+		EditingMode[playerid] = true;
+		SetEditMode(playerid, EDIT_MODE_OBJECT);
+		EditDynamicObject(playerid, ObjectData[CurrObject[playerid]][oID]);
+		SendClientMessage(playerid, STEALTH_GREEN, "Entered Edit Object Mode");
+		CurrEditPos[playerid][0] = ObjectData[CurrObject[playerid]][oX];
+		CurrEditPos[playerid][1] = ObjectData[CurrObject[playerid]][oY];
+		CurrEditPos[playerid][2] = ObjectData[CurrObject[playerid]][oZ];
+		CurrEditPos[playerid][3] = ObjectData[CurrObject[playerid]][oRX];
+		CurrEditPos[playerid][4] = ObjectData[CurrObject[playerid]][oRY];
+		CurrEditPos[playerid][5] = ObjectData[CurrObject[playerid]][oRZ];
+	}
+	else SendClientMessage(playerid, STEALTH_YELLOW, "You are in editing mode already");
+	return 1;
+}
+
+// Create an object
+YCMD:cobject(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Creates an object and selects it.");
+		return 1;
+	}
+
+    MapOpenCheck();
+	NoEditingMode(playerid);
+
+ 	new modelid;
+	if(sscanf(arg, "i", modelid))
+	{
+	    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+        SendClientMessage(playerid, STEALTH_YELLOW, "Usage: /cobject <modelid>");
+		return 1;
+	}
+
+	// Set the initial object position
+	new Float:px, Float:py, Float:pz, Float:fa;
+
+	// Find the size of the object
+	new Float:colradius = GetColSphereRadius(modelid);
+
+	// Place in front of the player using collision radius
+	GetPosFaInFrontOfPlayer(playerid, colradius + 1.0, px, py, pz, fa);
+
+	pz -= 1.0;
+
+	// Create the object
+	SetCurrObject(playerid, AddDynamicObject(modelid, px, py, pz, 0.0, 0.0, 0.0));
+
+	// Create 3D label
+	UpdateObject3DText(CurrObject[playerid], true);
+
+	// Object was created
+	if(CurrObject[playerid] != -1)
+	{
+		// Update the streamer for this player
+        Streamer_Update(playerid);
+
+		SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_CREATED);
+
+		// Show output message
+		new line[128];
+		new modelarray = GetModelArray(modelid);
+		if(modelarray > -1) format(line, sizeof(line), "Created Object Index: %i Model Name: %s", CurrObject[playerid], GetModelName(modelarray));
+		else format(line, sizeof(line), "Created Object Index: %i Model Name: Unknown", CurrObject[playerid]);
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, line);
+
+	}
+	// Too many objects already created
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "You have too many objects created to create anymore!");
+	}
+
+	return 1;
+}
+
+YCMD:dobject(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Destroys current object and deselects it.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    EditCheck(playerid);
+    NoEditingMode(playerid);
+
+    SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_DELETED);
+
+    DeleteDynamicObject(CurrObject[playerid]);
+
+	foreach(new i : Player)
+	{
+		if(CurrObject[playerid] == CurrObject[i]) SetCurrObject(i, -1);
+	}
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	SendClientMessage(playerid, STEALTH_GREEN, "Your object has been destroyed");
+
+	return 1;
+}
+
+YCMD:rotreset(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Reset all rotation axes of current object.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    EditCheck(playerid);
+    NoEditingMode(playerid);
+
+    ObjectData[CurrObject[playerid]][oRX] = 0.0;
+    ObjectData[CurrObject[playerid]][oRY] = 0.0;
+    ObjectData[CurrObject[playerid]][oRZ] = 0.0;
+
+    SetDynamicObjectRot(ObjectData[CurrObject[playerid]][oID], ObjectData[CurrObject[playerid]][oRX], ObjectData[CurrObject[playerid]][oRY], ObjectData[CurrObject[playerid]][oRZ]);
+
+    sqlite_UpdateObjectPos(CurrObject[playerid]);
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	SendClientMessage(playerid, STEALTH_GREEN, "Your objects rotation has been reset");
+
+	return 1;
+}
+
+
+// Resets an objects materials and text
+YCMD:robject(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Reset all materials, colors, and text of current object.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    EditCheck(playerid);
+    NoEditingMode(playerid);
+
+    new index = CurrObject[playerid];
+
+	for(new i = 0; i < MAX_MATERIALS; i++)
+	{
+        ObjectData[index][oTexIndex][i] = 0;
+        ObjectData[index][oColorIndex][i] = 0;
+	}
+
+    ObjectData[index][ousetext] = 0;
+    ObjectData[index][oFontFace] = 0;
+    ObjectData[index][oFontSize] = 0;
+    ObjectData[index][oFontBold] = 0;
+    ObjectData[index][oFontColor] = 0;
+    ObjectData[index][oBackColor] = 0;
+    ObjectData[index][oAlignment] = 0;
+    ObjectData[index][oTextFontSize] = 20;
+
+    format(ObjectData[index][oObjectText], MAX_TEXT_LENGTH, "None");
+
+	DestroyDynamicObject(ObjectData[index][oID]);
+
+	ObjectData[index][oID] = CreateDynamicObject(ObjectData[index][oModel], ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ], ObjectData[index][oRX], ObjectData[index][oRY], ObjectData[index][oRZ], MapSetting[mVirtualWorld], MapSetting[mInterior], -1, 300.0);
+	Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[index][oID], E_STREAMER_DRAW_DISTANCE, 300.0);
+
+	sqlite_SaveColorIndex(index);
+	sqlite_SaveMaterialIndex(index);
+	sqlite_ObjUseText(index);
+	sqlite_ObjFontFace(index);
+	sqlite_ObjFontSize(index);
+	sqlite_ObjFontBold(index);
+	sqlite_ObjFontColor(index);
+	sqlite_ObjBackColor(index);
+	sqlite_ObjAlignment(index);
+	sqlite_ObjFontTextSize(index);
+	sqlite_ObjObjectText(index);
+
+	// Update the streamer
+	foreach(new i : Player)
+	{
+	    if(IsPlayerInRangeOfPoint(i, 300.0, ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ])) Streamer_Update(i);
+	}
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	SendClientMessage(playerid, STEALTH_GREEN, "Reset object materials and text");
+
+	return 1;
+}
+
+
+
+
+// Loops through all indexes and labels them with object text
+enum INDEXCOLORINFO { FaceColor, BackColor }
+stock const ShowIndexColors[MAX_MATERIALS][INDEXCOLORINFO] = {
+	{ 0xFFFFFF66, 0xFF00FF33 }, // { 0xFF000000, 0xFFFFFFFF },
+	{ 0xFFFFFF66, 0xFF00FF33 }, // { 0xFF800000, 0xFFFFFFFF },
+	{ 0xFFFFFF66, 0xFF00FF33 }, // { 0xFF008000, 0xFFFFFFFF },
+	{ 0xFFFFFF66, 0xFF00FF33 }, // { 0xFF000080, 0xFFFFFFFF },
+	{ 0xFFFFFF66, 0xFF00FF33 }, // { 0xFFC0C0C0, 0xFF000000 },
+	{ 0xFFFFFF66, 0xFF00FF33 }, // { 0xFFFF0000, 0xFF000000 },
+	{ 0xFFFFFF66, 0xFF00FF33 }, // { 0xFF00FF00, 0xFF000000 },
+	{ 0xFFFFFF66, 0xFF00FF33 }, // { 0xFF0000FF, 0xFF000000 },
+	{ 0xFFFFFF66, 0xFF00FF33 }, // { 0xFF808080, 0xFFFFFFFF },
+	{ 0xFFFFFF66, 0xFF00FF33 }, // { 0xFF800080, 0xFFFFFFFF },
+	{ 0xFFFFFF66, 0xFF00FF33 }, // { 0xFF808000, 0xFFFFFFFF },
+	{ 0xFFFFFF66, 0xFF00FF33 }, // { 0xFF008080, 0xFFFFFFFF },
+	{ 0xFFFFFF66, 0xFF00FF33 }, // { 0xFFFFFFFF, 0xFF000000 },
+	{ 0xFFFFFF66, 0xFF00FF33 }, // { 0xFFFF00FF, 0xFF000000 },
+	{ 0xFFFFFF66, 0xFF00FF33 }, // { 0xFFFFFF00, 0xFF000000 },
+	{ 0xFFFFFF66, 0xFF00FF33 }  // { 0xFF00FFFF, 0xFF000000 }
+};
+
+YCMD:sindex(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Display texture slots of current object.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    EditCheck(playerid);
+//    NoEditingMode(playerid);
+
+	new size;
+    if(isnull(arg)) size = 20;
+    else size = strval(arg);
+    if(size < 0 || size > 200) size = 20;
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+    SendClientMessage(playerid, STEALTH_GREEN, "Labelling your objects with text corresponding to index (/rindex to turn off label)");
+
+	new line[8];
+
+	for(new i = 0; i < MAX_MATERIALS; i++)
+	{
+		format(line, sizeof(line), "%i", i);
+		SetDynamicObjectMaterialText(ObjectData[CurrObject[playerid]][oID],
+			i,
+			line,
+			10,
+			"Ariel",
+			size,
+			1,
+			ShowIndexColors[i][FaceColor],
+			ShowIndexColors[i][BackColor],
+			1);
+	}
+	return 1;
+
+}
+
+// Restores an object to it's original form
+YCMD:rindex(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Restore objects textures after displaying texture slots.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    EditCheck(playerid);
+//    NoEditingMode(playerid);
+
+	new index = CurrObject[playerid];
+
+	// Destroy the object
+    DestroyDynamicObject(ObjectData[index][oID]);
+
+	// Re-create object
+	ObjectData[index][oID] = CreateDynamicObject(ObjectData[index][oModel], ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ], ObjectData[index][oRX], ObjectData[index][oRY], ObjectData[index][oRZ], MapSetting[mVirtualWorld], MapSetting[mInterior], -1, 300.0);
+	Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[index][oID], E_STREAMER_DRAW_DISTANCE, 300.0);
+
+	// Update the streamer
+	foreach(new i : Player)
+	{
+	    if(IsPlayerInRangeOfPoint(i, 300.0, ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ])) Streamer_Update(i);
+	}
+
+	// Update the materials
+	UpdateMaterial(index);
+
+	// Update object text
+	UpdateObjectText(index);
+
+   	if(ObjectData[index][oAttachedVehicle] > -1) UpdateAttachedVehicleObject(ObjectData[index][oAttachedVehicle], index, VEHICLE_REATTACH_UPDATE);
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+    SendClientMessage(playerid, STEALTH_GREEN, "Reset current objects labels");
+
+	return 1;
+}
+
+// Get information on a model
+YCMD:minfo(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "See information on the provided model ID.");
+		return 1;
+	}
+
+	
+	new model = strval(arg);
+	if(isnull(arg) || !(0 <= model <= 19999)) {
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "Usage: /minfo <ID [0-19999]>");
+		return 1;
+	}
+	
+	new Float:r = Float:GetColSphereRadius(model),
+		Float:rOff[3], Float:Min[3], Float:Max[3];
+	
+	GetColSphereOffset(model, rOff[0], rOff[1], rOff[2]);
+	GetModelBoundingBox(model, Min[0], Min[1], Min[2], Max[0], Max[1], Max[2]);
+	
+	new buffer[1024];
+	strcat(buffer, sprintf("Bounding Sphere\n\tRadius: %f\n\tRadius Offset: %f, %f, %f\n\n",
+		r, rOff[0], rOff[1], rOff[2]));
+	strcat(buffer, sprintf("Axis Alligned Bounding Box\n\tMinimum: %f, %f, %f\n\t",
+		Min[0], Min[1], Min[2]));
+	strcat(buffer, sprintf("Maximun: %f, %f, %f\n\t",
+		Max[0], Max[1], Max[2]));
+	strcat(buffer, sprintf("Dimensions: %f, %f, %f",
+		floatabs(Min[0] - Max[0]), floatabs(Min[1] - Max[1]), floatabs(Min[2] - Max[2])));
+	
+	Dialog_Show(
+		playerid, DIALOG_STYLE_MSGBOX, 
+		sprintf("Model Information: %i", model), 
+		buffer, 
+		"Okay"
+	);
+
+	return 1;
+}
+
+// Set a pivot point
+YCMD:pivot(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Set the desired pivot to rotate around.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    NoEditingMode(playerid);
+
+	new Float:x, Float:y, Float:z, Float:fa;
+	GetPosFaInFrontOfPlayer(playerid, 2.0, x, y, z, fa);
+
+	PivotObject[playerid] = CreateDynamicObject(1974, x, y, z, 0.0, 0.0, 0.0, -1, -1, playerid);
+
+	Streamer_SetFloatData(STREAMER_TYPE_OBJECT, PivotObject[playerid], E_STREAMER_DRAW_DISTANCE, 3000.0);
+
+	SetDynamicObjectMaterial(PivotObject[playerid], 0, 10765, "airportgnd_sfse", "white", -256);
+
+	Streamer_Update(playerid);
+
+	EditingMode[playerid] = true;
+	SetEditMode(playerid, EDIT_MODE_PIVOT);
+
+	EditDynamicObject(playerid, PivotObject[playerid]);
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+    SendClientMessage(playerid, STEALTH_GREEN, "Editing your pivot point");
+
+	return 1;
+}
+
+YCMD:togpivot(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Toggle pivot rotation.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	if(PivotPointOn[playerid])
+	{
+	    PivotPointOn[playerid] = false;
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	    SendClientMessage(playerid, STEALTH_GREEN, "Pivot point turned off");
+	}
+	else
+	{
+	    PivotPointOn[playerid] = true;
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	    SendClientMessage(playerid, STEALTH_GREEN, "Pivot point turned on");
+	}
+
+	return 1;
+}
+
+
+// Move object on X axis
+YCMD:ox(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Move current object along the X axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    EditCheck(playerid);
+    NoEditingMode(playerid);
+
+	new Float:dist;
+
+	dist = floatstr(arg);
+	if(dist == 0) dist = 1.0;
+
+    SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+
+    ObjectData[CurrObject[playerid]][oX] += dist;
+
+    SetDynamicObjectPos(ObjectData[CurrObject[playerid]][oID], ObjectData[CurrObject[playerid]][oX], ObjectData[CurrObject[playerid]][oY], ObjectData[CurrObject[playerid]][oZ]);
+
+	UpdateObject3DText(CurrObject[playerid]);
+
+    sqlite_UpdateObjectPos(CurrObject[playerid]);
+
+	return 1;
+}
+
+// Move object on Y axis
+YCMD:oy(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Move current object along the Y axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    EditCheck(playerid);
+    NoEditingMode(playerid);
+
+	new Float:dist;
+
+	dist = floatstr(arg);
+	if(dist == 0) dist = 1.0;
+
+    SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+
+    ObjectData[CurrObject[playerid]][oY] += dist;
+
+    SetDynamicObjectPos(ObjectData[CurrObject[playerid]][oID], ObjectData[CurrObject[playerid]][oX], ObjectData[CurrObject[playerid]][oY], ObjectData[CurrObject[playerid]][oZ]);
+
+	UpdateObject3DText(CurrObject[playerid]);
+
+    sqlite_UpdateObjectPos(CurrObject[playerid]);
+
+	return 1;
+}
+
+// Move object on Z axis
+YCMD:oz(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Move current object along the Z axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    EditCheck(playerid);
+    NoEditingMode(playerid);
+
+	new Float:dist;
+
+	dist = floatstr(arg);
+	if(dist == 0) dist = 1.0;
+
+    SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+
+    ObjectData[CurrObject[playerid]][oZ] += dist;
+
+    SetDynamicObjectPos(ObjectData[CurrObject[playerid]][oID], ObjectData[CurrObject[playerid]][oX], ObjectData[CurrObject[playerid]][oY], ObjectData[CurrObject[playerid]][oZ]);
+
+	UpdateObject3DText(CurrObject[playerid]);
+
+    sqlite_UpdateObjectPos(CurrObject[playerid]);
+
+	return 1;
+}
+
+// Move object on RX rot
+YCMD:rx(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Rotate currently object around the X axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    EditCheck(playerid);
+    NoEditingMode(playerid);
+
+	new Float:rot;
+
+	rot = floatstr(arg);
+	if(rot == 0) rot = 5.0;
+
+    SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+
+	if(PivotPointOn[playerid])
+	{
+		new i = CurrObject[playerid];
+		AttachObjectToPoint(i, PivotPoint[playerid][xPos], PivotPoint[playerid][yPos], PivotPoint[playerid][zPos], rot, 0.0, 0.0, ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+		SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+		SetDynamicObjectRot(ObjectData[i][oID], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+		UpdateObject3DText(CurrObject[playerid]);
+	}
+	else
+	{
+	    ObjectData[CurrObject[playerid]][oRX] += rot;
+	    SetDynamicObjectRot(ObjectData[CurrObject[playerid]][oID], ObjectData[CurrObject[playerid]][oRX], ObjectData[CurrObject[playerid]][oRY], ObjectData[CurrObject[playerid]][oRZ]);
+	}
+
+    sqlite_UpdateObjectPos(CurrObject[playerid]);
+
+	return 1;
+}
+
+// Move object on RX rot
+YCMD:ry(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Rotate currently object around the Y axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    EditCheck(playerid);
+    NoEditingMode(playerid);
+
+	new Float:rot;
+
+	rot = floatstr(arg);
+	if(rot == 0) rot = 5.0;
+
+	SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+
+	if(PivotPointOn[playerid])
+	{
+		new i = CurrObject[playerid];
+		AttachObjectToPoint(i, PivotPoint[playerid][xPos], PivotPoint[playerid][yPos], PivotPoint[playerid][zPos], 0.0, rot, 0.0, ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+		SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+		SetDynamicObjectRot(ObjectData[i][oID], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+		UpdateObject3DText(CurrObject[playerid]);
+	}
+	else
+	{
+	    ObjectData[CurrObject[playerid]][oRY] += rot;
+	    SetDynamicObjectRot(ObjectData[CurrObject[playerid]][oID], ObjectData[CurrObject[playerid]][oRX], ObjectData[CurrObject[playerid]][oRY], ObjectData[CurrObject[playerid]][oRZ]);
+	}
+
+    sqlite_UpdateObjectPos(CurrObject[playerid]);
+
+	return 1;
+}
+
+// Move object on RX rot
+YCMD:rz(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Rotate currently object around the Z axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    EditCheck(playerid);
+    NoEditingMode(playerid);
+
+	new Float:rot;
+
+	rot = floatstr(arg);
+	if(rot == 0) rot = 5.0;
+
+    SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+
+	if(PivotPointOn[playerid])
+	{
+		new i = CurrObject[playerid];
+		AttachObjectToPoint(i, PivotPoint[playerid][xPos], PivotPoint[playerid][yPos], PivotPoint[playerid][zPos], 0.0, 0.0, rot, ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+		SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+		SetDynamicObjectRot(ObjectData[i][oID], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+		UpdateObject3DText(CurrObject[playerid]);
+	}
+	else
+	{
+	    ObjectData[CurrObject[playerid]][oRZ] += rot;
+	    SetDynamicObjectRot(ObjectData[CurrObject[playerid]][oID], ObjectData[CurrObject[playerid]][oRX], ObjectData[CurrObject[playerid]][oRY], ObjectData[CurrObject[playerid]][oRZ]);
+	}
+
+    sqlite_UpdateObjectPos(CurrObject[playerid]);
+
+	return 1;
+}
+
+// Move all objects on X axis
+YCMD:dox(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Move all loaded objects along the X axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    NoEditingMode(playerid);
+
+	new Float:dist, time;
+	time = GetTickCount();
+
+	dist = floatstr(arg);
+	if(dist == 0) dist = 1.0;
+
+	db_begin_transaction(EditMap);
+	foreach(new i : Objects)
+	{
+		SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+
+	    ObjectData[i][oX] += dist;
+
+	    SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+
+		UpdateObject3DText(i);
+
+	    sqlite_UpdateObjectPos(i);
+	}
+	db_end_transaction(EditMap);
+
+	return 1;
+}
+
+// Move all objects on Y axis
+YCMD:doy(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Move all loaded objects along the Y axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    NoEditingMode(playerid);
+
+	new Float:dist, time;
+	time = GetTickCount();
+
+	dist = floatstr(arg);
+	if(dist == 0) dist = 1.0;
+
+	db_begin_transaction(EditMap);
+	foreach(new i : Objects)
+	{
+		SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+
+	    ObjectData[i][oY] += dist;
+
+	    SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+
+		UpdateObject3DText(i);
+
+	    sqlite_UpdateObjectPos(i);
+	}
+	db_end_transaction(EditMap);
+
+	return 1;
+}
+
+// Move all objects on Z axis
+YCMD:doz(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Move all loaded objects along the Z axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    NoEditingMode(playerid);
+
+	new Float:dist, time;
+	time = GetTickCount();
+
+	dist = floatstr(arg);
+	if(dist == 0) dist = 1.0;
+
+	db_begin_transaction(EditMap);
+	foreach(new i : Objects)
+	{
+		SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+
+	    ObjectData[i][oZ] += dist;
+
+	    SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+
+		UpdateObject3DText(i);
+
+	    sqlite_UpdateObjectPos(i);
+	}
+	db_end_transaction(EditMap);
+
+	return 1;
+}
+
+// Rotate map on RX
+YCMD:drx(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Rotate all loaded objects around the X axis.");
+		return 1;
+	}
+
+	MapOpenCheck();
+
+	new Float:Delta, time;
+	time = GetTickCount();
+
+	if(isnull(arg)) Delta = 1.0;
+	else if(sscanf(arg, "f", Delta))
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "Usage: /drx <rotation> ");
+		return 1;
+	}
+
+	// We need to get the map center as the rotation node
+	new Float:mCenterX, Float:mCenterY, Float:mCenterZ;
+    if(GetMapCenter(mCenterX, mCenterY, mCenterZ))
+	{
+		// Loop through all objects and perform rotation calculations
+		db_begin_transaction(EditMap);
+		foreach(new i : Objects)
+		{
+			SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+
+			AttachObjectToPoint(i, mCenterX, mCenterY, mCenterZ, Delta, 0.0, 0.0, ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+			SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+			SetDynamicObjectRot(ObjectData[i][oID], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+
+			UpdateObject3DText(i);
+
+			sqlite_UpdateObjectPos(i);
+		}
+		db_end_transaction(EditMap);
+
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Map RX rotation complete ");
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "There is not enough objects for this command to work");
+	}
+
+	return 1;
+}
+
+// Rotate map on RY
+YCMD:dry(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Rotate all loaded objects around the Y axis.");
+		return 1;
+	}
+
+	MapOpenCheck();
+
+	new Float:Delta, time;
+	time = GetTickCount();
+
+	if(isnull(arg)) Delta = 1.0;
+	else if(sscanf(arg, "f", Delta))
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "Usage: /dry <rotation> ");
+		return 1;
+	}
+
+	// We need to get the map center as the rotation node
+	new Float:mCenterX, Float:mCenterY, Float:mCenterZ;
+    if(GetMapCenter(mCenterX, mCenterY, mCenterZ))
+	{
+		// Loop through all objects and perform rotation calculations
+		db_begin_transaction(EditMap);
+		foreach(new i : Objects)
+		{
+			SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+
+			AttachObjectToPoint(i, mCenterX, mCenterY, mCenterZ, 0.0, Delta, 0.0, ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+			SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+			SetDynamicObjectRot(ObjectData[i][oID], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+
+			UpdateObject3DText(i);
+
+			sqlite_UpdateObjectPos(i);
+		}
+		db_end_transaction(EditMap);
+
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Map RY rotation complete ");
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "There is not enough objects for this command to work");
+	}
+
+	return 1;
+}
+
+// Rotate map on RZ
+YCMD:drz(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Rotate all loaded objects around the Z axis.");
+		return 1;
+	}
+
+	MapOpenCheck();
+
+	new Float:Delta, time;
+	time = GetTickCount();
+
+	if(isnull(arg)) Delta = 1.0;
+	else if(sscanf(arg, "f", Delta))
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "Usage: /drz <rotation> ");
+		return 1;
+	}
+
+	// We need to get the map center as the rotation node
+	new Float:mCenterX, Float:mCenterY, Float:mCenterZ;
+    if(GetMapCenter(mCenterX, mCenterY, mCenterZ))
+	{
+		// Loop through all objects and perform rotation calculations
+		db_begin_transaction(EditMap);
+		foreach(new i : Objects)
+		{
+			SaveUndoInfo(i, UNDO_TYPE_EDIT, time);
+
+			AttachObjectToPoint(i, mCenterX, mCenterY, mCenterZ, 0.0, 0.0, Delta, ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+			SetDynamicObjectPos(ObjectData[i][oID], ObjectData[i][oX], ObjectData[i][oY], ObjectData[i][oZ]);
+			SetDynamicObjectRot(ObjectData[i][oID], ObjectData[i][oRX], ObjectData[i][oRY], ObjectData[i][oRZ]);
+
+			UpdateObject3DText(i);
+
+			sqlite_UpdateObjectPos(i);
+		}
+		db_end_transaction(EditMap);
+
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Map RZ rotation complete ");
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "There is not enough objects for this command to work");
+	}
+
+	return 1;
+}
+
+YCMD:odd(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Set a specific object's draw distance.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    EditCheck(playerid);
+    NoEditingMode(playerid);
+
+	new Float:dd;
+	dd = floatstr(arg);
+	if(dd == 0.0) dd = 300.0;
+
+    SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_EDIT);
+
+    ObjectData[CurrObject[playerid]][oDD] = dd;
+    Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[CurrObject[playerid]][oID], E_STREAMER_DRAW_DISTANCE, dd);
+    Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[CurrObject[playerid]][oID], E_STREAMER_STREAM_DISTANCE, dd);
+
+    sqlite_UpdateObjectDD(CurrObject[playerid]);
+
+    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+    SendClientMessage(playerid, STEALTH_GREEN, sprintf("Objects draw distance set to %.2f", dd));
+    
+	return 1;
+}
+
+// Extras
+YCMD:hidetext3d(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Hide all 3D text labels.");
+		return 1;
+	}
+
+    TextOption[tShowText] = false;
+    
+	HideGroupLabels(playerid);
+	HideObjectText();
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	SendClientMessage(playerid, STEALTH_GREEN, "All 3D Text labels hidden");
+	return 1;
+}
+
+YCMD:showtext3d(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Show all 3D text labels.");
+		return 1;
+	}
+	
+	/*/Experimental Multiplier
+	new Float:mult = floatstr(arg);
+	if(0.0 < mult <= 1.0)
+		Streamer_SetRadiusMultiplier(STREAMER_TYPE_3D_TEXT_LABEL, mult, playerid);
+	else if(mult) {
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Invalid multiplier specified, must be between 0.0 and 1.0");
+		return 1;
+	}
+	else
+		Streamer_SetRadiusMultiplier(STREAMER_TYPE_3D_TEXT_LABEL, 1.0, playerid);*/
+    
+    TextOption[tShowText] = true;
+    
+    ShowGroupLabels(playerid);
+	ShowObjectText();
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	SendClientMessage(playerid, STEALTH_GREEN, "All 3D Text labels shown");
+	return 1;
+}
+
+YCMD:edittext3d(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Shows you a dialog with 3D text options.");
+		return 1;
+	}
+    
+    new optline[256];
+    
+    // Init the text menu
+    inline SelectOption(spid, sdialogid, sresponse, slistitem, string:stext[])
+	{
+		#pragma unused slistitem, sdialogid, spid, stext
+		if(sresponse)
+		{
+            // Toggle the selected option
+            TextOption[TEXTOPTIONS:slistitem] = !TextOption[TEXTOPTIONS:slistitem];
+            
+            // Toggled text?
+            if(slistitem == 0)
+            {
+                if(TextOption[tShowText])
+                {
+                    ShowGroupLabels(playerid);
+                    ShowObjectText();
+                }
+                else
+                {
+                    HideGroupLabels(playerid);
+                    HideObjectText();
+                }
+            }
+	
+            // Show it again
+            format(optline, sizeof(optline), "{FFFF00}Text: %s\n{FFFF00}Object Note: %s\n{FFFF00}Model Info: %s\n{FFFF00}Group ID: %s\n{FFFF00}Grouped Text: %s\n{FFFF00}Always Show New Objects: %s\n",
+                (TextOption[tShowText] ? ("{00AA00}Enabled") : ("{FF3000}Disabled")),
+                (TextOption[tShowNote] ? ("{00AA00}Enabled") : ("{FF3000}Disabled")),
+                (TextOption[tShowModel] ? ("{00AA00}Enabled") : ("{FF3000}Disabled")),
+                (TextOption[tShowGroup] ? ("{00AA00}Enabled") : ("{FF3000}Disabled")),
+                (TextOption[tShowGrouped] ? ("{00AA00}Enabled") : ("{FF3000}Disabled")),
+                (TextOption[tAlwaysShowNew] ? ("{00AA00}Enabled") : ("{FF3000}Disabled"))
+            );
+            
+            Dialog_ShowCallback(playerid, using inline SelectOption, DIALOG_STYLE_LIST, "Texture Studio - 3D Text Editor", optline, "Ok", "Cancel");
+		}
+	}
+	
+    // Show the dialog
+    format(optline, sizeof(optline), "{FFFF00}Text: %s\n{FFFF00}Object Note: %s\n{FFFF00}Model Info: %s\n{FFFF00}Group ID: %s\n{FFFF00}Grouped Text: %s\n{FFFF00}Always Show New Objects: %s\n",
+        (TextOption[tShowText] ? ("{00AA00}Enabled") : ("{FF3000}Disabled")),
+        (TextOption[tShowNote] ? ("{00AA00}Enabled") : ("{FF3000}Disabled")),
+        (TextOption[tShowModel] ? ("{00AA00}Enabled") : ("{FF3000}Disabled")),
+        (TextOption[tShowGroup] ? ("{00AA00}Enabled") : ("{FF3000}Disabled")),
+        (TextOption[tShowGrouped] ? ("{00AA00}Enabled") : ("{FF3000}Disabled")),
+                (TextOption[tAlwaysShowNew] ? ("{00AA00}Enabled") : ("{FF3000}Disabled"))
+    );
+
+	Dialog_ShowCallback(playerid, using inline SelectOption, DIALOG_STYLE_LIST, "Texture Studio - 3D Text Editor", optline, "Ok", "Cancel");
+	return 1;
+}
+
+YCMD:note(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Show or change an object's note.");
+		return 1;
+	}
+    
+    MapOpenCheck();
+	
+ 	new index, note[64];
+	if(sscanf(arg, "iS()[64]", index, note))
+	{
+	    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+        SendClientMessage(playerid, STEALTH_YELLOW, "Usage: /note <Index> <Optional: New Note>");
+		return 1;
+	}
+    
+    if(isnull(note) || !strlen(note))
+    {
+        SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+        SendClientMessage(playerid, STEALTH_GREEN, sprintf("Object's note: %s", ObjectData[index][oNote]));
+    }
+    else
+    {
+        SaveUndoInfo(index, UNDO_TYPE_EDIT);
+        format(ObjectData[index][oNote], 64, "%s", note);
+        sqlite_ObjNote(index);
+        UpdateObject3DText(index);
+        SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+        SendClientMessage(playerid, STEALTH_YELLOW, "Note changed");
+    }
+	return 1;
+}
+
+YCMD:setspawn(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Set this map's spawn position to your current position.");
+		return 1;
+	}
+    
+    MapOpenCheck();
+    
+    GetPlayerPos(playerid, MapSetting[mSpawn][xPos], MapSetting[mSpawn][yPos], MapSetting[mSpawn][zPos]);
+    sqlite_UpdateSettings();
+    
+    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+    SendClientMessage(playerid, STEALTH_YELLOW, sprintf("You have set the map's spawn position to (%0.2f, %0.2f, %0.2f)", MapSetting[mSpawn][xPos], MapSetting[mSpawn][yPos], MapSetting[mSpawn][zPos]));
+	return 1;
+}
+
+YCMD:gotomap(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Sends you to this map's spawn position.");
+		return 1;
+	}
+    
+    if(MapSetting[mSpawn][xPos] == 0.0)
+        return SendClientMessage(playerid, STEALTH_YELLOW, "This map doesn't have a spawn position, set one with \"/setspawn\"");
+    
+    SetPlayerPos(playerid, MapSetting[mSpawn][xPos], MapSetting[mSpawn][yPos], MapSetting[mSpawn][zPos]);
+    
+    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+    SendClientMessage(playerid, STEALTH_YELLOW, "You've been teleported to the map's spawn position");
+	return 1;
+}
+
+HideObjectText()
+{
+	foreach(new i : Objects)
+	{
+	    UpdateDynamic3DTextLabelText(ObjectData[i][oTextID], 0, "");
+	}
+	return 1;
+}
+
+ShowObjectText()
+{
+	foreach(new i : Objects)
+	{
+	    UpdateObject3DText(i, false);
+	}
+	return 1;
+}
+
+YCMD:stopedit(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Reset editing mode.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+	if(EditingMode[playerid])
+	{
+		EditingMode[playerid] = false;
+        CancelEdit(playerid);
+        SendClientMessage(playerid, STEALTH_GREEN, "Editing mode reset.");
+	}
+	else SendClientMessage(playerid, STEALTH_YELLOW, "You're not editing.");
+
+	return 1;
+}

+ 240 - 0
Texture-Studio-master/filterscripts/tstudio/undo.pwn

@@ -0,0 +1,240 @@
+#define         MAX_UNDO_BUFFER         10000
+
+#define         UNDO_TYPE_UNUSED        0
+#define         UNDO_TYPE_CREATED       1
+#define         UNDO_TYPE_EDIT          2
+#define         UNDO_TYPE_DELETED       3
+
+#define         UNDO_GROUP_NONE         0
+
+// Object information ENUM
+enum OBJECTUNDOINFO
+{
+	uoGroup,                                     // Object group
+	uoModel,                                     // Object Model
+	Float:uoX,                                   // Position Z
+	Float:uoY,                                   // Position Z
+	Float:uoZ,                                   // Position Z
+	Float:uoRX,                                  // Rotation Z
+	Float:uoRY,                                  // Rotation Z
+	Float:uoRZ,                                  // Rotation Z
+    Float:uoDD,                                  // Draw distance
+	uoTexIndex[MAX_MATERIALS],                   // Texture index ref
+	uoColorIndex[MAX_MATERIALS],                 // Material List
+	uousetext,              					// Use text
+	uoFontFace,    								// Font face reference
+	uoFontSize,    								// Font size reference
+	uoFontBold,    								// Font bold
+	uoFontColor,   								// Font color
+	uoBackColor,   								// Font back color
+	uoAlignment,   								// Font alignment
+	uoTextFontSize, 							 // Font text size
+	uoObjectText[MAX_TEXT_LENGTH],              // Font text
+	uoNote[64],                                 // Note
+	uoAttachedVehicle,                           // Vehicle object is attached to
+	uoIndex,                                    // Store indexid object
+	uoType,                                     // Type of undo
+	uoGroupTask,                                 // Group
+}
+
+static UndoBuffer[MAX_UNDO_BUFFER][OBJECTUNDOINFO];
+static CurrBufferIndex;
+
+SaveUndoInfo(index, type, group=0)
+{
+   	UndoBuffer[CurrBufferIndex][uoGroup] = ObjectData[index][oGroup];
+   	UndoBuffer[CurrBufferIndex][uoModel] = ObjectData[index][oModel];
+   	UndoBuffer[CurrBufferIndex][uoX] = ObjectData[index][oX];
+   	UndoBuffer[CurrBufferIndex][uoY] = ObjectData[index][oY];
+   	UndoBuffer[CurrBufferIndex][uoZ] = ObjectData[index][oZ];
+   	UndoBuffer[CurrBufferIndex][uoRX] = ObjectData[index][oRX];
+   	UndoBuffer[CurrBufferIndex][uoRY] = ObjectData[index][oRY];
+   	UndoBuffer[CurrBufferIndex][uoRZ] = ObjectData[index][oRZ];
+   	UndoBuffer[CurrBufferIndex][uoDD] = ObjectData[index][oDD];
+	UndoBuffer[CurrBufferIndex][uousetext] = ObjectData[index][ousetext];
+   	UndoBuffer[CurrBufferIndex][uoFontFace] = ObjectData[index][oFontFace];
+   	UndoBuffer[CurrBufferIndex][uoFontSize] = ObjectData[index][oFontSize];
+   	UndoBuffer[CurrBufferIndex][uoFontBold] = ObjectData[index][oFontBold];
+   	UndoBuffer[CurrBufferIndex][uoFontColor] = ObjectData[index][oFontColor];
+   	UndoBuffer[CurrBufferIndex][uoBackColor] = ObjectData[index][oBackColor];
+   	UndoBuffer[CurrBufferIndex][uoAlignment] = ObjectData[index][oAlignment];
+   	UndoBuffer[CurrBufferIndex][uoTextFontSize] = ObjectData[index][oTextFontSize];
+	UndoBuffer[CurrBufferIndex][uoAttachedVehicle] = ObjectData[index][oAttachedVehicle];
+   	UndoBuffer[CurrBufferIndex][uoGroupTask] = group;
+
+	for(new i = 0; i < MAX_MATERIALS; i++)
+	{
+		UndoBuffer[CurrBufferIndex][uoTexIndex][i] = ObjectData[index][oTexIndex][i];
+		UndoBuffer[CurrBufferIndex][uoColorIndex][i] = ObjectData[index][oColorIndex][i];
+	}
+
+	format(UndoBuffer[CurrBufferIndex][uoNote], 64, "%s", ObjectData[index][oNote]);
+	format(UndoBuffer[CurrBufferIndex][uoObjectText], MAX_TEXT_LENGTH, "%s", ObjectData[index][oObjectText]);
+	
+	UndoBuffer[CurrBufferIndex][uoIndex] = index;
+	UndoBuffer[CurrBufferIndex][uoType] = type;
+	
+	if(++CurrBufferIndex == MAX_UNDO_BUFFER) CurrBufferIndex = 0;
+}
+
+UndoLastAction(lastgroup=0)
+{
+	if(CurrBufferIndex == 0)
+	{
+		if(UndoBuffer[MAX_UNDO_BUFFER-1][uoType] == UNDO_TYPE_UNUSED) return 0;
+		else CurrBufferIndex = MAX_UNDO_BUFFER;
+	}
+	
+	CurrBufferIndex--;
+
+	// Group deletion is complete
+	if(lastgroup > 0 && UndoBuffer[CurrBufferIndex][uoGroupTask] != lastgroup)
+	{
+		CurrBufferIndex++;
+		return 1;
+	}
+	else
+	{
+		switch(UndoBuffer[CurrBufferIndex][uoType])
+		{
+			case UNDO_TYPE_CREATED:
+			{
+				DeleteDynamicObject(UndoBuffer[CurrBufferIndex][uoIndex]);
+				// Grouped event keep undoing
+				ClearUndoInfo(CurrBufferIndex);
+	            if(UndoBuffer[CurrBufferIndex][uoGroupTask] > 0) UndoLastAction(UndoBuffer[CurrBufferIndex][uoGroupTask]);
+				return 1;
+			}
+			case UNDO_TYPE_EDIT, UNDO_TYPE_DELETED:
+			{
+				new index = UndoBuffer[CurrBufferIndex][uoIndex];
+
+			   	ObjectData[index][oGroup] = UndoBuffer[CurrBufferIndex][uoGroup];
+			   	ObjectData[index][oModel] = UndoBuffer[CurrBufferIndex][uoModel];
+			   	ObjectData[index][oX] = UndoBuffer[CurrBufferIndex][uoX];
+			   	ObjectData[index][oY] = UndoBuffer[CurrBufferIndex][uoY];
+			   	ObjectData[index][oZ] = UndoBuffer[CurrBufferIndex][uoZ];
+			   	ObjectData[index][oRX] = UndoBuffer[CurrBufferIndex][uoRX];
+			   	ObjectData[index][oRY] = UndoBuffer[CurrBufferIndex][uoRY];
+			   	ObjectData[index][oRZ] = UndoBuffer[CurrBufferIndex][uoRZ];
+			   	ObjectData[index][oDD] = UndoBuffer[CurrBufferIndex][uoDD];
+				ObjectData[index][ousetext] = UndoBuffer[CurrBufferIndex][uousetext];
+			   	ObjectData[index][oFontFace] = UndoBuffer[CurrBufferIndex][uoFontFace];
+			   	ObjectData[index][oFontSize] = UndoBuffer[CurrBufferIndex][uoFontSize];
+			   	ObjectData[index][oFontBold] = UndoBuffer[CurrBufferIndex][uoFontBold];
+			   	ObjectData[index][oFontColor] = UndoBuffer[CurrBufferIndex][uoFontColor];
+			   	ObjectData[index][oBackColor] = UndoBuffer[CurrBufferIndex][uoBackColor];
+			   	ObjectData[index][oAlignment] = UndoBuffer[CurrBufferIndex][uoAlignment];
+			   	ObjectData[index][oTextFontSize] = UndoBuffer[CurrBufferIndex][uoTextFontSize];
+			   	ObjectData[index][oAttachedVehicle] = UndoBuffer[CurrBufferIndex][uoAttachedVehicle];
+			   	format(ObjectData[index][oNote], 64, "%s", UndoBuffer[CurrBufferIndex][uoNote]);
+
+				for(new i = 0; i < MAX_MATERIALS; i++)
+				{
+					ObjectData[index][oTexIndex][i] = UndoBuffer[CurrBufferIndex][uoTexIndex][i];
+					ObjectData[index][oColorIndex][i] = UndoBuffer[CurrBufferIndex][uoColorIndex][i];
+				}
+				format(ObjectData[index][oObjectText], MAX_TEXT_LENGTH, "%s", UndoBuffer[CurrBufferIndex][uoObjectText]);
+
+				// Rebuild object
+			    if(UndoBuffer[CurrBufferIndex][uoType] == UNDO_TYPE_DELETED)
+				{
+					Iter_Add(Objects, index);
+					sqlite_InsertObject(index);
+				}
+				else DestroyDynamicObject(ObjectData[index][oID]);
+				
+				// Re-create object
+				ObjectData[index][oID] = CreateDynamicObject(ObjectData[index][oModel], ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ], ObjectData[index][oRX], ObjectData[index][oRY], ObjectData[index][oRZ], MapSetting[mVirtualWorld], MapSetting[mInterior], -1, 300.0);
+
+				Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[index][oID], E_STREAMER_DRAW_DISTANCE, 300.0);
+
+				// Update the streamer
+				foreach(new i : Player)
+				{
+				    if(IsPlayerInRangeOfPoint(i, 300.0, ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ])) Streamer_Update(i);
+				}
+
+				// Update the materials
+				UpdateMaterial(index);
+
+				// Update object text
+				UpdateObjectText(index);
+
+			   	if(ObjectData[index][oAttachedVehicle] > -1) UpdateAttachedVehicleObject(ObjectData[index][oAttachedVehicle], index, VEHICLE_REATTACH_UPDATE);
+
+	            UpdateObject3DText(index);
+
+	            // Save all data
+	            sqlite_UpdateObjectPos(index);
+				sqlite_SaveMaterialIndex(index);
+				sqlite_SaveColorIndex(index);
+				sqlite_SaveAllObjectText(index);
+
+				// Grouped event keep undoing
+				ClearUndoInfo(CurrBufferIndex);
+	            if(UndoBuffer[CurrBufferIndex][uoGroupTask] > 0) UndoLastAction(UndoBuffer[CurrBufferIndex][uoGroupTask]);
+				return 1;
+			}
+		}
+	}
+	return 0;
+}
+
+ClearAllUndoInfo()
+{
+	CurrBufferIndex = 0;
+
+	for(new i = 0; i < MAX_UNDO_BUFFER; i++) ClearUndoInfo(i);
+	return 1;
+}
+
+ClearUndoInfo(index)
+{
+   	UndoBuffer[index][uoGroup] = 0;
+   	UndoBuffer[index][uoModel] = 0;
+   	UndoBuffer[index][uoX] = 0.0;
+   	UndoBuffer[index][uoY] = 0.0;
+   	UndoBuffer[index][uoZ] = 0.0;
+   	UndoBuffer[index][uoRX] = 0.0;
+   	UndoBuffer[index][uoRY] = 0.0;
+   	UndoBuffer[index][uoRZ] = 0.0;
+   	UndoBuffer[index][uoDD] = 300.0;
+	UndoBuffer[index][uousetext] = 0;
+   	UndoBuffer[index][uoFontFace] = 0;
+   	UndoBuffer[index][uoFontSize] = 0;
+   	UndoBuffer[index][uoFontBold] = 0;
+   	UndoBuffer[index][uoFontColor] = 0;
+   	UndoBuffer[index][uoBackColor] = 0;
+   	UndoBuffer[index][uoAlignment] = 0;
+   	UndoBuffer[index][uoTextFontSize] = 20;
+   	
+	for(new i = 0; i < MAX_MATERIALS; i++)
+	{
+		UndoBuffer[index][uoTexIndex][i] = 0;
+		UndoBuffer[index][uoColorIndex][i] = 0;
+	}
+
+	format(UndoBuffer[index][uoObjectText], MAX_TEXT_LENGTH, "None");
+	UndoBuffer[index][uoNote][0] = EOS;
+
+	UndoBuffer[index][uoIndex] = 0;
+	UndoBuffer[index][uoType] = UNDO_TYPE_UNUSED;
+	return 1;
+}
+
+YCMD:undo(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Undo last action.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    NoEditingMode(playerid);
+	if(UndoLastAction()) SendClientMessage(playerid, STEALTH_GREEN, "Last action has been undone.");
+	else SendClientMessage(playerid, STEALTH_YELLOW, "No actions to undo.");
+	return 1;
+}

+ 2390 - 0
Texture-Studio-master/filterscripts/tstudio/validmodels.pwn

@@ -0,0 +1,2390 @@
+enum e_ObjectList
+{
+	oID,
+	oName[50],
+}
+
+new ObjectList[][e_ObjectList] =
+{
+	{320, "airtrain_vlo"},{321, "gun_dildo1"},{322, "gun_dildo2"},{323, "gun_vibe1"},{324, "gun_vibe2"},
+	{325, "flowera"},{326, "gun_cane"},{327, "gun_boxwee"},{328, "gun_boxbig"},{330, "cellphone"},
+	{331, "brassknuckle"},{333, "golfclub"},{334, "nitestick"},{335, "knifecur"},{336, "bat"},
+	{337, "shovel"},{338, "poolcue"},{339, "katana"},{341, "chnsaw"},{342, "grenade"},
+	{343, "teargas"},{344, "molotov"},{345, "missile"},{346, "colt45"},{347, "silenced"},
+	{348, "desert_eagle"},{349, "chromegun"},{350, "sawnoff"},{351, "shotgspa"},{352, "micro_uzi"},
+	{353, "mp5lng"},{354, "flare"},{355, "ak47"},{356, "m4"},{357, "cuntgun"},
+	{358, "sniper"},{359, "rocketla"},{360, "heatseek"},{361, "flame"},{362, "minigun"},
+	{363, "satchel"},{364, "bomb"},{365, "spraycan"},{366, "fire_ex"},{367, "camera"},
+	{368, "nvgoggles"},{369, "irgoggles"},{370, "jetpack"},{371, "gun_para"},{372, "tec9"},
+	{373, "armour"},{615, "veg_tree3"},{616, "veg_treea1"},{617, "veg_treeb1"},{618, "veg_treea3"},
+	{619, "veg_palwee03"},{620, "veg_palm04"},{621, "veg_palm02"},{622, "veg_palm03"},{623, "veg_palwee01"},
+	{624, "veg_palwee02"},{625, "veg_palmkb1"},{626, "veg_palmkb2"},{627, "veg_palmkb3"},{628, "veg_palmkb4"},
+	{629, "veg_palmkb5"},{630, "veg_palmkb8"},{631, "veg_palmkb9"},{632, "veg_palmkb7"},{633, "veg_palmkb10"},
+	{634, "veg_palmkbb11"},{635, "veg_fern_balcny_kb1"},{636, "veg_fern_balcny_kb2"},{637, "kb_planterbox"},{638, "kb_planter+bush"},
+	{639, "veg_ivy_balcny_kb3"},{640, "kb_planter+bush2"},{641, "veg_palmkb13"},{642, "kb_canopy_test"},{643, "kb_chr_tbl_test"},
+	{644, "pot_02"},{645, "veg_palmbig14"},{646, "veg_palmkb14"},{647, "new_bushsm"},{648, "veg_palm01"},
+	{649, "sjmpalm"},{650, "sjmcacti2"},{651, "sjmcacti1"},{652, "sjmpalmbig"},{653, "sjmcacti03"},
+	{654, "pinetree08"},{655, "pinetree06"},{656, "pinetree05"},{657, "pinetree02"},{658, "pinetree04"},
+	{659, "pinetree01"},{660, "pinetree03"},{661, "pinetree07"},{664, "firtree2"},{669, "sm_veg_tree4"},
+	{670, "sm_firtallded"},{671, "sm_bushytree"},{672, "sm_veg_tree5"},{673, "sm_bevhiltree"},{674, "sm_des_josh_lrg1"},
+	{675, "josh_ball"},{676, "sm_des_josh_sml1"},{677, "sm_des_agave1"},{678, "sm_des_agave2"},{679, "sm_des_cact_bsh"},
+	{680, "sm_des_josh_lrg2"},{681, "sm_des_josh_sm2"},{682, "sm_des_cactflr"},{683, "sm_fir_group"},{684, "sm_fir_log02"},
+	{685, "sm_fir_scabby"},{686, "sm_fir_dead"},{687, "sm_fir_"},{688, "sm_fir_scabg"},{689, "sm_fir_copse1"},
+	{690, "sm_fir_copse2"},{691, "sm_veg_tree4_big"},{692, "sm_des_bush1"},{693, "sm_redwood_"},{694, "sm_redwoodgrp"},
+	{695, "sm_fir_scabtg"},{696, "sm_fir_scabt"},{697, "sm_fir_tall"},{698, "sm_firtbshg"},{700, "sm_veg_tree6"},
+	{701, "sm_tumblewd48p"},{702, "sm_tumbleweed"},{703, "sm_veg_tree7_big"},{704, "bg_fir_dead"},{705, "sm_veg_tree7vbig"},
+	{706, "sm_vegvbbig"},{707, "sm_bushvbig"},{708, "sm_veg_tree4_vbig"},{709, "sm_vegvbbigbrn"},{710, "vgs_palm01"},
+	{711, "vgs_palm02"},{712, "vgs_palm03"},{713, "veg_bevtree1"},{714, "veg_bevtree2"},{715, "veg_bevtree3"},
+	{716, "sjmpalmbigpv"},{717, "sm_bevhiltreepv"},{718, "vgs_palm04"},{719, "veg_largefurs07"},{720, "veg_largefurs01"},
+	{721, "veg_largefurs02"},{722, "veg_largefurs03"},{723, "veg_largefurs04"},{724, "veg_largefurs05"},{725, "veg_largefurs06"},
+	{726, "tree_hipoly19"},{727, "tree_hipoly04"},{728, "tree_hipoly06"},{729, "tree_hipoly07"},{730, "tree_hipoly08"},
+	{731, "tree_hipoly09"},{732, "tree_hipoly10"},{733, "tree_hipoly11"},{734, "tree_hipoly14"},{735, "tree_hipoly09b"},
+	{736, "ceasertree01_lvs"},{737, "aw_streettree3"},{738, "aw_streettree2"},{739, "sjmpalmtall"},{740, "vgs_palmvtall"},
+	{741, "pot_01"},{742, "pot_03"},{743, "kb_pot_1"},{744, "sm_scrub_rock4"},{745, "sm_scrub_rock5"},
+	{746, "sm_scrub_rock2"},{747, "sm_scrub_rock3"},{748, "sm_scrb_grp1"},{749, "sm_scrb_column3"},{750, "sm_scrb_column2"},
+	{751, "sm_scrb_column1"},{752, "sm_cunt_rock1"},{753, "sm_descactiigrpb"},{754, "sm_des_cactiigrp"},{755, "sm_des_pcklypr3"},
+	{756, "sm_des_pcklypr2"},{757, "sm_des_pcklypr1"},{758, "sm_scrub_rock6"},{759, "sm_bush_large_1"},{760, "sm_bush_small_1"},
+	{761, "sm_drybrush_sm1"},{762, "new_bushtest"},{763, "Ash1_hi"},{764, "Cedar3_hi"},{765, "Cedar2_hi"},
+	{766, "Cedar1_hi"},{767, "Elmtreegrn_hi"},{768, "Elmtreegrn2_hi"},{769, "Locust_hi"},{770, "Pinebg_hi"},
+	{771, "sprucetree_hi"},{772, "Elmred_hi"},{773, "Elmdead_hi"},{774, "Elmsparse_hi"},{775, "Elmwee_hi"},
+	{776, "Hazelweetree_hi"},{777, "Hazeltall_hi"},{778, "Elmred_hism"},{779, "Pinebg_hism"},{780, "Elmsparse_hism"},
+	{781, "Elmwee_hism"},{782, "Elmtreegrn_hism"},{789, "hashburytree4sfs"},{790, "sm_fir_tallgroup"},{791, "vbg_fir_copse"},
+	{792, "aw_streettree1"},{800, "genVEG_bush07"},{801, "genVEG_bush01"},{802, "genVEG_bush08"},{803, "genVEG_bush09"},
+	{804, "genVEG_bush10"},{805, "genVEG_bush11"},{806, "genVEG_tallgrass"},{807, "p_rubble"},{808, "genVEG_bush12"},
+	{809, "genVEG_bush13"},{810, "genVEG_bush14"},{811, "genVEG_bush15"},{812, "genVEG_bush16"},{813, "genVEG_bush17"},
+	{814, "genVEG_bush18"},{815, "genVEG_bush19"},{816, "p_rubble03"},{817, "veg_Pflowers01"},{818, "genVEG_tallgrass02"},
+	{819, "genVEG_tallgrass03"},{820, "genVEG_tallgrass04"},{821, "genVEG_tallgrass05"},{822, "genVEG_tallgrass06"},{823, "genVEG_tallgrass07"},
+	{824, "genVEG_tallgrass08"},{825, "genVEG_bushy"},{826, "genVEG_tallgrass10"},{827, "genVEG_tallgrass11"},{828, "p_rubble2"},
+	{829, "DEAD_TREE_3"},{830, "DEAD_TREE_2"},{831, "DEAD_TREE_5"},{832, "DEAD_TREE_4"},{833, "DEAD_TREE_6"},
+	{834, "DEAD_TREE_7"},{835, "DEAD_TREE_8"},{836, "DEAD_TREE_10"},{837, "DEAD_TREE_1"},{838, "DEAD_TREE_9"},
+	{839, "DEAD_TREE_11"},{840, "DEAD_TREE_12"},{841, "DEAD_TREE_13"},{842, "DEAD_TREE_14"},{843, "DEAD_TREE_15"},
+	{844, "DEAD_TREE_16"},{845, "DEAD_TREE_17"},{846, "DEAD_TREE_18"},{847, "DEAD_TREE_19"},{848, "DEAD_TREE_20"},
+	{849, "CJ_urb_rub_3"},{850, "CJ_urb_rub_1"},{851, "CJ_urb_rub_2"},{852, "CJ_urb_rub_4"},{853, "CJ_urb_rub_5"},
+	{854, "CJ_urb_rub_3b"},{855, "genVEG_tallgrass01"},{856, "genVEG_tallgrass12"},{857, "procweegrs"},{858, "sand_josh2"},
+	{859, "sand_plant04"},{860, "sand_plant01"},{861, "sand_plant02"},{862, "sand_plant05"},{863, "sand_plant03"},
+	{864, "sand_combush1"},{865, "sand_combush02"},{866, "sand_combush03"},{867, "p_rubble04col"},{868, "p_rubble05col"},
+	{869, "veg_Pflowerswee"},{870, "veg_Pflowers2wee"},{871, "veg_procfpatchwee"},{872, "gen_tallgrsnew"},{873, "veg_procfpatch"},
+	{874, "veg_procgrasspatch"},{875, "veg_procfpatch01"},{876, "veg_Pflowers03"},{877, "veg_Pflowers04"},{878, "veg_Pflowers02"},
+	{879, "p_rubble04bcol"},{880, "p_rubble0bcol"},{881, "sm_fir_scabg_PO"},{882, "Ash_PO"},{883, "Cedar3_PO"},
+	{884, "Cedar2_PO"},{885, "Cedar1_PO"},{886, "Elmtreegrn_PO"},{887, "Elmtreegrn2_PO"},{888, "Locust_PO"},
+	{889, "Pinebg_PO"},{890, "Elmred_PO"},{891, "Elmdead_PO"},{892, "Hazelweetree_PO"},{893, "Elmredsm_PO"},
+	{894, "Elmsparsesm_PO"},{895, "Elmweesm_PO"},{896, "searock06"},{897, "searock01"},{898, "searock02"},
+	{899, "searock03"},{900, "searock04"},{901, "searock05"},{902, "Starfish"},{903, "seaweed"},
+	{904, "sand_josh1"},{905, "rockbrkq"},{906, "p_rubblebig"},{910, "BUST_CABINET_4"},{911, "BUST_CABINET_1"},
+	{912, "BUST_CABINET_2"},{913, "BUST_CABINET_3"},{914, "GRILL"},{915, "AIRCON_FAN"},{916, "FRUITCRATE2"},
+	{917, "FRUITCRATE1"},{918, "CJ_FLAME_Drum"},{919, "AIRCON"},{920, "Y_GENERATOR"},{921, "CJ_IND_LIGHT"},
+	{922, "Packing_carates1"},{923, "Packing_carates2"},{924, "FRUITCRATE3"},{925, "RACK2"},{926, "RUBBISH_BOX2"},
+	{927, "Piping_Detail"},{928, "RUBBISH_BOX1"},{929, "GENERATOR"},{930, "O2_Bottles"},{931, "RACK3"},
+	{932, "H_WHEELCHAIR"},{933, "CJ_CABLEROLL"},{934, "GENERATOR_BIG"},{935, "CJ_Drum"},{936, "CJ_DF_WORKTOP_2"},
+	{937, "CJ_DF_WORKTOP"},{938, "CJ_DF_LIGHT"},{939, "CJ_DF_UNIT"},{940, "CJ_DF_LIGHT_2"},{941, "CJ_DF_WORKTOP_3"},
+	{942, "CJ_DF_UNIT_2"},{943, "GENERATOR_LOW"},{944, "Packing_carates04"},{945, "WS_CF_LAMPS"},{946, "bskball_lax"},
+	{947, "bskballhub_lax01"},{948, "Plant_Pot_10"},{949, "Plant_Pot_4"},{950, "Plant_Pot_12"},{951, "CJ_VIEW_TELE2"},
+	{952, "GENERATOR_BIG_d"},{953, "CJ_OYSTER"},{954, "cj_horse_Shoe"},{955, "CJ_EXT_SPRUNK"},{956, "CJ_EXT_CANDY"},
+	{957, "CJ_LIGHT_FIT_EXT"},{958, "CJ_CHIP_MAKER"},{959, "CJ_CHIP_MAKER_BITS"},{960, "CJ_ARM_CRATE"},{961, "CJ_ARM_CRATE_top"},
+	{962, "CJ_T_TICKET_PED"},{963, "CJ_T_TICKET"},{964, "CJ_METAL_CRATE"},{966, "bar_gatebar01"},{967, "bar_gatebox01"},
+	{968, "barrierturn"},{969, "Electricgate"},{970, "fencesmallb"},{971, "subwaygate"},{972, "tunnelentrance"},
+	{973, "sub_roadbarrier"},{974, "tall_fence"},{975, "Columbiangate"},{976, "phils_compnd_gate"},{977, "newtowerdoor1"},
+	{978, "sub_roadright"},{979, "sub_roadleft"},{980, "airportgate"},{981, "helix_barrier"},{982, "fenceshit"},
+	{983, "fenceshit3"},{984, "fenceshit2"},{985, "gate_autoR"},{986, "gate_autoL"},{987, "elecfence_BAR"},
+	{988, "ws_apgate"},{989, "ac_apgate"},{990, "bar_barrier12"},{991, "bar_barriergate1"},{992, "bar_barrier10b"},
+	{993, "bar_barrier10"},{994, "lhouse_barrier2"},{995, "bar_barrier16"},{996, "lhouse_barrier1"},{997, "lhouse_barrier3"},
+	{998, "Gdyn_barrier17"},{1000, "spl_b_mar_m"},{1001, "spl_b_bab_m"},{1002, "spl_b_bar_m"},{1003, "spl_b_mab_m"},
+	{1004, "bnt_b_sc_m"},{1005, "bnt_b_sc_l"},{1006, "rf_b_sc_r"},{1007, "wg_l_b_ssk"},{1008, "nto_b_l"},
+	{1009, "nto_b_s"},{1010, "nto_b_tw"},{1011, "bnt_b_sc_p_m"},{1012, "bnt_b_sc_p_l"},{1013, "lgt_b_rspt"},
+	{1014, "spl_b_bar_l"},{1015, "spl_b_bbr_l"},{1016, "spl_b_bbr_m"},{1017, "wg_r_b_ssk"},{1018, "exh_b_ts"},
+	{1019, "exh_b_t"},{1020, "exh_b_l"},{1021, "exh_b_m"},{1022, "exh_b_s"},{1023, "spl_b_bbb_m"},
+	{1024, "lgt_b_sspt"},{1025, "wheel_or1"},{1026, "wg_l_a_s"},{1027, "wg_r_a_s"},{1028, "exh_a_s"},
+	{1029, "exh_c_s"},{1030, "wg_r_c_s"},{1031, "wg_l_c_s"},{1032, "rf_a_s"},{1033, "rf_c_s"},
+	{1034, "exh_a_l"},{1035, "rf_c_l"},{1036, "wg_l_a_l"},{1037, "exh_c_l"},{1038, "rf_a_l"},
+	{1039, "wg_l_c_l"},{1040, "wg_r_a_l"},{1041, "wg_r_c_l"},{1042, "wg_l_lr_br1"},{1043, "exh_lr_br2"},
+	{1044, "exh_lr_br1"},{1045, "exh_c_f"},{1046, "exh_a_f"},{1047, "wg_l_a_f"},{1048, "wg_l_c_f"},
+	{1049, "spl_a_f_r"},{1050, "spl_c_f_r"},{1051, "wg_r_a_f"},{1052, "wg_r_c_f"},{1053, "rf_c_f"},
+	{1054, "rf_a_f"},{1055, "rf_a_st"},{1056, "wg_l_a_st"},{1057, "wg_l_c_st"},{1058, "spl_a_st_r"},
+	{1059, "exh_c_st"},{1060, "spl_c_st_r"},{1061, "rf_c_st"},{1062, "wg_r_a_st"},{1063, "wg_r_c_st"},
+	{1064, "exh_a_st"},{1065, "exh_a_j"},{1066, "exh_c_j"},{1067, "rf_a_j"},{1068, "rf_c_j"},
+	{1069, "wg_l_a_j"},{1070, "wg_l_c_j"},{1071, "wg_r_a_j"},{1072, "wg_r_c_j"},{1073, "wheel_sr6"},
+	{1074, "wheel_sr3"},{1075, "wheel_sr2"},{1076, "wheel_lr4"},{1077, "wheel_lr1"},{1078, "wheel_lr3"},
+	{1079, "wheel_sr1"},{1080, "wheel_sr5"},{1081, "wheel_sr4"},{1082, "wheel_gn1"},{1083, "wheel_lr2"},
+	{1084, "wheel_lr5"},{1085, "wheel_gn2"},{1086, "stereo"},{1087, "hydralics"},{1088, "rf_a_u"},
+	{1089, "exh_c_u"},{1090, "wg_l_a_u"},{1091, "rf_c_u"},{1092, "exh_a_u"},{1093, "wg_l_c_u"},
+	{1094, "wg_r_a_u"},{1095, "wg_r_c_u"},{1096, "wheel_gn3"},{1097, "wheel_gn4"},{1098, "wheel_gn5"},
+	{1099, "wg_r_lr_br1"},{1100, "misc_c_lr_rem1"},{1101, "wg_r_lr_rem1"},{1102, "wg_r_lr_sv"},{1103, "rf_lr_bl2"},
+	{1104, "exh_lr_bl1"},{1105, "exh_lr_bl2"},{1106, "wg_l_lr_rem2"},{1107, "wg_r_lr_bl1"},{1108, "wg_l_lr_bl1"},
+	{1109, "bbb_lr_slv1"},{1110, "bbb_lr_slv2"},{1111, "bnt_lr_slv1"},{1112, "bnt_lr_slv2"},{1113, "exh_lr_slv1"},
+	{1114, "exh_lr_slv2"},{1115, "fbb_lr_slv1"},{1116, "fbb_lr_slv2"},{1117, "fbmp_lr_slv1"},{1118, "wg_l_lr_slv1"},
+	{1119, "wg_l_lr_slv2"},{1120, "wg_r_lr_slv1"},{1121, "wg_r_lr_slv2"},{1122, "wg_l_lr_rem1"},{1123, "misc_c_lr_rem2"},
+	{1124, "wg_r_lr_rem2"},{1125, "misc_c_lr_rem3"},{1126, "exh_lr_rem1"},{1127, "exh_lr_rem2"},{1128, "rf_lr_bl1"},
+	{1129, "exh_lr_sv1"},{1130, "rf_lr_sv1"},{1131, "rf_lr_sv2"},{1132, "exh_lr_sv2"},{1133, "wg_l_lr_sv"},
+	{1134, "wg_l_lr_t1"},{1135, "exh_lr_t2"},{1136, "exh_lr_t1"},{1137, "wg_r_lr_t1"},{1138, "spl_a_s_b"},
+	{1139, "spl_c_s_b"},{1140, "rbmp_c_s"},{1141, "rbmp_a_s"},{1142, "bntr_b_ov"},{1143, "bntl_b_ov"},
+	{1144, "bntr_b_sq"},{1145, "bntl_b_sq"},{1146, "spl_c_l_b"},{1147, "spl_a_l_b"},{1148, "rbmp_c_l"},
+	{1149, "rbmp_a_l"},{1150, "rbmp_a_f"},{1151, "rbmp_c_f"},{1152, "fbmp_c_f"},{1153, "fbmp_a_f"},
+	{1154, "rbmp_a_st"},{1155, "fbmp_a_st"},{1156, "rbmp_c_st"},{1157, "fbmp_c_st"},{1158, "spl_c_j_b"},
+	{1159, "rbmp_a_j"},{1160, "fbmp_a_j"},{1161, "rbmp_c_j"},{1162, "spl_a_j_b"},{1163, "spl_c_u_b"},
+	{1164, "spl_a_u_b"},{1165, "fbmp_c_u"},{1166, "fbmp_a_u"},{1167, "rbmp_c_u"},{1168, "rbmp_a_u"},
+	{1169, "fbmp_a_s"},{1170, "fbmp_c_s"},{1171, "fbmp_a_l"},{1172, "fbmp_c_l"},{1173, "fbmp_c_j"},
+	{1174, "fbmp_lr_br1"},{1175, "fbmp_lr_br2"},{1176, "rbmp_lr_br1"},{1177, "rbmp_lr_br2"},{1178, "rbmp_lr_rem2"},
+	{1179, "fbmp_lr_rem1"},{1180, "rbmp_lr_rem1"},{1181, "fbmp_lr_bl2"},{1182, "fbmp_lr_bl1"},{1183, "rbmp_lr_bl2"},
+	{1184, "rbmp_lr_bl1"},{1185, "fbmp_lr_rem2"},{1186, "rbmp_lr_sv2"},{1187, "rbmp_lr_sv1"},{1188, "fbmp_lr_sv2"},
+	{1189, "fbmp_lr_sv1"},{1190, "fbmp_lr_t2"},{1191, "fbmp_lr_t1"},{1192, "rbmp_lr_t1"},{1193, "rbmp_lr_t2"},
+	{1207, "tiny_rock"},{1208, "washer"},{1209, "vendmach"},{1210, "briefcase"},{1211, "fire_hydrant"},
+	{1212, "Money"},{1213, "mine"},{1214, "bollard"},{1215, "bollardlight"},{1216, "phonebooth1"},
+	{1217, "barrel2"},{1218, "barrel1"},{1219, "palette"},{1220, "cardboardbox2"},{1221, "cardboardbox4"},
+	{1222, "barrel3"},{1223, "lampost_coast"},{1224, "woodenbox"},{1225, "barrel4"},{1226, "lamppost3"},
+	{1227, "dump1"},{1228, "roadworkbarrier1"},{1229, "bussign1"},{1230, "cardboardbox"},{1231, "Streetlamp2"},
+	{1232, "Streetlamp1"},{1233, "noparkingsign1"},{1234, "phonesign"},{1235, "wastebin"},{1236, "rcyclbank01"},
+	{1237, "strtbarrier01"},{1238, "trafficcone"},{1239, "info"},{1240, "health"},{1241, "adrenaline"},
+	{1242, "bodyarmour"},{1243, "bouy"},{1244, "petrolpump"},{1245, "newramp"},{1246, "line"},
+	{1247, "bribe"},{1248, "bonus"},{1249, "faketarget"},{1250, "smashbarpost"},{1251, "smashbar"},
+	{1252, "barrelexpos"},{1253, "camerapickup"},{1254, "killfrenzy"},{1255, "lounger"},{1256, "Stonebench1"},
+	{1257, "bustopm"},{1258, "Mpostbox1"},{1259, "BillBd1"},{1260, "BillBd3"},{1262, "MTraffic4"},
+	{1263, "MTraffic3"},{1264, "BlackBag1"},{1265, "BlackBag2"},{1267, "BillBd2"},{1269, "parkingmeter"},
+	{1270, "parkingmeterg"},{1271, "gunbox"},{1272, "property_locked"},{1273, "property_fsale"},{1274, "bigdollar"},
+	{1275, "clothesp"},{1276, "package1"},{1277, "pickupsave"},{1278, "sub_floodlite"},{1279, "craigpackage"},
+	{1280, "parkbench1"},{1281, "parktable1"},{1282, "Barrierm"},{1283, "MTraffic1"},{1284, "MTraffic2"},
+	{1285, "newstandnew5"},{1286, "newstandnew4"},{1287, "newstandnew3"},{1288, "newstandnew2"},{1289, "newstandnew1"},
+	{1290, "lamppost2"},{1291, "postbox1"},{1292, "postbox1_d"},{1293, "papermachn01"},{1294, "mlamppost"},
+	{1295, "doublestreetlght1"},{1296, "doublestreetlght1_d"},{1297, "lamppost1"},{1298, "lamppost1_d"},{1299, "smashboxpile"},
+	{1300, "bin1"},{1301, "heli_magnet"},{1302, "vendmachfd"},{1303, "dyn_quarryrock03"},{1304, "dyn_quarryrock02"},
+	{1305, "dyn_quarryrock01"},{1306, "tlgraphpolegen"},{1307, "telgrphpoleall"},{1308, "telgrphpole02"},{1309, "BigBillBrd"},
+	{1310, "pikupparachute"},{1311, "gen_roadsign1"},{1312, "gen_roadsign2"},{1313, "killfrenzy2plyr"},{1314, "twoplayer"},
+	{1315, "trafficlight1"},{1316, "hoop"},{1317, "Cylinder"},{1318, "arrow"},{1319, "ws_ref_bollard"},
+	{1320, "ws_roadwarning_05"},{1321, "ws_roadwarning_01"},{1322, "ws_roadwarning_02"},{1323, "ws_roadwarning_03"},{1324, "ws_roadwarning_04"},
+	{1327, "junk_tyre"},{1328, "BinNt10_LA"},{1329, "BinNt13_LA"},{1330, "BinNt14_LA"},{1331, "BinNt01_LA"},
+	{1332, "BinNt02_LA"},{1333, "BinNt03_LA"},{1334, "BinNt04_LA"},{1335, "BinNt05_LA"},{1336, "BinNt06_LA"},
+	{1337, "BinNt07_LA"},{1338, "BinNt08_LA"},{1339, "BinNt09_LA"},{1340, "chillidogcart"},{1341, "icescart_prop"},
+	{1342, "noodlecart_prop"},{1343, "CJ_Dumpster3"},{1344, "CJ_Dumpster2"},{1345, "CJ_Dumpster"},{1346, "CJ_PHONE_KIOSK2"},
+	{1347, "CJ_WASTEBIN"},{1348, "CJ_O2Tanks"},{1349, "CJ_SHTROLLY"},{1350, "CJ_TRAFFIC_LIGHT4"},{1351, "CJ_TRAFFIC_LIGHT5"},
+	{1352, "CJ_TRAFFIC_LIGHT3"},{1353, "CJ_AIRCON"},{1354, "CJ_AIRCON_FAN"},{1355, "CJ_FRUITCRATE1"},{1356, "CJ_FRUITCRATE2"},
+	{1357, "CJ_FRUITCRATE3"},{1358, "CJ_SKIP_Rubbish"},{1359, "CJ_BIN1"},{1360, "CJ_BUSH_PROP3"},{1361, "CJ_BUSH_PROP2"},
+	{1362, "CJ_FIREBIN_(L0)"},{1363, "CJ_PHONE_KIOSK"},{1364, "CJ_BUSH_PROP"},{1365, "CJ_BIG_SKIP1"},{1366, "CJ_FIREHYDRANT"},
+	{1367, "CJ_POSTBOX"},{1368, "CJ_BLOCKER_BENCH"},{1369, "CJ_WHEELCHAIR1"},{1370, "CJ_FLAME_Drum_(F)"},{1371, "CJ_HIPPO_BIN"},
+	{1372, "CJ_Dump2_LOW"},{1373, "traincross1"},{1374, "traincross2"},{1375, "tramstop_SF"},{1376, "ContainerCrane_03"},
+	{1377, "ContainerCrane_01"},{1378, "ContainerCrane_04"},{1379, "MagnoCrane_02"},{1380, "MagnoCrane_01"},{1381, "MagnoCrane_04"},
+	{1382, "MagnoCrane_03"},{1383, "TwrCrane_M_04"},{1384, "TwrCrane_M_01"},{1385, "TwrCrane_M_02"},{1386, "ContainerCrane_02"},
+	{1387, "TwrCrane_M_03"},{1388, "TwrCrane_S_04"},{1389, "TwrCrane_S_01"},{1390, "TwrCrane_S_02"},{1391, "TwrCrane_S_03"},
+	{1392, "TwrCrane_L_04"},{1393, "TwrCrane_L_01"},{1394, "TwrCrane_L_02"},{1395, "TwrCrane_L_03"},{1407, "DYN_F_R_WOOD_1"},
+	{1408, "DYN_F_WOOD_2"},{1409, "CJ_Dump1_LOW"},{1410, "DYN_F_R_WOOD_1b"},{1411, "DYN_MESH_1"},{1412, "DYN_MESH_2"},
+	{1413, "DYN_MESH_3"},{1414, "DYN_COR_SHEET"},{1415, "DYN_DUMPSTER"},{1416, "DYN_UNIT"},{1417, "DYN_CUPBOARD"},
+	{1418, "DYN_F_WOOD_3"},{1419, "DYN_F_IRON_1"},{1420, "DYN_AIRCON"},{1421, "DYN_BOXES"},{1422, "DYN_ROADBARRIER_5"},
+	{1423, "DYN_ROADBARRIER_4"},{1424, "DYN_ROADBARRIER_2"},{1425, "DYN_ROADBARRIER_3"},{1426, "DYN_SCAFFOLD"},{1427, "CJ_ROADBARRIER"},
+	{1428, "DYN_LADDER"},{1429, "DYN_TV"},{1430, "CJ_Dump1_LOW01"},{1431, "DYN_BOX_PILE"},{1432, "DYN_TABLE_2"},
+	{1433, "DYN_TABLE_1"},{1434, "DYN_ROADBARRIER_5a"},{1435, "DYN_ROADBARRIER_5b"},{1436, "DYN_SCAFFOLD_2"},{1437, "DYN_LADDER_2"},
+	{1438, "DYN_BOX_PILE_2"},{1439, "DYN_DUMPSTER_1"},{1440, "DYN_BOX_PILE_3"},{1441, "DYN_BOX_PILE_4"},{1442, "DYN_FIREBIN0"},
+	{1443, "DYN_STREET_SIGN_1"},{1444, "DYN_STREET_SIGN_2"},{1445, "DYN_FF_STAND"},{1446, "DYN_F_R_WOOD_4"},{1447, "DYN_MESH_4"},
+	{1448, "DYN_CRATE_1"},{1449, "DYN_CRATE_2"},{1450, "DYN_CRATE_3"},{1451, "DYN_COUP"},{1452, "DYN_OUTHOUSE"},
+	{1453, "DYN_H_BALE1"},{1454, "DYN_H_BALE2"},{1455, "DYN_GLASS"},{1456, "DYN_F_R_WOOD_2"},{1457, "DYN_OUTHOUSE_2"},
+	{1458, "DYN_CART"},{1459, "DYN_ROADBARRIER_6"},{1460, "DYN_F_R_WOOD_3"},{1461, "DYN_LIFE_P"},{1462, "DYN_woodpile"},
+	{1463, "DYN_WOODPILE2"},{1464, "DYN_SCAFFOLD_3"},{1465, "DYN_SCAFFOLD_4"},{1466, "DYN_SCAFFOLD_5"},{1467, "DYN_SCAFFOLD_3b"},
+	{1468, "DYN_MESH_05"},{1469, "DYN_SCAFFOLD_4b"},{1470, "DYN_PORCH_3"},{1471, "DYN_PORCH_2"},{1472, "DYN_PORCH_1"},
+	{1473, "DYN_PORCH_1b"},{1474, "DYN_PORCH_2b"},{1475, "DYN_PORCH_3b"},{1476, "DYN_PORCH_4"},{1477, "DYN_PORCH_4b"},
+	{1478, "DYN_post_box"},{1479, "DYN_GAZ_1"},{1480, "DYN_GAZ_2"},{1481, "DYN_BAR_B_Q"},{1482, "DYN_GARRAGE1"},
+	{1483, "DYN_GARRAGE2"},{1484, "CJ_BEAR_BOTTLE"},{1485, "CJ_CIGGY"},{1486, "DYN_BEER_1"},{1487, "DYN_WINE_1"},
+	{1488, "DYN_SPIRIT_1"},{1489, "DYN_SALE_POST"},{1490, "tag_01"},{1491, "Gen_doorINT01"},{1492, "Gen_doorINT02"},
+	{1493, "Gen_doorSHOP01"},{1494, "Gen_doorINT03"},{1495, "Gen_doorEXT01"},{1496, "Gen_doorSHOP02"},{1497, "Gen_doorEXT02"},
+	{1498, "Gen_doorEXT03"},{1499, "Gen_doorINT05"},{1500, "Gen_doorEXT05"},{1501, "Gen_doorEXT04"},{1502, "Gen_doorINT04"},
+	{1503, "DYN_RAMP"},{1504, "Gen_doorEXT06"},{1505, "Gen_doorEXT07"},{1506, "Gen_doorEXT08"},{1507, "Gen_doorEXT09"},
+	{1508, "DYN_GARAGE_DOOR"},{1509, "DYN_WINE_3"},{1510, "DYN_ASHTRY"},{1511, "DYN_SPIRIT_02"},{1512, "DYN_WINE_03"},
+	{1513, "DYN_SWEETIE_TRAY"},{1514, "DYN_FF_TILL"},{1515, "DYN_SLOT_PROP"},{1516, "DYN_TABLE_03"},{1517, "DYN_WINE_BREAK"},
+	{1518, "DYN_TV_2"},{1519, "DYN_SCAFF_cover"},{1520, "DYN_WINE_BOUNCE"},{1521, "DYN_SCAFF2_cover"},{1522, "Gen_doorSHOP3"},
+	{1523, "Gen_doorEXT10"},{1524, "tag_front"},{1525, "tag_kilo"},{1526, "tag_rifa"},{1527, "tag_rollin"},
+	{1528, "tag_seville"},{1529, "tag_temple"},{1530, "tag_vagos"},{1531, "tag_azteca"},{1532, "Gen_doorEXT11"},
+	{1533, "Gen_doorEXT12"},{1534, "CJ_WIN_POP2"},{1535, "Gen_doorEXT14"},{1536, "Gen_doorEXT15"},{1537, "Gen_doorEXT16"},
+	{1538, "sl_dtdoor1"},{1539, "lamotsig1_LACJ"},{1540, "vegasmotsignCJ"},{1541, "CJ_BEER_TAPS_1"},{1542, "CJ_BEER_TAPS_2"},
+	{1543, "CJ_BEER_B_2"},{1544, "CJ_BEER_B_1"},{1545, "CJ_B_OPTIC1"},{1546, "CJ_PINT_GLASS"},{1547, "CJ_B_PISH_T"},
+	{1548, "CJ_DRIP_TRAY"},{1549, "CJ_ASHTRAY_b"},{1550, "CJ_MONEY_BAG"},{1551, "DYN_WINE_BIG"},{1552, "vegasmashfnce"},
+	{1553, "vegasmashfnce_Gate"},{1554, "CJ_WATER_BARRIER"},{1555, "Gen_doorEXT17"},{1556, "Gen_doorEXT18"},{1557, "Gen_doorEXT19"},
+	{1558, "CJ_CARDBRD_PICKUP"},{1559, "diamond_3"},{1560, "Gen_doorEXT7_11L"},{1561, "Gen_doorEXT7_11R"},{1562, "ab_jetseat"},
+	{1563, "ab_jetseat_hrest"},{1564, "ab_jetLiteGlass"},{1565, "ab_jetLite"},{1566, "CJ_WS_DOOR"},{1567, "Gen_wardrobe"},
+	{1568, "chinalamp_sf"},{1569, "ADAM_V_DOOR"},{1570, "CJ_NOODLE_3"},{1571, "CJ_NOODLE_1"},{1572, "CJ_AIR_TROLLY"},
+	{1574, "trashcan"},{1575, "drug_white"},{1576, "drug_orange"},{1577, "drug_yellow"},{1578, "drug_green"},
+	{1579, "drug_blue"},{1580, "drug_red"},{1581, "keycard"},{1582, "pizzabox"},{1583, "tar_gun2"},
+	{1584, "tar_gun1"},{1585, "tar_civ2"},{1586, "tar_civ1"},{1587, "tar_frame"},{1588, "tar_top"},
+	{1589, "tar_upright"},{1590, "tar_upleft"},{1591, "tar_downleft"},{1592, "tar_downright"},{1593, "plc_stinger"},
+	{1594, "chairsntable"},{1595, "satdishbig"},{1596, "satdishsml"},{1597, "cntrlrsac1"},{1598, "beachball"},
+	{1599, "fish1single"},{1600, "fish2single"},{1601, "fish3s"},{1602, "jellyfish"},{1603, "jellyfish01"},
+	{1604, "fish3single"},{1605, "fish1s"},{1606, "fish2s"},{1607, "dolphin"},{1608, "shark"},
+	{1609, "turtle"},{1610, "sandcastle1"},{1611, "sandcastle2"},{1612, "submarine"},{1613, "nt_firehose_01"},
+	{1614, "nt_alarm1_01"},{1615, "nt_alarm2_01"},{1616, "nt_securecam1_01"},{1617, "nt_aircon1_01"},{1618, "nt_aircon1_02"},
+	{1619, "nt_vent1_01"},{1620, "nt_vent2_01"},{1621, "nt_vent3_01"},{1622, "nt_securecam2_01"},{1623, "nt_aircon3_01"},
+	{1624, "nt_cablebox1_01"},{1625, "nt_cablebox2_01"},{1626, "nt_cablebox3_01"},{1627, "nt_alarm3_01"},{1628, "nt_cablebox4_01"},
+	{1629, "nt_cablebox5_01"},{1630, "nt_cablebox6_01"},{1631, "waterjump2"},{1632, "waterjump1"},{1633, "landjump"},
+	{1634, "landjump2"},{1635, "nt_aircon1dbl"},{1636, "rcbomb"},{1637, "od_pat_hutb"},{1638, "od_pat_hut"},
+	{1639, "od_vbnet"},{1640, "beachtowel04"},{1641, "beachtowel03"},{1642, "beachtowel02"},{1643, "beachtowel01"},
+	{1644, "lotion"},{1645, "lounge_wood_up"},{1646, "lounge_towel_up"},{1647, "lounge_wood_dn"},{1648, "od_groyne01"},
+	{1649, "wglasssmash"},{1650, "petrolcanm"},{1651, "od_copwindows"},{1652, "fencehaiti"},{1653, "fencehaitism"},
+	{1654, "dynamite"},{1655, "waterjumpx2"},{1656, "Esc_step"},{1657, "htl_fan_rotate_nt"},{1658, "htl_fan_static_nt"},
+	{1659, "htl_fan_static_dy"},{1660, "ramp"},{1661, "htl_fan_rotate_dy"},{1662, "nt_roadblockCI"},{1663, "swivelchair_B"},
+	{1664, "propwinebotl2"},{1665, "propashtray1"},{1666, "propbeerglass1"},{1667, "propwineglass1"},{1668, "propvodkabotl1"},
+	{1669, "propwinebotl1"},{1670, "propcollecttable"},{1671, "swivelchair_A"},{1672, "Gasgrenade"},{1673, "roadsign"},
+	{1675, "wshxrefhse1"},{1676, "washgaspump"},{1677, "wshxrefhse2"},{1679, "chairsntableml"},{1681, "ap_learjet1_01"},
+	{1682, "ap_radar1_01"},{1683, "ap_jumbo_01"},{1684, "portakabin"},{1685, "blockpallet"},{1686, "petrolpumpnew"},
+	{1687, "gen_roofbit1"},{1688, "gen_roofbit2"},{1689, "gen_roofbit3"},{1690, "gen_roofbit4"},{1691, "gen_roofbit5"},
+	{1692, "roofstuff18"},{1693, "roofstuff12"},{1694, "roofstuff13"},{1695, "roofstuff14"},{1696, "roofstuff15"},
+	{1697, "roofstuff16"},{1698, "Esc_step8"},{1700, "kb_bed_test1"},{1701, "kb_bed_test2"},{1702, "kb_couch06"},
+	{1703, "kb_couch02"},{1704, "kb_chair03"},{1705, "kb_chair04"},{1706, "kb_couch03"},{1707, "kb_couch01"},
+	{1708, "kb_chair02"},{1709, "kb_couch08"},{1710, "kb_couch07"},{1711, "kb_chair01"},{1712, "kb_couch05"},
+	{1713, "kb_couch04"},{1714, "kb_swivelchair1"},{1715, "kb_swivelchair2"},{1716, "kb_slot_stool"},{1717, "telly_low_test"},
+	{1718, "snesish"},{1719, "LOW_CONSOLE"},{1720, "rest_chair"},{1721, "est_chair1"},{1722, "off_chairnu"},
+	{1723, "mrk_seating1"},{1724, "mrk_seating1b"},{1725, "mrk_bed1"},{1726, "mrk_seating2"},{1727, "mrk_seating2b"},
+	{1728, "mrk_seating3"},{1729, "mrk_seating3b"},{1730, "SWANK_CABINET_3"},{1731, "CJ_MLIGHT3"},{1732, "CJ_Juke_Box"},
+	{1733, "CJ_WASHINGMAC"},{1734, "CJ_MLIGHT2"},{1735, "CJ_EASYCHAIR1"},{1736, "CJ_Stags_head"},{1737, "MED_DINNING_5"},
+	{1738, "CJ_Radiator_old"},{1739, "SWANK_DIN_CHAIR_5"},{1740, "LOW_CABINET_3"},{1741, "LOW_CABINET_1"},{1742, "Med_BOOKSHELF"},
+	{1743, "MED_CABINET_3"},{1744, "MED_SHELF"},{1745, "MED_BED_3"},{1746, "SWANK_1_FootStool"},{1747, "LOW_TV_2"},
+	{1748, "LOW_TV_3"},{1749, "MED_TV_3"},{1750, "MED_TV_2"},{1751, "MED_TV_4"},{1752, "SWANK_TV_3"},
+	{1753, "SWANK_COUCH_1"},{1754, "SWANK_SINGLE_1"},{1755, "MED_SINGLE_2"},{1756, "LOW_COUCH_4"},{1757, "LOW_COUCH_5"},
+	{1758, "LOW_SINGLE_4"},{1759, "LOW_SINGLE_1"},{1760, "MED_COUCH_2"},{1761, "SWANK_COUCH_2"},{1762, "SWANK_SINGLE_2"},
+	{1763, "LOW_COUCH_1"},{1764, "LOW_COUCH_2"},{1765, "LOW_SINGLE_2"},{1766, "MED_COUCH_1"},{1767, "MED_SINGLE_1"},
+	{1768, "LOW_COUCH_3"},{1769, "LOW_SINGLE_3"},{1770, "LOW_DINNING_2"},{1771, "CJ_bunk_bed1"},{1772, "CJ_HOT_DOG1"},
+	{1773, "CJ_COOKER2"},{1774, "CJ_Monketshopsign"},{1775, "CJ_SPRUNK1"},{1776, "CJ_CANDYVENDOR"},{1777, "CJ_COOKER1"},
+	{1778, "CJ_MOP_PAIL"},{1779, "CJ_TICKETMACHINE"},{1780, "CJ_THIN_FRIGE"},{1781, "MED_TV_1"},{1782, "MED_VIDEO_2"},
+	{1783, "SWANK_VIDEO_2"},{1784, "LOW_VIDEO_2"},{1785, "LOW_VIDEO_1"},{1786, "SWANK_TV_4"},{1787, "MED_VIDEO_1"},
+	{1788, "SWANK_VIDEO_1"},{1789, "CJ_chambermaid"},{1790, "SWANK_VIDEO_3"},{1791, "SWANK_TV_2"},{1792, "SWANK_TV_1"},
+	{1793, "LOW_BED_2"},{1794, "LOW_BED_3"},{1795, "SWANK_BED_2"},{1796, "LOW_BED_4"},{1797, "SWANK_BED_3"},
+	{1798, "SWANK_BED_1"},{1799, "MED_BED_4"},{1800, "LOW_BED_1"},{1801, "SWANK_BED_4"},{1802, "MED_BED_2"},
+	{1803, "MED_BED_7"},{1804, "MED_BED_1"},{1805, "CJ_BARSTOOL"},{1806, "MED_OFFICE_CHAIR"},{1807, "CJ_MEDIUMPOTS1"},
+	{1808, "CJ_WATERCOOLER2"},{1809, "MED_HI_FI"},{1810, "CJ_FOLDCHAIR"},{1811, "MED_DIN_CHAIR_5"},{1812, "LOW_BED_5"},
+	{1813, "COFFEE_LOW_5"},{1814, "COFFEE_MED_1"},{1815, "COFFEE_LOW_2"},{1816, "COFFEE_LOW_3"},{1817, "COFFEE_MED_2"},
+	{1818, "COFFEE_SWANK_2"},{1819, "COFFEE_SWANK_4"},{1820, "COFFEE_LOW_4"},{1821, "COFFEE_LOW_1"},{1822, "COFFEE_SWANK_6"},
+	{1823, "COFFEE_MED_5"},{1824, "craps_table"},{1825, "kb_table_chairs1"},{1826, "kb_table1"},{1827, "man_sdr_tables"},
+	{1828, "man_sdr_rug"},{1829, "man_safenew"},{1830, "kb_bandit1"},{1831, "kb_bandit2"},{1832, "kb_bandit3"},
+	{1833, "kb_bandit4"},{1834, "kb_bandit6"},{1835, "kb_bandit5"},{1836, "kb_bandit7"},{1837, "kb_bandit9"},
+	{1838, "kb_bandit11"},{1839, "k_hifi_1"},{1840, "speaker_2"},{1841, "speaker_1"},{1842, "shop_shelf05"},
+	{1843, "shop_shelf02"},{1844, "shop_shelf03"},{1845, "shop_shelf10"},{1846, "shop_shelf04"},{1847, "shop_shelf06"},
+	{1848, "shop_shelf07"},{1849, "shop_shelf09"},{1850, "shop_shelf08"},{1851, "dice1"},{1852, "dice02"},
+	{1853, "pkr_chp_hi04"},{1854, "pkr_chp_hi05"},{1855, "pkr_chp_hi03"},{1856, "pkr_chp_hi02"},{1857, "pkr_chp_hi01"},
+	{1858, "pkr_chp_hi06"},{1859, "pkr_chp_med04"},{1860, "pkr_chp_med06"},{1861, "pkr_chp_med05"},{1862, "pkr_chp_med03"},
+	{1863, "pkr_chp_med02"},{1864, "pkr_chp_med01"},{1865, "pkr_chplo06"},{1866, "pkr_chplo05"},{1867, "pkr_chplo04"},
+	{1868, "pkr_chplo03"},{1869, "pkr_chplo02"},{1870, "pkr_chplo01"},{1871, "pkr_chp_vlo04"},{1872, "pkr_chp_vlo01"},
+	{1873, "pkr_chp_vlo02"},{1874, "pkr_chp_vlo03"},{1875, "pkr_chp_vlo05"},{1876, "pkr_chp_vlo06"},{1877, "chip_stack02"},
+	{1878, "chip_stack03"},{1879, "chip_stack04"},{1880, "chip_stack05"},{1881, "chip_stack06"},{1882, "chip_stack01"},
+	{1883, "shop_shelf01"},{1884, "shop_dblshlf"},{1885, "shop_baskets"},{1886, "shop_sec_cam"},{1887, "shop_shelf11"},
+	{1888, "shop_shelf12"},{1889, "shop_dblshlf01"},{1890, "shop_dblshlf02"},{1891, "shop_dblshlf03"},{1892, "security_gatsh"},
+	{1893, "shoplight1"},{1894, "garys_luv_ramp"},{1895, "wheel_o_fortune"},{1896, "wheel_table"},{1897, "wheel_support"},
+	{1898, "clicker"},{1899, "pkr_chp_vlo07"},{1900, "pkr_chplo07"},{1901, "chip_stack07"},{1902, "chip_stack08"},
+	{1903, "chip_stack09"},{1904, "chip_stack10"},{1905, "pkr_chplo08"},{1906, "pkr_chplo09"},{1907, "pkr_chplo10"},
+	{1908, "pkr_chplo11"},{1909, "pkr_chp_vlo08"},{1910, "pkr_chp_vlo09"},{1911, "chip_stack11"},{1912, "pkr_chp_vlo10"},
+	{1913, "pkr_chp_vlo11"},{1914, "pkr_chp_vlo12"},{1915, "pkr_chp_med07"},{1916, "pkr_chp_med08"},{1917, "pkr_chp_med09"},
+	{1918, "pkr_chp_med10"},{1919, "pkr_chplo12"},{1920, "pkr_chp_med11"},{1921, "chip_stack12"},{1922, "pkr_chp_med12"},
+	{1923, "pkr_chp_hi07"},{1924, "pkr_chp_hi08"},{1925, "pkr_chp_hi09"},{1926, "pkr_chp_hi10"},{1927, "pkr_chp_hi11"},
+	{1928, "pkr_chp_hi12"},{1929, "wheel_wee01"},{1930, "chip_stack13"},{1931, "chip_stack14"},{1932, "chip_stack15"},
+	{1933, "chip_stack16"},{1934, "pkr_chp_hi13"},{1935, "pkr_chp_hi14"},{1936, "pkr_chp_hi15"},{1937, "pkr_chp_hi16"},
+	{1938, "pkr_chp_hi17"},{1939, "pkr_chp_hi18"},{1940, "chip_stack18"},{1941, "chip_stack17"},{1942, "kg50"},
+	{1943, "kg20"},{1944, "kg10"},{1945, "kg5"},{1946, "baskt_ball_hi"},{1947, "CHIPS_TEMP"},
+	{1948, "slot_4chris"},{1949, "barrier_4andy"},{1950, "kb_beer"},{1951, "kb_beer01"},{1952, "turn_arm_R"},
+	{1953, "turn_plater_R"},{1954, "turn_table_R"},{1955, "turn_armL"},{1956, "turn_platerL"},{1957, "turn_tableL"},
+	{1958, "mxr_mix_body"},{1959, "shop_till"},{1960, "record2"},{1961, "record3"},{1962, "record1"},
+	{1963, "est_desk"},{1964, "est_dsk_stuf"},{1965, "imcmptrkdrl_LAS"},{1966, "imcompmovedr1_las"},{1967, "imcmptrkdrr_LAS"},
+	{1968, "dinerseat_2"},{1969, "dinerseat_3"},{1970, "dinerseat_1"},{1971, "kb_flykiller"},{1972, "kb_cuntopdisp2"},
+	{1973, "kb_cuntopdisp1"},{1974, "kb_golfball"},{1975, "e_test"},{1976, "w_test"},{1977, "vendin3"},
+	{1978, "roulette_tbl"},{1979, "wheel_wee"},{1980, "wilshire7dr1_law"},{1981, "shlf1_cab_mid"},{1982, "shlf2_cab_mid"},
+	{1983, "shlf4_cab_mid"},{1984, "shlf5_till"},{1985, "punchbagnu"},{1986, "shlf2_cab_rt"},{1987, "shlf4_cablft"},
+	{1988, "shlf4_cab_rt"},{1989, "kb_coolerlft2"},{1990, "kb_coolerlft"},{1991, "shlf1_cablft1"},{1992, "shlf2_cablft"},
+	{1993, "shlf3_cab_mid2"},{1994, "shlf3_cablft"},{1995, "shlf3_cab_rt"},{1996, "shlf1_cab_rt"},{1997, "hos_trolley"},
+	{1998, "officedesk1l"},{1999, "officedesk2"},{2000, "filing_cab_nu"},{2001, "nu_plant_ofc"},{2002, "water_coolnu"},
+	{2003, "cr_safe_body"},{2004, "cr_safe_door"},{2005, "cr_safe_cash"},{2006, "cr_safe_dial"},{2007, "filing_cab_nu01"},
+	{2008, "officedesk1"},{2009, "officedesk2l"},{2010, "nu_plant3_ofc"},{2011, "nu_plant2_ofc"},{2012, "shop_shelf13"},
+	{2013, "kit_cab_sink"},{2014, "kit_cab_mid"},{2015, "kit_cab_rght"},{2016, "kit_cab_lft"},{2017, "kit_cab_cookr"},
+	{2018, "kit_cab_washin"},{2019, "kit_cab_frdg"},{2020, "mrk_sidebrd1"},{2021, "mrk_bdsdecab1"},{2022, "kit_cab_crnr"},
+	{2023, "mrk_stnd_lmp"},{2024, "mrk_liv_tble"},{2025, "mrk_wrobe_tmp"},{2026, "mrk_shade_tmp"},{2027, "dinerseat_4"},
+	{2028, "SWANK_CONSOLE"},{2029, "SWANK_DINNING_1"},{2030, "MED_DINNING_1"},{2031, "MED_DINNING_3"},{2032, "MED_DINNING_2"},
+	{2033, "CJ_sawnoff2"},{2034, "CJ_sawnoff"},{2035, "CJ_M16"},{2036, "CJ_psg1"},{2037, "CJ_PISTOL_AMMO"},
+	{2038, "AMMO_BOX_S2"},{2039, "AMMO_BOX_S1"},{2040, "AMMO_BOX_M1"},{2041, "AMMO_BOX_M2"},{2042, "AMMO_BOX_M3"},
+	{2043, "AMMO_BOX_M4"},{2044, "CJ_MP5K"},{2045, "CJ_BBAT_NAILS"},{2046, "CJ_GUNCUPBOARD"},{2047, "CJ_FLAG1"},
+	{2048, "CJ_FLAG2"},{2049, "CJ_TARGET1"},{2050, "CJ_TARGET2"},{2051, "CJ_TARGET4"},{2052, "CJ_TOMMY_HAT"},
+	{2053, "CJ_JERRY_HAT"},{2054, "CJ_CAPT_HAT"},{2055, "CJ_TARGET5"},{2056, "CJ_TARGET6"},{2057, "Flame_tins"},
+	{2058, "CJ_Gun_docs"},{2059, "CJ_GUNSTUFF1"},{2060, "CJ_SANDBAG"},{2061, "CJ_SHELLS1"},{2062, "CJ_OilDrum2"},
+	{2063, "CJ_GREENSHELVES"},{2064, "CJ_FEILDGUN"},{2065, "CJ_M_FILEING1"},{2066, "CJ_M_FILEING2"},{2067, "CJ_M_FILEING3"},
+	{2068, "CJ_cammo_NET"},{2069, "CJ_MLIGHT7"},{2070, "CJ_MLIGHT6"},{2071, "CJ_MLIGHT5"},{2072, "CJ_MLIGHT4"},
+	{2073, "CJ_MLIGHT1"},{2074, "CJ_MLIGHT8"},{2075, "CJ_MLIGHT9"},{2076, "CJ_MLIGHT10"},{2077, "CJ_MLIGHT11"},
+	{2078, "SWANK_CABINET_1"},{2079, "SWANK_DIN_CHAIR_2"},{2080, "SWANK_DINNING_2"},{2081, "COFFEE_SWANK_3"},{2082, "COFFEE_MED_3"},
+	{2083, "COFFEE_MED_4"},{2084, "MED_CABINET_1"},{2085, "SWANK_DINNING_3"},{2086, "SWANK_DINNING_4"},{2087, "MED_CABINET_2"},
+	{2088, "LOW_CABINET_4"},{2089, "SWANK_CABINET_2"},{2090, "SWANK_BED_5"},{2091, "TV_WARD_Med_1"},{2092, "SWANK_CABINET_5"},
+	{2093, "TV_WARD_Low"},{2094, "SWANK_CABINET_4"},{2095, "LOW_CABINET_2"},{2096, "CJ_RockingChair"},{2097, "Bath_high"},
+	{2098, "CJ_SLOTCOVER1"},{2099, "MED_HI_FI_1"},{2100, "MED_HI_FI_2"},{2101, "MED_HI_FI_3"},{2102, "LOW_HI_FI_2"},
+	{2103, "LOW_HI_FI_1"},{2104, "SWANK_HI_FI"},{2105, "CJ_MLIGHT14"},{2106, "CJ_MLIGHT15"},{2107, "CJ_MLIGHT12"},
+	{2108, "CJ_MLIGHT13"},{2109, "LOW_DINNING_3"},{2110, "LOW_DINNING_4"},{2111, "LOW_DINNING_5"},{2112, "MED_DINNING_4"},
+	{2113, "baskgamenet"},{2114, "basketball"},{2115, "LOW_DINNING_1"},{2116, "LOW_DINNING_6"},{2117, "SWANK_DINNING_5"},
+	{2118, "SWANK_DINNING_6"},{2119, "MED_DINNING_6"},{2120, "MED_DIN_CHAIR_4"},{2121, "LOW_DIN_CHAIR_2"},{2122, "SWANK_DIN_CHAIR_3"},
+	{2123, "SWANK_DIN_CHAIR_4"},{2124, "SWANK_DIN_CHAIR_1"},{2125, "MED_DIN_CHAIR_1"},{2126, "COFFEE_SWANK_5"},{2127, "CJ_K1_FRIDGE_UNIT"},
+	{2128, "CJ_K1_TALL_UNIT"},{2129, "CJ_K1_LOW_UNIT"},{2130, "CJ_K1_SINK"},{2131, "CJ_KITCH2_FRIDGE"},{2132, "CJ_KITCH2_SINK"},
+	{2133, "CJ_KITCH2_R"},{2134, "CJ_KITCH2_M"},{2135, "CJ_K3_COOKER"},{2136, "CJ_K3_SINK"},{2137, "CJ_K3_LOW_UNIT3"},
+	{2138, "CJ_K3_LOW_UNIT1"},{2139, "CJ_K3_LOW_UNIT2"},{2140, "CJ_K3_TALL_UNIT1"},{2141, "CJ_KITCH2_L"},{2142, "CJ_K4_LOW_UNIT2"},
+	{2143, "CJ_K4_LOW_UNIT1"},{2144, "CJ_COOKER3"},{2145, "CJ_K3_UNIT06"},{2146, "CJ_TROLLY1"},{2147, "CJ_KITCH1_FRIDGE"},
+	{2148, "CJ_K4_LOW_UNIT03"},{2149, "CJ_MICROWAVE1"},{2150, "CJ_SINK1"},{2151, "CJ_K5_LOW_UNIT2"},{2152, "CJ_K5_LOW_UNIT3"},
+	{2153, "CJ_K5_UNIT1"},{2154, "CJ_K5_LOW_UNIT1"},{2155, "CJ_K5_LOW_UNIT4"},{2156, "CJ_K6_LOW_UNIT1"},{2157, "CJ_K6_LOW_UNIT2"},
+	{2158, "CJ_KITCH1_L"},{2159, "CJ_K6_LOW_UNIT4"},{2160, "CJ_K6_LOW_UNIT3"},{2161, "MED_OFFICE_UNIT_4"},{2162, "MED_OFFICE_UNIT_1"},
+	{2163, "MED_OFFICE_UNIT_2"},{2164, "MED_OFFICE_UNIT_5"},{2165, "MED_OFFICE_DESK_1"},{2166, "MED_OFFICE_DESK_2"},{2167, "MED_OFFICE_UNIT_7"},
+	{2168, "partition"},{2169, "MED_OFFICE3_DESK_1"},{2170, "CJ_KITCH1_COOKER"},{2171, "MED_OFFICE4_DESK_1"},{2172, "MED_OFFICE2_DESK_1"},
+	{2173, "MED_OFFICE_DESK_3"},{2174, "MED_OFFICE4_DESK_2"},{2175, "MED_OFFICE4_DESK_3"},{2176, "Casino_light4"},{2177, "Casino_light3"},
+	{2178, "Casino_light2"},{2179, "Casino_light1"},{2180, "MED_OFFICE5_DESK_3"},{2181, "MED_OFFICE5_DESK_2"},{2182, "MED_OFFICE5_DESK_1"},
+	{2183, "MED_OFFICE3_DESK_09"},{2184, "MED_OFFICE6_DESK_2"},{2185, "MED_OFFICE6_DESK_1"},{2186, "PHOTOCOPIER_1"},{2187, "partition2"},
+	{2188, "blck_jack"},{2189, "poker_tbl"},{2190, "PC_1"},{2191, "MED_OFFICE2_CAB"},{2192, "FAN_1"},
+	{2193, "MED_OFFICE2_DESK_2"},{2194, "Plant_Pot_2"},{2195, "Plant_Pot_3"},{2196, "WORK_LAMP1"},{2197, "FILLING_CABINET"},
+	{2198, "MED_OFFICE2_DESK_3"},{2199, "MED_OFFICE6_MC_1"},{2200, "MED_OFFICE5_UNIT_1"},{2201, "PRINTER_1"},{2202, "PHOTOCOPIER_2"},
+	{2203, "Plant_Pot_1"},{2204, "MED_OFFICE8_CABINET"},{2205, "MED_OFFICE8_DESK_1"},{2206, "MED_OFFICE8_DESK_02"},{2207, "MED_OFFICE7_DESK_1"},
+	{2208, "MED_OFFICE7_UNIT_1"},{2209, "MED_OFFICE9_DESK_1"},{2210, "MED_OFFICE9_UNIT_1"},{2211, "MED_OFFICE9_UNIT_2"},{2212, "burgerhigh"},
+	{2213, "burgerlow"},{2214, "burgermed"},{2215, "clucklow"},{2216, "cluckmed"},{2217, "cluckhigh"},
+	{2218, "pizzalow"},{2219, "pizzamed"},{2220, "pizzahigh"},{2221, "rustylow"},{2222, "rustyhigh"},
+	{2223, "rustymed"},{2224, "CJ_Sphere_TV"},{2225, "SWANK_HI_FI_2"},{2226, "LOW_HI_FI_3"},{2227, "SWANK_HI_FI_3"},
+	{2228, "CJ_SHOVEL"},{2229, "SWANK_SPEAKER"},{2230, "SWANK_SPEAKER_2"},{2231, "SWANK_SPEAKER_3"},{2232, "MED_SPEAKER_4"},
+	{2233, "SWANK_SPEAKER_4"},{2234, "COFFEE_LOW_6"},{2235, "COFFEE_MED_6"},{2236, "COFFEE_SWANK_1"},{2237, "CJ_SHOVEL2"},
+	{2238, "CJ_LAVA_LAMP"},{2239, "CJ_MLIGHT16"},{2240, "Plant_Pot_8"},{2241, "Plant_Pot_5"},{2242, "Plant_Pot_7"},
+	{2243, "Plant_Pot_6"},{2244, "Plant_Pot_9"},{2245, "Plant_Pot_11"},{2246, "Plant_Pot_14"},{2247, "Plant_Pot_15"},
+	{2248, "Plant_Pot_16"},{2249, "Plant_Pot_18"},{2250, "Plant_Pot_19"},{2251, "Plant_Pot_20"},{2252, "Plant_Pot_21"},
+	{2253, "Plant_Pot_22"},{2254, "Frame_Clip_1"},{2255, "Frame_Clip_2"},{2256, "Frame_Clip_3"},{2257, "Frame_Clip_4"},
+	{2258, "Frame_Clip_5"},{2259, "Frame_Clip_6"},{2260, "Frame_SLIM_1"},{2261, "Frame_SLIM_2"},{2262, "Frame_SLIM_3"},
+	{2263, "Frame_SLIM_4"},{2264, "Frame_SLIM_5"},{2265, "Frame_SLIM_6"},{2266, "Frame_WOOD_5"},{2267, "Frame_WOOD_3"},
+	{2268, "Frame_WOOD_2"},{2269, "Frame_WOOD_4"},{2270, "Frame_WOOD_6"},{2271, "Frame_WOOD_1"},{2272, "Frame_Fab_5"},
+	{2273, "Frame_Fab_1"},{2274, "Frame_Fab_6"},{2275, "Frame_Fab_4"},{2276, "Frame_Fab_3"},{2277, "Frame_Fab_2"},
+	{2278, "Frame_Thick_2"},{2279, "Frame_Thick_6"},{2280, "Frame_Thick_1"},{2281, "Frame_Thick_5"},{2282, "Frame_Thick_4"},
+	{2283, "Frame_Thick_3"},{2284, "Frame_6"},{2285, "Frame_1"},{2286, "Frame_5"},{2287, "Frame_4"},
+	{2288, "Frame_3"},{2289, "Frame_2"},{2290, "SWK_COUCH_1"},{2291, "SWK_SINGLE_1"},{2292, "SWK_SINGLE_1b"},
+	{2293, "SWK_1_FStool"},{2294, "CJ_K_COOKER1"},{2295, "CJ_BEANBAG"},{2296, "TV_UNIT_1"},{2297, "TV_UNIT_2"},
+	{2298, "SWANK_BED_7"},{2299, "SWANK_BED_6"},{2300, "MED_BED_8"},{2301, "MED_BED_9"},{2302, "LOW_BED_06"},
+	{2303, "CJ_K3_WASH_MAC"},{2304, "CJ_K1_LOW_CORNER"},{2305, "CJ_K3_C_UNIT"},{2306, "SWANK_CABINET_4D"},{2307, "SWANK_CABINET_4b"},
+	{2308, "MED_OFFICE4_DESK_4"},{2309, "MED_OFFICE_CHAIR2"},{2310, "MIKE_DIN_CHAIR"},{2311, "CJ_TV_TABLE2"},{2312, "CJ_TELE_2"},
+	{2313, "CJ_TV_TABLE1"},{2314, "CJ_TV_TABLE3"},{2315, "CJ_TV_TABLE4"},{2316, "CJ_TELE_4"},{2317, "CJ_TELE_3"},
+	{2318, "CJ_TELE_1"},{2319, "CJ_TV_TABLE5"},{2320, "CJ_TELE_5"},{2321, "CJ_TV_TABLE6"},{2322, "CJ_TELE_6"},
+	{2323, "CJ_BEDROOM1"},{2324, "reel2"},{2325, "kb_bandit_U"},{2326, "reel3"},{2327, "reel1"},
+	{2328, "LOW_CABINET_1_S"},{2329, "LOW_CABINET_1_L"},{2330, "CJ_BEDROOM1_W"},{2331, "CJ_BED_FURN_1"},{2332, "KEV_SAFE"},
+	{2333, "CJ_BED_FURN_1b"},{2334, "CJ_KITCH1_M"},{2335, "CJ_KITCH1_R"},{2336, "CJ_KITCH1_SINK"},{2337, "CJ_KITCH1_WASHER"},
+	{2338, "CJ_KITCH1_CORNER"},{2339, "CJ_KITCH2_COOKER"},{2340, "CJ_KITCH2_WASHER"},{2341, "CJ_KITCH2_CORNER"},{2342, "donut_disp"},
+	{2343, "CJ_BARB_CHAIR_2"},{2344, "CJ_REMOTE"},{2345, "Plant_Pot_23"},{2346, "CJ_HIFI_TABLE"},{2347, "CJ_Wheel_1"},
+	{2348, "CJ_Wheel_02"},{2349, "CJ_Wheel_03"},{2350, "CJ_BARSTOOL_2"},{2351, "CJ_DYN_PLUNGE_1"},{2352, "CJ_DYN_PLUNGE_2"},
+	{2353, "cluck_healthy"},{2354, "burger_healthy"},{2355, "pizza_healthy"},{2356, "police_OFF_CHAIR"},{2357, "DUNC_DINNING"},
+	{2358, "AMMO_BOX_c2"},{2359, "AMMO_BOX_c5"},{2360, "CJ_ICE_FRIDGE_2"},{2361, "CJ_ICE_FRIDGE_1"},{2362, "CJ_SWEETIE_TRAY_1"},
+	{2363, "CJ_SHOP_SIGN_1"},{2364, "CJ_SHOP_SIGN_2"},{2365, "SHOPPING_BASKET"},{2366, "CJ_DUDS_RAIL"},{2367, "Shop_counter_2"},
+	{2368, "Shop_counter_1"},{2369, "CJ_Till"},{2370, "Shop_set_1_Table"},{2371, "CLOTHES_RAIL"},{2372, "CLOTHES_RAIL2"},
+	{2373, "CLOTHES_RAIL3"},{2374, "CJ_Tshirt"},{2375, "Shop_set_2_Unit1"},{2376, "Shop_set_2_Unit2"},{2377, "CJ_jean_dark"},
+	{2378, "CJ_jean_light"},{2379, "Shop_set_2_Unit3"},{2380, "CJ_Suits"},{2381, "CJ_8_SWEATER"},{2382, "CJ_8_JEANS_Light"},
+	{2383, "CJ_6_SWEATER"},{2384, "CJ_8_JEANS_DARK"},{2385, "Shop_set_2_Unit4"},{2386, "CJ_SWEATER_F_1"},{2387, "Shop_set_2_Unit5"},
+	{2388, "CJ_DUDS_RAIL_2"},{2389, "CJ_4_SWEATERS"},{2390, "CJ_4way_clothes"},{2391, "CJ_jean_CREAM"},{2392, "CJ_8_JEANS_MED"},
+	{2393, "CJ_DUDS_RAIL_3"},{2394, "CJ_CLOTHES_STEP_1"},{2395, "CJ_SPORTS_WALL"},{2396, "CJ_4_S_SWEATER"},{2397, "CJ_TRACKIES_dark"},
+	{2398, "CJ_TRACKIES_LIGHT"},{2399, "CJ_4_S_SWEATER_2"},{2400, "CJ_SPORTS_WALL01"},{2401, "CJ_TRACKIES_WHITE"},{2402, "CJ_SPORTS_BAGS"},
+	{2403, "Shop_set_2_SHOE"},{2404, "CJ_SURF_BOARD"},{2405, "CJ_SURF_BOARD2"},{2406, "CJ_SURF_BOARD3"},{2407, "CJ_F_TORSO"},
+	{2408, "CJ_F_LEG_1"},{2409, "CJ_F_LEG_2"},{2410, "CJ_SURF_BOARD4"},{2411, "CJ_F_TORSO_1"},{2412, "CJ_DETECTOR"},
+	{2413, "Shop_counter_3a"},{2414, "Shop_counter_3b"},{2415, "CJ_FF_FRYER"},{2416, "CJ_FF_DISP"},{2417, "CJ_FF_COOKER"},
+	{2418, "CJ_FF_WORKTOP"},{2419, "CJ_FF_WORKTOP_2"},{2420, "CJ_FF_BUCKET"},{2421, "CJ_FF_MICROW"},{2422, "CJ_FF_TILL"},
+	{2423, "CJ_FF_CONTER_1b"},{2424, "CJ_FF_CONTER_1"},{2425, "CJ_FF_JUICE"},{2426, "CJ_FF_PIZZA_OVEN"},{2427, "CJ_FF_JUICE_L"},
+	{2428, "CJ_FF_STAND1"},{2429, "CJ_FF_CUP_DISP"},{2430, "CJ_FF_LIST1"},{2431, "CJ_FF_LIST2"},{2432, "CJ_FF_LIST3"},
+	{2433, "CJ_FF_DISP1"},{2434, "CJ_FF_CONTER_2b"},{2435, "CJ_FF_CONTER_2"},{2436, "CJ_FF_DISP2"},{2437, "CJ_CUP_PILE"},
+	{2438, "CJ_SLUSH_MAC"},{2439, "CJ_FF_CONTER_3"},{2440, "CJ_FF_CONTER_3b"},{2441, "CJ_FF_CONTER_4"},{2442, "CJ_FF_CONTER_4b"},
+	{2443, "CJ_FF_FRIGE"},{2444, "CJ_FF_CONTER_4c"},{2445, "CJ_FF_CONTER_4d"},{2446, "CJ_FF_CONTER_5"},{2447, "CJ_FF_CONTER_5c"},
+	{2448, "CJ_FF_CONTER_5d"},{2449, "CJ_FF_CONTER_5e"},{2450, "CJ_FF_CONTER_5b"},{2451, "CJ_FF_WORKTOP_3"},{2452, "CJ_FF_FRIDGE2"},
+	{2453, "CJ_PIZZA_DISPf"},{2454, "CJ_FF_CONTER_8b"},{2455, "CJ_FF_CONTER_8"},{2456, "CJ_FF_STAND02"},{2457, "CJ_FF_CONTER_8c"},
+	{2458, "CJ_HOBBY_C_3"},{2459, "CJ_HOBBY_C_4"},{2460, "CJ_HOBBY_C_1"},{2461, "CJ_HOBBY_C_2"},{2462, "CJ_HOBBY_SHELF"},
+	{2463, "CJ_HOBBY_SHELF_2"},{2464, "MODEL_BOX1"},{2465, "MODEL_BOX2"},{2466, "MODEL_BOX3"},{2467, "CJ_HOBBY_C_5"},
+	{2468, "MODEL_BOX4"},{2469, "MODEL_PLANES_3"},{2470, "MODEL_PLANES_4"},{2471, "MODEL_TRAINS2"},{2472, "MODEL_PLANES_1"},
+	{2473, "MODEL_PLANES_2"},{2474, "MODEL_TRAINS1"},{2475, "CJ_HOBBY_SHELF_3"},{2476, "MODEL_BOX11"},{2477, "MODEL_BOX5"},
+	{2478, "MODEL_BOX6"},{2479, "MODEL_BOX8"},{2480, "MODEL_BOX9"},{2481, "MODEL_BOX10"},{2482, "CJ_HOBBY_SHELF_4"},
+	{2483, "MODEL_BOX13"},{2484, "MODEL_YAUGHT"},{2485, "MODEL_CAR_1"},{2486, "MODEL_CAR"},{2487, "HOBBY_KITE"},
+	{2488, "MANHUNT_TOY_1"},{2489, "MANHUNT_TOY_2"},{2490, "VICE_TOY_1"},{2491, "MODEL_STAND"},{2492, "MANHUNT_TOY2_1"},
+	{2493, "VICE_TOY2_1"},{2494, "MANHUNT_TOY2_2"},{2495, "VICE_TOY_2"},{2496, "VICE_TOY2_2"},{2497, "HOBBY_KITE2"},
+	{2498, "HOBBY_KITE3"},{2499, "HOBBY_KITE4"},{2500, "CJ_FF_COFFEE"},{2501, "Train_toy_1"},{2502, "CJ_HOBBY_SHELF_5"},
+	{2503, "Train_toy_2"},{2504, "Train_toy_3"},{2505, "MODEL_toy_1"},{2506, "MODEL_toy_2"},{2507, "MODEL_toy_3"},
+	{2508, "MODEL_toy_4"},{2509, "CJ_HOBBY_SHELF_6"},{2510, "MODEL_PLANE_BIG2"},{2511, "MODEL_PLANE_BIG1"},{2512, "MODEL_PLANE_BIG3"},
+	{2513, "MODEL_TRAINS3"},{2514, "CJ_TOILET1"},{2515, "CJ_BS_SINK"},{2516, "CJ_BATH1"},{2517, "CJ_SHOWER1"},
+	{2518, "CJ_B_SINK2"},{2519, "CJ_BATH2"},{2520, "CJ_SHOWER2"},{2521, "CJ_TOILET2"},{2522, "CJ_BATH3"},
+	{2523, "CJ_B_SINK3"},{2524, "CJ_B_SINK4"},{2525, "CJ_TOILET4"},{2526, "CJ_BATH4"},{2527, "CJ_SHOWER4"},
+	{2528, "CJ_TOILET3"},{2529, "CJ_OFF2_LIC_2_L"},{2530, "CJ_OFF2_LIC_2_R"},{2531, "CJ_OFF2_LIC_1_M"},{2532, "CJ_OFF2_LIC_1_R"},
+	{2533, "CJ_OFF2_LIC_1_L"},{2534, "CJ_OFF2_LIC_2_M"},{2535, "CJ_SS_1_M"},{2536, "CJ_SS_1_L"},{2537, "CJ_SS_1_R"},
+	{2538, "CJ_SS_2_R"},{2539, "CJ_SS_2_M"},{2540, "CJ_SS_2_L"},{2541, "CJ_SS_3_M"},{2542, "CJ_SS_3_L"},
+	{2543, "CJ_SS_4_M"},{2544, "CJ_SS_4_L"},{2545, "CJ_SS_4_R"},{2546, "CJ_SS_7_M"},{2547, "CJ_SS_6_R"},
+	{2548, "CJ_SS_6_M"},{2549, "CJ_SS_6_L"},{2550, "CJ_SS_7_R"},{2551, "CJ_SS_7_L"},{2552, "CJ_SS_8_R"},
+	{2553, "CJ_SS_8_L"},{2554, "CJ_SS_8_M"},{2555, "CJ_SS_5_M"},{2556, "CJ_SS_5_L"},{2557, "CJ_SS_5_R"},
+	{2558, "CURTAIN_1_CLOSED"},{2559, "CURTAIN_1_OPEN"},{2560, "CURTAIN_2_OPEN"},{2561, "CURTAIN_2_CLOSED"},{2562, "Hotel_dresser_2"},
+	{2563, "HOTEL_S_BEDSET_1"},{2564, "HOTEL_D_BEDSET_1"},{2565, "HOTEL_D_BEDSET_3"},{2566, "HOTEL_S_BEDSET_3"},{2567, "ab_warehouseShelf"},
+	{2568, "Hotel_dresser_3"},{2569, "Hotel_dresser_1"},{2570, "Hotel_dresser_4"},{2571, "Hotel_SINGLE_1"},{2572, "Hotel_SINGLE_2"},
+	{2573, "Hotel_dresser_6"},{2574, "Hotel_dresser_5"},{2575, "HOTEL_S_BEDSET_8"},{2576, "Hotel_dresser_8"},{2577, "CJ_SEX_COUNTER"},
+	{2578, "CJ_SEX_SHELF_1"},{2579, "CJ_SEX_SHELF_2"},{2580, "SEX_1"},{2581, "CJ_SEX_V_RACK"},{2582, "CJ_SEX_VIDEO_1"},
+	{2583, "CJ_SEX_VIDEO_2"},{2584, "CJ_sex_dildo"},{2585, "CJ_SEX_SHELF_3"},{2586, "CJ_SEX_COUNTER2"},{2587, "SEX_2"},
+	{2588, "SEX_3"},{2589, "ab_carcass"},{2590, "ab_hook"},{2591, "ab_partition1"},{2592, "ab_slotTable"},
+	{2593, "roleplay_rack"},{2594, "roleplay_outfits"},{2595, "CJ_SHOP_TV_VIDEO"},{2596, "CJ_SEX_TV"},{2597, "DILDO_rack1"},
+	{2598, "DILDO_rack2"},{2599, "CJ_SEX_SHOP_SIGN"},{2600, "CJ_VIEW_TELE"},{2601, "CJ_JUICE_CAN"},{2602, "Police_cell_Toilet"},
+	{2603, "Police_Cell_Bed"},{2604, "CJ_POLICE_COUNTER"},{2605, "POLCE_DESK1"},{2606, "CJ_POLICE_COUNTER2"},{2607, "POLCE_DESK2"},
+	{2608, "POLCE_SHELF"},{2609, "CJ_P_FILEING1"},{2610, "CJ_P_FILEING2"},{2611, "POLICE_NB1"},{2612, "POLICE_NB2"},
+	{2613, "POLICE_WASTEBIN"},{2614, "CJ_US_FLAG"},{2615, "POLICE_NB3"},{2616, "POLICE_NB04"},{2617, "Hotel_SINGLE_3"},
+	{2618, "CJ_SLOT_PROPg"},{2619, "mp_ammoambient"},{2620, "CJ_TRAINER_ERIS"},{2621, "CJ_TRAINER_HEAT"},{2622, "CJ_TRAINER_PRO"},
+	{2623, "CJ_PRO_COUNTER"},{2624, "CJ_SHOE_CORNER01"},{2625, "CJ_SHOE_URBAN2"},{2626, "CJ_URB_COUNTER"},{2627, "gym_treadmill"},
+	{2628, "gym_bench2"},{2629, "gym_bench1"},{2630, "gym_bike"},{2631, "gym_mat1"},{2632, "gym_mat02"},
+	{2633, "crack_walkway1"},{2634, "ab_vaultDoor"},{2635, "CJ_PIZZA_TABLE"},{2636, "CJ_PIZZA_CHAIR"},{2637, "CJ_PIZZA_TABLE2"},
+	{2638, "CJ_PIZZA_CHAIR2"},{2639, "CJ_PIZZA_CHAIR3"},{2640, "NEIL_SLOT"},{2641, "CJ_BURGER_POSTER"},{2642, "CJ_BURGER_POSTER2"},
+	{2643, "CJ_BURGER_POSTER3"},{2644, "CJ_BURG_TABLE"},{2645, "CJ_PIZZA_POSTER"},{2646, "CJ_PIZZA_POSTER2"},{2647, "CJ_BS_CUP"},
+	{2648, "CJ_STEAL_TV"},{2649, "CJ_aircon2"},{2650, "CJ_Skate_wall2"},{2651, "CJ_Skate_wall1"},{2652, "CJ_SKATE_CUBES"},
+	{2653, "CJ_aircon3"},{2654, "CJ_shoe_box"},{2655, "CJ_BANNER1"},{2656, "CJ_BANNER02"},{2657, "CJ_BANNER03"},
+	{2658, "CJ_BANNER04"},{2659, "CJ_BANNER05"},{2660, "CJ_BANNER06"},{2661, "CJ_BANNER07"},{2662, "CJ_BANNER08"},
+	{2663, "CJ_BS_BAG"},{2664, "CJ_SUBURB_DOOR"},{2665, "CJ_FF_LIST04"},{2666, "CJ_PIZ_POSTER2"},{2667, "CJ_PIZ_POSTER1"},
+	{2668, "CJ_PIZ_POSTER3"},{2669, "CJ_CHRIS_CRATE"},{2670, "PROC_RUBBISH_1"},{2671, "PROC_RUBBISH_3"},{2672, "PROC_RUBBISH_4"},
+	{2673, "PROC_RUBBISH_5"},{2674, "PROC_RUBBISH_2"},{2675, "PROC_RUBBISH_6"},{2676, "PROC_RUBBISH_8"},{2677, "PROC_RUBBISH_7"},
+	{2678, "CJ_CHRIS_CRATE_LD"},{2679, "CJ_CHRIS_CRATE_RD"},{2680, "CJ_Padlock"},{2681, "CJ_COIN_OP"},{2682, "PIZZA_MENU"},
+	{2683, "PIZZA_S_P"},{2684, "CJ_food_post"},{2685, "CJ_food_post1"},{2686, "CJ_food_post2"},{2687, "CJ_food_post3"},
+	{2688, "CJ_food_post4"},{2689, "CJ_HOODIE_2"},{2690, "CJ_FIRE_EXT"},{2691, "CJ_BANNER09"},{2692, "CJ_BANNER10"},
+	{2693, "CJ_BANNER11"},{2694, "CJ_shoe_box2"},{2695, "CJ_BANNER12"},{2696, "CJ_BANNER13"},{2697, "CJ_BANNER14"},
+	{2698, "CJ_DUDS_RAIL01"},{2699, "CJ_DUDS_RAIL02"},{2700, "CJ_SEX_TV2"},{2701, "CJ_PRO_LIGHT"},{2702, "CJ_PIZZA_1"},
+	{2703, "CJ_BURG_1"},{2704, "CJ_HOODIE_3"},{2705, "CJ_HOODIE_04"},{2706, "CJ_HOODIE_05"},{2707, "CJ_LIGHT_FIT"},
+	{2708, "ZIP_SHELF1"},{2709, "Pain_Killer"},{2710, "WATCH_PICKUP"},{2711, "Tatoo_needle"},{2712, "CJ_MOP"},
+	{2713, "cj_bucket"},{2714, "CJ_OPEN_SIGN_2"},{2715, "CJ_DON_POSTER"},{2716, "CJ_DON_POSTER3"},{2717, "CJ_DON_POSTER2"},
+	{2718, "CJ_FLY_KILLER"},{2719, "CJ_BANNER15"},{2720, "CJ_BANNER16"},{2721, "CJ_BANNER17"},{2722, "CJ_BANNER18"},
+	{2723, "LM_stripStool"},{2724, "LM_stripChair"},{2725, "LM_stripTable"},{2726, "LM_stripLamp"},{2727, "DS_SIGN"},
+	{2728, "DS_BACKLIGHT"},{2729, "CJ_BINC_POST3"},{2730, "CJ_BINC_POST2"},{2731, "CJ_BINC_POST"},{2732, "CJ_ZIP_POST_2"},
+	{2733, "CJ_ZIP_POST_1"},{2734, "CJ_ZIP_POST_3"},{2735, "CJ_ZIP_POST_4"},{2736, "CJ_ZIP_POST_05"},{2737, "POLICE_NB_car"},
+	{2738, "CJ_TOILET_BS"},{2739, "CJ_B_SINK1"},{2740, "cj_bs_light"},{2741, "CJ_SOAP_DISP"},{2742, "CJ_HANDDRIER"},
+	{2743, "CJ_STAT_1"},{2744, "CJ_STAT_2"},{2745, "CJ_STAT_3"},{2746, "CJ_DONUT_CHAIR"},{2747, "CJ_donut_TABLE"},
+	{2748, "CJ_DONUT_CHAIR2"},{2749, "CJ_hairspray"},{2750, "CJ_hair_dryer"},{2751, "CJ_hairsCREAM"},{2752, "CJ_hairspray2"},
+	{2753, "CJ_FF_TILL_que"},{2754, "OTB_machine"},{2755, "Dojo_Wall"},{2756, "CJ_S1_base"},{2757, "CJ_S1_Larm"},
+	{2758, "CJ_S1_Rarm"},{2759, "CJ_S1_Head"},{2760, "CJ_S1_torso"},{2761, "CJ_S1_legs"},{2762, "CJ_CHICK_TABLE"},
+	{2763, "CJ_CHICK_TABLE_2"},{2764, "CJ_PIZZA_TABLE03"},{2765, "CJ_CB_LIST1"},{2766, "CJ_CB_LIST2"},{2767, "CJ_CB_TRAY"},
+	{2768, "CJ_CB_BURG"},{2769, "CJ_CJ_BURG2"},{2770, "CJ_CB_BIN"},{2771, "CJ_OTB_TILL_Q"},{2772, "CJ_esculator"},
+	{2773, "CJ_AIRPRT_BAR"},{2774, "CJ_AIRP_PILLARS"},{2775, "CJ_AIRPRT_MON"},{2776, "LEE_stripCHAIR2"},{2777, "LEE_stripCHAIR1"},
+	{2778, "CJ_COIN_OP_1"},{2779, "CJ_COIN_OP_2"},{2780, "CJ_SMOKE_MACH"},{2781, "CJ_AIR_TICKET"},{2782, "CJ_OYSTER_2"},
+	{2783, "cj_bandit_6"},{2784, "ab_slotTable6"},{2785, "CJ_SLOT_BANK"},{2788, "CJ_BURG_CHAIR"},{2789, "CJ_DEPART_BOARD"},
+	{2790, "CJ_ARRIVE_BOARD"},{2791, "CJ_index_BOARD"},{2792, "CJ_AIR_D_1"},{2793, "CJ_AIR_D_2"},{2794, "CJ_AIR_D_3"},
+	{2795, "CJ_AIR_D_4"},{2796, "CJ_AIR_D_6"},{2797, "CJ_AIR_D_5"},{2798, "CJ_EX_PEDALS"},{2799, "castable2"},
+	{2800, "castable2top"},{2801, "castable1top"},{2802, "castable1"},{2803, "CJ_MEAT_BAG_1"},{2804, "CJ_MEAT_1"},
+	{2805, "CJ_MEAT_BAG_2"},{2806, "CJ_MEAT_2"},{2807, "CJ_BURG_CHAIR_NA"},{2808, "CJ_PIZZA_CHAIR4"},{2809, "CJ_STAT_1_BIT"},
+	{2810, "CJ_STAT_2_bit"},{2811, "GB_romanpot01"},{2812, "GB_platedirty01"},{2813, "GB_novels01"},{2814, "GB_takeaway01"},
+	{2815, "gb_livingrug01"},{2816, "gb_bedmags01"},{2817, "gb_bedrug01"},{2818, "gb_bedrug02"},{2819, "gb_bedclothes01"},
+	{2820, "GB_kitchdirt01"},{2821, "gb_foodwrap01"},{2822, "GB_kitchplatecln01"},{2823, "gb_kitchtakeway01"},{2824, "GB_novels02"},
+	{2825, "GB_novels03"},{2826, "GB_novels04"},{2827, "GB_novels05"},{2828, "gb_ornament02"},{2829, "GB_platedirty02"},
+	{2830, "GB_platedirty04"},{2831, "GB_platedirty03"},{2832, "GB_platedirty05"},{2833, "gb_livingrug02"},{2834, "gb_livingrug03"},
+	{2835, "gb_livingrug04"},{2836, "gb_livingrug05"},{2837, "GB_takeaway02"},{2838, "GB_takeaway03"},{2839, "GB_takeaway04"},
+	{2840, "GB_takeaway05"},{2841, "gb_bedrug03"},{2842, "gb_bedrug04"},{2843, "gb_bedclothes02"},{2844, "gb_bedclothes03"},
+	{2845, "gb_bedclothes04"},{2846, "gb_bedclothes05"},{2847, "gb_bedrug05"},{2848, "GB_kitchdirt02"},{2849, "GB_kitchdirt03"},
+	{2850, "GB_kitchdirt04"},{2851, "GB_kitchdirt05"},{2852, "gb_bedmags02"},{2853, "gb_bedmags03"},{2854, "gb_bedmags04"},
+	{2855, "gb_bedmags05"},{2856, "gb_foodwrap02"},{2857, "gb_kitchtakeway02"},{2858, "gb_kitchtakeway03"},{2859, "gb_kitchtakeway04"},
+	{2860, "gb_kitchtakeway05"},{2861, "gb_foodwrap03"},{2862, "GB_kitchplatecln02"},{2863, "GB_kitchplatecln03"},{2864, "GB_kitchplatecln04"},
+	{2865, "GB_kitchplatecln05"},{2866, "gb_foodwrap04"},{2867, "gb_foodwrap05"},{2868, "gb_ornament03"},{2869, "gb_ornament04"},
+	{2870, "gb_ornament05"},{2871, "CJ_SS_3_R"},{2872, "CJ_COIN_OP_3"},{2873, "CJ_SUBURB_DOOR_2"},{2874, "CJ_SLUSH_CUPDUM"},
+	{2875, "CJ_GAP_DOOR_"},{2876, "CJ_PRO_DOOR_01"},{2877, "CJ_BINCO_DOOR"},{2878, "CJ_Victim_DOOR"},{2879, "CJ_DS_DOOR"},
+	{2880, "CJ_BURG_2"},{2881, "CJ_PIZZA_2"},{2882, "Object01"},{2885, "xref_garagedoor"},{2886, "sec_keypad"},
+	{2887, "a51_spotbulb"},{2888, "a51_spothousing"},{2889, "a51_spotbase"},{2890, "kmb_skip"},{2891, "kmb_packet"},
+	{2892, "temp_stinger"},{2893, "kmb_ramp"},{2894, "kmb_rhymesbook"},{2895, "fun_flower_law"},{2896, "casket_law"},
+	{2897, "funtarp_law"},{2898, "funturf_law"},{2899, "temp_stinger2"},{2900, "temp_cardbox"},{2901, "kmb_marijuana"},
+	{2902, "kmb_smokecan"},{2903, "kmb_parachute"},{2904, "warehouse_door1"},{2905, "kmb_deadleg"},{2906, "kmb_deadarm"},
+	{2907, "kmb_deadtorso"},{2908, "kmb_deadhead"},{2909, "kmb_frontgate"},{2910, "temp_road"},{2911, "kmb_petroldoor"},
+	{2912, "temp_crate1"},{2913, "kmb_bpress"},{2914, "kmb_rcflag"},{2915, "kmb_dumbbell2"},{2916, "kmb_dumbbell"},
+	{2917, "a51_crane"},{2918, "kmb_mine"},{2919, "kmb_holdall"},{2920, "police_barrier"},{2921, "kmb_cam"},
+	{2922, "kmb_keypad"},{2923, "bottle_bank"},{2924, "kmb_crash3door"},{2925, "dyno_box_B"},{2926, "dyno_box_A"},
+	{2927, "a51_blastdoorR"},{2928, "a51_intdoor"},{2929, "a51_blastdoorL"},{2930, "chinaTgate"},{2931, "kmb_jump1"},
+	{2932, "kmb_container_blue"},{2933, "pol_comp_gate"},{2934, "kmb_container_red"},{2935, "kmb_container_yel"},{2936, "kmb_rock"},
+	{2937, "kmb_plank"},{2938, "shutter_vegas"},{2939, "ramp_bot"},{2940, "ramp_top"},{2941, "temp_till"},
+	{2942, "kmb_atm1"},{2943, "kmb_atm2"},{2944, "freight_SFW_door"},{2945, "kmb_netting"},{2946, "cr_door_03"},
+	{2947, "cr_door_01"},{2948, "cr_door_02"},{2949, "kmb_lockeddoor"},{2950, "BREAK_WALL_2A"},{2951, "a51_labdoor"},
+	{2952, "kmb_gimpdoor"},{2953, "kmb_paper_code"},{2954, "kmb_ot"},{2955, "imy_compin"},{2956, "immmcran"},
+	{2957, "chinaTgarageDoor"},{2958, "cutscene_beer"},{2959, "rider1_door"},{2960, "kmb_beam"},{2961, "fire_break"},
+	{2962, "fire_break_glass"},{2963, "freezer_door"},{2964, "k_pooltablesm"},{2965, "k_pooltriangle01"},{2966, "mobile1993b"},
+	{2967, "mobile1993a"},{2968, "cm_box"},{2969, "level_ammobox"},{2970, "dts_bbdoor"},{2971, "k_smashboxes"},
+	{2972, "k_cargo4"},{2973, "k_cargo2"},{2974, "k_cargo1"},{2975, "k_cargo3"},{2976, "green_gloop"},
+	{2977, "kmilitary_crate"},{2978, "kmilitary_base"},{2979, "reel02"},{2980, "kb_bandit10"},{2981, "reel03"},
+	{2982, "reel01"},{2983, "will_valve"},{2984, "portaloo"},{2985, "minigun_base"},{2986, "lxr_motelvent"},
+	{2987, "lxr_motel_doorsim"},{2988, "comp_wood_gate"},{2989, "imy_skylight"},{2990, "wongs_gate"},{2991, "imy_bbox"},
+	{2992, "roulette_marker"},{2993, "kmb_goflag"},{2994, "kmb_trolley"},{2995, "k_poolballstp01"},{2996, "k_poolballstp02"},
+	{2997, "k_poolballstp03"},{2998, "k_poolballstp04"},{2999, "k_poolballstp05"},{3000, "k_poolballstp06"},{3001, "k_poolballstp07"},
+	{3002, "k_poolballspt01"},{3003, "k_poolballcue"},{3004, "k_poolq2"},{3005, "smash_box_stay"},{3006, "smash_box_brk"},
+	{3007, "chopcop_torso"},{3008, "chopcop_armR"},{3009, "chopcop_armL"},{3010, "chopcop_legR"},{3011, "chopcop_legL"},
+	{3012, "chopcop_head"},{3013, "cr_ammobox"},{3014, "cr_guncrate"},{3015, "cr_cratestack"},{3016, "cr_ammobox_nonbrk"},
+	{3017, "arch_plans"},{3018, "target_rleg"},{3019, "target_lleg"},{3020, "target_ltorso"},{3021, "target_rtorso"},
+	{3022, "target_rarm"},{3023, "target_larm"},{3024, "target_head"},{3025, "target_frame"},{3026, "para_pack"},
+	{3027, "ciggy"},{3028, "Katana_LHand"},{3029, "cr1_door"},{3030, "wongs_erection"},{3031, "wong_dish"},
+	{3032, "bd_window_shatter"},{3033, "md_lockdoor"},{3034, "bd_window"},{3035, "tmp_bin"},{3036, "ct_gatexr"},
+	{3037, "warehouse_door2b"},{3038, "ct_lanterns"},{3039, "ct_stall1"},{3040, "ct_stall2"},{3041, "ct_table"},
+	{3042, "ct_vent"},{3043, "kmb_container_open"},{3044, "CIGAR"},{3045, "CIGAR_glow"},{3046, "kb_barrel"},
+	{3047, "jet_baggage_Door"},{3048, "cement_in_hole"},{3049, "des_quarrygate"},{3050, "des_quarrygate2"},{3051, "lift_dr"},
+	{3052, "db_ammo"},{3053, "INDUS_MAGNET"},{3054, "DYN_WREKING_BALL"},{3055, "kmb_shutter"},{3056, "mini_magnet"},
+	{3057, "kb_barrel_exp"},{3058, "storm_drain_cover"},{3059, "imy_shash_wall"},{3060, "para_collision"},{3061, "ad_flatdoor"},
+	{3062, "container_door"},{3063, "BREAK_WALL_3A"},{3064, "BREAK_WALL_1A"},{3065, "BBALL_col"},{3066, "ammotrn_obj"},
+	{3067, "kmb_atm3"},{3068, "cargo_rear"},{3069, "d9_ramp"},{3070, "kmb_goggles"},{3071, "kmb_dumbbell_R"},
+	{3072, "kmb_dumbbell_L"},{3073, "kmb_container_broke"},{3074, "d9_runway"},{3075, "impexp_door"},{3076, "ad_roadmark1"},
+	{3077, "nf_blackboard"},{3078, "ad_finish"},{3079, "ad_roadmark2"},{3080, "ad_jump"},{3081, "fake_mule_col"},
+	{3082, "ammo_capsule"},{3083, "md_poster"},{3084, "trdcsgrgdoor_lvs"},{3085, "nf_list_1"},{3086, "wanted_cross_off"},
+	{3087, "nf_list_2"},{3088, "nf_list_3"},{3089, "ab_casdorLok"},{3090, "nf_ped_coll"},{3091, "imy_track_barrier"},
+	{3092, "dead_tied_cop"},{3093, "cuntgirldoor"},{3094, "k_pooltableb"},{3095, "a51_jetdoor"},{3096, "bb_pickup"},
+	{3097, "BREAK_WALL_2B"},{3098, "BREAK_WALL_1B"},{3099, "BREAK_WALL_3B"},{3100, "k_poolballspt02"},{3101, "k_poolballspt03"},
+	{3102, "k_poolballspt04"},{3103, "k_poolballspt05"},{3104, "k_poolballspt06"},{3105, "k_poolballspt07"},{3106, "k_poolball8"},
+	{3107, "wongs_erection2"},{3108, "basejump_target"},{3109, "imy_la_door"},{3110, "md_billbolaeb"},{3111, "st_arch_plan"},
+	{3112, "TriMainLite"},{3113, "CARRIER_DOOR_SFSE"},{3114, "CARRIER_LIFT2_SFSE"},{3115, "CARRIER_LIFT1_SFSE"},{3116, "acwinch1"},
+	{3117, "a51_ventcoverb"},{3119, "cs_ry_props"},{3120, "BBALL_ingame"},{3121, "munch_donut"},{3122, "k_poolq"},
+	{3123, "Katana_Anim"},{3124, "Sniper_Anim"},{3125, "Wd_Fence_Anim"},{3126, "TATTOO_KIT"},{3127, "BD_Fire1_o"},
+	{3128, "BBALL_Net"},{3129, "Smlplane_door"},{3130, "MTSafe"},{3131, "PARACHUTE"},{3132, "jet_door"},
+	{3133, "pedals"},{3134, "quarry_barrel"},{3135, "cat2_safe_col"},{3167, "trailer_large1_01"},{3168, "trailer2_01"},
+	{3169, "trailer_large2_01"},{3170, "trailer_large3_01"},{3171, "trailer5_01"},{3172, "trailer6_01"},{3173, "trailer_large4_01"},
+	{3174, "sm_airstrm_sml_"},{3175, "sm_airstrm_med_"},{3178, "Shack02"},{3187, "nt_gasstation"},{3193, "st5base"},
+	{3214, "quarry_crusher"},{3221, "drv_in_spkrs"},{3241, "conhoos2"},{3242, "conhoos1"},{3243, "tepee_room_"},
+	{3244, "pylon_big1_"},{3246, "des_westrn7_"},{3249, "des_westsaloon_"},{3250, "des_westrn9_"},{3252, "des_oldwattwr_"},
+	{3253, "des_westrn11_"},{3255, "ref_oiltank01"},{3256, "refchimny01"},{3257, "refinerybox1"},{3258, "refthinchim1"},
+	{3259, "refcondens1"},{3260, "oldwoodpanel"},{3261, "grasshouse"},{3262, "privatesign1"},{3263, "privatesign2"},
+	{3264, "privatesign3"},{3265, "privatesign4"},{3267, "mil_samsite"},{3268, "mil_hangar1_"},{3269, "bonyrd_block1_"},
+	{3270, "bonyrd_block2_"},{3271, "bonyrd_block3_"},{3272, "substa_transf1_"},{3273, "substa_transf2_"},{3274, "substa_grid_"},
+	{3275, "cxreffence"},{3276, "cxreffencesld"},{3277, "mil_sambase"},{3278, "des_warewin"},{3279, "a51_spottower"},
+	{3280, "a51_panel"},{3281, "mtb_banner1"},{3282, "cxreffencemsh"},{3283, "conhoos3"},{3284, "conhoos5"},
+	{3285, "conhoos4"},{3286, "cxrf_watertwr"},{3287, "cxrf_oiltank"},{3292, "cxf_payspray_"},{3293, "des_payspint"},
+	{3294, "cxf_spraydoor1"},{3302, "cxrf_corpanel"},{3303, "des_bighus03"},{3304, "des_bighus02"},{3305, "des_bighus01"},
+	{3306, "swburbhaus02"},{3307, "swburbhaus01"},{3308, "swburbhaus03"},{3309, "swburbhaus04"},{3310, "sw_woodhaus04"},
+	{3311, "sw_woodhaus01a"},{3312, "sw_woodhaus02"},{3313, "sw_woodhaus03"},{3314, "sw_bigburb_04"},{3315, "sw_bigburb_03"},
+	{3316, "sw_bigburb_02"},{3317, "sw_bigburb_01"},{3330, "cxrf_brigleg"},{3331, "cxrf_whitebrig"},{3334, "BIG_COCK_SIGN"},
+	{3335, "CE_roadsign1"},{3336, "cxrf_frway1sig"},{3337, "cxrf_desertsig"},{3350, "torino_mic"},{3351, "sw_bigburbsave"},
+	{3352, "burbdoorRENAME_ME"},{3353, "sw_bigburbsave2"},{3354, "burbdoor2REF"},{3355, "cxrf_savhus1_"},{3356, "cxrf_savhus2_"},
+	{3359, "cxrf_savhusgar1_"},{3361, "cxref_woodstair"},{3362, "des_ruin2_"},{3363, "des_ruin1_"},{3364, "des_ruin3_"},
+	{3374, "SW_haybreak02"},{3375, "CE_dblbarn01"},{3378, "CE_beerpile01"},{3379, "CE_hairpinR"},{3380, "CE_hairpinL"},
+	{3381, "cxrf_redarch"},{3383, "a51_labtable1_"},{3384, "a51_halbox_"},{3385, "a51_light1_"},{3386, "a51_srack2_"},
+	{3387, "a51_srack3_"},{3388, "a51_srack4_"},{3389, "a51_srack1_"},{3390, "a51_sdsk_ncol1_"},{3391, "a51_sdsk_ncol2_"},
+	{3392, "a51_sdsk_ncol3_"},{3393, "a51_sdsk_ncol4_"},{3394, "a51_sdsk_2_"},{3395, "a51_sdsk_3_"},{3396, "a51_sdsk_4_"},
+	{3397, "a51_sdsk_1_"},{3398, "cxrf_floodlite_"},{3399, "cxrf_a51_stairs"},{3400, "cxrf_a51sect"},{3401, "cxrf_a51sect2"},
+	{3402, "sw_tempbarn01"},{3403, "sw_logcover"},{3406, "cxref_woodjetty"},{3407, "CE_mailbox1"},{3408, "CE_mailbox2"},
+	{3409, "grassplant"},{3410, "cxrf_Aldea"},{3411, "cunteRB01"},{3412, "cunteRB03"},{3414, "CE_oldhut1"},
+	{3415, "CE_loghut1"},{3417, "CE_loghut02"},{3418, "CE_oldhut02"},{3419, "CE_logbarn02"},{3425, "nt_windmill"},
+	{3426, "nt_noddonkbase"},{3427, "derrick01"},{3428, "oilplodbitbase"},{3430, "vegasbooth01"},{3431, "vgsclubox01"},
+	{3432, "htlcnpy02_lvs"},{3433, "htlcnpy01_lvs"},{3434, "skllsgn01_lvs"},{3435, "motel01sgn_lvs"},{3436, "motel03_lvs"},
+	{3437, "ballypllr01_lvs"},{3438, "ballyring01_lvs"},{3439, "aprtree01_lvs"},{3440, "arptpillar01_lvs"},{3441, "luxorpillar02_lvs"},
+	{3442, "vegasxrexhse1"},{3443, "vegasxrexhse2"},{3444, "shabbyhouse02_lvs"},{3445, "vegasxrexhse08"},{3446, "vegasxrexhse10"},
+	{3447, "vgstlgraphpole"},{3448, "shamcprkin"},{3449, "vegashsenew1"},{3450, "vegashseplot1"},{3451, "vegashsenew2"},
+	{3452, "bballintvgn1"},{3453, "bballintvgn2"},{3454, "vgnhseing15"},{3455, "vgnhseblk1"},{3456, "vgnhseblk3"},
+	{3457, "vgnhseblk2"},{3458, "vgncarshade1"},{3459, "vgntelepole1"},{3460, "vegaslampost"},{3461, "tikitorch01_lvs"},
+	{3462, "csrangel_lvs"},{3463, "vegaslampost2"},{3464, "shabbyhouse03_lvs"},{3465, "vegspetrolpump"},{3466, "shabbyhouse01_lvs"},
+	{3467, "vegstreetsign1"},{3468, "vegstreetsign2"},{3469, "vegenmotel1"},{3470, "vegasaircon1"},{3471, "vgschinalion1"},
+	{3472, "circuslampost03"},{3473, "vegenmotel12"},{3474, "Freightcrane1"},{3475, "vgsn_fncelec_pst"},{3483, "vegasxrexhse09"},
+	{3484, "vegasxrexhse03"},{3485, "vegasxrexhse04"},{3486, "vegasxrexhse05"},{3487, "vegasxrexhse06"},{3488, "vegasxrexhse07"},
+	{3489, "HANGAR1_08_LVS"},{3491, "vegasS_hanger2"},{3493, "vgsn_carpark01"},{3494, "luxorpillar04_lvs"},{3496, "vgsxrefbballnet"},
+	{3497, "vgsxrefbballnet2"},{3498, "wdpillar01_lvs"},{3499, "wdpillar02_lvs"},{3501, "vgsxrefpartm1"},{3502, "vgsN_con_tube"},
+	{3503, "vgsNscffple"},{3504, "vgsN_portaloo"},{3505, "VgsN_nitree_y01"},{3506, "VgsN_nitree_y02"},{3507, "VgsN_nitree_g01"},
+	{3508, "VgsN_nitree_g02"},{3509, "VgsN_nitree_r01"},{3510, "VgsN_nitree_r02"},{3511, "VgsN_nitree_b01"},{3512, "VgsN_nitree_b02"},
+	{3513, "vgs_roadsign1"},{3514, "vgs_roadsign02"},{3515, "vgsfountain"},{3516, "vgsstriptlights1"},{3517, "ceasertree02_lvs"},
+	{3518, "vgsN_rooflity"},{3519, "vgsN_rooflitb"},{3520, "vgsN_flwrbdsm"},{3521, "vgsn_RBStiff"},{3522, "vgsn_flwbdcrb"},
+	{3524, "skullpillar01_lvs"},{3525, "exbrtorch01"},{3526, "vegasairportlight"},{3528, "vgsEdragon"},{3529, "vgsN_constrbeam"},
+	{3530, "vgsN_constrbeam2"},{3531, "trdflwrbedq"},{3532, "triadbush"},{3533, "trdpillar01"},{3534, "trdlamp01"},
+	{3550, "vgsn_fncelec_msh"},{3554, "visagesign04"},{3555, "compmedhos2_LAe"},{3556, "compmedhos3_LAe"},{3557, "compmedhos4_LAe"},
+	{3558, "compmedhos5_LAe"},{3564, "lastran1_LA01"},{3565, "lasdkrt1_LA01"},{3566, "lasntrk1"},{3567, "lasnfltrail"},
+	{3568, "lasntrk2"},{3569, "lasntrk3"},{3570, "lasdkrt2"},{3571, "lasdkrt3"},{3572, "lasdkrt4"},
+	{3573, "lasdkrtgrp1"},{3574, "lasdkrtgrp2"},{3575, "lasdkrt05"},{3576, "DockCrates2_LA"},{3577, "DockCrates1_LA"},
+	{3578, "DockBarr1_LA"},{3580, "compbigho2_LAe"},{3582, "compmedhos1_LAe"},{3583, "compbigho3_LAe"},{3584, "compproj01_LA"},
+	{3585, "lastran1_LA02"},{3586, "escl_LA"},{3587, "nwsnpedhus1_LAS"},{3588, "sanped_hse1_LAs"},{3589, "compfukhouse3"},
+	{3590, "compfukhouse2"},{3593, "la_fuckcar2"},{3594, "la_fuckcar1"},{3595, "Dingbat01Aex_LA"},{3596, "Dingbat02Aex_LA"},
+	{3597, "Dingbat01Bex_LA"},{3598, "hillhouse01_LA"},{3599, "hillhouse02_LA"},{3600, "hillhouse06_LA"},{3601, "hillhouse04_LA"},
+	{3602, "hillhouse05_LA"},{3603, "bevman_LAW2"},{3604, "bevmangar_LAW2"},{3605, "bevman3_LAW2"},{3606, "bevbrkhus1"},
+	{3607, "bevman2_LAW2"},{3608, "hillhouse08_LA"},{3609, "hillhouse13_LA"},{3612, "hillhouse12_LA"},{3613, "hillhouse10_LA"},
+	{3614, "hillhouse09_LA"},{3615, "sanmonbhut1_LAW2"},{3616, "midranhus2_LAS"},{3617, "midranhus_LAS"},{3618, "nwlaw2husjm3_Law2"},
+	{3619, "nwlaw2husjm4_Law2"},{3620, "redockrane_LAS"},{3621, "rbigcrate_LAS"},{3622, "rdwarhus"},{3623, "rdwarhus2"},
+	{3624, "nwwarhus"},{3625, "crgostntrmp"},{3626, "dckwrkhut"},{3627, "dckcanpy"},{3628, "smallprosjmt_LAS"},
+	{3629, "arhang_LAS"},{3630, "crdboxes2_LAs"},{3631, "oilcrat_LAS"},{3632, "imoildrum_LAS"},{3633, "imoildrum4_LAS"},
+	{3634, "nwccumphus1_LAS"},{3635, "nwccumphus2_LAS"},{3636, "indust1las_LAS"},{3637, "indust1las2_LAS"},{3638, "elecstionv_LAS"},
+	{3639, "GlenPHouse01_LAx"},{3640, "GlenPHouse02_LAx"},{3641, "GlenPHouse04_LAx"},{3642, "GlenPHouse03_LAx"},{3643, "LA_chem_piping"},
+	{3644, "idlebuild01_LAx"},{3646, "ganghous05_LAx"},{3648, "ganghous02_LAx"},{3649, "ganghous01_LAx"},{3651, "ganghous04_LAx"},
+	{3653, "BeachApartA1_LAx"},{3655, "ganghous03_LAx"},{3657, "airseata_LAS"},{3658, "airlastrola_LAS"},{3659, "airfinfoa_LAS"},
+	{3660, "lasairfbed_LAS"},{3661, "projects01_LAx"},{3663, "lasstepsa_LAS"},{3664, "lasblastde_LAS"},{3665, "airyelrm_LAS"},
+	{3666, "airuntest_las"},{3671, "centuBal01_LAx"},{3673, "laxrf_refinerybase"},{3674, "laxrf_refineryalpha"},{3675, "laxrf_refinerypipe"},
+	{3676, "lawnhouseredA"},{3677, "lawnhousegreyLS"},{3678, "lawnhousegreyRS"},{3684, "Lawnapartmnt"},{3689, "rdwarhusbig"},
+	{3694, "ryder_holes"},{3697, "project2lae2"},{3698, "barrio3B_LAe"},{3700, "DrugDealHs1_LAe"},{3702, "barrio6B_LAe2"},
+	{3704, "barrio6a_LAe2"},{3707, "rdwarhusmed"},{3711, "BeachApartA5b"},{3713, "BeachApartA5a"},{3715, "Arch_sign"},
+	{3717, "sanclifbal1_LAx"},{3722, "laxrf_scrapbox"},{3724, "laxrf_cargotop"},{3741, "CEhillhse14"},{3743, "escl_SingleLA"},
+	{3749, "ClubGate01_LAx"},{3752, "ferseat01_LAx"},{3753, "dockwall_LAS2"},{3754, "lamotsig1_LA"},{3755, "las2warhus_las2"},
+	{3757, "lamotsig2_LA"},{3759, "vencanhou01_LAx"},{3761, "industshelves"},{3762, "CEnwlaw4"},{3763, "CE_radarmast3"},
+	{3764, "TCEnewhillhus02"},{3765, "TCEmulhouse04_Law01"},{3771, "CEhillhse14_alpha"},{3776, "ci_bstage"},{3781, "Lan2officeflrs"},
+	{3783, "LAs2Xref01_LAx"},{3785, "bulkheadlight"},{3786, "missile_05_SFXR"},{3787, "missile_02_SFXR"},{3788, "missile_03_SFXR"},
+	{3789, "missile_09_SFXR"},{3790, "missile_01_SFXR"},{3791, "missile_10_SFXR"},{3792, "missile_08_SFXR"},{3793, "missile_06_SFXR"},
+	{3794, "missile_07_SFXR"},{3795, "missile_04_SFXR"},{3796, "acbox1_SFS"},{3797, "missile_11_SFXR"},{3798, "acbox3_SFS"},
+	{3799, "acbox2_SFS"},{3800, "acbox4_SFS"},{3801, "sfx_lite04"},{3802, "sfx_plant03"},{3803, "sfx_alarms03"},
+	{3804, "sfxref_aircon11"},{3805, "sfxref_aircon12"},{3806, "sfx_winplant07"},{3807, "sfx_flag02"},{3808, "sfx_alarms04"},
+	{3809, "sfx_lite05"},{3810, "sfx_plant04"},{3811, "sfx_winplant08"},{3812, "sfxref_aircon13"},{3813, "sfxref_aircon14"},
+	{3814, "hangar1_SFXREF"},{3816, "bighangar1_SFx"},{3818, "sf_frwaysig"},{3819, "bleacher_SFSx"},{3820, "box_hse_09_SFXRF"},
+	{3821, "box_hse_02_SFXRF"},{3822, "box_hse_03_SFXRF"},{3823, "box_hse_11_SFXRF"},{3824, "box_hse_10_SFXRF"},{3825, "box_hse_01_SFXRF"},
+	{3826, "box_hse_06_SFXRF"},{3827, "box_hse_07_SFXRF"},{3828, "box_hse_05_SFXRF"},{3829, "box_hse_04_SFXRF"},{3830, "box_hse_08_SFXRF"},
+	{3842, "box_hse_14_SFXRF"},{3843, "box_hse_12_SFXRF"},{3844, "box_hse_15_SFXRF"},{3845, "box_hse_13_SFXRF"},{3850, "carshowbann_SFSX"},
+	{3851, "carshowwin_SFSX"},{3852, "sf_jump"},{3853, "Gay_lamppost"},{3854, "GAY_telgrphpole"},{3855, "GAY_TRAFFIC_LIGHT"},
+	{3856, "sf_frwaysig_half"},{3857, "ottosmash3"},{3858, "ottosmash1"},{3859, "ottosmash04"},{3860, "marketstall04_SFXRF"},
+	{3861, "marketstall01_SFXRF"},{3862, "marketstall02_SFXRF"},{3863, "marketstall03_SFXRF"},{3864, "WS_floodlight"},{3865, "concpipe_SFXRF"},
+	{3866, "demolish1_SFXRF"},{3867, "ws_scaffolding_SFX"},{3872, "WS_floodbeams"},{3873, "Silicon04_SFS"},{3875, "SFtelepole"},
+	{3876, "sf_roofmast"},{3877, "sf_rooflite"},{3878, "headstones_SFSx"},{3879, "ws_jetty_SFX"},{3881, "airsecbooth_SFSe"},
+	{3882, "airsecboothint_SFSe"},{3884, "samsite_SFXRF"},{3885, "sambase_SFXRF"},{3886, "ws_jettynol_SFX"},{3887, "demolish4_SFXRF"},
+	{3890, "lib_street09"},{3891, "lib_street08"},{3892, "lib_street10"},{3893, "lib_street05"},{3894, "lib_street11"},
+	{3895, "lib_street14"},{3897, "lib_street03"},{3898, "lib_street15"},{3899, "lib_street04"},{3900, "lib_street12"},
+	{3902, "lib_street16"},{3903, "lib_street07"},{3905, "lib_street02"},{3906, "lib_street01"},{3907, "lib_street06"},
+	{3910, "trackshad05"},{3911, "lib_street13"},{3914, "snowover02"},{3915, "snowover03"},{3916, "snowover04"},
+	{3917, "lib_street17"},{3918, "snowover01"},{3919, "lib_main_bistrotop"},{3920, "lib_veg3"},{3921, "lib_counchs"},
+	{3922, "rest_chair2"},{3923, "libstreetfar"},{3924, "playroom"},{3925, "bridge_1"},{3926, "d_sign"},
+	{3927, "d_sign01"},{3928, "helipad"},{3929, "d_rock"},{3930, "d_rock01"},{3931, "d_rock02"},
+	{3932, "hanger"},{3933, "fake_sky"},{3934, "helipad01"},{3935, "statue"},{3936, "bwire_fence"},
+	{3937, "bwire_fence01"},{3938, "rczero4_base01"},{3939, "hanger01"},{3940, "comms01"},{3941, "comms02"},
+	{3942, "bistrobar"},{3943, "mid_staircase"},{3944, "bistro_blok"},{3945, "alpha_fence"},{3946, "plants01"},
+	{3947, "rc_track_a"},{3948, "bistrogarden"},{3949, "rc_track_b"},{3950, "rc_zero_c"},{3951, "rc_water"},
+	{3952, "rc_track_d"},{3953, "rc_track_e"},{3954, "rc_track_f"},{3955, "rc_track_g"},{3956, "rc_track_h"},
+	{3957, "rc_track_i"},{3958, "warehooseboxes"},{3959, "rczero_alpha"},{3960, "rczero4_base02"},{3961, "Boxkitch"},
+	{3962, "lee_Plane07"},{3963, "lee_Plane08"},{3964, "lee_Plane09"},{3965, "lee_Object11"},{3966, "lee_object01"},
+	{3967, "AIRPORT_int2"},{3968, "AIRPORT_FRONT"},{3969, "BAG_BELT2"},{3970, "CJ_CUSTOM_BAR"},{3971, "CJ_BAG_RECLAIM"},
+	{3972, "mon1"},{3973, "CJ_BAG_DET"},{3975, "PoliceSt01_LAn"},{3976, "PoliceSt02_LAn"},{3977, "LAriverSec1_LAn"},
+	{3978, "LAriverSec3_LAn"},{3979, "bonaventura_LAn"},{3980, "LAcityhall1_LAn"},{3981, "LAriverSec4a_LAn"},{3982, "LAriverSec5a_LAn"},
+	{3983, "peublomiss2_LAn"},{3984, "churchprog1_LAn"},{3985, "PershingSq1_LAn"},{3986, "mis1_LAn"},{3987, "fightplaza2_LAn"},
+	{3988, "cityhallblock2_LAn"},{3989, "bonaplazagr_LAn"},{3990, "GSFreeway6_LAn"},{3991, "GSFreeway7_LAn"},{3992, "Roads03_LAn"},
+	{3993, "Roads04_LAn"},{3994, "Roads06_LAn"},{3995, "Roads07_LAn"},{3996, "Roads08_LAn"},{3997, "cityhallblok_LAn"},
+	{3998, "court1_LAn"},{4000, "twintjail2_LAn"},{4001, "BailBonds1_LAn"},{4002, "LAcityhall2_LAn"},{4003, "LAcityhallTrans_LAn"},
+	{4004, "LAcityhall3_LAn"},{4005, "decoblok2_LAn"},{4006, "eastcolumb1_LAn"},{4007, "wellsfargo1_LAn"},{4008, "decoblok1_LAn"},
+	{4010, "figfree1_LAn"},{4011, "figfree2_LAn"},{4012, "TermAnexGrd1_LAn"},{4013, "bonavenBase_LAn"},{4014, "bonaplaza_LAn"},
+	{4015, "bonaventuraGL_LAn"},{4016, "fighotbase_LAn"},{4017, "offblokA_LAn"},{4018, "newbuildsm02"},{4019, "newbuildsm01"},
+	{4020, "fighotblok1_LAn"},{4021, "Officessml1_lan"},{4022, "Foodmart1_lan"},{4023, "newdbbuild_lan04"},{4027, "langrasspatch"},
+	{4028, "lanstap"},{4029, "LAriverSec5b_LAn"},{4030, "LAriverSec4b_LAn"},{4032, "carimp_LAn"},{4033, "fightplaza1_LAn"},
+	{4034, "fightplaza1tra_LAn"},{4048, "LAcityhall4_LAn"},{4058, "fighotblok2_LAn"},{4059, "fighotblok3_LAn"},{4060, "fighotblok4_LAn"},
+	{4079, "twintjail1_LAn"},{4084, "JUD_LAN"},{4085, "supports01_LAn"},{4086, "supports02_LAn"},{4087, "supports03_LAn"},
+	{4088, "supports04_LAn"},{4089, "supports05_LAn"},{4090, "supports06_LAn"},{4091, "supports07_LAn"},{4099, "twintjailfence_LAn"},
+	{4100, "meshfence1_LAn"},{4101, "expo_LAn"},{4102, "expoalpha_LAn"},{4103, "staples_LAn"},{4106, "shpfireesc_LAn"},
+	{4107, "Roads01_LAn"},{4108, "Roads01b_LAn"},{4109, "LAriverSec5_LAn"},{4110, "Lan_embank1"},{4112, "build01_LAn"},
+	{4113, "LanOfficeBlok1"},{4114, "lanBlocknew2"},{4117, "figfree3_LAn"},{4120, "LAn_fescalpha1"},{4121, "LAn_fescalpha02"},
+	{4122, "ctyhllblk2land_LAn"},{4123, "cityhallblock1_LAn"},{4125, "GSFreeway1_LAn"},{4127, "GSFreeway2_LAn"},{4128, "GSFreeway3_LAn"},
+	{4129, "GSFreeway4_LAn"},{4131, "GSFreeway5_LAn"},{4133, "GSFreeway8_LAn"},{4139, "Roads09_LAn"},{4141, "Hotelexterior1_LAn"},
+	{4142, "Roads10_LAn"},{4144, "Roads11_LAn"},{4146, "Roads12_LAn"},{4148, "Roads13_LAn"},{4150, "Roads14_LAn"},
+	{4152, "Roads15_LAn"},{4154, "Roads16_LAn"},{4156, "Roads17_LAn"},{4158, "Roads18_LAn"},{4160, "Roads19_LAn"},
+	{4163, "Roads24_LAn"},{4165, "Roads21_LAn"},{4168, "Roads23_LAn"},{4170, "LAn_fescalpha04"},{4171, "LAn_fescalpha05"},
+	{4172, "plantbeds1_LAn01"},{4173, "plantbeds1_LAn02"},{4174, "plantbeds1_LAn04"},{4175, "plantbeds1_LAn05"},{4176, "BailBonds2_LAn"},
+	{4178, "BailBonds3_LAn"},{4180, "LAn_fescalpha06"},{4182, "Roads22_LAn"},{4183, "expoalpha_LAn02"},{4184, "hotelferns2_LAn"},
+	{4185, "hotelferns3_LAn"},{4186, "PershingSq2_LAn"},{4188, "bventuraENV_LAn"},{4189, "twintjail1alpha_LAn"},{4190, "SDfences1_LAn"},
+	{4192, "PoliceStalphas_LAn"},{4193, "officeblok1_Lan"},{4195, "SDfences2_LAn"},{4196, "SDfences3_LAn"},{4197, "LAnAlley1_LAn"},
+	{4198, "LAriverSec3b_LAn"},{4199, "garages1_LAn"},{4201, "SDfences4_LAn"},{4202, "SDfences5_LAn"},{4203, "LAriverSec1b_LAn"},
+	{4205, "wefargoalphas_LAn"},{4206, "PershingPool_LAn"},{4207, "Roads02_LAn"},{4209, "Roads20_LAn"},{4212, "lanitewin1_LAN"},
+	{4213, "lanitewin1_LAN03"},{4214, "lanitewin3_LAN"},{4215, "lanitewin4_LAN"},{4216, "lanitewin5_LAN"},{4217, "lanitewin6_LAN"},
+	{4218, "lanitewin7_LAN"},{4219, "lanitewin8_LAN"},{4220, "lanitewin9_LAN"},{4221, "lanitewin91_LAN"},{4222, "lanitewin92_LAN"},
+	{4227, "graffiti_lan01"},{4230, "billbrdlan_08"},{4231, "LAn_fescalpha03"},{4232, "carimp2_LAn"},{4233, "Roads05_LAn"},
+	{4235, "billbrdlan_03"},{4238, "billbrdlan_10"},{4239, "billbrdlan_11"},{4240, "sbsbedlaw2"},{4241, "sbsbed4law2"},
+	{4242, "sbsbed5law2"},{4243, "sbsbed8law2"},{4244, "sbsbed9law2"},{4245, "sbsbed1law2"},{4246, "sbsbed3law2"},
+	{4247, "sbsbed6law2"},{4248, "sbsbed7law2"},{4249, "sbsbed91law2"},{4250, "sbcne_seafloor01"},{4251, "sbcne_seafloor02"},
+	{4252, "sbcne_seafloor03"},{4253, "sbcne_seafloor05"},{4254, "sbCE_groundPALO09"},{4255, "sbcne_seafloor04"},{4256, "sbcne_seafloor06"},
+	{4257, "sbseabed_sfe03"},{4258, "sbseabed_sfe05"},{4259, "sbseabed_sfe01"},{4260, "sbseabed_sfe69"},{4261, "sbseabed_SFN02"},
+	{4262, "sbseabed_SFN03"},{4263, "sbseabed_SFNcunt"},{4264, "sbseabed1_SFW"},{4265, "sbseabed2_SFW"},{4266, "sbseabed6_SFW"},
+	{4267, "sbseabed2_las2"},{4268, "sbseabed3_las20"},{4269, "sbseabed1_las2"},{4270, "sbseabed5_las2"},{4271, "sbseabed6las2"},
+	{4272, "sbseabed8_las2"},{4273, "sbseabed7_las2"},{4274, "sbseabed86_las2"},{4275, "sbseabed9_las20"},{4276, "sbseabed91_las2"},
+	{4277, "sbseabed93_LAS"},{4278, "sbseabed92_LAS"},{4279, "sbseabed94_LAS"},{4280, "sbseabed95_LAS"},{4281, "sbseabed96_LAS"},
+	{4282, "sbseabed97_LAS"},{4283, "sbseabed99_LAS"},{4284, "sbseabed98_LAS"},{4285, "sbseabed81_LAS"},{4286, "sbseabed85_LAS"},
+	{4287, "sbseabed84_LAS"},{4288, "sbseabed83_LAS"},{4289, "sbseabed82_LAS"},{4290, "sbcs_landbit_46"},{4291, "sbcs_landbit_54"},
+	{4292, "sbcs_landbit_63"},{4293, "sbcs_landbit_72"},{4294, "sbcs_landbit_77"},{4295, "sbcs_landbit_78"},{4296, "sbcs_seabit_new"},
+	{4297, "sbcs_seabit1_new"},{4298, "sbcs_seabit2_new"},{4299, "sbcs_seabit3_new"},{4300, "sbcs_seabit4_new"},{4301, "sbcs_seabit5_new"},
+	{4302, "sbcs_seabit6_new"},{4303, "sbcs_seabit7_new"},{4304, "sbcs_seabit8_new"},{4305, "sbcs_seabit9_new"},{4306, "sbcs_seabit11_new"},
+	{4307, "sbcs_seabit10_new"},{4308, "sbcs_seabit12_new"},{4309, "sbcs_seabit13_new"},{4310, "sbcs_seabit14_new"},{4311, "sbcs_seabit15_new"},
+	{4312, "sbcs_seabit16_new"},{4313, "sbcs_seabit17_new"},{4314, "sbseabed_CN01"},{4315, "sbseabed_CN03"},{4316, "sbseabed_CN04"},
+	{4317, "sbcn_seafloor03"},{4318, "sbcn_seafloor04"},{4319, "sbcn_seafloor01"},{4320, "sbcn_seafloor05"},{4321, "sbcn_seafloor06"},
+	{4322, "sbcn_seafloor07"},{4323, "sbxseabed_CN02"},{4324, "sbxseabed_CN05"},{4325, "sbxseabed_CN06"},{4326, "sbxseabed_CN07"},
+	{4327, "sbcn_seafloor08"},{4328, "sbcn_seafloor09"},{4329, "sbcn_seafloor10"},{4330, "sbcn2_seafloor01"},{4331, "sbcn2_seafloor02"},
+	{4332, "sbcn2_seafloor03"},{4333, "sbcn2_seafloor04"},{4334, "sbvgsEseafloor03"},{4335, "sbseabed_05_SFSe"},{4336, "sbseabed_10_SFSe"},
+	{4337, "sbseabed_09_SFSe"},{4338, "sbseabed_08_SFSe"},{4339, "sbseabed_07_SFSe"},{4340, "sbseabed_11_SFSe"},{4341, "sbseabed_03_SFSe"},
+	{4342, "sbseabed_02_SFSe"},{4343, "sbseabed_01_SFSe"},{4344, "sbseabed01_LAW"},{4345, "sbvgsSseafloor05"},{4346, "sbvgsSseafloor04"},
+	{4347, "sbcw_seabed01"},{4348, "sbcw_seabed02"},{4349, "sbcw_seabed03"},{4350, "sbcw_seabed04"},{4351, "sbcw_seabed05"},
+	{4352, "sbcw_seabed06"},{4353, "sbcuntwland27b"},{4354, "sbcuntwland28b"},{4355, "sbcuntwland30b"},{4356, "sbcuntwland43b"},
+	{4357, "sbcuntwland44b"},{4358, "sbcuntwland28bb"},{4359, "sbcuntwland30bb"},{4360, "sbObject01"},{4361, "sbObject02"},
+	{4362, "sbObject03"},{4363, "sbObject04"},{4364, "sbObject05"},{4365, "sbObject06"},{4366, "sbObject07"},
+	{4367, "sbObject08"},{4368, "sbObject09"},{4369, "sbObject10"},{4370, "sbObject11"},{4371, "sbObject12"},
+	{4372, "beach04_sv"},{4373, "sv_roadscoast01"},{4374, "beach04b_sv"},{4504, "cuntw_roadblockld"},{4505, "cuntw_roadblock01ld"},
+	{4506, "cuntw_roadblock02ld"},{4507, "cuntw_roadblock03ld"},{4508, "cuntw_roadblock04ld"},{4509, "cuntw_roadblock05ld"},{4510, "sfw_roadblock1ld"},
+	{4511, "sfw_roadblock2ld"},{4512, "sfw_roadblock3ld"},{4513, "sfn_roadblockld"},{4514, "cn2_roadblock01ld"},{4515, "cn2_roadblock02ld"},
+	{4516, "cn2_roadblock03ld"},{4517, "cn2_roadblock04ld"},{4518, "CE_Makospan1ld"},{4519, "CE_Fredbarld"},{4520, "CE_Fredbar01ld"},
+	{4521, "CE_Flintwat01ld"},{4522, "CE_Flintintld"},{4523, "sfse_roadblock1"},{4524, "sfse_roadblock3"},{4525, "sfse_roadblock4"},
+	{4526, "sfse_roadblock5"},{4527, "sfse_roadblock2"},{4533, "sbseabed_SFN03bb"},{4535, "sbseabed_SFN01"},{4538, "sbCE_grndPALCST05"},
+	{4540, "sbcn_seafloor02"},{4550, "LibrTow1_LAn"},{4551, "LAriverSec2_LAn"},{4552, "amubloksun1_LAn"},{4553, "road12_LAn2"},
+	{4554, "LibBase1_LAn"},{4555, "figfree4_LAn"},{4556, "sky4plaz1_LAn"},{4557, "road10_LAn2"},{4558, "LacmEntr1_LAn"},
+	{4559, "LacmaBase1_LAn"},{4560, "LacmCanop1_LAn"},{4562, "LAplaza2_LAn"},{4563, "LAskyscrap1_LAn"},{4564, "LAskyscrap2_LAn"},
+	{4565, "bunksteps1_LAn"},{4567, "road07_LAn2"},{4568, "ground01_LAn2"},{4569, "stolenbuilds05"},{4570, "stolenbuilds08"},
+	{4571, "stolenbuilds09"},{4572, "stolenbuilds11"},{4573, "stolenbuilds12"},{4574, "stolenbuilds13"},{4575, "fireescapes1_lan2"},
+	{4576, "lan2newbuild1"},{4584, "halgroundlan2"},{4585, "towerlan2"},{4586, "skyscrapn201"},{4587, "skyscrapn203"},
+	{4588, "roofshitlan2"},{4589, "road15_LAn2"},{4590, "grasspatchlan2"},{4591, "lan2shit03"},{4592, "lan2shit04"},
+	{4593, "lan2buildblk01"},{4594, "lan2buildblk02"},{4595, "cpark05_LAN2"},{4596, "cspGM_LAN2"},{4597, "crprkblok4_LAN2"},
+	{4598, "crprkblok2_LAN2"},{4599, "csp2GM_LAN2"},{4600, "LAdtbuild10_LAn"},{4601, "LAn2_gm1"},{4602, "LAskyscrap4_LAn"},
+	{4603, "sky4plaz2_LAn"},{4604, "build4plaz_LAn2"},{4605, "skyscrapn203_gls"},{4636, "cparkgmaumk_LAN"},{4637, "cpark_muck_lan2"},
+	{4638, "paypark_lan01"},{4639, "paypark_lan02"},{4640, "paypark_lan03"},{4641, "paypark_lan04"},{4642, "paypark_lan"},
+	{4643, "LAplaza2b_LAn2"},{4644, "road06_LAn2"},{4645, "road14_LAn2"},{4646, "road13_LAn2"},{4647, "road11_LAn2"},
+	{4648, "road05_LAn2"},{4649, "road01_LAn2"},{4650, "road02_LAn2"},{4651, "road03_LAn2"},{4652, "road04_LAn2"},
+	{4653, "Freeway7_LAn2"},{4654, "road09_LAn2"},{4656, "Freeway1_LAn2"},{4658, "Freeway2_LAn2"},{4660, "Freeway3_LAn2"},
+	{4662, "Freeway4_LAn2"},{4664, "Freeway5_LAn2"},{4666, "Freeway6_LAn2"},{4679, "Freeway8_LAn2"},{4681, "LAdtbuild6_LAn2"},
+	{4682, "LAdtbuild3_LAn2"},{4683, "LAdtbuild2_LAn2"},{4684, "LAalley1_LAn2"},{4685, "LAalley2_LAn2"},{4690, "skyscrapn202"},
+	{4691, "csp3GM_LAN2"},{4692, "Freeway9_LAn2"},{4694, "Freeway10_LAn2"},{4695, "Freeway11_LAn2"},{4697, "crprkblok1_LAN2"},
+	{4700, "cpark01_LAN2"},{4701, "cpark02_LAN2"},{4702, "cpark03_LAN2"},{4703, "cpark04_LAN2"},{4708, "LAdtbuild1_LAn2"},
+	{4710, "road08_LAn2"},{4711, "amublokalpha_LAn2"},{4712, "LibPlaza1_LAn"},{4714, "Lacmaalphas1_LAn"},{4715, "LTSLAsky1_LAn2"},
+	{4716, "LTSLAsky2_LAn2"},{4717, "LTSLAsky3_LAn2"},{4718, "gm_build4_LAn2"},{4720, "LTSLAsky1b_LAn"},{4721, "LTSLAsky2b_LAn2"},
+	{4722, "LTSLAsky3b_LAn2"},{4723, "LTSLAsky4_LAn2"},{4724, "librarywall_lan2"},{4725, "LTSLAsky6_LAn2"},{4726, "libtwrhelipd_LAn2"},
+	{4727, "libtwrhelipda_LAn2"},{4729, "billbrdlan2_01"},{4730, "billbrdlan2_03"},{4731, "billbrdlan2_05"},{4732, "billbrdlan2_06"},
+	{4733, "billbrdlan2_07"},{4734, "billbrdlan2_08"},{4735, "billbrdlan2_09"},{4736, "billbrdlan2_10"},{4737, "fireescapes3_lan2"},
+	{4738, "fireescapes2_lan2"},{4739, "LTSLAbuild1_LAn2"},{4740, "LTSLAbuild2_LAn2"},{4741, "LTSLAbuild3_LAn2"},{4742, "LTSLAbuild4_LAn2"},
+	{4743, "LTSLAsky5_LAn2"},{4744, "LTSLAbuild5_LAn2"},{4745, "LTSLAbuild6_LAn2"},{4746, "LTSLAsky7_LAn2"},{4747, "LTSLAsky8_LAn2"},
+	{4748, "LTSLAbuild7_LAn2"},{4749, "LTSLAbuild8_LAn2"},{4750, "LTSLAbuild9_LAn2"},{4751, "LTSLAbuild10_LAn2"},{4752, "LTSLAbuild11_LAn2"},
+	{4806, "BTOLAND8_LAS"},{4807, "LAroads_20gh_LAs"},{4808, "LAroadss_30_LAs"},{4809, "LAroads_05_LAs"},{4810, "hillpalos04_LAs"},
+	{4811, "clifftest02"},{4812, "clifftest05"},{4813, "clifftest07"},{4814, "clifftest09"},{4815, "clifftestgrnd2"},
+	{4816, "ROCKLIFF1_LAS"},{4817, "TRNTRK7_LAS"},{4818, "TRNTRK8_LAS"},{4819, "TRNTRK5_LAS"},{4820, "BTOLAND1_LAS"},
+	{4821, "BTOLAND2_LAS"},{4822, "NWCSTRD1_LAS"},{4823, "lasgrifroad"},{4824, "lasgrifsteps2"},{4825, "griffithoblas"},
+	{4826, "grifftop2"},{4827, "LAroads_20ghi_LAs"},{4828, "lasairprt5"},{4829, "lasairprt4"},{4830, "lasairprt3"},
+	{4831, "airpurt2_las"},{4832, "airtwer_Las"},{4833, "airpurtder_las"},{4834, "airoad1d_LAS"},{4835, "airoad1b_LAS"},
+	{4836, "LAroadsx_04_LAs"},{4837, "LApedhusrea_LAs"},{4838, "airpurtderfr_las"},{4839, "bchcostrd3_LAS"},{4840, "bchcostrd4_LAS"},
+	{4841, "bchcostrd1_LAS"},{4842, "Beach1_LAs0fg"},{4843, "Beach1_LAs0fhy"},{4844, "Beach1_LAs04"},{4845, "hillpalos02_LAs"},
+	{4846, "LAcityped1_LAs"},{4847, "Beach1_LAs0gj"},{4848, "sanpedbeaut"},{4849, "snpdmshfnc3_LAS"},{4850, "snpedshpblk07"},
+	{4851, "hillpalos01_LAs"},{4852, "hillpalos03_LAs"},{4853, "traincano_LAS"},{4854, "lasundrairprt2"},{4855, "lasundrairprt1"},
+	{4856, "lasundrairprt3"},{4857, "snpedmtsp1_LAS"},{4858, "snpedland1_LAS"},{4859, "snpedland2_LAS"},{4860, "unionstwar_LAS"},
+	{4861, "snpedhuair2_LAS"},{4862, "airtun2_LAS"},{4863, "airtun1_LAS"},{4864, "airtun3_LAS"},{4865, "lasrnway2_LAS"},
+	{4866, "lasrnway1_LAS"},{4867, "lasrnway3_LAS"},{4868, "LAroads_23_LAs"},{4869, "lasrnway8_LAS"},{4870, "airpurt2ax_las"},
+	{4871, "airpurt2bx_las"},{4872, "LAroads_042e_LAs"},{4873, "unionstwarc2_LAS"},{4874, "Helipad1_las"},{4875, "hillpalos06_LAs"},
+	{4876, "hillpalos08_LAs"},{4877, "dwntwnbit4_LAS"},{4878, "obcity1_LAS"},{4879, "hillpaloswal1_LAs"},{4880, "dwntwnbit2_LAS"},
+	{4881, "uninstps_LAS01"},{4882, "lasbrid1_LAS"},{4883, "bchcostair_LAS"},{4884, "lastranentun1_LAS"},{4885, "lastranentun4_LAS"},
+	{4886, "gngspwnhus1_LAS"},{4887, "dwntwnbit1_LAS"},{4888, "dwntwnbit3_LAS"},{4889, "dwntwnbit2b_LAS"},{4890, "lasairprterm2_LAS"},
+	{4891, "billboard_LAS"},{4892, "kbsgarage2_LAS"},{4894, "dwntwnbit1b_LAS"},{4895, "lstrud_LAS"},{4896, "clifftest12"},
+	{4897, "Beach1a1_LAs"},{4898, "clifftestgrnd"},{4981, "snpedteew1_LAS"},{4982, "snpedteew3_LAS"},{4983, "snpedteew1vv_LAS"},
+	{4984, "snpedteew3gt_LAS"},{4985, "Cylinder03"},{4986, "odfwer_LAS"},{4988, "lasbillbrd1_las"},{4990, "airprtwlkto1_LAS"},
+	{4991, "lasairprterm1_LAS"},{4992, "airplants_LAS"},{4993, "airplnt2_LAS"},{4994, "airbillb_LAS"},{4995, "airsinage_LAS"},
+	{4996, "airsinage2_LAS"},{4997, "airsinage3_LAS"},{4998, "airsinage4_LAS"},{4999, "airsinage6_LAS"},{5000, "airsinage5_LAS"},
+	{5001, "lasrunwall2_LAS"},{5002, "lasrnway4_LAS"},{5003, "lasrnway5_LAS"},{5004, "lasrnway6_LAS"},{5005, "lasrunwall1_LAS"},
+	{5006, "airprtwlkto2_LAS"},{5007, "lasrunwall3_LAS"},{5009, "lasrnway7_LAS"},{5013, "LAroakt1_30_LAs"},{5016, "snpdPESS1_LAS"},
+	{5017, "lastripx1_LAS"},{5020, "mul_LAS"},{5021, "LAroadsbrk_05_LAs"},{5023, "grifovrhang2_LAS"},{5024, "snpedtee_LAS"},
+	{5025, "snpedtedc_LAS"},{5026, "lstrudct1_LAS"},{5028, "obcity1ct1_LAS"},{5030, "lasrunwall1ct_LAS"},{5031, "snpedteairt_LAS"},
+	{5032, "las_runsigns_LAS"},{5033, "unmainstat_LAS"},{5034, "lasairprtcut4"},{5036, "BTOLAND1ct_LAS"},{5038, "airtun2ct_LAS"},
+	{5040, "unionliq_LAS"},{5042, "bombshop_LAs"},{5043, "bombdoor_LAs"},{5044, "las_runsignsx_LAS"},{5046, "bchcostrd4fuk_LAS"},
+	{5051, "airobarsjm_LAS"},{5052, "BTOROAD1vb_LAS"},{5056, "modLAS"},{5057, "lanitewin1_LAS"},{5058, "lanitewin2_LAS"},
+	{5059, "lanitewin3_LAS"},{5060, "crlsafhus_LAS"},{5061, "lascarl"},{5062, "hillpawfnce_LAs"},{5064, "TRNTRK5z_LAS"},
+	{5066, "mondoshave_LAS"},{5068, "airctsjm1_las"},{5069, "ctscene1_las"},{5070, "sjmctfnce1_las"},{5071, "sjmctfnce2_las"},
+	{5072, "sjmctfnce3_las"},{5073, "sjmctfnce4_las"},{5074, "sjmctfnce5_las"},{5075, "sjmctfnce6_las"},{5076, "sjmctfnce7_las"},
+	{5077, "sjmctfnce8_las"},{5078, "ctscene2_las"},{5079, "sjmbarct1_LAS"},{5080, "sjmbarct2_LAS"},{5081, "rdcrashbar1_LAs"},
+	{5082, "rdcrashbar2_LAs"},{5083, "alphbrk1_las"},{5084, "alphbrk2_las"},{5086, "alphbrk3_las"},{5087, "alphbrk4_las"},
+	{5088, "alphbrk5_las"},{5089, "alphbrk6_las"},{5105, "Stordralas2"},{5106, "Roadsbx_las2"},{5107, "chemplant2_las2"},
+	{5108, "LADocks2_las2"},{5109, "sanpdmdock3_las2"},{5110, "mexcrnershp2_las2"},{5111, "IndusLand2_las2"},{5112, "LAroads_26_las2"},
+	{5113, "BlockAA_las2"},{5114, "Beach1_las2"},{5115, "las2chemdock1"},{5116, "las2stripbar1"},{5117, "TRNTRK4_las2"},
+	{5118, "TRNTRK3_las2"},{5119, "TRNTRK4A_las2"},{5120, "BTOROAD3_las2"},{5121, "BTOLAND6_las2"},{5122, "BTOLAND5_las2"},
+	{5123, "NEWCOMP2_las2"},{5124, "NWCSTRD2_las2"},{5125, "NWCSTRD3_las2"},{5126, "dockcranescale0"},{5127, "imcomp1trk"},
+	{5128, "BTOROAD1mnk_las2"},{5129, "imracompint_las2"},{5130, "imcompstrs02"},{5131, "imrancomp1_las2"},{5132, "las2dkwar107"},
+	{5133, "bchcostrd6_las2"},{5134, "snpedshprk_las2"},{5135, "brkwrhus02"},{5136, "snpedshprk1_las2"},{5137, "brkwrhus3_las2"},
+	{5138, "snpdoldwrhs2_las2"},{5139, "sanpedro4_las2"},{5140, "snpedtatshp"},{5141, "BTOROADxtra_las2"},{5142, "las2plaza1bit"},
+	{5143, "las2chendock04"},{5144, "las2jmscum11"},{5145, "sanpdmdock2_las2"},{5146, "sanpdmdock1_las2"},{5147, "sanpedbigbrid_las2"},
+	{5148, "bigstormbrid_las2"},{5149, "scumest1_las2"},{5150, "SCUMWIRES1_las2"},{5151, "carganghud_las2"},{5152, "stuntramp1_las2"},
+	{5153, "stuntramp7_las2"},{5154, "dk_cargoshp03d"},{5155, "dk_cargoshp05d"},{5156, "dk_cargoshp24d"},{5157, "dk_cargoshpd25d"},
+	{5158, "dk_cargoshp76d"},{5160, "dkcargohull2d"},{5166, "dkcargohull2bd"},{5167, "dkcargohull2cd"},{5168, "cluckinbell1_las2"},
+	{5169, "imnrmpy1_las2"},{5170, "imnrmpy2_las2"},{5171, "dockoff01_LAs2"},{5172, "Beach1spt_las2"},{5173, "las2jmscum12"},
+	{5174, "sanpedmexq4_las2"},{5175, "sanpedmexq3_las2"},{5176, "sanpdmdocka_las2"},{5177, "las2stripsshp1"},{5178, "cutrdn1_las2"},
+	{5179, "mexcrnershp_las2"},{5180, "nwspltbild2_las2"},{5181, "nwspltbild3_las2"},{5182, "nwspltbild4_las2"},{5183, "nwspltbild1_las2"},
+	{5184, "mdock1a_las2"},{5185, "brkwrhusfuk_las2"},{5186, "nwsnpdnw_las2"},{5187, "mexcrnrxc_las2"},{5188, "nwrrdssplt_las2"},
+	{5189, "ctddwwnblk_las2"},{5190, "scrapfnce_las2"},{5191, "nwdkbridd_las2"},{5192, "chemgrnd_las2"},{5231, "snpedteew2_las2"},
+	{5232, "snpedteew9_las2"},{5233, "snpedteew8_las2"},{5234, "SCUMWFIRES1_las20"},{5243, "RiverBridls_las2"},{5244, "lasntrk1im03"},
+	{5250, "bchcostrd6v_las2"},{5259, "las2dkwar01"},{5260, "las2dkwar02"},{5261, "las2dkwar03"},{5262, "las2dkwar04"},
+	{5265, "SCUMWFIRES1_las01"},{5266, "snpedteew8_las01"},{5267, "sanpedmexq1_las2"},{5268, "imracompral_las2"},{5269, "las2dkwar05"},
+	{5270, "StormDraifr1_las2"},{5271, "LAroads_24_las2"},{5272, "TRNTRK2_las2"},{5273, "BTOLAND4_las2"},{5274, "StormDraifr2_las2"},
+	{5275, "TRNTRK4A_las201"},{5276, "NEWCOMPRD_las2"},{5277, "NEWCMPTRK_las2"},{5278, "NEWCOMP1_las2"},{5279, "nwsnpdgrnd1_las2"},
+	{5290, "SCUMWIRES1_las03"},{5291, "snpedscrsap_las01"},{5292, "snpedteew8_las03"},{5293, "snpedteew8_las04"},{5294, "snpedteew8_las05"},
+	{5295, "snpedteew8_las06"},{5296, "LAroads_26a_las01"},{5297, "LAroads_26b_las01"},{5298, "bigstormbridb_las2"},{5299, "las2_brigtower"},
+	{5301, "balcony_kbolt01"},{5302, "burg_lkupdoor"},{5306, "chemfence_las2"},{5308, "balcony_kbolt02"},{5309, "las2lnew3_las2"},
+	{5310, "las2lnew2_las2"},{5311, "las2lnew1_las2"},{5312, "snpedteevbg_las2"},{5313, "newlas2sh_LAS2"},{5314, "NEWCOMfuk_las2"},
+	{5322, "stormd_fill1_LAS2"},{5323, "dockfenceq_las2"},{5324, "dockfencew_las2"},{5325, "dockfencee_las2"},{5326, "dockfencer_las2"},
+	{5327, "stormful2_LAS2"},{5328, "stormful2s_LAS2"},{5329, "BTOROADsp3_las2"},{5330, "BTOROAsp2_las2"},{5333, "sanpedbigslt_las2"},
+	{5337, "induswire1_las2"},{5338, "Beach1fnce_las2"},{5339, "Bealpha1_las2"},{5340, "modlas2"},{5341, "crlsafhus_LAS2"},
+	{5342, "BTOLAND5m_las2"},{5343, "BTOLAND5n_las2"},{5347, "TRNTRK3p_las2"},{5349, "BTOLAND6q_las2"},{5351, "snpedteew8_las07"},
+	{5353, "NWCSTRD4_las2"},{5355, "Stordrablas2"},{5358, "las2jmscumTR12"},{5363, "NWCSTRtr_las2"},{5364, "NEWCOMtr_las2"},
+	{5366, "alphbrk1_las2"},{5367, "alphbrk2_las2"},{5368, "alphbrk3_las2"},{5369, "alphbrk4_las2"},{5370, "alphbrk5_las2"},
+	{5371, "alphbrk6_las2"},{5372, "alphbrk7_las2"},{5373, "alphbrk8_las2"},{5374, "alphbrk9_las2"},{5375, "alphbrk91_las2"},
+	{5390, "laeskateparkLA"},{5391, "laeroad01"},{5392, "laestripmall1"},{5393, "laeshop1"},{5394, "xstpdnam_LAE"},
+	{5395, "laecomptonbrij3"},{5396, "laeRailBrijBlok"},{5397, "laeclubBlock1"},{5398, "laetraintunn02"},{5399, "laetraintunn01"},
+	{5400, "laeskatetube1"},{5401, "laegarages1nw"},{5402, "laehospground1"},{5403, "laehospital1"},{5404, "laestormdrain01"},
+	{5405, "laeBlakWesTran2"},{5406, "laecrackmotel4"},{5407, "laelasruff201"},{5408, "laeexaminerbuild1"},{5409, "laepetrol1a"},
+	{5410, "laecumpstreet"},{5411, "laeroadsblk"},{5412, "laelasjmscubit"},{5413, "laecrackmotel1"},{5414, "laeJeffers02"},
+	{5415, "laeskateparkTrans"},{5416, "laeganghous205"},{5417, "laenwblk2"},{5418, "lae711block01"},{5419, "laestormdrain02"},
+	{5420, "laestormdrain03"},{5421, "laesmokeshse"},{5422, "laespraydoor1"},{5423, "laeJeffers03"},{5424, "laeJeffers04"},
+	{5425, "laeJeffers05"},{5426, "laeJeffers06"},{5427, "laeJeffers09"},{5428, "laeJeffers10"},{5429, "xwhattfk_LAE"},
+	{5430, "laeIdlewood11"},{5431, "laeroad02"},{5432, "laeroad03"},{5433, "laeroad04"},{5434, "laeroad05"},
+	{5435, "laeroad06"},{5436, "fukxroad07"},{5437, "laeroad08"},{5438, "laeroad09"},{5439, "laeroad10"},
+	{5440, "laeroad11"},{5441, "laeroad12"},{5442, "laeroad13"},{5443, "laeGlenPark02"},{5444, "laeChicano02"},
+	{5445, "laeChicano01"},{5446, "laeChicano03"},{5447, "laeChicano04"},{5448, "laeChicano05"},{5449, "laeChicanoTr1"},
+	{5450, "laeChicano06"},{5451, "laeChicano07"},{5452, "laeChicano09"},{5453, "laeChicano10"},{5456, "laeroad14"},
+	{5457, "laeGlenPark01"},{5458, "laeMacPark01"},{5459, "laeJeffers01"},{5461, "laeGlenPark05"},{5462, "laeGlenPark04"},
+	{5463, "laebuildsit01"},{5464, "laeGlenPark04Tr"},{5465, "laeGlenPark05Nt"},{5467, "laehospitalTr"},{5469, "laeRoads11Tr"},
+	{5470, "laeRoads10Tr"},{5471, "laeIdlewood01"},{5472, "frecrsbrid_LAE"},{5473, "laeidlebrijTr"},{5474, "laeIdlewood02"},
+	{5475, "laeIdleProj02"},{5476, "laeIdleProj01"},{5477, "laerailtrack1"},{5478, "laerailtrack2"},{5479, "laerailtrack3"},
+	{5480, "laerailtrack4"},{5481, "laebridge"},{5482, "laeroad16"},{5483, "laeroad17"},{5484, "laeroad18"},
+	{5485, "laeroad20"},{5486, "laeroad21"},{5487, "laeroad22"},{5488, "laeroad23"},{5489, "laeroad24"},
+	{5490, "laeroad25"},{5491, "laeroad26"},{5492, "laeroad27"},{5493, "laeroad28"},{5494, "laeroad29"},
+	{5495, "laeroad30"},{5496, "laeroad31"},{5497, "laeroad32"},{5498, "laeroad33"},{5499, "laeroad34"},
+	{5500, "laeroad35"},{5501, "laeroad36"},{5502, "laeroad37"},{5503, "laeroad38"},{5504, "laeroad39"},
+	{5505, "laeroad40"},{5506, "laeroad41"},{5507, "laeroad42"},{5508, "laeroad43"},{5509, "laeroad44"},
+	{5510, "laeroad45"},{5511, "laeroad46"},{5512, "laeroad47"},{5513, "laerail6"},{5518, "Idlewood05_LAe"},
+	{5519, "Idlewood04_LAe"},{5520, "BDupsHouse_LAe"},{5521, "Idlewofuk06_LAe"},{5522, "Idlewood06Tr_LAe"},{5528, "laeroadct43"},
+	{5532, "laesprayshop"},{5565, "laectru_LAE"},{5624, "laeHillsctst03"},{5626, "laecompmedhos518"},{5627, "lasbrid1SJM_LAe"},
+	{5628, "laenwblkB1"},{5629, "LAEalpha6"},{5630, "blockalphalae"},{5631, "apartmntalpha"},{5632, "motelalpha"},
+	{5633, "LAEalpha1"},{5634, "LAEalpha2"},{5635, "LAEalpha3"},{5636, "LAEalpha4"},{5637, "LAEalpha5"},
+	{5638, "LAEalpha7"},{5639, "LAEdirtapha"},{5640, "laemacpark02"},{5641, "LAEalpha5b"},{5642, "laeChicano11"},
+	{5643, "laeChicano08"},{5644, "laebuildsit01a"},{5650, "laeroad03b"},{5652, "stormdraindrt1_LAe"},{5654, "laeJeffers06alphas"},
+	{5655, "laeChicano01b"},{5656, "laeChicano01c"},{5660, "laeskateP_alphas"},{5661, "LTSlaehospital1"},{5662, "LTSlaeChicano02"},
+	{5663, "graffiti01_lae"},{5665, "LTSlaeGlenPark04"},{5668, "laebridgeb"},{5674, "laerailtrack2b"},{5676, "Motel2laealphas"},
+	{5677, "laeJeffersalpha"},{5678, "Lae_smokecutscene"},{5679, "laetraintunn03"},{5681, "carwashalphas_lae"},{5682, "laeJeffers10alphas"},
+	{5703, "road_lawn23"},{5704, "archwindshop_laW"},{5705, "filmstud1"},{5706, "studiobld03_laW"},{5707, "road_lawn03"},
+	{5708, "hospital_law"},{5709, "shop03_laW01"},{5710, "cem01_law"},{5711, "cem02_law"},{5712, "cemint01_law"},
+	{5713, "grave01_law"},{5714, "grave03_law"},{5715, "grave08_law"},{5716, "manns01_LAwN"},{5717, "Sunset20_LAwN"},
+	{5718, "sunset16_LAwN"},{5719, "holbuild01_law"},{5720, "holbuild02_law"},{5721, "holbuild04_law"},{5722, "manns05_LAwN"},
+	{5723, "manns04_LAwN"},{5724, "holsign03n_law"},{5725, "holpacific2_law"},{5726, "Lawn_holbuild21"},{5727, "holbuild10_law"},
+	{5728, "dummybuild46_law"},{5729, "MelBlok02_LAwN"},{5730, "MelBlok03_LAwN"},{5731, "MelBlok05_LAwN"},{5732, "donut01_LAwN"},
+	{5733, "melrose07_law"},{5734, "melrose09_law"},{5735, "studoff_law"},{5736, "studoff02_law"},{5737, "archshop07_laW02"},
+	{5738, "hothol02_law01"},{5739, "tallbldgrn"},{5740, "tall2"},{5741, "lawnstuff21"},{5742, "lawnstuff15"},
+	{5743, "grndLAwn"},{5744, "road_lawn32"},{5745, "road_lawn07"},{5746, "road_lawn08"},{5747, "road_lawn01"},
+	{5748, "road_lawn09"},{5749, "road_lawn10"},{5750, "road_lawn11"},{5751, "road_lawn12"},{5752, "road_lawn13"},
+	{5753, "road_lawn37"},{5754, "road_lawn15"},{5755, "road_lawn36"},{5756, "road_lawn33"},{5757, "road_lawn18"},
+	{5758, "road_lawn19"},{5759, "road_lawn20"},{5760, "MelBlok09_LAwN"},{5761, "MelBlok06_LAwN"},{5762, "foodmartlawn"},
+	{5763, "bigbuillawn"},{5764, "lawnwires01"},{5765, "sunset15_LAwN"},{5766, "capitRec2_LAwN"},{5767, "capitRec1_LAwN"},
+	{5768, "TaftBldg1_LAwN"},{5769, "VineBlock1_LAwN"},{5770, "TaftBldgTran_LAwN"},{5771, "melrose10_law"},{5772, "RailTunn01_LAwN"},
+	{5773, "TrainStat01_LAwN"},{5774, "garage01_LAwN"},{5775, "standard01_LAwN"},{5776, "standardTra_LAwN"},{5777, "tombston01_LAwN"},
+	{5778, "gravecov01_LAwN"},{5779, "garagDoor1_LAwN"},{5780, "MelBlok11Tr_LAwN"},{5781, "MelBlok11_LAwN"},{5782, "MelBlok12_LAwN"},
+	{5783, "MelWir02_LAwN"},{5784, "MelBlok08_LAwN"},{5785, "MelBlok02Tr_LAwN"},{5786, "shutters01_LAwN"},{5787, "MelBlok01_LAwN"},
+	{5788, "MelBlok01T_LAwN"},{5789, "melrose01Tr_law"},{5790, "shopboards01_LAwn"},{5791, "shutters02_LAwN"},{5792, "fredricks01_LAwN"},
+	{5793, "road_lawn02"},{5794, "road_lawn06"},{5795, "road_lawn14"},{5796, "road_lawn38"},{5797, "road_lawn21"},
+	{5798, "road_lawn35"},{5799, "road_lawn29"},{5800, "road_lawn30"},{5801, "road_lawn28"},{5802, "road_lawn34"},
+	{5803, "road_hillLAwn12"},{5804, "road_lawn25"},{5805, "road_lawn22"},{5806, "road_lawn17"},{5807, "road_lawn16"},
+	{5808, "road_lawn39"},{5809, "lawngrndaa"},{5810, "lawnmalstrip"},{5811, "lawnmallsign1"},{5812, "grasspatchlawn"},
+	{5813, "lawnshop1"},{5814, "lawncluckbel"},{5815, "lawngrnda"},{5816, "odrampbit"},{5817, "odrampbit01"},
+	{5818, "posters02_LAwN"},{5819, "lawnbuildg"},{5820, "odrampbit02"},{5821, "odrampbit03"},{5822, "lhroofst14"},
+	{5823, "lawnalley"},{5835, "ci_astage"},{5836, "ci_watertank"},{5837, "ci_guardhouse1"},{5838, "ci_watertank01"},
+	{5844, "lawnmart_alpha"},{5845, "lawngrndasas"},{5846, "posters01_LAwN"},{5847, "lawnbushb"},{5848, "mainblk_LAwN"},
+	{5853, "sunset21_LAwN"},{5854, "lawnbillbrd2"},{5855, "lawncrates"},{5856, "lawnspraydoor1"},{5857, "Lawn_buyable1"},
+	{5859, "road_lawn24"},{5860, "road_lawn27"},{5861, "road_lawn05"},{5862, "road_lawn31"},{5863, "filmstud4"},
+	{5864, "filmstud3"},{5865, "filmstud2"},{5866, "road40_LAwN"},{5868, "sunset16Tr_LAwN"},{5870, "sunset17_LAwN"},
+	{5871, "Graveyard01_LAwN"},{5872, "GraveyardTr_LAwN"},{5873, "manns03Tr_LAwN"},{5874, "manns03_LAwN"},{5875, "manns02_LAwN"},
+	{5876, "LTSmanns_LAwN"},{5877, "VineBlokTran_LAwN"},{5878, "VineBlock2_LAwN"},{5881, "skyscr02_LAwN"},{5882, "skyscr01_LAwN"},
+	{5885, "skyscr03_LAwN"},{5886, "spray01_LAwN"},{5887, "FredBlock_LAwN"},{5888, "FredBlokTran_LAwN"},{5891, "hblues02_LAwN"},
+	{5892, "hblues01_LAwN"},{5893, "hblues01Tr_LAwN"},{5896, "sunset22_LAwN"},{5986, "Chateau01_LAwN"},{5987, "sunset19_LAwN"},
+	{5990, "LTSEld01_LAwN"},{5991, "LTSrec01_LAwN"},{5992, "LTSReg01_LAwN"},{5993, "lawnmalstripTR"},{5994, "road_lawn26"},
+	{5995, "road_lawn04"},{5998, "sunset18Tr_LAwN"},{5999, "sunset18_LAwN"},{6001, "LTSsunset18_LAwN"},{6006, "newbit01_LAwN"},
+	{6007, "newbit02_LAwN"},{6010, "lawnboigashot25"},{6035, "lawroads_law12"},{6036, "filler01_laW"},{6037, "filler02_laW"},
+	{6038, "wilshire2_law"},{6039, "wilshire5_law"},{6040, "wilshire7_law"},{6041, "wilshire6_law"},{6042, "venblue01_law"},
+	{6043, "wilshire1w_law"},{6044, "wilshire2w_law"},{6045, "wilshire5w_law"},{6046, "hedge01_law"},{6047, "wilshire1_law"},
+	{6048, "mall_laW"},{6049, "beachwall_law"},{6050, "beachhut01_law"},{6051, "mallglass_laW"},{6052, "artcurve_law"},
+	{6053, "stepshop_law"},{6054, "lawroads_law02"},{6055, "lawroads_law03"},{6056, "jettysign_law"},{6057, "wdpanelhs09_law"},
+	{6058, "wdpanelhs08_law"},{6059, "offven02_law"},{6060, "plaza2top_law"},{6061, "plaza2bot_law"},{6062, "Miami_atm"},
+	{6063, "staplaz_law"},{6064, "LAbeach_03bx"},{6065, "LAbeach_04bx"},{6066, "vengym_law"},{6087, "offven01_law"},
+	{6088, "offven05_law"},{6094, "bevgrnd03b_law"},{6095, "offvensp02_law"},{6096, "offvensp03_law"},{6098, "gzbuild2_law"},
+	{6099, "gaz3_law"},{6100, "gaz1_law"},{6101, "gaz2_law"},{6102, "gaz4_LAW"},{6103, "gaz5_LAW"},
+	{6104, "gaz18_LAW"},{6110, "plazadrawlast_LAW"},{6111, "lawroads_law05"},{6112, "lawroads_law06"},{6113, "lawroads_law07"},
+	{6114, "lawroads_law08"},{6115, "lawroads_law09"},{6116, "lawroads_law10"},{6117, "lawroads_law11"},{6118, "lawroads_law01"},
+	{6119, "lawroads_law13"},{6120, "lawroads_law14"},{6121, "lawroads_law15"},{6122, "lawroads_law16"},{6123, "lawroads_law17"},
+	{6124, "lawroads_law18"},{6125, "lawroads_law19"},{6126, "lawroads_law20"},{6127, "lawroads_law21"},{6128, "lawroads_law22"},
+	{6129, "lawroads_law23"},{6130, "mallb_laW"},{6132, "gaz8_law"},{6133, "gaz9_law"},{6134, "gaz11_law"},
+	{6135, "gaz13_law"},{6136, "gaz15_law"},{6137, "gaz12_law"},{6138, "gaz10_law"},{6145, "gaz16_law"},
+	{6148, "gaz19_law"},{6150, "gaz7_LAW"},{6151, "gaz21_LAW"},{6152, "gaz20_law"},{6157, "gaz22_law"},
+	{6158, "gaz24_law"},{6159, "gaz25_law"},{6160, "gaz23_law"},{6165, "burggrnd1_law"},{6186, "gaz5_LAW01"},
+	{6187, "gaz26_law"},{6188, "gaz_pier2"},{6189, "gaz_pier1"},{6192, "nitelites_LAW02"},{6193, "nitelites_LAW01"},
+	{6194, "nitelites_LAW05"},{6195, "nitelites_LAW03"},{6196, "nitelites_LAW04"},{6199, "gaz27_LAW"},{6203, "LAland_08"},
+	{6204, "lawplaza_alpha"},{6205, "ja_gerrartlaw"},{6209, "beachbnt"},{6210, "beachbunt2"},{6211, "offven01_law01"},
+	{6212, "offven05_law01"},{6213, "venlaw_grnd"},{6214, "LAW_alphaveg"},{6217, "law_vengrnd"},{6223, "gaz2bld_law"},
+	{6225, "lawroads_law04"},{6227, "canalWest01_LAw"},{6228, "CanalBrij02_LAw"},{6229, "canalEast01_LAw"},{6230, "canaljetty_LAw"},
+	{6231, "CanalRoad01_LAw"},{6232, "canal_arch"},{6233, "canal_floor"},{6234, "canal_floor2"},{6235, "canal_arch01"},
+	{6236, "canal_floor3"},{6237, "venice_alpha"},{6248, "RailTunn01_LAw"},{6249, "RailTunn02_LAw"},{6250, "RailTunn03_LAw"},
+	{6251, "RailTunn04_LAw"},{6252, "RailTunn05_LAw"},{6257, "burger01_LAw"},{6280, "Beach01_LAw2"},{6281, "Beach02_LAw2"},
+	{6282, "venice03_laW2"},{6283, "pier04b_LAw2"},{6284, "santahouse02_law2"},{6285, "santahouse04_law2"},{6286, "santahouse05_law2"},
+	{6287, "Pier02c_LAw2"},{6288, "Pier02b_LAw2"},{6289, "pier03b_LAw2"},{6290, "RailTunn02_LAw2"},{6291, "Roads30_LAw2"},
+	{6292, "RailTunn01_LAw2"},{6293, "lawborder2b_LAW2"},{6294, "santahousegrp_law2"},{6295, "sanpedlithus_LAw2"},{6296, "veropolice_LAW2"},
+	{6297, "Beachut01_LAw2"},{6298, "ferris01_LAw2"},{6299, "pier03c_LAw2"},{6300, "Pier04_LAw2"},{6301, "Roads11_LAw2"},
+	{6302, "Roads14_LAw2"},{6303, "Roads16_LAw2"},{6304, "Roads19_LAw2"},{6305, "Roads23_LAw2"},{6306, "Roads24_LAw2"},
+	{6307, "Roads26_LAw2"},{6308, "Roads28_LAw2"},{6309, "Roads29_LAw2"},{6310, "Roads08_LAw2"},{6311, "Roads33_LAw2"},
+	{6312, "BeaCliff03_LAw2"},{6313, "BeaCliff01_LAw2"},{6314, "Roads31_LAw2"},{6315, "BeaLand01_LAw2"},{6316, "Roads02_LAw2"},
+	{6317, "Roads07_LAw2"},{6318, "Roads12_LAw2"},{6319, "Roads17_LAw2"},{6320, "Roads15_LAw2"},{6321, "Roads18_LAw2"},
+	{6322, "Roads20_LAw2"},{6323, "Roads21_LAw2"},{6324, "Roads22_LAw2"},{6325, "Roads01_LAw2"},{6326, "Roads34_LAw2"},
+	{6327, "Roads35_LAw2"},{6328, "sunset12_LAw2"},{6329, "Roads27_LAw2"},{6330, "Roads06_LAw2"},{6331, "Roads05_LAw2"},
+	{6332, "rodeo01_LAw2"},{6333, "Roads25_LAw2"},{6334, "rodeo02_LAw2"},{6336, "rodeo03_LAw2"},{6337, "sunset01_LAw2"},
+	{6338, "sunset02_LAw2"},{6340, "rodeo06_LAw2"},{6341, "century02_LAw2"},{6342, "century01_LAw2"},{6343, "GeoPark01_LAw2"},
+	{6344, "GeoParkTr_LAw2"},{6345, "Roads04_LAw2"},{6347, "BeaCliff04_LAw2"},{6349, "SunBils02_LAw2"},{6350, "SunBils01_LAw2"},
+	{6351, "rodeo05_LAw2"},{6352, "rodeo05Tr_LAw2"},{6353, "SunBils04_LAw2"},{6354, "Sunset04_LAw2"},{6355, "Sunset05_LAw2"},
+	{6356, "Sunset06_LAw2"},{6357, "Sunset04Tr_LAw2"},{6362, "Roads34Tr_LAw2"},{6363, "sunset02Tr_LAw2"},{6364, "sunset07_LAw2"},
+	{6366, "sunset08_LAw2"},{6368, "sunset03_LAw2"},{6369, "sunset09_LAw2"},{6370, "rodeo06Tr_LAw2"},{6371, "rodeo04_LAw2"},
+	{6372, "rodeo04Tr_LAw2"},{6373, "sunset11_LAw2"},{6385, "rodeo02Tr_LAw2"},{6386, "century02Tr_LAw2"},{6387, "century03_LAw2"},
+	{6388, "SanClifft02_LAw2"},{6389, "SanClift01_LAw2"},{6390, "SanClifft04_LAw2"},{6391, "SanClifft05_LAw2"},{6393, "SanCliff04Tr_LAw2"},
+	{6397, "SanCliff02Tr_LAw2"},{6398, "BeaCliff06_LAw2"},{6399, "BeaCliff06Tr_LAw2"},{6400, "spraydoor_LAw2"},{6403, "BeaCliff01Tr_LAw2"},
+	{6404, "venice01b_LAw2"},{6405, "venice03Tr_laW2"},{6406, "venice04_LAw2"},{6407, "venice04Tr_LAw2"},{6411, "venice01bT_LAw2"},
+	{6412, "sunitwin01_LAw2"},{6413, "sunset07Tr_LAw2"},{6416, "lawborder2a_LAW2"},{6417, "lawborder2c_LAW2"},{6421, "BeaLanTr02_LAw2"},
+	{6422, "rdsign01_LAw2"},{6427, "Roads03_LAw2"},{6428, "Roads32_LAw2"},{6430, "BeaLanTr01_LAw01"},{6431, "BeaLanTr03_LAw2"},
+	{6436, "santahouseTr_law2"},{6443, "BeaCliff02_LAw2"},{6444, "BeaCliff02Tr_LAw2"},{6448, "Pier01_LAw2"},{6449, "Pier02_LAw2"},
+	{6450, "Pier03_LAw2"},{6451, "Pier01Tr_LAw2"},{6457, "Pier02Tr_LAw2"},{6458, "pier03Tr_LAw2"},{6461, "ferris01Tr_LAw2"},
+	{6462, "pier04a_LAw2"},{6466, "pier04Tr_LAw2"},{6487, "countclub01_LAw2"},{6488, "countclub02_LAw2"},{6489, "countclubTr_LAw2"},
+	{6490, "tvstudio01_LAw2"},{6497, "sunset10_LAw2"},{6499, "sunset12Tr_LAw2"},{6501, "RailTunn03_LAw2"},{6502, "RailTunn04_LAw2"},
+	{6507, "Roads09_LAw2"},{6508, "Roads10_LAw2"},{6509, "Roads36_LAw2"},{6513, "tunblock_LAw2"},{6514, "tunent01_LAw2"},
+	{6516, "tvstudioTr_LAw2"},{6517, "santagard_LAw2"},{6518, "LTS01_LAw2"},{6519, "LTS02_LAw2"},{6520, "LTS04_LAw2"},
+	{6521, "LTS03_LAw2"},{6522, "country_law2"},{6524, "rdsign01_LAw03"},{6863, "vgsNbuild07"},{6864, "vrockcafe"},
+	{6865, "steerskull"},{6866, "circusconstruct03"},{6867, "vegasplant06"},{6868, "smlbuildvgas05"},{6869, "vegastemp1"},
+	{6871, "courthse_vgn"},{6872, "vgn_corpbuild1"},{6873, "vgn_corpbuild3"},{6874, "vgn_corpbuild2"},{6875, "vgn_corpbuild4"},
+	{6876, "VegasNedge12"},{6877, "VegasNedge02"},{6878, "VegasNroad055"},{6879, "VegasNroad070"},{6880, "VegasNroad071"},
+	{6881, "VegasNroad072"},{6882, "vgnorthland04"},{6883, "vgnorthland06"},{6884, "vgnorthland07"},{6885, "VegasNedge03"},
+	{6886, "VegasNedge04"},{6887, "VegasNedge05"},{6888, "VegasNedge06"},{6897, "VegasNroad622"},{6898, "VegasNroad623"},
+	{6899, "VegasNroad624"},{6900, "VegasNroad625"},{6907, "vgndwntwnshop1"},{6908, "vgndwntwnshop2"},{6909, "vgnprtlstation"},
+	{6910, "vgnprtlstation_01"},{6912, "vgsNrailroad02"},{6913, "vgsNrailroad03"},{6914, "vgsNrailroad05"},{6915, "vgsNrailroad12"},
+	{6916, "VegasNedge07"},{6917, "vgsNrailroad25"},{6919, "vgnlowbuild01"},{6920, "vgnlowbuild11"},{6921, "vgnlowbuild12"},
+	{6922, "vgnlowbuild13"},{6923, "vgnlowbuild14"},{6924, "vgnlowbuild21"},{6925, "vgnlowbuild235"},{6926, "vgnhseing68"},
+	{6928, "vegasplant03"},{6929, "vegasplant04"},{6930, "vegasplant05"},{6931, "vegasplant01"},{6932, "vegasplant07"},
+	{6933, "vegasplant08"},{6934, "vegasplant09"},{6944, "vgnshopnmall02"},{6945, "VegasNroad0711"},{6946, "vgnwalgren1"},
+	{6947, "vgnmall258"},{6948, "VegasNedge08"},{6949, "VegasNedge09"},{6950, "vegasNroad096"},{6951, "VegasNroad032"},
+	{6952, "VegasNroad027"},{6953, "VegasNroad026"},{6954, "vrockglass"},{6955, "vgnlowwall03"},{6956, "VegasNroad712"},
+	{6957, "vgnshopnmall03"},{6958, "vgnmallsigns14"},{6959, "vegasNbball1"},{6960, "vegasNbball2"},{6961, "vgsNwedchap3"},
+	{6962, "vgsNwedchap1"},{6963, "vgsNwedchap2"},{6964, "venefountwat02"},{6965, "venefountain02"},{6966, "vegasNbank1"},
+	{6967, "vgnsqrefnce1"},{6968, "vgnsqrefnce2"},{6969, "vgnsqrefnce3"},{6970, "vgsNbnkmsh"},{6971, "vgn_corpbuild31"},
+	{6972, "shamparklvl1"},{6973, "shamheliprt1"},{6974, "VegasNedge10"},{6975, "shamheliprt2"},{6976, "shamheliprt04"},
+	{6977, "stripshopn1"},{6978, "starboatsign1"},{6979, "vgnorthland13"},{6980, "trainstuff07_SFS02"},{6981, "vgsNtraintunnel04"},
+	{6982, "vgsNtraintunnel01"},{6983, "vgsNtraintunnel02"},{6984, "vgsNtraintunnel03"},{6985, "casinoblock2"},{6986, "vgngamblsign1"},
+	{6987, "casinoblock5"},{6988, "casinoblock3"},{6989, "casinoblock4"},{6990, "VegasNroad797"},{6991, "VegasNroad798"},
+	{6993, "vgncircus2"},{6994, "vgncircus1"},{6997, "strfshcpark69"},{6999, "VegasNroad08202"},{7009, "vgnpolicebuild2"},
+	{7010, "vgnpolicecpark"},{7011, "courthse_vgn01"},{7012, "circusconstruct01"},{7013, "circusconstruct02"},{7014, "circusconstruct04"},
+	{7015, "circusconstruct05"},{7016, "circusconstruct06"},{7017, "circusconstruct07"},{7018, "circusconstruct08"},{7019, "vgnhseing111"},
+	{7020, "vgnhseing112"},{7021, "vgnhseing113"},{7022, "vegasNnewfence2"},{7023, "vgngatesecurity"},{7024, "vegasplant069"},
+	{7025, "plantbox1"},{7026, "vegnewhousewal05"},{7027, "vgnamunation1"},{7028, "vegnewhousewal01"},{7029, "vegnewhousewal02"},
+	{7030, "vegnewhousewal03"},{7031, "vegnewhousewal04"},{7032, "vgnhseland04"},{7033, "vgnhsegate02"},{7034, "vgnhsewall04"},
+	{7035, "vgsNwrehse17"},{7036, "VegasNroad0162"},{7037, "vgnwalburger1"},{7038, "vegasplantwal1"},{7039, "vegasplantwal02"},
+	{7040, "vgnplcehldbox01"},{7041, "VegasNroad004"},{7042, "VegasNedge11"},{7043, "VegasNedge01"},{7044, "vgnorthcoast07"},
+	{7045, "vgnorthcoast06"},{7046, "vgnorthcoast05"},{7047, "vgnorthcoast04"},{7048, "vgnorthcoast03"},{7049, "vgnorthcoast02"},
+	{7050, "VegasNedge13"},{7051, "VegasNedge14"},{7052, "VegasNroad079"},{7053, "VegasNedge15"},{7054, "VegasNroad083"},
+	{7055, "VegasNroad084"},{7056, "VegasNroad085"},{7057, "VegasNroad086"},{7064, "VegasNroad08204"},{7069, "VegasNedge16"},
+	{7071, "casinoblock41_dy"},{7072, "vegascowboy3"},{7073, "vegascowboy1"},{7075, "vgsN_telewire01"},{7076, "vgsN_telewire02"},
+	{7077, "vgsN_telewire03"},{7078, "vgsN_telewire07"},{7079, "vgsN_telewire08"},{7080, "vgsN_telewire09"},{7081, "vgsN_telewire10"},
+	{7082, "vgsN_telewire12"},{7083, "vgsN_telewire13"},{7084, "vgsN_telewire14"},{7085, "vgsN_telewire15"},{7086, "vgsN_telewire16"},
+	{7087, "vgsN_telewire17"},{7088, "casinoshops1"},{7089, "newscafldvegs02"},{7090, "vegasflag1"},{7091, "vegasflag02"},
+	{7092, "vegasflag03"},{7093, "weddingsifgn1"},{7094, "vegaschurchy1"},{7095, "vgsplntground"},{7096, "vrockstairs"},
+	{7097, "vrockneon"},{7098, "VegasNedge17"},{7099, "VegasNedge18"},{7100, "VegasNedge19"},{7101, "VegasNedge20"},
+	{7102, "plantbox12"},{7103, "vgnplantwalk"},{7104, "plantbox13"},{7105, "vegasplant0692"},{7153, "shamheliprt05"},
+	{7172, "plantbox_04"},{7184, "vgnpolicebuild1"},{7186, "plantbox15"},{7187, "vgsN_WHse_post"},{7188, "vgsN_WHse_post01"},
+	{7189, "vgsN_WHse_post02"},{7190, "vgsN_WHse_post03"},{7191, "vegasNnewfence2b"},{7192, "vegasNnewfence2c"},{7196, "vgnNtrainfence01"},
+	{7197, "vgnNtrainfence02"},{7198, "vgnNtrainfence03"},{7200, "vgnlowbuild239"},{7201, "vegasplant_msh1"},{7202, "vgnNmallfence01"},
+	{7203, "vgnorthland05"},{7204, "vgnmall258_rail"},{7205, "vegaschurchy1_rail"},{7206, "VgsNnitlit02"},{7207, "VgsNnitlit03"},
+	{7208, "VgsNnitlit04"},{7209, "vgnNtrainfence04"},{7210, "vgnNtrainfence05"},{7212, "vgnlowwall03_al"},{7213, "vgnpolicecpark3"},
+	{7217, "vgnorthland08"},{7218, "VegasNedge21"},{7220, "casinoblock41_nt"},{7221, "VgsNnitlit01"},{7222, "VgsNnitlit05"},
+	{7223, "vgnlowbuild01fnc"},{7224, "vgnhseing68fnc"},{7226, "vgncircus2neon"},{7227, "stripshopn1fnc"},{7228, "smlbuildvgas05fnc"},
+	{7229, "vegasplantwal02fnc"},{7230, "ClwnPockSgn_n"},{7231, "ClwnPockSgn_d"},{7232, "ClwnPockSgn"},{7233, "ringmaster"},
+	{7234, "vgsNshopchap1"},{7236, "vegasplant03b"},{7238, "vegasplant02"},{7240, "vrockcafehtl"},{7242, "circusconstruct02b"},
+	{7243, "vgncircus1b"},{7244, "vgnpolicecparkug"},{7245, "vegasNbank1ug"},{7246, "vgs_roadsign03"},{7247, "VegasNedge22"},
+	{7248, "vgnorthcoast02b"},{7249, "vgnorthcoast03b"},{7250, "vgnorthcoast04b"},{7251, "vgnorthcoast05b"},{7252, "vgnorthcoast06b"},
+	{7253, "vgnorthcoast07b"},{7254, "VegasNedge23"},{7263, "casinoblock3_dy"},{7264, "casinoblock3_nt"},{7265, "casinoblock5_dy"},
+	{7266, "casinoblock5_nt"},{7268, "vgsN_frntneon_nt"},{7269, "smlbuildvgas05b"},{7271, "vgsN_casadd01"},{7272, "vgsN_casadd02"},
+	{7273, "vgsN_frent_shps"},{7276, "vegasplant01al"},{7277, "vgnlowbuild239_al"},{7280, "VgsNnitlit06"},{7287, "VgsN_safehse_res"},
+	{7288, "vgs_fmtcasgn"},{7289, "casinoblock2_dy"},{7290, "casinoblock2_nt"},{7291, "vegasplant10"},{7292, "vgsn_mallwall"},
+	{7294, "vgsN_polNB01"},{7295, "vgnNtrainfence05b"},{7296, "vgnNtrainfence04b"},{7297, "vgnNtrainfence03b"},{7298, "vgnNtrainfence01b"},
+	{7299, "vgnNtrainfence02b"},{7300, "vgsN_addboard01"},{7301, "vgsN_addboard03"},{7302, "vgsN_addboard04"},{7303, "vgsN_addboard05"},
+	{7304, "vgnmallsigns02"},{7305, "vgnmallsigns03"},{7306, "vgnmallsigns04"},{7307, "vgnmallsigns05"},{7308, "vgnmallsigns06"},
+	{7309, "vgsN_addboard02"},{7310, "vgsN_addboard06"},{7311, "vgsN_carwash"},{7312, "vgsN_carwash01"},{7313, "vgsN_scrollsgn01"},
+	{7314, "vgsN_frntneon_dy"},{7315, "vgsn_blucasign"},{7317, "plantbox17"},{7319, "vgnlowbuild12a"},{7320, "VegasNroadsp08202"},
+	{7321, "VegasNroadsp08203"},{7324, "VegasNroadsp079"},{7326, "VegasNroadVrkRbt"},{7327, "VegasNroadspl079"},{7331, "VGSN_burgsht_neon"},
+	{7332, "VGSN_burgsht_neon01"},{7333, "VgsNnitlit08"},{7334, "VegasNroadslpt002"},{7335, "VegasNroadslpt003"},{7336, "VegasNroadslpt004"},
+	{7337, "VegasNroadslpt001"},{7344, "vgsn_pipeworks"},{7347, "vgsn_pipeworks01"},{7353, "vegasn_motorway"},{7355, "vegasn_motorway1"},
+	{7357, "vegasn_nland"},{7359, "vegasn_nland2"},{7361, "casinoblock4al"},{7362, "vegasNroad096b"},{7364, "VegasN_motway5"},
+	{7366, "sham_superlod"},{7367, "vgsNelec_fence_01"},{7368, "vgsNelec_fence_05"},{7369, "vgsNelec_fence_04"},{7370, "vgsNelec_fence_03"},
+	{7371, "vgsNelec_fence_02"},{7377, "vgsNelec_fence_04a"},{7378, "vgsNelec_fence_03a"},{7379, "vgsNelec_fence_02a"},{7380, "vgsNelec_fence_01a"},
+	{7381, "vgsNelec_fence_05a"},{7383, "VegasNroad071b"},{7387, "vgnboigashot15"},{7388, "vrockpole"},{7389, "vgnboigashot25"},
+	{7390, "vgngassign96"},{7391, "vgngassign102"},{7392, "vegcandysign1"},{7415, "vgswlcmsign1"},{7416, "vegasstadgrnd"},
+	{7417, "vegastadium"},{7418, "ballparkbarrier"},{7419, "mallcarpark_vgn01"},{7420, "vegasgolfcrs08"},{7421, "vegasgolfcrs01"},
+	{7422, "vegasgolfcrs02"},{7423, "glfcrsgate1_vgs"},{7424, "vgnmall1"},{7425, "golfsign1_vgn"},{7426, "elcidhotel_vgn"},
+	{7427, "vegasWedge16"},{7428, "vegasNroad03"},{7429, "vegasNroad04"},{7430, "vegasNroad05"},{7431, "vegasNroad06"},
+	{7432, "vegasNroad07"},{7433, "vegasNroad09"},{7434, "vegasWedge02"},{7435, "vegasNroad15"},{7436, "vegasNroad24"},
+	{7437, "vegasNroad25"},{7438, "vegasWedge03"},{7439, "vegasWedge04"},{7440, "vegasNroad34"},{7441, "vegasNroad35"},
+	{7442, "vegasNroad36"},{7443, "vegasNroad37"},{7444, "vgswindustroad05"},{7445, "vegasNroad39"},{7446, "vegasNroad40"},
+	{7447, "vegasWedge05"},{7448, "vegasWcoast05"},{7449, "vegasWcoast01"},{7450, "vegasWcoast02"},{7451, "vegasWedge06"},
+	{7452, "vegasWedge07"},{7453, "vegasNland02"},{7454, "vegasNland03"},{7455, "vegasNland04"},{7456, "vegasNland05"},
+	{7457, "vegasWedge08"},{7458, "vegasWedge09"},{7459, "vegasNland08"},{7460, "vegasNland09"},{7461, "vegasNland10"},
+	{7462, "vegasNland11"},{7463, "vegasNland12"},{7464, "vegasNland13"},{7465, "vegasNland14"},{7466, "vegasNland15"},
+	{7467, "vegasNland16"},{7468, "vegasNland17"},{7469, "vegasNland18"},{7470, "vegasWedge10"},{7471, "vegasWedge31"},
+	{7472, "vegasWedge12"},{7473, "vegasWedge13"},{7474, "vegasNland23"},{7475, "vegasWedge14"},{7476, "vegasNroad43"},
+	{7477, "vegasNroad44"},{7478, "vegasNroad45"},{7479, "vegasNroad46"},{7480, "vegasWedge15"},{7481, "vegasNroad48"},
+	{7482, "vegasNroad49"},{7483, "vegasNroad50"},{7484, "vegasNroad51"},{7485, "vegasWedge01"},{7486, "vgswindustroad01"},
+	{7488, "vgncarpark1"},{7489, "vgnhseing34"},{7490, "vegasnorthwrehse1"},{7491, "vgnhseing25"},{7492, "vgnhseing40"},
+	{7493, "vgnabatbuild"},{7494, "vgnhseing42"},{7495, "vgnhseing43"},{7496, "vgnhseing44"},{7497, "vgnorthwrehse14"},
+	{7498, "vegaswrailroad01"},{7499, "vegaswrailroad02"},{7500, "vegaswrailroad03"},{7501, "vegaswrailroad04"},{7502, "vegaswrailroad05"},
+	{7503, "vegaswrailroad06"},{7504, "glfcrsgate2_vgn"},{7505, "glfcrsgate3_vgn"},{7506, "vgnlowbuild057"},{7507, "vgnlowbuild09"},
+	{7508, "vgnlowbuild17"},{7509, "vgnlowbuild20"},{7510, "vgnlowbuild236"},{7511, "vegaswtrainstat"},{7512, "vegaswtrainstat2"},
+	{7513, "vgnwrehse69"},{7514, "vgnwrewall1"},{7515, "vegasnfrates1"},{7516, "vegasnfrates02"},{7517, "vgnwreland1"},
+	{7518, "vgnhseing82"},{7519, "vgnhseland1"},{7520, "vgnlowbuild203"},{7521, "vgnlowbuild202"},{7522, "vgnhsegate1"},
+	{7523, "vgnhseland2"},{7524, "vgnhsewall3"},{7525, "vgnfirestat"},{7526, "vgncarshow1"},{7527, "vegasnfrates03"},
+	{7528, "downvgnbild1"},{7529, "vgnlowbuild18"},{7530, "vgngebuild1"},{7531, "vgnlowmall2"},{7532, "vgnlowwall1"},
+	{7533, "newaprtmntsvgN08"},{7534, "newaprtmntsvgN07"},{7535, "newaprtmntsvgN03"},{7536, "newaprtmntsvgN14"},{7537, "newaprtmntsvgN09"},
+	{7538, "newaprtmntsvgN16"},{7539, "burgerland1"},{7540, "burgerland02"},{7541, "vgntelwires04"},{7542, "vgntelwires05"},
+	{7543, "vgntelwires08"},{7544, "vegasNroad22"},{7545, "vegasNroad17"},{7546, "vegasNroad01"},{7547, "vegasNroad18"},
+	{7548, "vegasWedge17"},{7549, "vegasNroad23"},{7550, "vegasNroad21"},{7551, "vegasNroad20"},{7552, "vegasNroad19"},
+	{7553, "vegasWedge18"},{7554, "vgnhseing89"},{7555, "bballcpark1"},{7556, "bballcpark2"},{7557, "vegasWcoast04"},
+	{7558, "vegasWedge19"},{7559, "vegasWedge20"},{7560, "vgnfrsttfence"},{7561, "vegasnfrates04"},{7562, "vegastwires01"},
+	{7563, "vegastwires02"},{7564, "vegastwires03"},{7565, "vegastwires04"},{7566, "vegastwires05"},{7567, "vegastwires06"},
+	{7568, "vegastwires07"},{7569, "vegastwires08"},{7570, "vgntelwires17"},{7571, "vegastwires09"},{7572, "vegastwires10"},
+	{7573, "vegastwires11"},{7574, "vegastwires12"},{7575, "vegastwires13"},{7576, "vegastwires14"},{7577, "vegastwires15"},
+	{7578, "vegastwires16"},{7579, "vgncnstructlnd"},{7580, "vegasNroad57"},{7581, "mirageroad1"},{7582, "miragebuild04"},
+	{7583, "visagesign1"},{7584, "miragebuild01"},{7585, "miragebuild05"},{7586, "miragebuild07"},{7587, "miragebuild03"},
+	{7588, "miragebuild02"},{7589, "miragebuild08"},{7590, "miragebuild09"},{7591, "miragebuild10"},{7592, "miragebuild11"},
+	{7593, "miragebuild12"},{7595, "miragehedge1"},{7596, "tamomotel1"},{7597, "gingersign1"},{7598, "vgntelwires18"},
+	{7599, "stripshopstat"},{7600, "vegasgolfcrs03"},{7601, "vegasgolfcrs04"},{7602, "vegasgolfcrs05"},{7603, "vegasgolfcrs06"},
+	{7604, "vegasgolfcrs07"},{7605, "vegasNroad08"},{7606, "vegasbigsign1"},{7607, "vgntelwires19"},{7608, "vgntelwires20"},
+	{7609, "vgntelwires21"},{7610, "vgsmallsign1"},{7611, "vegasstadwall01"},{7612, "vegasstadwall05"},{7613, "vegasstadwall04"},
+	{7614, "vegasstadwall03"},{7615, "vegasstadwall02"},{7616, "vgnballparkland"},{7617, "vgnbballscorebrd"},{7618, "vgnwrehse14barb"},
+	{7619, "vgnabartoirinter2"},{7620, "vegasnfrates05"},{7621, "vegasnfrates06"},{7622, "vegasnfrates07"},{7623, "vegaswtrainfence06"},
+	{7624, "vegaswtrainfence07"},{7625, "vgnhseing129"},{7626, "vgnhseland03"},{7627, "vgnabatoir"},{7628, "vgnwrehse14barb01"},
+	{7629, "vegasNroad56"},{7630, "venetiancpark01"},{7631, "vegasWedge11"},{7632, "vegasWedge22"},{7633, "vegasWedge23"},
+	{7634, "vegasWedge24"},{7635, "venetiancpark02"},{7636, "venetiancpark03"},{7637, "vegastwires18"},{7638, "vegastwires19"},
+	{7639, "vegastwires21"},{7640, "vegastwires31"},{7641, "vegastwires32"},{7642, "vegastwires33"},{7643, "vegastwires34"},
+	{7644, "vegastwires35"},{7645, "vegastwires36"},{7646, "vegastwires45"},{7647, "vegastwires46"},{7648, "vegastwires47"},
+	{7649, "vegastwires48"},{7650, "vgnusedcar2"},{7651, "vgnusedcar1"},{7652, "bunting1"},{7653, "bunting02"},
+	{7654, "bunting04"},{7655, "bunting06"},{7656, "bunting08"},{7657, "plasticsgate1"},{7658, "vgnbuild1new"},
+	{7659, "vgngymsteps"},{7660, "venetiancpark04"},{7661, "venetiancpark05"},{7662, "miragehedge14"},{7663, "vgncarshow2"},
+	{7664, "glfcrsgate5_vgs"},{7665, "glfcrsgate4_vgs"},{7666, "vgswlcmsign2"},{7681, "vegasnotxrefhse1"},{7692, "vgnhseing8282"},
+	{7696, "vgngebuild102"},{7707, "vgwbom2"},{7708, "vegaswestbmb02"},{7709, "vgwbom1"},{7729, "vegasWedge25"},
+	{7730, "vegasWedge21"},{7731, "vegasWedge26"},{7755, "vegasNroad31"},{7832, "vgnabartoirinter"},{7834, "vegasnfrates08"},
+	{7836, "vegasnfrates09"},{7837, "vegaswtrainfence08"},{7838, "vegaswtrainfence01"},{7839, "vegaswtrainfence02"},{7840, "vegaswtrainfence03"},
+	{7841, "vegaswtrainfence04"},{7842, "vegaswtrainfence05"},{7849, "vegasNroad62"},{7852, "vegasNroad63"},{7854, "vegasNroad64"},
+	{7861, "vgnhseing8283"},{7862, "vgntelwires22"},{7863, "vgswindustroad08"},{7864, "vgswindustroad07"},{7865, "vegasWedge27"},
+	{7866, "vgswindustroad04"},{7867, "vgswindustroad03"},{7868, "vegasWedge28"},{7878, "vegasNroad242"},{7880, "vgswstbbllgrnd"},
+	{7881, "vegasNroad65"},{7882, "vegasWedge30"},{7884, "vgnmall1_2"},{7885, "vegasglfhse1"},{7889, "vegasWedge29"},
+	{7891, "vgwspry1"},{7892, "visageneon"},{7893, "vegascrashbar04"},{7894, "vegascrashbar05"},{7900, "vgwestbillbrd1"},
+	{7901, "vgwestbillbrd02"},{7902, "vgwestbillbrd03"},{7903, "vgwestbillbrd04"},{7904, "vgwestbillbrd05"},{7905, "vgwestbillbrd06"},
+	{7906, "vgwestbillbrd07"},{7907, "vgwestbillbrd08"},{7908, "vgwestbillbrd09"},{7909, "vgwestbillbrd10"},{7910, "vgwestbillbrd11"},
+	{7911, "vgwestbillbrd12"},{7912, "vgwestbillbrd13"},{7913, "vgwestbillbrd14"},{7914, "vgwestbillbrd15"},{7915, "vgwestbillbrd16"},
+	{7916, "vegaswaterfall02"},{7917, "vegasglfhse2"},{7918, "vgnlowmall3"},{7919, "downvgnbild12"},{7920, "vgwstnewall6903"},
+	{7921, "vgwstnewall6904"},{7922, "vgwstnewall6905"},{7923, "vgwstnewall6902"},{7924, "vgwstnewall6901"},{7925, "vgstreetdirt1"},
+	{7926, "vgnabatoir2"},{7927, "vgswsvehse1"},{7929, "vgwsavehse2"},{7930, "vgwsavehsedor"},{7931, "vgswsvehse04"},
+	{7932, "vgsnotxrefhse02"},{7933, "vegascrashbar06"},{7934, "vgnbuild1new2"},{7938, "vegasNroad2469"},{7939, "glfcrsgate29_vgn"},
+	{7940, "vegirlfrhouse02"},{7942, "vegstadneon"},{7943, "burgershotneon1"},{7944, "burgershotneon02"},{7945, "vegaswedge111"},
+	{7947, "vegaspumphouse1"},{7950, "vegaspumphouse02"},{7952, "miragehedge09"},{7953, "miragehedge04"},{7954, "miragehedge0436"},
+	{7955, "vgwbitodirt"},{7956, "vgwcuntwall1"},{7963, "vegasWedge17b"},{7965, "vegasNroad23b"},{7967, "vegasNroad22b"},
+	{7969, "vegasNroad17b"},{7971, "vgnprtlstation03"},{7972, "vgnboigashot10"},{7973, "vgnboigashot23"},{7978, "airport01_lvS"},
+	{7979, "blastdef01_lvS"},{7980, "airprtbits12_lvS"},{7981, "smallradar02_lvS"},{7982, "gatesB_lvS"},{7983, "vegascollege_lvS"},
+	{7984, "airprtcrprk01_lvS"},{7985, "shop13_lvs"},{7986, "plants01_lvs"},{7987, "vegasSedge09"},{7988, "VegasSroad025"},
+	{7989, "VegasSroad026"},{7990, "VegasSroad027"},{7991, "VegasSroad035"},{7992, "VegasSroad053"},{7993, "VegasSroad060"},
+	{7994, "vegasSedge23"},{7995, "VegasSroad088"},{7996, "vgsSairportland03"},{7997, "vgsSairportland02"},{7998, "vegasSedge26"},
+	{7999, "vgsSairportland04"},{8000, "vgsSairportland05"},{8001, "VegasSland36"},{8002, "vegasSedge20"},{8003, "vegasSedge22"},
+	{8004, "VegasSland40"},{8005, "VegasSland41"},{8006, "vegasSedge25"},{8007, "VegasSland44"},{8008, "vegasSedge24"},
+	{8009, "VegasSroad100"},{8010, "VegasSroad104"},{8033, "vgsSairportland01"},{8034, "flghtschl01_lvs"},{8035, "vegasSedge30"},
+	{8036, "VegasSroad106"},{8037, "crprkgrnd01_lvs"},{8038, "arprtermnl01_lvs"},{8039, "VegasSroad107"},{8040, "airprtcrprk02_lvS"},
+	{8041, "apbarriergate06_lvS"},{8042, "apbarriergate07_lvS"},{8043, "vegasSedge11"},{8044, "aptcanopy_lvs"},{8045, "vegasSedge03"},
+	{8046, "VegasSroad046"},{8047, "VegasSroad017"},{8048, "VegasSroad047"},{8049, "VegasSroad076"},{8050, "vegasSedge14"},
+	{8051, "vegasSedge13"},{8052, "vegasSedge15"},{8053, "vegasSedge16"},{8054, "vegasSedge17"},{8055, "vegasSedge18"},
+	{8056, "vegasSedge19"},{8057, "hseing01_lvs"},{8058, "vgswrehse06"},{8059, "vgswrehse07"},{8060, "vgswrehse03"},
+	{8061, "vgswrehse04"},{8062, "vgswrehse17"},{8063, "vgswrehse16"},{8064, "vgswrehse05"},{8065, "vgswrehse09"},
+	{8066, "hseing03_lvs"},{8067, "hseing02_lvs"},{8068, "hseing04_lvs"},{8069, "hseing05_lvs"},{8070, "VegasSroad122"},
+	{8071, "wrhsegrnd02_lvs"},{8072, "vegasSedge21"},{8073, "vgsfrates02"},{8074, "vgsfrates03"},{8075, "vgsfrates04"},
+	{8076, "vgsfrates05"},{8077, "vgsfrates06"},{8078, "vgsfrates07"},{8079, "hospital01_lvs"},{8080, "VegasSroad128"},
+	{8081, "vgstwires20_lvs"},{8082, "vgstwires21_lvs"},{8083, "vgstwires22_lvs"},{8084, "vgstwires24_lvs"},{8085, "vgstwires23_lvs"},
+	{8086, "vgstwires25_lvs"},{8087, "vgstwires26_lvs"},{8091, "VegasSland58"},{8128, "vgsSrdbrdg_lvs"},{8130, "vgschurch01_lvs"},
+	{8131, "vgschurch02_lvs"},{8132, "vgschurch03_lvs"},{8133, "VegasSland59"},{8134, "vgschrchgrnd_lvs"},{8135, "VegasSroad130"},
+	{8136, "vgSbikeschl04"},{8137, "VegasSroad132"},{8147, "vgsSelecfence01"},{8148, "vgsSelecfence02"},{8149, "vgsSelecfence03"},
+	{8150, "vgsSelecfence04"},{8151, "vgsSelecfence05"},{8152, "vgsSelecfence06"},{8153, "vgsSelecfence07"},{8154, "vgsSelecfence08"},
+	{8155, "vgsSelecfence09"},{8165, "vgsSelecfence10"},{8167, "apgate1_VegS01"},{8168, "Vgs_guardhouse01"},{8169, "vgs_guardhseflr"},
+	{8171, "vgsSairportland06"},{8172, "vgsSairportland07"},{8173, "vgs_concwall01"},{8174, "vgs_concwall02"},{8175, "vgs_concwall03"},
+	{8176, "vgs_concwall04"},{8177, "vgs_concwall05"},{8178, "vgs_concwall06"},{8185, "vgsSredbrix02"},{8186, "vgsSredbrix03"},
+	{8187, "vgsSredbrix04"},{8188, "vgsSredbrix05"},{8189, "vgsSredbrix06"},{8194, "vgsScorrag_fence01"},{8198, "vegasSedge01"},
+	{8199, "vegasSedge27"},{8200, "VegasSland12"},{8201, "stadium_lvs"},{8202, "VegasSland56"},{8206, "vgsSstadrail03"},
+	{8207, "vgsSstadrail05"},{8208, "vgsSstadrail06"},{8209, "vgsSelecfence11"},{8210, "vgsSelecfence12"},{8212, "vegasSedge29"},
+	{8213, "vgsSspagjun02"},{8214, "vgsSspagjun03"},{8215, "vgsSspagjun04"},{8216, "vgsSspagjun05"},{8217, "vgsSspagjun06"},
+	{8218, "vgsSspagjun07"},{8219, "vgsSspagjun08"},{8228, "vgSbikeschl03"},{8229, "vgSbikeschl02"},{8230, "vgSbikeschl01"},
+	{8231, "vgSbikeschl05"},{8232, "vgSbikeschl06"},{8236, "VegasSroad131"},{8237, "vgsbikeschint"},{8240, "vgssbighanger1"},
+	{8242, "vegasSedge10"},{8244, "vegasSedge02"},{8245, "vegasSedge05"},{8246, "vegasSedge12"},{8247, "pltschlhnger69_lvs"},
+	{8249, "pltschlhnger70_lvs"},{8251, "pltschlhnger02_lvs"},{8253, "pltschlhnger01_lvs"},{8254, "vgswrehse10"},{8255, "vgswrehse13"},
+	{8256, "vegasSedge28"},{8260, "vgswrehse18"},{8262, "vgsSelecfence13"},{8263, "vgsSelecfence14"},{8264, "VegasSland34"},
+	{8281, "airport02_lvs"},{8283, "vgschrchgrnd02_lvs"},{8285, "vgschrchgrnd03_lvs"},{8286, "vgschrchgrnd05_lvs"},{8287, "vgschrchgrnd04_lvs"},
+	{8288, "VegasSland56b"},{8290, "vgsSspagjun09"},{8292, "vgsbboardsigns01"},{8293, "vgsbboardsigns02"},{8294, "vgsbboardsigns03"},
+	{8300, "vgswrehse08"},{8302, "jumpbox01_lvs01"},{8305, "VegasSroad1072"},{8306, "VegasSland562"},{8308, "vegas_grasect01"},
+	{8310, "vgsbboardsigns06"},{8311, "vgsSelecfence15"},{8313, "vgsSelecfence16"},{8314, "vgsSelecfence17"},{8315, "vgsSelecfence18"},
+	{8319, "vegstadplants1"},{8320, "vegstadrail69"},{8321, "vegstadplants2"},{8322, "vgsbboardsigns08"},{8323, "vgsbboardsigns09"},
+	{8324, "vgsbboardsigns10"},{8325, "vgsbboardsigns12"},{8326, "vgsbboardsigns13"},{8327, "vgsbboardsigns14"},{8328, "vgsbboardsigns15"},
+	{8329, "vgsbboardsigns16"},{8330, "vgsbboardsigns17"},{8331, "vgsbboardsigns18"},{8332, "vgsbboardsigns19"},{8333, "stadium02_lvs"},
+	{8335, "vgsfrates08"},{8337, "vgsfrates10"},{8339, "vgsfrates11"},{8341, "vgsfrates12"},{8342, "vgsSelecfence119"},
+	{8343, "vgsSairportland09"},{8344, "vgsSairportland10"},{8345, "gatesB_lvS01"},{8350, "vgsSairportland11"},{8351, "vgsSairportland12"},
+	{8352, "vgsSairportland16"},{8353, "vgsSairportland13"},{8354, "vgsSairportland17"},{8355, "vgsSairportland18"},{8356, "vgsSairportland15"},
+	{8357, "vgsSairportland14"},{8368, "vgsSspagjun10"},{8369, "vgsSelecfence05b"},{8370, "aptcanopyday_lvs"},{8371, "aptcanopynit_lvs01"},
+	{8372, "airportneon"},{8373, "VegasS_jetty01"},{8375, "airprtbits14_lvS"},{8377, "VegasSroad0522a"},{8378, "vgsbighngrdoor"},
+	{8380, "vegasSedge1919"},{8382, "vgsSspagjun06b"},{8383, "vgsSspagjun06c"},{8386, "vgsSspagjun09b"},{8388, "vegasSedge29b"},
+	{8390, "multicarpark01_lvS"},{8391, "ballys03_lvs"},{8392, "ballys02_lvs"},{8393, "ballys01_lvs"},{8394, "vgsbox10sgn_lvS"},
+	{8395, "vgEpyrmd_dy"},{8396, "sphinx02_lvs"},{8397, "luxorpillar01_lvs"},{8398, "luxorland01_lvS"},{8399, "nightclub01_lvs"},
+	{8400, "nightclub02_lvs"},{8401, "shop05_lvs"},{8402, "vgshpgrnd01_lvS"},{8403, "shop03_lvs"},{8404, "vgshpgrnd03_lvS"},
+	{8405, "vgshpgrnd02_lvS"},{8406, "carparksign01_lvs"},{8407, "carparkhut01_lvs"},{8408, "carparksign02_lvs"},{8409, "gnhotel01_lvs"},
+	{8410, "carparkhut02_lvs"},{8411, "gnhotel02_lvs"},{8412, "wddngchplsign_lvs"},{8416, "bballcourt02_lvs"},{8417, "bballcourt01_lvs"},
+	{8418, "vgshpgrnd04_lvS"},{8419, "vgsbldng01_lvs"},{8420, "arprtcrprk04_lvS"},{8421, "pirtehtl02_lvS"},{8422, "pirtehtl01_lvS"},
+	{8423, "prtskllsgn02_lvs"},{8424, "vagbond01_lvs"},{8425, "villa_inn01_lvs"},{8426, "vlla_innfnc1_lvs"},{8427, "villa_inn03_lvs"},
+	{8428, "villa_inn02_lvs"},{8429, "vlla_innfnc2_lvs"},{8430, "vlla_innfnc3_lvs"},{8431, "nucarpark01_lvs"},{8432, "shop06_lvs"},
+	{8433, "residnce01_lvs"},{8434, "vgsoffice01_lvs"},{8435, "shop11_lvs"},{8436, "shop12_lvs"},{8437, "residntial01_lvs"},
+	{8438, "VegasEroad003"},{8439, "vgsEedge12"},{8440, "vgsEedge15"},{8441, "vgsEedge16"},{8442, "VegasEroad009"},
+	{8443, "VegasEroad010"},{8444, "VegasEroad011"},{8445, "vgsEedge13"},{8446, "VegasEroad013"},{8447, "VegasEroad019"},
+	{8448, "VegasEroad020"},{8449, "VegasEroad021"},{8450, "VegasEroad022"},{8451, "VegasEroad031"},{8452, "VegasEroad032"},
+	{8453, "VegasEroad033"},{8454, "VegasEroad034"},{8455, "VegasEroad041"},{8456, "VegasEroad058"},{8457, "vgsEedge19"},
+	{8458, "VegasEroad075"},{8459, "vgsEland02_lvs"},{8460, "vgsEland03_lvs"},{8461, "vgsEland04_lvs"},{8462, "vgsEland06_lvs"},
+	{8463, "vgsEland07_lvs"},{8464, "vgsEland08_lvs"},{8465, "vgsEcoast07"},{8466, "vgsEcoast08"},{8467, "vgsEland11_lvs"},
+	{8468, "vgsEland12_lvs"},{8469, "vgsEedge25"},{8470, "vgsEedge27"},{8471, "VegasEroad092"},{8472, "VegasEroad094"},
+	{8473, "VegasEroad095"},{8474, "VegasEroad096"},{8475, "VegasEroad097"},{8476, "VegasEroad098"},{8477, "VegasEroad099"},
+	{8480, "csrspalace01_lvs"},{8481, "csrsfence01_lvs"},{8482, "csrspalace02_lvs"},{8483, "pirateland02_lvS"},{8484, "pirateland03_lvS"},
+	{8485, "ballysbase_lvs"},{8486, "vgsEedge21"},{8487, "ballyswtr01_lvs"},{8488, "flamingo02_lvs"},{8489, "flamingo01_lvs"},
+	{8490, "flamingo03_lvs"},{8491, "flamingo04_lvs"},{8492, "flamingo05_lvs"},{8493, "pirtshp01_lvs"},{8494, "lowbuild01_lvs"},
+	{8495, "mall01_lvs"},{8496, "lowbuild03_lvs"},{8497, "vgsEland16_lvs"},{8498, "exclbr_hotl01_lvS"},{8499, "exclbr_hotl02_lvS"},
+	{8500, "excalibur01_lvS"},{8501, "casroyale01_lvs"},{8502, "casroyldge01_lvs"},{8503, "shop08_lvs"},{8504, "shop10_lvs"},
+	{8505, "shop14_lvs"},{8506, "shop16_lvs"},{8507, "shop15_lvs"},{8508, "genshop01_lvs"},{8509, "shop09_lvs"},
+	{8510, "VegasEroad112"},{8511, "VegasEroad111"},{8512, "VegasEroad113"},{8513, "residnce01_lvs01"},{8514, "VegasEroad110"},
+	{8515, "vgsEland01_lvs"},{8516, "shop07_lvs"},{8517, "VegasEroad114"},{8518, "vgsEedge26"},{8519, "VegasEroad015"},
+	{8520, "VegasEroad045"},{8521, "VegasEroad071"},{8522, "VegasEroad093"},{8523, "VegasEroad072"},{8524, "VegasEroad042"},
+	{8525, "VegasEroad043"},{8526, "vgbndsign01_lvs"},{8527, "vagbond02_lvs"},{8528, "vagbond03_lvs"},{8529, "vgsEland17_lvs"},
+	{8530, "vgbndsign02_lvs"},{8531, "vgsEland18_lvs"},{8532, "vgsEland19_lvs"},{8533, "vgsEedge10"},{8534, "tikimotel01_lvs"},
+	{8535, "tikimotel02_lvs"},{8536, "tikisign01_lvs"},{8537, "tikisign02_lvs"},{8538, "vgsrailroad03"},{8539, "vgsrailroad04"},
+	{8540, "vgsrailroad05"},{8541, "vgsrailroad06"},{8542, "vgsrailroad07"},{8543, "vgsEedge11"},{8544, "vgsEhseing06"},
+	{8545, "vgsEwrehse01"},{8546, "vgsEwrehse02"},{8547, "fctrygrnd01_lvs"},{8548, "trainsign01_lvs"},{8549, "fctryfnce01_lvs"},
+	{8550, "laconcha_lvs"},{8551, "lacnchasgn_lvs"},{8552, "VegasEroad123"},{8553, "vgsEland21_lvs"},{8554, "vgsEland22_lvs"},
+	{8555, "vgsEcrthse"},{8556, "vgshsegate04"},{8557, "vgshseing27"},{8558, "vgshseing28"},{8559, "vgshsewall06"},
+	{8560, "vgEhseland05"},{8561, "VegasEroad124"},{8562, "VegasEroad127"},{8563, "lacnchasgn2_lvs"},{8564, "vgsEland29_lvs"},
+	{8565, "vgsEbuild03_lvs"},{8566, "vgsEbuild02_lvs"},{8567, "vgsEbuild04_lvs"},{8568, "vgsEbuild05_lvs"},{8569, "vgsEbuild12_lvs"},
+	{8570, "vgsEbuild09_lvs"},{8571, "vgsEbuild11_lvs"},{8572, "vgsSstairs02_lvs"},{8573, "balcony01_lvs"},{8574, "shpfrnt01_lvs"},
+	{8575, "vgstrainstation"},{8576, "balcony02_lvs"},{8577, "trnstngrnd01_lvs"},{8578, "vgstrainstation3"},{8579, "balcony03_lvs"},
+	{8580, "vgsSstairs05_lvs"},{8581, "vgsEbuild06_lvs"},{8582, "vgsEedge01"},{8583, "vgsEcoast02"},{8584, "vgsEcoast03"},
+	{8585, "vgsEcoast04"},{8586, "vgsrailroad11"},{8587, "vgsrailroad13"},{8588, "vgsrailroad15"},{8589, "lwbldstuff03_lvs"},
+	{8590, "filmrllprop01_lvs"},{8591, "olympic01_lvs"},{8592, "olympcrail01_lvs"},{8593, "vgsEwires01_lvs"},{8594, "vgsEwires02_lvs"},
+	{8595, "vgsEwires19_lvs"},{8596, "vgsEwires03_lvs"},{8597, "tikimtl02rail_lvs"},{8607, "vgsEwires05_lvs"},{8608, "vgsEwires04_lvs"},
+	{8609, "VegasEroad008"},{8610, "VegasEroad023"},{8611, "VegasEroad036"},{8612, "VegasEroad037"},{8613, "vgsSstairs03_lvs"},
+	{8614, "vgsSstairs01_lvs"},{8615, "vgsSstairs04_lvs"},{8616, "VegasEroad130"},{8617, "bush01_lvs"},{8618, "ceasersign_lvs"},
+	{8619, "bush02_lvs"},{8620, "exclbrsign01_lvS"},{8621, "exclbrsign02_dy"},{8622, "VegasEroad131"},{8623, "bush03_lvs"},
+	{8624, "vgsrailroad16"},{8625, "vgsEedge04"},{8626, "vgsEedge03"},{8627, "vgsrailroad23"},{8628, "vgsrailroad22"},
+	{8629, "vgsrailroad19"},{8630, "vgsrailroad20"},{8631, "vgsrailroad21"},{8632, "vgsrailroad24"},{8633, "vgsrailroad26"},
+	{8634, "vgsrailroad25"},{8635, "vgsrailbuild01"},{8636, "tikimtlwall01_lvs"},{8637, "VegasEroad134"},{8638, "vgsEedge09"},
+	{8639, "chnatwnmll01_lvs"},{8640, "chnatwnmll02_lvs"},{8641, "chnatwnmll03_lvs"},{8642, "chnatwnmll04_lvs"},{8643, "vgsEbuild01_lvs"},
+	{8644, "exclbrsign03_lvS"},{8645, "shbbyhswall01_lvs"},{8646, "shbbyhswall02_lvs"},{8647, "shbbyhswall03_lvs"},{8648, "shbbyhswall04_lvs"},
+	{8649, "shbbyhswall05_lvs"},{8650, "shbbyhswall06_lvs"},{8651, "shbbyhswall07_lvs"},{8652, "shbbyhswall12_lvs"},{8653, "shbbyhswall08_lvs"},
+	{8654, "vgsEland23_lvs"},{8655, "vgsEland24_lvs"},{8656, "shbbyhswall09_lvs"},{8657, "shbbyhswall10_lvs"},{8658, "shabbyhouse11_lvs"},
+	{8659, "shbbyhswall11_lvs"},{8660, "bush04_lvs"},{8661, "gnhtelgrnd_lvs"},{8662, "nucrprkwall_lvs"},{8663, "triadcasno01_lvs"},
+	{8664, "casrylegrnd_lvs"},{8665, "chnatwnmll06_lvs"},{8666, "chnatwnmll07_lvs"},{8667, "chnatwnmll08_lvs"},{8668, "chnatwnmll11_lvs"},
+	{8669, "chnatwnmll13_lvs"},{8670, "chnatwnmll12_lvs"},{8671, "vgsEland26_lvs"},{8672, "vgsEedge06"},{8673, "csrsfence03_lvs"},
+	{8674, "csrsfence02_lvs"},{8675, "wddngchpl02_lvs"},{8676, "wdngchplsgn2_lvs"},{8677, "vgsEland09_lvs"},{8678, "wdngchplgrnd01_lvs"},
+	{8679, "bush05_lvs"},{8680, "chnatwnfnc02_lvs"},{8681, "chnatwnfnc03_lvs"},{8682, "chnatwnfnc04_lvs"},{8683, "chnatwnfnc05_lvs"},
+	{8684, "chnatwnfnc06_lvs"},{8685, "chnatwnfnc07_lvs"},{8686, "chnatwnfnc01_lvs"},{8687, "vgelwbld15_lvs"},{8688, "vgelwbld16_lvs"},
+	{8689, "vgelwbld17_lvs"},{8710, "bnuhotel01_lvs"},{8824, "vgsEedge05"},{8825, "vgsEstrphdge01"},{8826, "vgsEstrphdge02"},
+	{8827, "vgsEstrphdge03"},{8828, "vgsEstrphdge04"},{8832, "pirtebrdg01_lvS"},{8833, "prtbrdgrope_lvS"},{8834, "prtbrdgrope2_lvS"},
+	{8835, "pirtetrees01_lvS"},{8836, "pirtetrees02_lvS"},{8837, "pirtetrees03_lvS"},{8838, "vgEhshade01_lvs"},{8839, "vgsEcarshow1"},
+	{8840, "vgsEflgs1_lvs"},{8841, "rsdncarprk01_lvs"},{8842, "vgsE24hr_lvs"},{8843, "arrows01_lvs"},{8844, "vgsEedge23"},
+	{8845, "flamingrnd_lvs"},{8846, "bush06_lvs"},{8849, "vgelwbld18_lvs"},{8850, "vgelwbldgrd_lvs"},{8851, "vgEplntr01_lvs"},
+	{8852, "bush07_lvs"},{8853, "vgEplntr02_lvs"},{8854, "vgEplntr03_lvs"},{8855, "vgEplntr04_lvs"},{8856, "vgEplntr06_lvs"},
+	{8857, "vgsEcoast06"},{8858, "vgsrailroad09"},{8859, "vgsEcoast05"},{8860, "vgsrailroad14"},{8865, "vgEplntr07_lvs"},
+	{8866, "vgEplntr08_lvs"},{8867, "vgsEcnstrct01"},{8868, "vgsEcnstrct02"},{8869, "vgsEcnstrct05"},{8870, "vgsEcnstrct03"},
+	{8871, "vgsEcnstrct04"},{8872, "vgEscfldples01"},{8873, "vgsEcnstrct12"},{8874, "vgsEcnstrct13"},{8875, "vgsEcnstrct14"},
+	{8876, "vgsEcnstrct15"},{8877, "vgsEcnstrct10"},{8878, "vgsEcnstrct11"},{8879, "vgsEcnstrct08"},{8880, "vgsEcnstrct09"},
+	{8881, "excalibur02_lvS"},{8882, "excalibur03_lvS"},{8883, "vgsEfrght01"},{8884, "vgsEfrght02"},{8885, "vgsEfrght03"},
+	{8886, "vgsEfrght04"},{8887, "bush08_lvs"},{8888, "bush09_lvs"},{8889, "vgsEstrphdge33"},{8932, "VegasEroad136"},
+	{8947, "vgElkup"},{8948, "lckupgrgdoor_lvs"},{8954, "vgsEspras01"},{8955, "vgsEspray01"},{8957, "vgsEspdr01"},
+	{8969, "vgsEwires06_lvs"},{8979, "vgsEesc02"},{8980, "vgsEesc01"},{8981, "prtwires_lvs"},{8982, "vgsEstrphdge34"},
+	{8983, "vgsEedge02"},{8989, "bush10_lvs"},{8990, "bush11_lvs"},{8991, "bush12_lvs"},{9000, "vgsEedge17"},
+	{9001, "vgsEedge20"},{9002, "vgsEedge22"},{9003, "vgsEedge24"},{9004, "VegasEroad051"},{9005, "VegasEroad050"},
+	{9006, "VegasEroad086"},{9007, "VegasEroad049"},{9008, "VegasEroad048"},{9019, "luxortrees01_lvS"},{9020, "vgsEcnstfnc01"},
+	{9021, "vegasEroad068"},{9022, "vegasEroad067"},{9023, "VegasEroad069"},{9024, "vegasEroad070"},{9025, "vegasEroad065"},
+	{9026, "VegasEroad066"},{9027, "vegasEroad064"},{9028, "VegasEroad063"},{9029, "vgsEtrainfence01"},{9030, "vgsEtrainfence02"},
+	{9031, "vgsEtrainfence03"},{9032, "vgsEtrainfence04"},{9033, "vgsEtrainfence05"},{9034, "tikitrees01_lvS"},{9035, "tikitrees02_lvS"},
+	{9036, "tikibrdg01_lvs"},{9037, "csrspalace03_lvs"},{9039, "csrspalace04_lvs"},{9041, "prthotelfnc01"},{9042, "VegasEroad137"},
+	{9043, "luxorpillar03_lvs"},{9044, "pirateland05_lvS"},{9045, "pirateland04_lvS"},{9046, "vgsEland31_lvs"},{9047, "vgsEland32_lvs"},
+	{9052, "pirateland06_lvS"},{9054, "chnatwnmll14_lvs"},{9055, "chnatwnmll15_lvs"},{9056, "vgsEedge07"},{9057, "vgsEedge08"},
+	{9062, "arprtcrprk05_lvS"},{9064, "vgsEland36_lvs"},{9065, "vgsEland35_lvs"},{9066, "vgsEland37_lvs"},{9070, "casroyale02_lvs"},
+	{9071, "casroyale03_lvs"},{9072, "casroyale04_lvs"},{9076, "sphinx01_lvs"},{9078, "excalibur04_lvS"},{9080, "excalibur05_lvS"},
+	{9082, "vgsEcnstrct17"},{9083, "vgsEcnstrct18"},{9086, "vgEhseland06"},{9087, "vgEhseland07"},{9088, "VgsEnitlit01"},
+	{9089, "VgsEnitlit02"},{9090, "vgEferryland"},{9093, "cmdgrgdoor_lvs"},{9094, "csrElights_dy"},{9095, "csrElights_nt"},
+	{9098, "vgsEsvhse01"},{9099, "vgsEsvehse1"},{9100, "luxorlight_dy"},{9101, "luxorlight_nt"},{9104, "vgEpyrmd_nt"},
+	{9106, "vgsEamuntn"},{9108, "vgsEtrainfence06"},{9109, "vgsEtrainfence07"},{9110, "vgsEtrainfence08"},{9111, "vgsEtrainfence09"},
+	{9112, "vgsEtrainfence10"},{9113, "vgbndfnce"},{9114, "wddngchpl01_lvs"},{9115, "VegasEroad138"},{9116, "VegasEroad139"},
+	{9117, "VegasEroad140"},{9118, "VegasEroad141"},{9119, "vgsEedge14"},{9120, "VegasEroad143"},{9121, "flmngoneon01"},
+	{9122, "triadneon01"},{9123, "ballyneon01"},{9124, "crsplcneon"},{9125, "lxorneon"},{9126, "cmtneon01"},
+	{9127, "cmtneon02"},{9128, "lxorneon2"},{9129, "pirtneon"},{9131, "shbbyhswall13_lvs"},{9132, "triadcasign_lvs"},
+	{9135, "sbvgsEseafloor01"},{9136, "sbvgsEseafloor02"},{9137, "sbvgsEseafloor04"},{9138, "sbvgsEseafloor05"},{9139, "sbvgsEseafloor06"},
+	{9140, "sbvgsEseafloor07"},{9150, "VegasEroad144"},{9152, "bush13_lvs"},{9153, "bush14_lvs"},{9154, "triadwires"},
+	{9159, "pirtshp02_lvs"},{9162, "shop01_lvs"},{9163, "shop04_lvs"},{9164, "vgsrailbuild02"},{9165, "vgsrailbuild03"},
+	{9166, "vgsrailbuild04"},{9167, "vgsrailbuild05"},{9168, "vgsrailbuild06"},{9169, "vgsEprtlstation1"},{9171, "vgsEprtlstation2"},
+	{9173, "vgsEedge18"},{9174, "tislandbrdge01_lvs"},{9175, "VgsEnitlit03"},{9184, "vgEastbillbrd08"},{9185, "vgEastbillbrd07"},
+	{9186, "vgEastbillbrd05"},{9187, "vgEastbillbrd04"},{9188, "vgEastbillbrd02"},{9189, "vgEastbillbrd06"},{9190, "vgEastbillbrd01"},
+	{9191, "vgEastbillbrd03"},{9192, "vgegassgn01_lvs"},{9193, "vgegassgn03_lvs"},{9205, "road04sfn"},{9206, "land2_sfN10"},
+	{9207, "land2_sfN01"},{9208, "land2_sfN19"},{9209, "land_SFN06"},{9210, "land2_sfN11"},{9211, "land2_sfN09"},
+	{9212, "land2_sfN13"},{9213, "land2_sfN15"},{9214, "land2_sfN12"},{9215, "land2_sfN17"},{9216, "land_SFN13"},
+	{9217, "land2_sfN16"},{9218, "land_SFN15"},{9219, "land2_sfN14"},{9220, "Villa_SFN_CHRIS_01"},{9221, "Villa_SFN_CHRIS_02"},
+	{9222, "road08sfn"},{9223, "land_sfn21"},{9224, "cock_sfn02"},{9225, "land_sfn22"},{9226, "land_sfn18"},
+	{9227, "moresfnshit20"},{9228, "moresfnshit22"},{9229, "sfn_coast03"},{9230, "sfn_coast01"},{9231, "road01sfn"},
+	{9232, "road06sfn"},{9233, "road07sfn"},{9234, "land_sfn20"},{9235, "land2_sfN18"},{9236, "cock_sfn07"},
+	{9237, "lighhouse_SFN"},{9238, "moresfnshit28"},{9239, "track01_SFN"},{9240, "track02_SFN"},{9241, "copbits_sfn"},
+	{9242, "cock_sfn06"},{9243, "hrborbuild_SFN02"},{9244, "hrborbuild_SFN01"},{9245, "cstguard_SFN01"},{9246, "cock_sfn09"},
+	{9247, "hrbrmstr_SFN01"},{9248, "cock_sfn08"},{9249, "beach_sfn01"},{9250, "road02sfn"},{9251, "road03sfn"},
+	{9252, "road05sfn"},{9253, "sfn_coast04"},{9254, "carpark_sfn01"},{9255, "carpark_sfn02"},{9256, "cock_sfn14"},
+	{9257, "sfn_coast05"},{9258, "preshoosml02_SFN"},{9259, "preshoosbig02_SFN"},{9260, "hrborbuild_SFN03"},{9261, "land_sfn19"},
+	{9262, "hway_SFN01"},{9264, "hway_SFN03"},{9265, "hway_SFN04"},{9266, "hway_SFN05"},{9267, "hway_SFN06"},
+	{9269, "GGbridgeend_SFN"},{9270, "preshoosbig01_SFN01"},{9271, "preshoos03_SFN01"},{9272, "preshoos03_SFN02"},{9273, "preshoos01_SFN03"},
+	{9274, "preshoos03_SFN03"},{9275, "preshoosml02_SFN01"},{9276, "land_SFN17"},{9277, "bigsfnlite02"},{9278, "bigsfnlite05"},
+	{9279, "bigsfnlite08"},{9280, "bigsfnlite10"},{9281, "bigsfnlite12"},{9282, "bigsfnlite14"},{9283, "bigsfnlite16"},
+	{9284, "land2_sfN02"},{9285, "land2_sfN04"},{9286, "land2_sfN03"},{9287, "land2_sfN06"},{9288, "land2_sfN05"},
+	{9289, "land2_sfN20"},{9290, "land2_sfN07"},{9291, "land2_sfN08"},{9292, "sfn_crashbar06"},{9293, "sfn_crashbar01"},
+	{9294, "sfn_crashbar02"},{9295, "sfn_crashbar03"},{9296, "sfn_crashbar04"},{9297, "sfn_crashbar05"},{9298, "sfn_crashbar07"},
+	{9299, "sfn_clothesSHOP_cm1"},{9300, "sfn_town02"},{9301, "tempobj_SFN04"},{9302, "sfn_town01"},{9303, "sfn_town03"},
+	{9304, "land_sfn23"},{9305, "ground01_SFN_CM"},{9306, "sfn_cm_grNd02"},{9307, "SFN_SHOPBITS01"},{9308, "SFN_DOORWAY02"},
+	{9309, "SFN_CM_GRNDSHOP"},{9310, "chapel_SFN"},{9311, "SFN_newland_cm02"},{9312, "SFN_newland_cm03"},{9313, "SFN_newland_cm01"},
+	{9314, "advert01_sfn"},{9315, "carpark01_sfs_cm"},{9316, "shopstairsSFN1"},{9317, "hedge02_SFN_CM"},{9318, "hedge03SFN_CM"},
+	{9319, "preshoos03_SFN04"},{9320, "preshoosbig02_SFN01"},{9321, "garage_sfn01"},{9322, "preshoos03_SFN05"},{9323, "moresfnshit29"},
+	{9324, "preshoosbig02_SFN02"},{9325, "preshoos03_SFN06"},{9326, "preshoos03_SFN07"},{9327, "moresfnshit30"},{9328, "moresfnshit31"},
+	{9329, "sfn_coast06"},{9330, "SFN_wall_cm01"},{9331, "SFN_PRESHEDGE1"},{9332, "SFN_wall_cm02"},{9333, "SFNhedge_PRES02"},
+	{9334, "hedge09_SFN_CM"},{9335, "SFN_hedge_cm_010"},{9336, "hedge04_SFN_CM"},{9337, "SFN_WALL_cm2"},{9338, "land_sfn19B"},
+	{9339, "SFNvilla001_CM"},{9340, "SFNfence_CM01"},{9341, "Villa_SFN_CHRIS_04"},{9342, "land2_sfN09a"},{9343, "SFN_fence_cm2"},
+	{9344, "SFNhdge_presi_cm10"},{9345, "SFN_PIER_grassbit"},{9346, "SFNLand_villaCM1"},{9347, "SFNpres_hdge_10"},{9348, "sfn_hedge05_cm"},
+	{9349, "SFNfence_pres_5"},{9350, "SFN_pres_hedge9"},{9351, "SFN_STAIRS_bit"},{9352, "cables"},{9353, "land_SFN17a"},
+	{9361, "boatoffice_sfn"},{9362, "boatoffice2_sfn"},{9437, "sbedsfn4_SFN"},{9438, "sbedsfn1_SFN"},{9439, "sbedsfn2_SFN"},
+	{9440, "sbedsfn3_SFN"},{9476, "hway_SFN02"},{9482, "chinagate"},{9483, "land_16_sfw"},{9484, "land_46_sfw"},
+	{9485, "road_SFW02"},{9486, "road_SFW03"},{9487, "road_SFW04"},{9488, "road_SFW05"},{9489, "road_SFW06"},
+	{9490, "road_SFW07"},{9491, "road_SFW08"},{9492, "road_SFW09"},{9493, "road_SFW10"},{9494, "tempbuild_sfw41"},
+	{9495, "tempbuild_sfw42"},{9496, "sboxbld4_sfw02"},{9497, "sboxbld4_sfw69"},{9498, "sboxbld4_sfw70"},{9499, "sboxbld4_sfw71"},
+	{9500, "sboxbld4_sfwa"},{9501, "sfwbox_sfw27"},{9502, "sfwbox_sfw43"},{9503, "sboxbld4_sfw72"},{9504, "sboxbld4_sfw73"},
+	{9505, "gard_sfw01"},{9506, "bigboxtmp02"},{9507, "bigboxtmp03"},{9508, "bigboxtmp09"},{9509, "bigboxtmp05"},
+	{9510, "bigboxtmp06"},{9511, "bigboxtmp07"},{9512, "bigboxtmp08"},{9513, "bigboxtmp1"},{9514, "supasave_sfw"},
+	{9515, "bigboxtmp18"},{9516, "bigboxtmp17"},{9517, "bigboxtmp16"},{9518, "bigboxtmp15"},{9519, "bigboxtmp20"},
+	{9520, "boxbuildsfw_31"},{9521, "morboxes03"},{9522, "morboxes04"},{9523, "newvic2_sfw"},{9524, "blokmod1_sfw"},
+	{9525, "boigas_sfw03"},{9526, "boigas_sfw02"},{9527, "boigas_sfw01"},{9528, "boigas_sfw04"},{9529, "blokmod3_sfw"},
+	{9530, "sandbch_sfw02"},{9547, "blokcut_sfw04"},{9549, "sfw_boxwest10"},{9550, "sfw_boxwest04"},{9551, "sandbch_sfw04"},
+	{9552, "sandbch_sfw03"},{9553, "sandbch_sfw69"},{9554, "park3_sfw"},{9555, "park1_sfw"},{9556, "park2_sfw"},
+	{9557, "lake_sfw"},{9558, "cables_sfw"},{9559, "fescape_sfw07"},{9560, "fescape_sfw08"},{9561, "fescape_sfw09"},
+	{9562, "fescape_sfw02"},{9563, "fescape_sfw04"},{9564, "firscape_sfw04"},{9565, "fescape_sfw06"},{9566, "fescape_sfw01"},
+	{9567, "cables_sfw01"},{9568, "cables_sfw24"},{9569, "cables_sfw28"},{9570, "road_SFW11"},{9571, "road_SFW12"},
+	{9572, "blokmod3_sfw04"},{9573, "newvic1_sfw"},{9575, "archbrij_SFW"},{9576, "frway_box1"},{9577, "frway_box2"},
+	{9578, "blokmod2_sfw01"},{9579, "blokmod2_sfw03"},{9580, "sboxbld4_sfw83"},{9581, "sboxbld4_sfw84"},{9582, "temp_SFW35"},
+	{9583, "freight_SFW15"},{9584, "freight_SFW31"},{9585, "freight_SFW33"},{9586, "freight_deck_SFW"},{9587, "freight_box_SFW01"},
+	{9588, "freightbox_inSFw"},{9589, "frght_BOXES08"},{9590, "freight_interiorsfw"},{9591, "road_SFW13"},{9592, "sfw_boxwest12"},
+	{9593, "hosbibal_sfw"},{9594, "fescape_sfw03"},{9595, "tempbuild_sfw22"},{9596, "land_04_sfw"},{9597, "sandbch_sfw01"},
+	{9598, "sfw_boxwest02"},{9599, "vicbig_sfw1"},{9600, "road_SFW14"},{9601, "road_SFW15"},{9602, "road_SFW16"},
+	{9603, "road_16_sfw"},{9604, "frght_BOXES19"},{9605, "land_01_sfw"},{9606, "land_34_sfw"},{9607, "land_22_sfw"},
+	{9608, "ggate_park_sfw"},{9609, "land_37_sfw"},{9610, "land_42_sfw"},{9611, "land_43_sfw"},{9612, "ferrybit1_sfw"},
+	{9613, "ferrybit3_sfw"},{9614, "donuts2_sfw"},{9615, "donuts_sfw"},{9616, "land_20_sfw"},{9617, "boigagr_sfw"},
+	{9618, "scaff1_SFw"},{9623, "toll_SFW"},{9624, "spraysfw"},{9625, "spdr_sfw"},{9652, "road_SFW17"},
+	{9653, "road_SFW18"},{9680, "tramstat_SFW"},{9682, "carspaces1_sfw"},{9683, "ggbrig_07_sfw"},{9685, "ggbrig_02_sfw"},
+	{9689, "ggbrig_05_sfw"},{9690, "ggbrig_06_sfw"},{9693, "ggbrig_03_sfw"},{9694, "ggbrig_01_sfw"},{9696, "ggbrig_04_sfw"},
+	{9697, "carspaces3_sfw"},{9698, "BRIDGE_argh"},{9699, "road_SFW19"},{9700, "road_SFW20"},{9701, "road_SFW21"},
+	{9702, "road_SFW22"},{9703, "road_SFW23"},{9704, "road_SFW24"},{9705, "tunnel_sfw"},{9706, "road_SFW25"},
+	{9707, "road_SFW26"},{9708, "road_SFW27"},{9709, "road_SFW01"},{9710, "road_SFW29"},{9711, "road_SFW30"},
+	{9712, "road_SFW31"},{9713, "road_SFW32"},{9714, "road_SFW33"},{9715, "road_SFW34"},{9716, "road_sfw55"},
+	{9717, "road_SFW35"},{9718, "road_SFW36"},{9719, "road_SFW37"},{9720, "road_SFW38"},{9721, "road_SFW39"},
+	{9722, "road_SFW40"},{9723, "road_SFW41"},{9724, "road_SFW42"},{9725, "road_SFW43"},{9726, "road_SFW44"},
+	{9727, "road_SFW45"},{9728, "road_SFW46"},{9729, "road_SFW47"},{9730, "road_SFW48"},{9731, "road_SFW49"},
+	{9732, "road_SFW50"},{9733, "road_SFW51"},{9734, "road_SFW52"},{9735, "road_SFW53"},{9736, "road_SFW54"},
+	{9737, "blokmod3_sfw69"},{9738, "blokmod2_sfw69"},{9739, "newvic1_sfw69b"},{9740, "newvic1_sfw69"},{9741, "blokmod1_sfwc"},
+	{9742, "blokmod1_sfwb"},{9743, "rock_coastSFW2"},{9744, "rock_coastSFW1"},{9745, "rock_coastSFW3"},{9746, "rock_coastSFW4"},
+	{9747, "road_SFW90"},{9748, "sfw_boxwest03"},{9749, "sfw_boxwest01"},{9750, "sfw_boxwest05"},{9751, "sfw_boxwest06"},
+	{9752, "sfw_boxwest08"},{9753, "sfw_boxwest09"},{9754, "sfw_boxwest11"},{9761, "freight_alfa_SFW"},{9762, "sfw_boxwest07"},
+	{9763, "blokcut_sfw01"},{9764, "blokcut_sfw02"},{9765, "blokcut_sfw03"},{9766, "scaff3_SFw"},{9767, "scaff2_SFw"},
+	{9812, "veg_ivy_balcny_kb08"},{9814, "firscape_sfw01"},{9815, "firscape_sfw02"},{9816, "firscape_sfw03"},{9817, "scaff1b_SFw"},
+	{9818, "shpbridge_sfw01"},{9819, "shpbridge_sfw02"},{9820, "shpbridge_sfw04"},{9821, "shpbridge_sfw03"},{9822, "shpbridge_sfw08"},
+	{9823, "sav1sfw"},{9824, "diner_SFw"},{9825, "carspaces3_sfw02"},{9827, "road_SFW28"},{9829, "bumblister_SFW"},
+	{9830, "ggcarpark_sfw"},{9831, "sfw_waterfall"},{9832, "parkbridge_sfw"},{9833, "fountain_SFW"},{9834, "hosbibal3_sfw"},
+	{9835, "hosbibal4_sfw"},{9836, "hosbibal2_sfw"},{9837, "gg_split2_SFW"},{9838, "gg_split1_SFW"},{9858, "ferrybit69_sfw"},
+	{9859, "chinawning69b"},{9860, "chinawning69"},{9863, "land_21_sfw"},{9864, "land_18_sfw"},{9885, "sfw_nitlite1"},
+	{9886, "sfw_nitelite2"},{9889, "park3a_sfw"},{9891, "park2a_sfw"},{9893, "gardsfw02"},{9894, "blokmod2_sfw"},
+	{9895, "bigboxtmp19"},{9896, "hosbi2al_sfw"},{9897, "hosbibal3b_sfw"},{9898, "boigas_sfw05"},{9899, "sprasfw"},
+	{9900, "landshit_09_sfe"},{9901, "ferybuild_1"},{9902, "ferryland3"},{9903, "pier69_models07"},{9904, "pier69_models04"},
+	{9905, "pier69_models06"},{9906, "tempsf_2_sfe"},{9907, "monolith_sfe"},{9908, "anotherbuild091"},{9909, "vicstuff_sfe33"},
+	{9910, "fishwarf01"},{9911, "fishwarf06"},{9912, "fishwarf03"},{9913, "fishwarf04"},{9914, "fishwarf05"},
+	{9915, "sfe_park"},{9916, "jumpbuild_sfe"},{9917, "yet_another_sfe"},{9918, "posh2_sfe"},{9919, "grnwhite_sfe"},
+	{9920, "vicstuff_sfe6000"},{9921, "ferryshops1"},{9922, "ferryshops2"},{9923, "ferryshops3"},{9924, "ferryshops4"},
+	{9925, "ferryshops5"},{9926, "ferryshops07"},{9927, "sfe_redwht2"},{9928, "ferryshops08"},{9929, "boring_sfe"},
+	{9930, "nicepark_sfe"},{9931, "church_sfe"},{9932, "nitelites_sfe05"},{9933, "nitelites_sfe01"},{9934, "nitelites_sfe04"},
+	{9946, "pyrground_sfe"},{9947, "lbd_house1_sfe"},{9948, "lbd_house2_sfe"},{9949, "pier1_sfe"},{9950, "pier2_sfe"},
+	{9951, "pier3_sfe"},{9952, "vicstuff_sfe6006"},{9953, "ottos_AUTOS_sfe"},{9954, "pier69_sfe3"},{9955, "pier69_sfe1"},
+	{9956, "pier69_sfe2"},{9957, "multustor2_sfe"},{9958, "submarr_sfe"},{10008, "fer_cars2_sfe"},{10009, "fer_cars3_sfe"},
+	{10010, "ugcarpark_SFe"},{10011, "carspaces_sfe14"},{10012, "cables4"},{10013, "vicstuff_sfe17"},{10014, "vicstu69_sfe"},
+	{10015, "vicstu69b_sfe"},{10016, "vicnew_sfe04"},{10017, "bigvic_a1"},{10018, "tunnel_sfe"},{10019, "vicstuff_sfe45"},
+	{10020, "vicstuff_sfe22"},{10021, "vicstuff_sfe06"},{10022, "vicstuff_sfe04"},{10023, "sfe_archybald1"},{10024, "archbuild_wins"},
+	{10025, "chinatown_sfe2"},{10026, "fire_esc_SFE06"},{10027, "bigwhiete_SFE"},{10028, "copshop_sfe"},{10029, "copbits_sfe"},
+	{10030, "chinatown_sfe9"},{10031, "landshit_24_sfe"},{10032, "carspaces_sfe"},{10033, "fire_esc_SFE02"},{10034, "landshit_18_sfe"},
+	{10035, "chinatown_sfe20"},{10036, "chin_sfe1121"},{10037, "chbackbit8_sfe"},{10038, "chinatown_sfe8"},{10039, "chinatown_sfe1"},
+	{10040, "cables3"},{10041, "BIGCENTRAL_SFE"},{10042, "fescape2_sfe"},{10043, "vicstuff_sfe6004"},{10044, "sfe_swank1"},
+	{10045, "pinkbuild4_sfe"},{10046, "pinkbuild_sfe"},{10047, "monlith_ground"},{10048, "vicstuff_sfe66"},{10049, "Posh_thingsfe"},
+	{10050, "vicstuff_sfe50"},{10051, "carimp_SFE"},{10052, "lowmall"},{10053, "fishwarf20_sfe"},{10054, "fishwarf24_sfe"},
+	{10055, "fishwarf21_sfe"},{10056, "tempsf_4_sfe"},{10057, "nitelites_sfe10"},{10058, "nitelites_sfe11"},{10060, "aprtmnts01_sfe"},
+	{10061, "aprtmntrailgs01_SFe"},{10062, "aprtmntrailgs03_SFe"},{10063, "aprtmnts02_sfe"},{10064, "aprtmntrailgs02_SFe"},{10065, "road24_sfe"},
+	{10066, "road02_sfe"},{10067, "road05_sfe"},{10068, "road_07_sfe"},{10069, "road06_sfe"},{10070, "road08_sfe"},
+	{10071, "road09_sfe"},{10072, "road10_sfe"},{10073, "road11_sfe"},{10074, "road12_sfe"},{10075, "road_16_sfe01"},
+	{10076, "road13_sfe"},{10077, "road14_sfe"},{10078, "road15_sfe"},{10079, "pyr_top_SFe"},{10080, "fishwarf10_sfe"},
+	{10083, "backalleys1_sfe"},{10084, "fishwarf13_sfe"},{10086, "aprtmnts03_sfe"},{10087, "landsl01_sfe"},{10101, "vicstuff_sfe67"},
+	{10110, "road16_sfe"},{10111, "road17_sfe"},{10112, "road18_sfe"},{10113, "road19_sfe"},{10114, "road20_sfe"},
+	{10115, "road21_sfe"},{10116, "road22_sfe"},{10117, "road23_sfe"},{10118, "road01_sfe"},{10119, "road25_sfe"},
+	{10120, "road26_sfe"},{10121, "road27_sfe"},{10122, "road28_sfe"},{10123, "road29_sfe"},{10124, "road30_sfe"},
+	{10125, "road32_sfe"},{10126, "road33_sfe"},{10127, "road34_sfe"},{10128, "road35_sfe"},{10129, "road36_sfe"},
+	{10130, "road37_sfe"},{10131, "road38_sfe"},{10132, "road39_sfe"},{10133, "road40_sfe"},{10134, "road41_sfe"},
+	{10135, "road43_sfe"},{10136, "road44_sfe"},{10137, "road45_sfe"},{10138, "road46_sfe"},{10139, "road47_sfe"},
+	{10140, "freig2_intSFE"},{10142, "dwntwnsl01_sfe1"},{10143, "tempsf_1_sfe"},{10145, "genome_SFE"},{10146, "nitelites_sfe14"},
+	{10147, "nitelites_sfe15"},{10148, "bombshop"},{10149, "bombdoor02"},{10150, "fdorsfe"},{10151, "bigvicgrnd_sfe"},
+	{10152, "victimber1_sfe"},{10153, "victimber2_sfe"},{10154, "pier69gdr"},{10165, "pointybot_Sfe"},{10166, "p69_rocks"},
+	{10173, "fire_esc_SFE03"},{10174, "fire_esc_SFE04"},{10175, "fire_esc_SFE05"},{10176, "fire_esc_SFE01"},{10177, "fire_esc_SFE07"},
+	{10178, "fire_esc_SFE08"},{10179, "fire_esc_SFE09"},{10180, "fire_esc_SFE10"},{10181, "fire_esc_SFE11"},{10182, "michdr"},
+	{10183, "ferspaces"},{10184, "sfcopdr"},{10185, "lombardsteps"},{10186, "lombard3_sfe"},{10187, "vicnew_sfe01"},
+	{10188, "vicnew_sfe02"},{10189, "vicnew_sfe03"},{10193, "hotelbits_Sfe07"},{10194, "hotelbits_Sfe03"},{10195, "hotelbits_Sfe02"},
+	{10196, "hotelbits_Sfe01"},{10197, "hotelbits_Sfe04"},{10226, "shipbits2_sfe"},{10227, "shipbits1_sfe"},{10228, "freight_litesSFE"},
+	{10229, "freighter2b_SFE"},{10230, "freighter_sfe"},{10231, "freightboxes"},{10233, "carspaces_sfe15"},{10234, "fescape2b_sfe"},
+	{10235, "pointybotb_Sfe"},{10236, "hotelbits_Sfe06"},{10242, "hotelbits_Sfe05"},{10244, "vicjump_sfe"},{10245, "ottos_ramp"},
+	{10246, "sav1sfe"},{10247, "road37b_sfe"},{10248, "copcrates_sfe"},{10249, "ottos_bits"},{10250, "masts1_sfe"},
+	{10252, "china_town_gateb"},{10255, "chinawning07"},{10260, "pointybot22_Sfe"},{10261, "chinawning01"},{10262, "chinawning02"},
+	{10263, "chinawning03"},{10264, "chinawning04"},{10265, "chinawning05"},{10266, "chinawning06"},{10267, "cables16"},
+	{10270, "bigwhiete2_SFE"},{10271, "sfe_redwht2b"},{10273, "churchgr_sfe"},{10274, "churchgr2_sfe"},{10275, "road07_sfe"},
+	{10276, "road42_sfe"},{10278, "vicstu69c_sfe"},{10280, "lowbox_sfe"},{10281, "michsign_sfe"},{10282, "mich_int_sfe"},
+	{10287, "tempsf_4_sfe3"},{10288, "tempsf_4_sfe2"},{10289, "tempsf_3_sfe"},{10290, "garse_85_SFE"},{10294, "road03_sfe"},
+	{10295, "road04_sfe"},{10296, "road31_sfe"},{10300, "ferryland_sfe111"},{10301, "ferry_ncoast1_sfe"},{10305, "ferryland_sfe112"},
+	{10306, "vicstuff_sfe38"},{10308, "yet_another_sfe2"},{10309, "pier69_models05"},{10310, "boigas_sfe"},{10350, "OC_FLATS_GND01_SFS"},
+	{10351, "groundbit_10_SFS"},{10352, "groundbit_11_SFS"},{10353, "groundbit_12_SFS"},{10354, "groundbit_13_SFS"},{10355, "groundbit_48_SFS"},
+	{10356, "hashbury_01_SFS"},{10357, "transmitter_sfs"},{10358, "OC_FLATS_GND02_SFS"},{10359, "sfshill02"},{10360, "sfshill03"},
+	{10361, "sfshill04"},{10362, "sfshill05"},{10363, "sfshill06"},{10364, "sfshill07"},{10365, "roadbit21_SFS"},
+	{10366, "golftunnel1_SFS"},{10367, "roadbit38_SFS"},{10368, "cathedral_SFS"},{10369, "smallshop_10_SFS08"},{10370, "alley1_SFS"},
+	{10371, "alley1_SFS01"},{10372, "alley2_SFS01"},{10373, "alley2_SFS02"},{10374, "alley2_SFS04"},{10375, "subshop_SFS"},
+	{10376, "subshop2_SFS"},{10377, "cityhall_SFS"},{10378, "ctiyhallsquare_SFS"},{10379, "cityhall2_SFS"},{10380, "cityhall2_SFS01"},
+	{10381, "artgallery_SFS"},{10382, "alleyfuckingway_SFS"},{10383, "subshops3_SFS"},{10384, "cityhallsq_SFS"},{10385, "bbgroundbit_SFS"},
+	{10386, "sfshill09"},{10387, "cuntwland22_SFS"},{10388, "tempobj_SFS02"},{10389, "mission_07_SFS"},{10390, "mission_12_SFS"},
+	{10391, "mission_14_SFS"},{10392, "smallshop_10_SFS07"},{10393, "scum_SFS01"},{10394, "plot1_SFS"},{10395, "mission_13_SFS"},
+	{10396, "hc_tenfence_SFS"},{10397, "hc_stadlight1_SFS"},{10398, "healthclub_SFS"},{10399, "healthcl69_SFS"},{10400, "hc_grounds02_SFS"},
+	{10401, "hc_shed02_SFS"},{10402, "hc_secfence_SFS"},{10403, "hc_track02_SFS"},{10404, "hc_laybyland_SFS"},{10405, "hc_golfcrse02_SFS"},
+	{10406, "hc_grounds04_SFS"},{10407, "hc_golfcrse03_SFS"},{10408, "hc_golfcrse05_SFS"},{10409, "hc_golfcrse09_SFS"},{10410, "hc_golfcrse10_SFS"},
+	{10411, "shiteybit_SFS"},{10412, "poshotel1_SFS"},{10413, "groundbit_09_SFS"},{10414, "OC_FLATS_GND03_SFS"},{10415, "OC_FLATS_GND17_SFS"},
+	{10416, "OC_FLATS_GND16_SFS"},{10417, "OC_FLATS_GND06_SFS"},{10418, "sfshill13"},{10419, "OC_FLATS_GND07_SFS"},{10420, "OC_FLATS_GND08_SFS"},
+	{10421, "OC_FLATS_GND09_SFS"},{10422, "OC_FLATS_GND19_SFS"},{10423, "mission_15_SFS"},{10424, "ROADSsfs01"},{10425, "temphotel1_sfs"},
+	{10426, "backroad_SFS"},{10427, "haight_52_SFS"},{10428, "hashblock1_02_SFS"},{10429, "hashblock1_10_SFS"},{10430, "hashblock1_08_SFS"},
+	{10431, "hashbury_03_SFS"},{10432, "haight_17_SFS"},{10433, "hashbury_04_SFS"},{10434, "hashbury_05_SFS"},{10435, "shoppie6_SFS04"},
+	{10436, "hashblock1_09_SFS"},{10437, "hashfence_09_SFS"},{10438, "hashbury_07_SFS"},{10439, "hashbury_08_SFS"},{10440, "ROADSsfs09"},
+	{10441, "hashbury_10_SFS"},{10442, "graveyardwall_SFS"},{10443, "graveyard_SFS"},{10444, "poolwater_SFS"},{10445, "hotelback2"},
+	{10446, "hotelback1"},{10447, "hashupass_SFS"},{10448, "lastbit_08_SFS"},{10449, "ROADSsfs17"},{10450, "ROADSsfs16"},
+	{10451, "sfshill12"},{10452, "ROADSsfs39"},{10453, "sfshill14"},{10454, "sfshill15"},{10455, "ROADSsfs19"},
+	{10456, "ROADSsfs02"},{10457, "ROADSsfs03"},{10458, "ROADSsfs04"},{10459, "ROADSsfs05"},{10460, "ROADSsfs06"},
+	{10461, "ROADSsfs07"},{10462, "ROADSsfs08"},{10463, "ROADSsfs23"},{10464, "ROADSsfs10"},{10465, "ROADSsfs11"},
+	{10466, "ROADSsfs12"},{10467, "ROADSsfs13"},{10468, "ROADSsfs14"},{10469, "ROADSsfs15"},{10470, "ROADSsfs38"},
+	{10471, "ROADSsfs27"},{10472, "ROADSsfs18"},{10473, "ROADSsfs28"},{10474, "ROADSsfs20"},{10475, "ROADSsfs21"},
+	{10476, "ROADSsfs22"},{10477, "ROADSsfs30"},{10478, "ROADSsfs24"},{10479, "ROADSsfs25"},{10480, "ROADSsfs26"},
+	{10481, "ROADSsfs33"},{10482, "ROADSsfs29"},{10483, "ROADSsfs36"},{10484, "ROADSsfs32"},{10485, "ROADSsfs35"},
+	{10486, "ROADSsfs34"},{10487, "parktunnel_SFS"},{10488, "sfshill08"},{10489, "cuntwland18_SFS"},{10490, "sfshill01"},
+	{10491, "sfshill11_SFS"},{10492, "sfshill10"},{10493, "SV_ground_04_SFS"},{10558, "tbnSFS"},{10559, "sfshill11beach"},
+	{10560, "bbgroundbitb_SFS"},{10561, "bbgroundbitc_SFS"},{10562, "bbgroundbitd_SFS"},{10563, "OC_FLATS_GND18_SFS"},{10564, "OC_FLATS_GND11_SFS"},
+	{10565, "OC_FLATS_GND12_SFS"},{10566, "OC_FLATS_GND13_SFS"},{10567, "OC_FLATS_GND14_SFS"},{10568, "OC_FLATS_GND15_SFS"},{10569, "OC_FLATS_GND10_SFS"},
+	{10570, "OC_FLATS_GND05_SFS"},{10571, "OC_FLATS_GND04_SFS"},{10572, "golftunnel3_SFS"},{10573, "golftunnel2_SFS"},{10574, "golftunnel4_SFS"},
+	{10575, "modshopdoor1_SFS"},{10576, "modshopint1_SFS"},{10601, "sfshill10b"},{10606, "cluckbell_SFS"},{10608, "lastbit_GND01_SFS"},
+	{10609, "lastbit_GND02_SFS"},{10610, "fedmint_SFS"},{10611, "fedmintfence_SFS"},{10612, "fedmintland_SFS"},{10613, "lastbit_07_SFS"},
+	{10614, "lastbit_06_SFS"},{10615, "lastbit_04_SFS"},{10616, "lastbit_03_SFS"},{10617, "lastbit_01_SFS"},{10618, "lastbit_02_SFS"},
+	{10619, "officymirrord_SFS"},{10621, "pinkcarpark_SFS"},{10622, "pinkcarparkrd1_SFS"},{10623, "pinkcarparkrd2_SFS"},{10624, "lowqueens1_SFS"},
+	{10625, "lowqueens2_SFS"},{10626, "queens_09_SFS"},{10627, "queens_02_SFS"},{10628, "queens_03_SFS"},{10629, "queens_04_SFS"},
+	{10630, "queens_10_SFS"},{10631, "ammunation_SFS"},{10632, "ammuwindows_SFS"},{10633, "queens_01_SFS"},{10634, "queens_06_SFS"},
+	{10635, "queens_07_SFS"},{10636, "queens_05_SFS"},{10637, "queens_08_SFS"},{10638, "cityhallsq2_SFS"},{10639, "lastbit_06b_SFS"},
+	{10649, "lastbit_01b_SFS"},{10651, "pinkcarparkrd1b_SFS"},{10671, "savehousegdoor_SFS"},{10672, "fescape_sfs01"},{10675, "elecstionv_SFS"},
+	{10676, "transmitbldg_SFS"},{10682, "shitfence1_SFS"},{10683, "shitfence2_SFS"},{10694, "sfshill11z_SFS"},{10695, "wires_02_SFS"},
+	{10696, "wires_18_SFS"},{10697, "wires_03_SFS"},{10698, "wires_04_SFS"},{10699, "wires_05_SFS"},{10700, "wires_06_SFS"},
+	{10701, "wires_07_SFS"},{10702, "wires_08_SFS"},{10703, "wires_09_SFS"},{10704, "wires_01_SFS"},{10705, "wires_11_SFS"},
+	{10706, "wires_12_SFS"},{10707, "wires_13_SFS"},{10708, "wires_10_SFS"},{10709, "wires_14_SFS"},{10710, "wires_15_SFS"},
+	{10711, "wires_16_SFS"},{10712, "wires_17_SFS"},{10713, "gayclub_SFS"},{10716, "cath_hedge_SFS"},{10718, "poshotel1b_SFS"},
+	{10722, "shoppie6_SFS03"},{10734, "wires_07b_SFS"},{10735, "wires_07c_SFS"},{10736, "wires_07d_SFS"},{10737, "wires_04b_SFS"},
+	{10738, "wires_04c_SFS"},{10739, "wires_04d_SFS"},{10740, "wires_03b_SFS"},{10741, "wires_15b_SFS"},{10742, "wires_01b_SFS"},
+	{10743, "wires_01c_SFS"},{10744, "BS_building_SFS"},{10750, "roadsSFSE01"},{10751, "roadsSFSE02"},{10752, "just_stuff07_sfse"},
+	{10753, "roadsSFSE03"},{10754, "road_sfse12"},{10755, "Airport_02_SFSe"},{10756, "Airport_03_SFSe"},{10757, "Airport_04_SFSe"},
+	{10758, "Airport_05_SFSe"},{10759, "roadsSFSE04"},{10760, "Airport_07_SFSe"},{10761, "Airport_08_SFSe"},{10762, "Airport_09_SFSe"},
+	{10763, "controltower_SFSe"},{10764, "app_light_SFS05e"},{10765, "skidmarks_SFSe"},{10766, "Airport_10_SFSe"},{10767, "Airport_11_SFSe"},
+	{10768, "airprtgnd_06_SFSe"},{10769, "Airport_14_SFSe"},{10770, "CARRIER_BRIDGE_SFSe"},{10771, "CARRIER_HULL_SFSe"},{10772, "CARRIER_LINES_SFSe"},
+	{10773, "dk_cargoshp2_SFSe"},{10774, "dk_cargoshp1_SFS01e"},{10775, "bigfactory_SFSe"},{10776, "bigfactory2_SFSe"},{10777, "ddfreeway3_SFSe"},
+	{10778, "aircarpark_01_SFSe"},{10779, "aircarpark_06_SFSe"},{10780, "aircarpark_07_SFSe"},{10781, "aircarpark_08_SFSe"},{10782, "aircarpark_02_SFSe"},
+	{10783, "aircarpark_03_SFSe"},{10784, "aircarpark_04_SFSe"},{10785, "aircarpark_05_SFSe"},{10786, "aircarpark_09_SFSe"},{10787, "aircarpark_10_SFSe"},
+	{10788, "aircarpark_11_SFSe"},{10789, "xenonroof_SFSe"},{10790, "roadsSFSE05"},{10791, "roadsSFSE06"},{10792, "underfreeway_SFSe"},
+	{10793, "car_ship_03_SFSe"},{10794, "car_ship_04_SFSe"},{10795, "car_ship_05_SFSe"},{10806, "airfence_01_SFSe"},{10807, "airfence_04_SFSe"},
+	{10808, "airfence_03_SFSe"},{10809, "airfence_02_SFSe"},{10810, "ap_smallradar1_SFSe"},{10811, "apfuel1_SFSe"},{10814, "apfuel2_SFSe"},
+	{10815, "airprtgnd_02_SFSe"},{10816, "airprtgnd_01_SFSe"},{10817, "airprtgnd_03_SFSe"},{10818, "airprtgnd_04_SFSe"},{10819, "airprtgnd_05_SFSe"},
+	{10820, "baybridge1_SFSe"},{10821, "baybridge2_SFSe"},{10822, "baybridge3_SFSe"},{10823, "baybridge4_SFSe"},{10824, "subpen_int_SFSe"},
+	{10825, "subpen_crane_SFSe"},{10826, "subpen_ext_SFSe"},{10827, "subbunker_ext_SFSe"},{10828, "drydock1_SFSe"},{10829, "gatehouse1_SFSe"},
+	{10830, "drydock2_SFSe"},{10831, "drydock3_SFSe"},{10832, "gatehouse2_SFSe"},{10833, "navybase_02_SFSe"},{10834, "navybase_03_SFSe"},
+	{10835, "navyfence2_SFSe"},{10836, "apinnerfence3_SFSe"},{10837, "ap_bigsign_SFSe"},{10838, "airwelcomesign_SFSe"},{10839, "aircarpkbarier_SFSe"},
+	{10840, "bigshed_SFSe"},{10841, "drydock1_SFSe01"},{10842, "Airport_14_SFSe01"},{10843, "bigshed_SFSe01"},{10844, "gen_whouse01_SFSe"},
+	{10845, "gen_whouse02_SFSe"},{10846, "gen_whouse03_SFSe"},{10847, "gen_whouse03_SFSe01"},{10848, "roadsSFSE07"},{10849, "roadsSFSE08"},
+	{10850, "landbit01_SFSe"},{10851, "sfseland02"},{10852, "roadsSFSE09"},{10854, "roadsSFSE10"},{10855, "roadsSFSE11"},
+	{10856, "viet_03b_SFSe"},{10857, "roadsSFSE12"},{10858, "roadsSFSE13"},{10859, "roadsSFSE14"},{10860, "roadsSFSE15"},
+	{10861, "bigjunction_05_SFSe"},{10862, "bigjunction_06_SFSe"},{10863, "bigjunction_07_SFSe"},{10864, "bigjunction_08_SFSe"},{10865, "bigjunct_09_SFSe"},
+	{10866, "roadsSFSE16"},{10867, "roadsSFSE18"},{10868, "roadsSFSE19"},{10869, "roadsSFSE20"},{10870, "roadsSFSE21"},
+	{10871, "blacksky_SFSe"},{10872, "wc_lift_SFSe"},{10873, "blackskyrail_SFSe"},{10874, "apinnerfence1_SFSe"},{10875, "apinnerfence2_SFSe"},
+	{10885, "navyfence_SFSe"},{10889, "dockbarrier1_SFSe"},{10890, "dockbarrier2_SFSe"},{10891, "bakery_SFSe"},{10903, "sf_landbut02"},
+	{10904, "sf_landbut01"},{10905, "sfseland01"},{10917, "landbit01b_SFSe"},{10925, "shoppie1_SFS"},{10926, "groundbit_70_SFS"},
+	{10927, "trainstuff37_SFS22"},{10928, "roadsSFSE22"},{10929, "roadsSFSE23"},{10930, "roadsSFSE24"},{10931, "traintrax05_SFS"},
+	{10932, "station03_SFS"},{10933, "traintrax01_SFS"},{10934, "traintrax03_SFS"},{10935, "traintrax04_SFS"},{10936, "landbit04_SFS"},
+	{10937, "roadsSFSE25"},{10938, "Groundbit84_SFS"},{10939, "Silicon09B_SFS"},{10940, "roadsSFSE26"},{10941, "Silicon11_SFS"},
+	{10942, "Silicon12_SFS"},{10943, "SV_ground_02_SFS"},{10944, "southtunnel_04_SFS"},{10945, "skyscrap_SFS"},{10946, "fuuuuuuuck_SFS"},
+	{10947, "officy_SFS"},{10948, "skyscrapper_SFS"},{10949, "shoppie4_SFS"},{10950, "shoppie2_SFS"},{10951, "shoppie3_SFS"},
+	{10952, "shoppie6_SFS"},{10953, "shoppie5_SFS"},{10954, "stadium_SFSe"},{10955, "stadiumroof_SFS"},{10956, "southtunnel_01_SFS"},
+	{10957, "xsjmstran1"},{10958, "roadsSFSE27"},{10959, "cuntwland36_SFS"},{10960, "cuntwland37_SFS"},{10961, "cuntwland39_SFS"},
+	{10962, "cuntwland26_SFS"},{10965, "depot_SFS"},{10966, "tankfact03_SFS"},{10967, "roadsSFSE28"},{10968, "roadsSFSE29"},
+	{10969, "groundbit_06_SFS"},{10970, "roadsSFSE30"},{10971, "roadsSFSE31"},{10972, "landbit06_SFS"},{10973, "mall_03_SFS"},
+	{10974, "mall_01_SFS"},{10975, "shoppie6_SFS01"},{10976, "drivingsch_SFS"},{10977, "smallshop_16_SFS"},{10978, "smallshop_17_SFS"},
+	{10979, "haightshop_SFS"},{10980, "tempobj2_SFS02"},{10981, "scum_SFS"},{10982, "smallshop_10_SFS03"},{10983, "hub_SFS"},
+	{10984, "rubbled01_SFS"},{10985, "rubbled02_SFS"},{10986, "rubbled03_SFS"},{10987, "coveredpath1_SFS"},{10988, "mission_01_SFS"},
+	{10989, "mission_02_SFS"},{10990, "mission_04_SFS"},{10991, "mission_05_SFS"},{10992, "mission_03_SFS"},{10993, "mission_06_SFS"},
+	{10994, "shoppie6_SFS02"},{10995, "mission_08_SFS"},{10996, "smallshop_10_SFS05"},{10997, "smallshop_10_SFS06"},{10998, "mission_11_SFS"},
+	{10999, "haightshop_SFS02"},{11000, "smallshop_17_SFS01"},{11001, "mission_16_SFS"},{11002, "tempobj_SFS03"},{11003, "roadsSFSE32"},
+	{11004, "mission_18_SFS"},{11005, "mission_17_SFS"},{11006, "mission_09_SFS"},{11007, "crack_wins_SFS"},{11008, "firehouse_SFS"},
+	{11009, "dk_cargoshp70_SFS02"},{11010, "crackbuild_SFS"},{11011, "crackfactjump_SFS"},{11012, "crackfact_SFS"},{11013, "landbit05_SFS"},
+	{11014, "drivingschlgrg_SFS"},{11015, "drivingschoolex_SFS"},{11071, "roadsSFSE33"},{11072, "roadsSFSE36"},{11073, "roadsSFSE37"},
+	{11074, "roadsSFSE38"},{11075, "roadsSFSE39"},{11076, "roadsSFSE42"},{11077, "roadsSFSE43"},{11078, "roadsSFSE44"},
+	{11079, "roadsSFSE45"},{11080, "roadsSFSE46"},{11081, "crackfacttanks_SFS"},{11082, "landbit05b_SFS"},{11083, "drivingschlgnd_SFS"},
+	{11084, "roadsSFSE47"},{11085, "crack_int1"},{11086, "crack_int2"},{11087, "crackfactwalk"},{11088, "CF_ext_dem_SFS"},
+	{11089, "crackfacttanks2_SFS"},{11090, "crackfactvats_SFS"},{11091, "crackfactfence_SFS"},{11092, "burgalrystore_SFS"},{11093, "gen_whouse02_SFS"},
+	{11094, "roadsSFSE49"},{11095, "stadbridge_SFS"},{11096, "roadsSFSE50"},{11097, "vietland_SFS"},{11098, "roadsSFSE52"},
+	{11099, "drivingschskid_SFS"},{11100, "roadsSFSE53"},{11101, "newtunnelrail_SFS"},{11102, "burgalrydoor_SFS"},{11103, "cfsmashwin1_SFS"},
+	{11104, "newsfsroad"},{11105, "roadsSFSE54"},{11106, "landy"},{11107, "landy2"},{11110, "roadsSFSE55"},
+	{11111, "roadsSFSE57"},{11112, "roadsSFSE58"},{11113, "roadsSFSE59"},{11114, "roadsSFSE60"},{11115, "roadsSFSE61"},
+	{11116, "roadsSFSE62"},{11117, "roadsSFSE63"},{11118, "roadsSFSE64"},{11119, "roadsSFSE65"},{11120, "roadsSFSE66"},
+	{11121, "roadsSFSE68"},{11122, "roadsSFSE69"},{11123, "roadsSFSE70"},{11124, "roadsSFSE71"},{11125, "roadsSFSE72"},
+	{11126, "roadsSFSE73"},{11127, "roadsSFSE74"},{11128, "roadsSFSE75"},{11129, "roadsSFSE76"},{11130, "roadsSFSE77"},
+	{11131, "roadsSFSE78"},{11132, "roadsSFSE79"},{11133, "roadsSFSE80"},{11134, "roadsSFSE81"},{11135, "roadsSFSE82"},
+	{11136, "roadsSFSE83"},{11137, "roadsSFSE84"},{11138, "roadsSFSE51"},{11139, "firehouseland_SFS"},{11145, "CARRIER_LOWDECK_SFS"},
+	{11146, "CARRIER_HANGAR_SFS"},{11147, "acpipes1_SFS"},{11148, "acpipes2_SFS"},{11149, "accorridors_SFS"},{11150, "ab_ACC_control"},
+	{11223, "hubhole1_SFSe"},{11224, "hubhole2_SFSe"},{11225, "hubhole3_SFSe"},{11226, "hubhole4_SFSe"},{11228, "traintrax01b_SFS"},
+	{11229, "traintrax01c_SFS"},{11230, "traintrax01d_SFS"},{11231, "traintrax03b_SFS"},{11232, "traintrax03c_SFS"},{11233, "crackfactwalkb"},
+	{11234, "crackfactwalkc"},{11235, "crackfactwalkd"},{11236, "crackfactwalke"},{11237, "CARRIER_Bits_SFSe"},{11238, "dockbarrier2z_SFSe"},
+	{11239, "dockbarrier2zb_SFSe"},{11240, "dockbarrier2zc_SFSe"},{11241, "dockbarrier2zd_SFSe"},{11242, "dockbarrier2ze_SFSe"},{11243, "wall_cm_firehse"},
+	{11244, "gen_whouse02_SFS01"},{11245, "sfsefirehseflag"},{11246, "SFSETREEBIT"},{11247, "TREEBIT21"},{11252, "railbridge04_sfse"},
+	{11253, "railbridge08_sfse"},{11254, "railbridge06_sfse"},{11255, "railbridge03_sfse"},{11256, "railbridge09_sfse"},{11257, "railbridge05_sfse"},
+	{11258, "railbridge01_sfse"},{11259, "railbridge07_sfse"},{11260, "railbridge02_sfse"},{11261, "railbridge10_sfse"},{11280, "crackhseskid"},
+	{11283, "Airport_14B_SFSe"},{11285, "Airport_14C_SFSe"},{11287, "bigjunct_10B_SFSe"},{11288, "bigjuncT_10_SFSe"},{11289, "posters"},
+	{11290, "facttanks_SFSe04"},{11292, "gasstatiohut"},{11293, "facttanks_SFSe08"},{11295, "facttanks_SFSe09"},{11297, "Groundbit82_SFS"},
+	{11299, "roadsSFSE40"},{11301, "carshow4_SFSe"},{11302, "roadsSFSE17"},{11303, "bigjunction_15_SFSe"},{11305, "station"},
+	{11306, "station05_SFS"},{11308, "roadsSFSE41"},{11312, "modshop2_SFSe"},{11313, "modshopdoor_SFSe"},{11314, "modshopint2_SFSe"},
+	{11315, "sprayshopint_SFSe"},{11316, "Carshow3_SFSe"},{11317, "carshow_SFSe"},{11318, "Carshow2_SFSe"},{11319, "sprayshpdr2_SFSe"},
+	{11324, "station_lights"},{11326, "Sfse_hublockup"},{11327, "sfse_hub_grgdoor02"},{11332, "dkgrassbitsfse"},{11334, "recroomstuff"},
+	{11335, "sfselandy2"},{11337, "Stunnel_1A_SFSe"},{11340, "hub02_SFSe"},{11342, "southtunnel_03_SFS"},{11343, "southtunnel_03A_SFS"},
+	{11345, "roadsSFSE35"},{11351, "roadsSFSE48"},{11352, "StationStuff"},{11353, "station5new"},{11359, "oldgrgedoor3_sfse"},
+	{11360, "oldgrgedoor4_sfse"},{11362, "Silicon11_land"},{11363, "Silicon11_land2"},{11364, "Silicon09A_SFS"},{11365, "roadsSFSE67"},
+	{11367, "airprtgnd_ct_SFSe"},{11374, "accorail_SFS"},{11379, "baybALPHA_SFSe"},{11380, "baybALPH2_SFSe"},{11381, "baybALPH3_SFSe"},
+	{11382, "baybALPH4_SFSe"},{11383, "jjct02"},{11384, "cutseen1_sfse"},{11385, "ctscene2_sfse"},{11386, "nuroad_sfse"},
+	{11387, "oldgarage_SFS"},{11388, "hubintroof_SFSe"},{11389, "hubinterior_SFS"},{11390, "hubgirders_SFSE"},{11391, "hubprops6_SFSe"},
+	{11392, "hubfloorstains_SFSe"},{11393, "hubprops1_SFS"},{11394, "hubgrgbeams_SFSe"},{11395, "corvinsign_SFSe"},{11396, "stadiumgates_SFSe"},
+	{11400, "acwinch1b_SFS02"},{11401, "acwinch1b_SFS"},{11406, "acwinch1b_SFS01"},{11408, "viet_03_SFSe"},{11409, "roadsSFSE34"},
+	{11410, "nightlights01_SFSE"},{11411, "nightlights02_SFSE"},{11412, "nightlights03_SFSE"},{11413, "fosterflowers1"},{11414, "fosterflowers02"},
+	{11416, "hbgdSFS"},{11417, "xenonsign2_SFSe"},{11420, "con_lighth"},{11421, "roadsupp1_01"},{11422, "con_br1"},
+	{11423, "con_br2"},{11424, "con_tunll_sup03"},{11425, "des_adobehooses1"},{11426, "des_adobe03"},{11427, "des_adobech"},
+	{11428, "des_indruin02"},{11429, "nw_bit_31"},{11430, "sw_bit_13"},{11431, "des_tepeoff01"},{11432, "des_tepesign01"},
+	{11433, "adobe_hoose2"},{11434, "des_indianstore"},{11435, "des_indsign1"},{11436, "des_indshops1"},{11437, "des_indchfenc"},
+	{11438, "des_indtpfenc"},{11439, "des_woodbr_"},{11440, "des_pueblo1"},{11441, "des_pueblo5"},{11442, "des_pueblo3"},
+	{11443, "des_pueblo4"},{11444, "des_pueblo2"},{11445, "des_pueblo06"},{11446, "des_pueblo07"},{11447, "des_pueblo08"},
+	{11448, "des_railbr_twr1"},{11449, "des_nwtshop2"},{11450, "des_nwtshop07"},{11451, "des_nwsherrif"},{11452, "des_nwshfenc"},
+	{11453, "des_sherrifsgn1"},{11454, "des_nwmedcen"},{11455, "des_medcensgn01"},{11456, "des_nwtshop10"},{11457, "des_pueblo09"},
+	{11458, "des_pueblo10"},{11459, "des_pueblo11"},{11460, "des_telewires03"},{11461, "des_nwwtower"},{11462, "des_railbridge1"},
+	{11463, "des_railbr_twr05"},{11464, "des_trainline02"},{11465, "des_trainline03"},{11466, "des_trainline04"},{11467, "des_trainline05"},
+	{11468, "des_railstruct1_"},{11469, "des_bullgrill_"},{11470, "des_bigbull"},{11471, "des_swtshop14"},{11472, "des_swtstairs1"},
+	{11473, "des_swtfence1"},{11474, "des_swtfence2"},{11475, "des_swtshop02"},{11476, "swt_teline_02"},{11477, "swt_teline_03"},
+	{11478, "swt_teline_01"},{11479, "des_nwtfescape"},{11480, "des_nwt_carport"},{11481, "des_railfenc1"},{11482, "des_railfenc2"},
+	{11483, "des_railjump02"},{11484, "dam_turbine_4"},{11485, "dam_turbine_3"},{11486, "dam_turbine_2"},{11487, "dam_turbine_1"},
+	{11488, "dam_statarea"},{11489, "dam_statues"},{11490, "des_ranch"},{11491, "des_ranchbits1"},{11492, "des_rshed1_"},
+	{11493, "des_ranchbot"},{11494, "des_rnchbhous"},{11495, "des_ranchjetty"},{11496, "des_wjetty"},{11497, "des_baitshop"},
+	{11498, "des_rockgp2_27"},{11499, "des_dinerfenc01"},{11500, "des_skelsignbush_"},{11501, "des_westrn9_03"},{11502, "des_weebarn1_"},
+	{11503, "des_westrn11_05"},{11504, "des_garagew"},{11505, "des_garwcanopy"},{11506, "nw_bit_02"},{11507, "nw_bit_03"},
+	{11508, "nw_bit_04"},{11509, "nw_bit_07"},{11510, "nw_bit_08"},{11511, "nw_bit_09"},{11512, "nw_bit_10"},
+	{11513, "nw_bit_11"},{11514, "nw_bit_12"},{11515, "nw_bit_13"},{11516, "nw_bit_14"},{11517, "nw_bit_15"},
+	{11518, "nw_bit_16"},{11519, "nw_bit_17"},{11520, "nw_bit_18"},{11521, "nw_bit_19"},{11522, "nw_bit_20"},
+	{11523, "nw_bit_21"},{11524, "nw_bit_22"},{11525, "nw_bit_23"},{11526, "nw_bit_24"},{11527, "nw_bit_25"},
+	{11528, "nw_bit_26"},{11529, "nw_bit_27"},{11530, "nw_bit_28"},{11531, "nw_bit_30"},{11532, "sw_bit_03"},
+	{11533, "sw_bit_04"},{11534, "sw_bit_05"},{11535, "sw_bit_06"},{11536, "sw_bit_08"},{11537, "sw_bit_11"},
+	{11538, "sw_bit_12"},{11539, "dambit1"},{11540, "dambit2"},{11541, "dambit3"},{11542, "sw_bit_14"},
+	{11543, "des_warehs"},{11544, "des_ntfrescape2"},{11545, "desn_tsblock"},{11546, "desn_fuelpay"},{11547, "desn_tscanopy"},
+	{11548, "cnts_lines"},{11549, "des_decocafe"},{11550, "cn_nbridegrails"},{11551, "cn_tunlbarrier"},{11552, "nw_bit_29"},
+	{11553, "sw_bit_01"},{11554, "sw_bit_02"},{11555, "sw_bit_15"},{11556, "des_adrocks"},{11557, "sw_bit_09"},
+	{11558, "cn_sta_grid_03"},{11559, "sw_bit_07"},{11560, "sw_bit_10"},{11561, "cn_teline_01"},{11562, "cn_teline_02"},
+	{11563, "cn_teline_03"},{11564, "swt_teline_04"},{11565, "swt_teline_05"},{11566, "des_tepeoff02"},{11567, "des_rvstuff"},
+	{11568, "des_clifftwal"},{11571, "sw_teline_05"},{11572, "con_br06"},{11579, "des_damlodbit3"},{11580, "damlodbit1"},
+	{11581, "damlodbit2"},{11607, "sw_teline_06"},{11608, "pylon-wires03"},{11609, "pylon-wires11"},{11610, "Pylonwires_new"},
+	{11611, "des_sherrifsgn02"},{11615, "desN_baitshop"},{11623, "n_dambarriers"},{11625, "cn_wires"},{11626, "cn_wires1"},
+	{11627, "cn_wires2"},{11628, "nw_bit_06"},{11629, "nw_bit_01"},{11631, "ranch_desk"},{11647, "nw_bit_05"},
+	{11663, "toreno_shadow"},{11664, "kb_couch02ext"},{11665, "kb_chair03ext"},{11666, "Frame_WOOD_1ext"},{11674, "des_cluckin"},
+	{11677, "xen2_countN"},{11678, "desn_detail01"},{11679, "desn_detail02"},{11680, "desn_detail03"},{11681, "desn_detail04"},
+	{11682, "CutsceneCouch1"},{11683, "CutsceneCouch2"},{11684, "CutsceneCouch3"},{11685, "CutsceneCouch4"},{11686, "CBarSection1"},
+	{11687, "CBarStool1"},{11688, "CWorkTop1"},{11689, "CBoothSeat1"},{11690, "CTable1"},{11691, "CTable2"},
+	{11692, "A51LandBit1"},{11693, "Hills250x250Grass1"},{11694, "Hill250x250Rocky1"},{11695, "Hill250x250Rocky2"},{11696, "Hill250x250Rocky3"},
+	{11697, "RopeBridgePart1"},{11698, "RopeBridgePart2"},{11699, "SAMPRoadSign46"},{11700, "SAMPRoadSign47"},{11701, "AmbulanceLights1"},
+	{11702, "AmbulanceLights2"},{11703, "MagnoCrane_03_2"},{11704, "BDupsMask1"},{11705, "BlackTelephone1"},{11706, "SmallWasteBin1"},
+	{11707, "TowelRack1"},{11708, "BrickSingle1"},{11709, "AbattoirSink1"},{11710, "FireExitSign1"},{11711, "ExitSign1"},
+	{11712, "Cross1"},{11713, "FireExtPanel1"},{11714, "MaintenanceDoors1"},{11715, "MetalFork1"},{11716, "MetalKnife1"},
+	{11717, "WooziesCouch1"},{11718, "SweetsSaucepan1"},{11719, "SweetsSaucepan2"},{11720, "SweetsBed1"},{11721, "Radiator1"},
+	{11722, "SauceBottle1"},{11723, "SauceBottle2"},{11724, "FireplaceSurround1"},{11725, "Fireplace1"},{11726, "HangingLight1"},
+	{11727, "PaperChaseLight1"},{11728, "PaperChasePhone1"},{11729, "GymLockerClosed1"},{11730, "GymLockerOpen1"},{11731, "WHeartBed1"},
+	{11732, "WHeartBath1"},{11733, "WRockingHorse1"},{11734, "WRockingChair1"},{11735, "WBoot1"},{11736, "MedicalSatchel1"},
+	{11737, "RockstarMat1"},{11738, "MedicCase1"},{11739, "MCake1"},{11740, "MCake2"},{11741, "MCake3"},
+	{11742, "MCakeSlice1"},{11743, "MCoffeeMachine1"},{11744, "MPlate1"},{11745, "HoldAllEdited1"},{11746, "DoorKey1"},
+	{11747, "Bandage1"},{11748, "BandagePack1"},{11749, "CSHandcuffs1"},{11750, "CSHandcuffs2"},{11751, "AreaBoundary50m"},
+	{11752, "AreaBoundary10m"},{11753, "AreaBoundary1m"},{12800, "cunte_roads01"},{12801, "cunte_roads03"},{12802, "cunte_roads04"},
+	{12803, "cunte_roads06"},{12804, "cuntEground01"},{12805, "CE_bigshed1"},{12806, "cunte_roads08"},{12807, "sw_logs4"},
+	{12808, "sw_logs3"},{12809, "cunte_roads11"},{12810, "cunte_roads12"},{12811, "cunte_roads13"},{12812, "cunte_roads14"},
+	{12813, "cunte_roads15"},{12814, "cuntyeland04"},{12815, "cunte_roads16"},{12816, "cunte_roads17"},{12817, "cunte_roads19"},
+	{12818, "cunte_roads20"},{12819, "cunte_roads21"},{12820, "cunte_roads22"},{12821, "cratesinalley"},{12822, "smalltwnbld05"},
+	{12823, "cuntEground02"},{12824, "CEgroundTP104"},{12825, "cuntEground08"},{12826, "cunte_roads23"},{12827, "cunte_roads24"},
+	{12828, "cunte_roads25"},{12829, "cunte_roads26"},{12830, "cunte_roads27"},{12831, "coe_traintrax_10"},{12832, "coe_traintrax_03"},
+	{12833, "coe_traintrax_04"},{12835, "coe_traintrax_06"},{12836, "coe_traintrax_07"},{12837, "coe_traintrax_08"},{12838, "coe_traintrax_09"},
+	{12839, "cos_sbanksteps02"},{12840, "cos_pizskyglas01"},{12841, "cos_pizinterior"},{12842, "cos_pizseats"},{12843, "cos_liquorshop"},
+	{12844, "cos_liqinside"},{12845, "cos_liqinsidebits"},{12846, "otb_sign"},{12847, "sprunk_fact"},{12848, "coe_sprunlkfenc"},
+	{12849, "CornerStore_01"},{12850, "sw_block01"},{12851, "cunte_roads29"},{12852, "cunte_roads30"},{12853, "sw_gas01"},
+	{12854, "sw_gas01int"},{12855, "sw_copshop"},{12856, "sw_bridge"},{12857, "CE_bridge02"},{12858, "sw_gate1"},
+	{12859, "sw_cont03"},{12860, "sw_cont04"},{12861, "sw_cont05"},{12862, "sw_block03"},{12863, "sw_genstore02"},
+	{12864, "cuntEground11"},{12865, "cuntEground13"},{12866, "CEgroundT202"},{12867, "cunte_roads32"},{12868, "cuntEground26"},
+	{12869, "cyecuntEground28"},{12870, "CE_grndPALCST06"},{12871, "cuntEground34"},{12872, "cuntEground43"},{12873, "cunte_roads33"},
+	{12874, "cunte_roads34"},{12875, "cunte_roads35"},{12876, "cunte_roads39"},{12877, "cunte_roads40"},{12878, "cunte_roads41"},
+	{12879, "cunte_roads42"},{12880, "cunte_roads43"},{12881, "cunte_roads44"},{12882, "cunte_roads45"},{12883, "cunte_roads46"},
+	{12884, "cunte_roads47"},{12885, "cunte_roads48"},{12886, "cunte_roads49"},{12887, "cunte_roads50"},{12888, "cunte_roads51"},
+	{12889, "cunte_roads52"},{12890, "cunte_roads54"},{12891, "cunte_roads56"},{12892, "cunteroads_58"},{12893, "cunte_roads59"},
+	{12894, "cunte_roads60"},{12895, "cunte_roads61"},{12896, "cunte_roads62"},{12897, "cunte_roads63"},{12898, "cunte_roads69"},
+	{12899, "cunte_roads71"},{12900, "cunte_roads72"},{12901, "cunte_roads73"},{12902, "cunte_roads74"},{12903, "cunte_roads75"},
+	{12904, "cuntetownrd1"},{12905, "cuntetownrd2"},{12906, "cuntetownrd3"},{12907, "cuntetownrd4"},{12908, "cuntEground09b"},
+	{12909, "sw_bridge03"},{12910, "sw_trainbridge1"},{12911, "sw_Silo02"},{12912, "sw_Silo04"},{12913, "sw_fueldrum03"},
+	{12914, "sw_corrug01"},{12915, "CE_bigbarn07"},{12916, "CE_farmland04"},{12917, "sw_haypile03"},{12918, "sw_haypile05"},
+	{12919, "sw_tempbarn06"},{12920, "sw_tempbarn02"},{12921, "sw_farment01"},{12922, "sw_farment02"},{12923, "sw_blockbit05"},
+	{12924, "sw_block06"},{12925, "sw_SHED01"},{12926, "sw_sheds_base"},{12927, "sw_pipepile01"},{12928, "sw_shedInterior04"},
+	{12929, "sw_SHED06"},{12930, "sw_pipepile02"},{12931, "CE_brewery"},{12932, "sw_trailer02"},{12933, "sw_breweryFence01"},
+	{12934, "sw_trailer03"},{12935, "sw_securitycab03"},{12936, "sw_beersign02"},{12937, "CE_CATshack"},{12938, "sw_apartments02"},
+	{12939, "sw_apartmentsBase"},{12940, "sw_apartments07"},{12941, "sw_LastDrop"},{12942, "sw_shedInterior01"},{12943, "sw_SHED07"},
+	{12944, "sw_lasershop"},{12945, "sw_dryclean01"},{12946, "sw_furnistore01"},{12947, "sw_musicstore01"},{12948, "sw_block01a"},
+	{12949, "sw_jazzmags"},{12950, "cos_sbanksteps03"},{12951, "sw_shopflat01"},{12952, "sw_bankalley"},{12953, "sw_blockbit01"},
+	{12954, "sw_furnipile01"},{12955, "dock_props01"},{12956, "sw_trailerjump"},{12957, "sw_pickupwreck01"},{12958, "cos_sbanksteps01"},
+	{12959, "sw_library"},{12960, "sw_church01"},{12961, "sw_hedstones"},{12962, "sw_shopflat04"},{12963, "sw_shopflat02"},
+	{12964, "sw_block07"},{12965, "cunte_roads10"},{12966, "cunte_roads66"},{12967, "cunte_roads67"},{12968, "cunte_roads68"},
+	{12969, "CE_ground08"},{12970, "cunte_roads76"},{12971, "cunte_roads78"},{12972, "sw_bridge01"},{12973, "roadfromLAN2"},
+	{12974, "cunte_roads40a"},{12975, "cunteroads43ramp01"},{12976, "sw_diner1"},{12977, "cratesinalley01"},{12978, "sw_SHED02"},
+	{12979, "sw_block09"},{12980, "sw_block10"},{12981, "sw_fact01"},{12982, "sw_shopflat06"},{12983, "sw_med1"},
+	{12984, "sw_block11"},{12985, "cos_sbanksteps05"},{12986, "sw_well1"},{12987, "cos_sbanksteps06"},{12988, "sw_fact02"},
+	{12989, "cuntEground06"},{12990, "sw_jetty"},{12991, "sw_shack02"},{12992, "CE_archbridge"},{12993, "cunte_roads09"},
+	{12994, "cunte_roads57"},{12995, "cunte_roads64"},{12996, "cunte_roads65"},{12997, "cunte_roads77"},{12998, "cunte_roads80"},
+	{12999, "cunte_roads82"},{13000, "cunte_roads83"},{13001, "cunte_roads84"},{13002, "cuntebigbarn"},{13003, "cunte_racestart"},
+	{13004, "sw_logs01"},{13005, "sw_logs6"},{13006, "sw_office1"},{13007, "sw_bankbits"},{13008, "sw_block02"},
+	{13009, "sw_block02alpha"},{13010, "sw_Block01alpha"},{13011, "cos_sbanksteps04"},{13012, "sw_shopflat05"},{13013, "sw_block12"},
+	{13014, "sw_block04"},{13015, "sw_genstore01"},{13016, "sw_block04COL27"},{13017, "CEhollyhil16"},{13018, "CEmulwire03"},
+	{13019, "CEhollyhil17"},{13020, "CEroadTEMP2"},{13021, "CEhllyhil01a"},{13022, "sw_block11a"},{13023, "sw_rocks1"},
+	{13024, "sw_breweryFence02"},{13025, "sw_fueldrum01"},{13027, "ce_spray"},{13028, "CE_spraydoor1"},{13030, "cuntEground34a"},
+	{13033, "cunte_roads30bar"},{13034, "cunte_roads30bar01"},{13035, "cuntEground12a"},{13036, "cuntEgund11a"},{13038, "cunte_roads35a"},
+	{13039, "CE_ground02"},{13040, "CE_ground03"},{13041, "CE_ground04"},{13042, "CE_ground05"},{13043, "CE_ground06"},
+	{13044, "CE_ground07"},{13045, "cunte_roads30bar02"},{13049, "CE_farmland01"},{13050, "CE_farmland02"},{13051, "CE_farmland03"},
+	{13058, "cunte_roads11a"},{13059, "CEfact03"},{13060, "CE_factcomp1"},{13061, "CE_factcomp2"},{13065, "sw_fact03"},
+	{13066, "sw_fact04"},{13070, "CEgroundTP101"},{13071, "CEgroundTP102"},{13072, "CEgroundTP103"},{13077, "CE_townware"},
+	{13078, "CEwrehse07"},{13081, "CEgroundT206"},{13082, "CEgroundT203"},{13083, "CEgroundT204"},{13084, "CEgroundT205"},
+	{13088, "cuntetownrd4a"},{13092, "cuntetownrd05"},{13095, "cunte_roads02"},{13096, "cunte_roadsbar01"},{13097, "cunte_roads30bar06"},
+	{13098, "cunte_roadsbar05"},{13099, "CE_groundPALO06"},{13100, "CE_groundPALO02"},{13101, "CE_groundPALO03"},{13102, "CE_groundPALO04"},
+	{13103, "CE_groundPALO05"},{13104, "CE_groundPALO01"},{13105, "CE_groundPALO07"},{13106, "CE_groundPALO08"},{13107, "CE_groundPALO10"},
+	{13109, "sw_watertower04"},{13118, "cunte_roadsbar02"},{13119, "cunte_roads37"},{13120, "CE_grndPALCST03"},{13121, "CE_grndPALCST04"},
+	{13122, "CE_grndPALCST01"},{13123, "CE_grndPALCST07"},{13124, "CE_grndPALCST08"},{13125, "CE_grndPALCST09"},{13126, "CE_grndPALCST10"},
+	{13127, "cunte_roads81"},{13128, "cunte_roads79"},{13129, "cunte_roads85"},{13131, "sw_block05"},{13132, "CE_bar01"},
+	{13134, "cuntEground03"},{13135, "cyecuntEground01"},{13136, "cyecuntEground02"},{13137, "CEwirestown"},{13138, "CE_archbridge2"},
+	{13139, "cuntetunnel1"},{13140, "cuntetunnel1A"},{13141, "cunte_roads58B"},{13142, "CE_Bbridge"},{13143, "CEmulwire02"},
+	{13144, "cuntEground04"},{13145, "cuntEground05"},{13146, "cuntEground07"},{13147, "cuntEground09"},{13148, "cuntEground10"},
+	{13149, "cuntEground17"},{13150, "cuntEground19"},{13153, "cunte_roads30bar03"},{13156, "cuntEground21"},{13157, "cuntEground22"},
+	{13158, "cuntEground27"},{13163, "CE_groundPALO11"},{13165, "CE_groundPALO12"},{13167, "cyecuntEground03"},{13168, "cunte_roads58"},
+	{13169, "cunte_roads86"},{13170, "cunte_roads87"},{13171, "cuntEgd12a01"},{13172, "cuntEgd12a02"},{13173, "cunte_roads88"},
+	{13174, "cunte_roots01"},{13175, "cuntEground18"},{13176, "cuntEground29"},{13177, "cuntEground30"},{13178, "cuntEground31"},
+	{13179, "cuntEground32"},{13180, "cuntEground33"},{13181, "cuntEground35"},{13187, "burbdoor"},{13188, "burbdoor2"},
+	{13190, "CE_busdepot"},{13198, "CE_waretank"},{13205, "CE_wires"},{13206, "CEtruth_barn02"},{13207, "cuntEground12"},
+	{13208, "cuntEground15"},{13209, "cuntEground36"},{13210, "cuntEground37"},{13211, "cuntEground38"},{13212, "cuntEground39"},
+	{13213, "cuntEground40"},{13214, "cuntEground41"},{13235, "cuntehil01"},{13236, "cuntehil02"},{13237, "cuntehil03"},
+	{13295, "CE_terminal1"},{13296, "CE_roadsidegas"},{13297, "CEgroundT201"},{13312, "coe_traintrax_05"},{13321, "cunte_roads07"},
+	{13323, "cunte_roads18"},{13324, "cunte_roads38"},{13325, "cunte_roads89"},{13332, "CE_multibridge1"},{13336, "cunte_roads46walls"},
+	{13342, "cunte_roads31"},{13345, "cunte_roads36"},{13347, "cunte_roads26W"},{13348, "cunte_roads23W"},{13349, "cunte_roads27W"},
+	{13360, "CE_CATshackdoor"},{13361, "CE_pizza1"},{13363, "CE_photoblock"},{13364, "CE_wtownblok1"},{13367, "sw_watertower01"},
+	{13368, "CE_bridgebase1"},{13369, "sw_logs07"},{13370, "CEhllyhil03a"},{13371, "CEhllyhil02a"},{13374, "CEwirestown01"},
+	{13375, "CEwirestown02"},{13422, "cunte_roads05a"},{13435, "sw_logs08"},{13436, "CE_wires01"},{13437, "CE_wires02"},
+	{13438, "sw_church01fnce"},{13439, "CE_wires03"},{13440, "CEwirestown04"},{13441, "CEwirestown05"},{13442, "CEwirestown06"},
+	{13443, "CEwirestown03"},{13444, "CEwirestown07"},{13445, "cunteroads05aFNCE"},{13447, "CE_wires04"},{13448, "CE_wires05"},
+	{13449, "CE_wires06"},{13450, "CE_apartStairs"},{13451, "CEwirestown08"},{13452, "CEwirestown09"},{13461, "CE_nitewindows1"},
+	{13470, "cunte_roads303"},{13484, "CE_nitewindows101"},{13485, "CE_nitewindows10"},{13486, "CE_ground09"},{13489, "sw_fueldrum04"},
+	{13490, "CE_ground01"},{13491, "coe_traintrax02"},{13493, "CE_nitewindows2"},{13494, "CE_groundPALO12A"},{13495, "CE_ground03A"},
+	{13496, "CE_groundPALO07A"},{13497, "CE_grndPALCST04A"},{13498, "CE_grndPALCST01A"},{13499, "CE_grndPALCST03A"},{13500, "cuntEground21A"},
+	{13501, "cuntEground22A"},{13502, "cuntEground07A"},{13503, "cuntEground02A"},{13504, "CE_grndPALCST07A"},{13505, "cuntEground03A"},
+	{13506, "cuntEground05A"},{13507, "cuntEground04A"},{13508, "cyecuntEground02A"},{13509, "cyecuntEground28A"},{13510, "CE_grndPALCST08A"},
+	{13511, "CE_grndPALCST09A"},{13512, "CE_groundPALO03A"},{13513, "CE_groundPALO04A"},{13514, "cuntEground10A"},{13515, "cuntEground09A"},
+	{13516, "cuntEground19A"},{13517, "cuntEground26A"},{13518, "CE_groundPALO06A"},{13519, "CEgroundT205A"},{13520, "CEgroundT201A"},
+	{13521, "CEgroundT206A"},{13522, "CEgroundTP104A"},{13523, "CEgroundTP103A"},{13524, "cuntEground43A"},{13525, "cuntEground17A"},
+	{13526, "cuntEground18A"},{13527, "cuntEground29A"},{13528, "cuntEground39A"},{13529, "cuntehil03A"},{13530, "cuntehil02A"},
+	{13531, "cuntehil01A"},{13532, "CEhllyhil03aA"},{13533, "CEhllyhil02aA"},{13534, "CEhllyhil01aA"},{13535, "cuntEground38A"},
+	{13536, "cuntEground40A"},{13537, "cuntEground32A"},{13538, "cuntEground01A"},{13539, "CE_farmland04A"},{13540, "CE_farmland03A"},
+	{13541, "cuntEground34A01"},{13542, "cuntEground34aA"},{13543, "cuntEground09bA"},{13544, "cuntEground15A"},{13545, "cuntEground37A"},
+	{13546, "cuntEground36A"},{13547, "cuntEgund11aA"},{13548, "cuntEground11A"},{13549, "CEhollyhil17A"},{13550, "CEhollyhil16A"},
+	{13551, "cuntEground08A"},{13552, "CE_ground01A"},{13553, "CE_ground09A"},{13554, "CE_ground02A"},{13555, "CE_ground05A"},
+	{13556, "CE_ground06A"},{13557, "CE_ground08A"},{13558, "CE_ground04A"},{13559, "CE_ground07A"},{13560, "cuntEground33A"},
+	{13561, "cuntEground31A"},{13562, "bigsprunkpole"},{13563, "cuntEground30A"},{13590, "kickbus04"},{13591, "kickcar28"},
+	{13592, "loopbig"},{13593, "kickramp03"},{13594, "fireyfire"},{13595, "stand02"},{13596, "destruct04"},
+	{13597, "destruct05"},{13598, "stand03"},{13599, "standblack04"},{13600, "destruct06"},{13601, "destruct07"},
+	{13602, "thebolla06"},{13603, "stad_tag"},{13604, "kickramp05"},{13605, "destruct1"},{13606, "standblack02"},
+	{13607, "ringwalls"},{13608, "sumoring"},{13609, "supports"},{13610, "stand04"},{13611, "thebowl13"},
+	{13612, "stuntman03"},{13613, "thebowl11"},{13614, "thebowl12"},{13615, "thebowl10"},{13616, "thebolla04"},
+	{13617, "thebowl14"},{13618, "thebowl16"},{13619, "thebowl17"},{13620, "thebowl15"},{13621, "thebolla03"},
+	{13622, "sumofence"},{13623, "midringfence"},{13624, "inner"},{13625, "stands"},{13626, "8road2"},
+	{13627, "stadoval"},{13628, "8stad"},{13629, "8screen01"},{13630, "8screen"},{13631, "dirtstad"},
+	{13632, "dirtcrowds"},{13633, "dirtouter01"},{13634, "dirtstad02"},{13635, "therocks10"},{13636, "logramps"},
+	{13637, "tuberamp"},{13638, "stunt1"},{13639, "ramparse"},{13640, "arse"},{13641, "kickramp04"},
+	{13642, "rings"},{13643, "logramps02"},{13644, "steps"},{13645, "kickramp06"},{13646, "ramplandpad"},
+	{13647, "wall1"},{13648, "wall2"},{13649, "ramplandpad01"},{13650, "kickcrowd01"},{13651, "otunnel"},
+	{13652, "oroadbit"},{13653, "innerfence"},{13654, "darkpoly"},{13655, "bridge"},{13656, "fuckknows"},
+	{13657, "bit"},{13658, "bit01"},{13659, "8bar5"},{13660, "8track1"},{13661, "cockbars"},
+	{13662, "dirtcock"},{13663, "dirtfences"},{13664, "dirtroad"},{13665, "dirtfences2"},{13666, "loopwee"},
+	{13667, "monkeyman"},{13672, "cunte_roads05"},{13673, "CEhollyhil03"},{13674, "CEmullholdr05"},{13675, "cuntelungrdj"},
+	{13676, "TCElawcuntun1a_law2"},{13677, "TCElawcuntuna_law2"},{13678, "CEnwhiltest"},{13679, "TCElandbivF4v_03"},{13680, "TCElawcuntunb"},
+	{13681, "TCEhilhouse03"},{13682, "TCEcuntun"},{13683, "CEnwhiltest2"},{13684, "CEnwhiltest93"},{13685, "TCEnwhiltest92"},
+	{13686, "TCEhomulhil10"},{13687, "TCEhillhse02"},{13688, "CEnwhiltest91"},{13689, "CEnwhiltest6"},{13690, "CE_Roads38a"},
+	{13691, "TCELAlandbiv_03"},{13692, "cunte_landF4_03"},{13693, "TCEnwhiltest94"},{13694, "CEhillhse13"},{13695, "CEhillhse05"},
+	{13696, "CEnewhillhus"},{13697, "TCElhouse06"},{13698, "CEhollyhil10"},{13699, "TCEmulhilhed1_law2"},{13700, "CEhollyhil1"},
+	{13701, "TCEhilouse02"},{13702, "CEhollyhil09X"},{13703, "CEnwhiltest3"},{13704, "CEnwhiltest5"},{13705, "CEhillbar2b"},
+	{13706, "CE_roads87"},{13707, "CEla_roads62"},{13708, "CE_roadscoast08"},{13709, "lae2_ground01"},{13710, "HillsEast05_LAe"},
+	{13711, "CEhollyhil06"},{13712, "CEhollyhil8a"},{13713, "road_hil03"},{13714, "radarmast1_LAwN"},{13715, "cunte_hollyhil9"},
+	{13716, "CE_hollyhil8a"},{13717, "road_hillLAwn15"},{13718, "CEroad_hill20"},{13719, "hollyhil10"},{13720, "road_hill04b"},
+	{13721, "mulhouse03_cunte"},{13722, "VineSign1_cunte"},{13723, "cunte_hollyhil01"},{13724, "drg_nu_ext"},{13725, "opmans01_cunte"},
+	{13726, "road_hill08"},{13727, "CEnorthbrij01"},{13728, "CEgraveBuil03_LAwN"},{13729, "CEgraveBuil01"},{13730, "CEroad_6"},
+	{13731, "TCEmulwire01"},{13732, "CE_Roads37"},{13733, "CE_Roads42"},{13734, "HillClif06"},{13735, "CE_Roads41"},
+	{13736, "CE_Roads40"},{13737, "cunteHill03"},{13738, "Roads39_CE"},{13739, "Roads38CE"},{13740, "cnteHillClif01"},
+	{13741, "HillClif02"},{13742, "HillClif05"},{13743, "CEmulwire01"},{13744, "drg_nu_ext05"},{13746, "TCEhillhouse07"},
+	{13747, "CEhillhse06"},{13748, "TCEmulhilhed1_law01"},{13749, "cunte_curvesteps1"},{13751, "cunte_Flyover2"},{13752, "cuntebridge01"},
+	{13753, "CEhillhouse04"},{13754, "CEmulhouse04"},{13755, "CEhillhouse01"},{13756, "hollyhil04a"},{13757, "hollyhil05"},
+	{13758, "radarmast1_LAwN01"},{13761, "cunte_Whisky"},{13784, "road_hill01"},{13789, "Roads40_CE"},{13795, "CE_HillsEast06"},
+	{13801, "cunte_skatetrak"},{13802, "skateivy"},{13804, "cuntelandF4"},{13805, "CELAlandbiv"},{13806, "CEhollyhil8a01"},
+	{13809, "CE_grndPALCST02"},{13810, "CE_grndPALCST05"},{13813, "CEGraveBlok03e"},{13814, "CEroadn"},{13816, "CE_safeground"},
+	{13817, "CE_safedoor01"},{13818, "CEhollyhil01"},{13820, "cuntEground16"},{13821, "cuntEground20"},{13823, "cuntEground23"},
+	{13824, "cuntEground24"},{13825, "cuntEground25"},{13826, "cuntEground28"},{13831, "VineSign1_cunte01"},{13845, "CEnwhiltest5base"},
+	{13861, "CE_telewires01"},{13862, "CE_telewires02"},{13863, "CE_telewires03"},{13864, "CE_telewires04"},{13865, "CEnwhiltestBrd"},
+	{13871, "LAhills_border1"},{13872, "LAhills_border2"},{13882, "road_hill13"},{13887, "CEroad_hill01"},{13890, "LAhBoards_LAh1"},
+	{14383, "burg_kit1"},{14384, "kitchen_bits"},{14385, "kb_tr_main"},{14386, "kb_tr_bits"},{14387, "Dr_GsNEW02"},
+	{14388, "MaddDoggs02"},{14389, "MaddDoggs03"},{14390, "MaddDoggs04"},{14391, "Dr_GsNEW07"},{14392, "Dr_GsNEW08"},
+	{14393, "Dr_GsNEW09"},{14394, "Dr_GsNEW10"},{14395, "Dr_GsNEW11"},{14396, "girders01"},{14397, "girders07"},
+	{14398, "girders11"},{14399, "bar2"},{14400, "flower-bush08"},{14401, "bench1"},{14402, "flower-bush09"},
+	{14403, "cds"},{14404, "jet_interior"},{14405, "chairs"},{14406, "mansion-light05"},{14407, "carter-stairs01"},
+	{14408, "Carter-floors04"},{14409, "carter-stairs02"},{14410, "carter-stairs03"},{14411, "carter-stairs04"},{14412, "Carter_drugfloor"},
+	{14413, "carter-column01"},{14414, "carter-stairs05"},{14415, "Carter-floors01"},{14416, "carter-stairs07"},{14417, "MaddDoggs05"},
+	{14418, "MaddDoggs07"},{14419, "MaddDoggs08"},{14420, "MaddDoggs09"},{14421, "MaddDoggs10"},{14422, "MaddDoggs01"},
+	{14423, "MaddDoggs12"},{14424, "MaddDoggs13"},{14425, "MaddDoggs14"},{14426, "MaddDoggs15"},{14427, "MaddDoggs16"},
+	{14428, "MaddDoggs17"},{14429, "MaddDoggs18"},{14430, "MaddDoggs19"},{14431, "MaddDoggs20"},{14432, "carter_light01"},
+	{14433, "carter_gubbins"},{14434, "carter-spotlight42"},{14435, "carter_girders"},{14436, "carter_girders1"},{14437, "carter-bars"},
+	{14438, "Carter-light04"},{14439, "Carter-light12"},{14440, "Carter_grill"},{14441, "Carter-light16"},{14442, "SHADOW-Carter"},
+	{14443, "burning_blinds08"},{14444, "Carter-TopFloor"},{14445, "carter-column02"},{14446, "Smokes_bed"},{14447, "carter-balcony"},
+	{14448, "carter_girders02"},{14449, "Carter_trampoline"},{14450, "carter_girders03"},{14451, "carter_girders04"},{14452, "carter_girders05"},
+	{14453, "GANG_EXIT"},{14454, "carter-dancers"},{14455, "Gs_BOOKCASE"},{14456, "ceiling-roses02"},{14457, "gs_gold-disks"},
+	{14458, "gs_chairs"},{14459, "carter-cage"},{14460, "mansion-light05a"},{14461, "Gs_Piccies"},{14462, "Gs_piccies1"},
+	{14463, "gs_barstuff"},{14464, "gs_cages"},{14465, "carter-alpha"},{14466, "carter-outside"},{14467, "carter_statue"},
+	{14468, "flower-bush09a"},{14469, "flower-bush08a"},{14470, "mansion-light05b"},{14471, "carls_moms_kit2"},{14472, "carls_moms_kit1"},
+	{14473, "mansionlights2"},{14474, "ganghse_int1"},{14475, "ganghse_int2"},{14476, "carlscrap"},{14477, "carlsbits"},
+	{14478, "carlsshadfloor"},{14479, "motel_skuzmain1"},{14480, "motel_toilet"},{14481, "motel_bath1"},{14482, "motel_skuz_win"},
+	{14483, "maddogsfakedoors"},{14484, "MaddDoggs06"},{14485, "MaddDoggs11"},{14486, "madgym1"},{14487, "madlites"},
+	{14488, "madgymroofs"},{14489, "carlspics"},{14490, "cuntchair"},{14491, "iwanfucker"},{14492, "sweets_room"},
+	{14493, "arsehole"},{14494, "sweets_bath"},{14495, "sweetshall"},{14496, "sweetsdaylight"},{14497, "im_couchs"},
+	{14498, "imys_bigvent"},{14499, "imy_motel_wins"},{14500, "immy_rooms"},{14501, "motel_grill"},{14502, "imy_roomfurn"},
+	{14503, "imy_roomfurn01"},{14504, "imy_roomfurn03"},{14505, "imy_roomfurn06"},{14506, "imy_motel_int"},{14507, "imy_roomfurn07"},
+	{14508, "imy_roomfurn10"},{14509, "imy_roomfurn11"},{14510, "imy_roomfurn12"},{14511, "im_cover_tbl"},{14512, "immy_rooms2"},
+	{14513, "im_mtl_rail"},{14514, "hexi_lite"},{14515, "im_mtel_sckts"},{14516, "im_xtra3"},{14517, "im_xtra1"},
+	{14518, "im_xtra2"},{14519, "im_xtra4"},{14520, "immy_clothes"},{14521, "immy_shoes"},{14522, "immy_curtains02"},
+	{14523, "immy_curtains05"},{14524, "im_couchsa"},{14525, "imy_otherbit"},{14526, "sweetsmain"},{14527, "fannyfan"},
+	{14528, "sweetshadows"},{14530, "driveschl_main"},{14531, "int_zerosrc01"},{14532, "tv_stand_driv"},{14533, "pleasure-TOP"},
+	{14534, "ab_woozies01"},{14535, "ab_woozies03"},{14536, "pleasure-BOT"},{14537, "pdomesBar"},{14538, "Pdomes_Xitbox"},
+	{14539, "pdomes_logo"},{14540, "pdomes_extras"},{14541, "driveschl_daylite"},{14542, "woozies_Xitbox"},{14543, "ab_woozies04"},
+	{14544, "ab_woozies02"},{14545, "ab_wooziesGlass"},{14546, "pleasure-MID"},{14547, "pleasure-DL"},{14548, "cargo_test"},
+	{14549, "carge_barrels"},{14550, "cargo_netting"},{14551, "cargo_store"},{14552, "cargo_stuff"},{14553, "androm_des_obj"},
+	{14554, "ab_wooziesSHAD"},{14556, "ZEROWARDROBE"},{14558, "MODEL_BOX15"},{14559, "PDomeCones"},{14560, "triad_bar"},
+	{14561, "triad_neon"},{14562, "triad_lion"},{14563, "triad_main"},{14564, "triad_lights"},{14565, "triad_bar_stuff"},
+	{14566, "budha_whel1b"},{14567, "budha_whel02b"},{14568, "budha_whel03b"},{14569, "tr_man_pillar"},{14570, "tr_man_glass"},
+	{14571, "chinafurn1"},{14572, "maintenance16"},{14573, "maintenance03"},{14574, "maintenance20"},{14575, "maintenance31"},
+	{14576, "vault_door"},{14577, "mafCasLoadbay01"},{14578, "mafCasPipes01"},{14579, "MafCasLites01"},{14580, "mafCasGoldBits01"},
+	{14581, "ab_mafiaSuite01zzz"},{14582, "mafiaCasinoBar1"},{14583, "ab_mafCasLaund"},{14584, "ab_abbatoir05"},{14585, "ab_abbatoir04"},
+	{14586, "ab_abbatoir03"},{14587, "ab_abbatoir02"},{14588, "ab_abbatoir01"},{14589, "ab_abbatoir06"},{14590, "mafCasTopfoor"},
+	{14591, "mafcasWallLite"},{14592, "mafCasLoadbay02"},{14593, "paperchase04"},{14594, "paperchase03"},{14595, "paperchase02"},
+	{14596, "paperchase_stairs"},{14597, "paperchase07"},{14598, "paperchase_glass"},{14599, "paperchase08"},{14600, "paperchase_bits2"},
+	{14601, "MafCasLites02"},{14602, "paperchase01"},{14603, "bikeschl_main"},{14604, "tv_stand_bike"},{14605, "triad_lights2"},
+	{14606, "MafCasMain4"},{14607, "triad_main2"},{14608, "triad_buddha01"},{14609, "MafCasLites04"},{14610, "MafCasLites05"},
+	{14611, "mafiaCasinoBarLite"},{14612, "ab_abattoir_box2"},{14613, "ab_abattoir_box1"},{14614, "triad_main3"},{14615, "abatoir_daylite"},
+	{14616, "ab_pillarTemp3"},{14617, "ab_pillarTemp2"},{14618, "ab_pillarTemp1"},{14619, "tricas_slotTable2"},{14620, "tricas_slotTable1"},
+	{14621, "mafiaCasinoGlass"},{14622, "ab_pillarTemp4"},{14623, "MafCasMain1"},{14624, "MafCasMain2"},{14625, "MafCasMain3"},
+	{14626, "mafcasSigns1"},{14627, "mafcas_optilite1"},{14628, "ab_caligulasfront"},{14629, "mafcas_chande"},{14630, "mafcas_Xitbox"},
+	{14631, "paperchase_daylite"},{14632, "paperchase_bits2b"},{14633, "paperchase_bits2c"},{14634, "bikeschl_daylite"},{14635, "mafcasGenStuff"},
+	{14636, "mafcas_signs"},{14637, "triad_dragon"},{14638, "ab_mafsuiteDoor"},{14639, "tr_man_main"},{14640, "chinafurn2"},
+	{14641, "tri_main_holes"},{14642, "mafcas_spiral_dad"},{14643, "tr_man_main_tr"},{14650, "trukstp04"},{14651, "trukstp05"},
+	{14652, "trukstp02"},{14653, "trukstp03"},{14654, "trukstp06"},{14655, "trukstp01"},{14656, "tsdinerXitbox"},
+	{14657, "cuntchairs"},{14660, "int_tatooA05"},{14661, "int_tatooA01"},{14662, "int_tatooA02"},{14663, "int_tatooA03"},
+	{14664, "int_tatooA04"},{14665, "int_7_11A40"},{14666, "CJ_SEX_COUNTER03"},{14667, "int_7_11A41"},{14668, "711_c"},
+	{14669, "711_d"},{14670, "int_7_11A42"},{14671, "int_7_11A5"},{14672, "int_sex01"},{14673, "chnsaw1"},
+	{14674, "hotelferns1_LAn"},{14675, "Hotelatrium_LAn"},{14676, "int_tatooA06"},{14677, "int_tatooA07"},{14678, "int_tatooA08"},
+	{14679, "Int_tat_tools01"},{14680, "Int_tat_lights01"},{14681, "int_tatooA09"},{14682, "int_tatooA10"},{14683, "int_tatooA11"},
+	{14684, "int_tatooA12"},{14685, "int_tatooA13"},{14686, "Int_tat_tools02"},{14687, "Int_tat_lights02"},{14688, "int_tatooA14"},
+	{14689, "int_tatooA15"},{14690, "int_7_11A40_bits"},{14691, "int_7_11A41_bits"},{14692, "int_7_11A41_bits01"},{14693, "Int_tat_tools"},
+	{14694, "SEX_SHOP_DET"},{14695, "int_7_11A41_bits02"},{14699, "Int_tat_lights"},{14700, "int2smSf01_int01"},{14701, "int2Hoose2"},
+	{14702, "int2lamid01"},{14703, "int2Hoose09"},{14704, "int2Hoose2_bits"},{14705, "int2Vase"},{14706, "int2labigtwo01"},
+	{14707, "int2labig301"},{14708, "int2labigone01"},{14709, "int2lamidtwo01"},{14710, "int2vgshM3"},{14711, "int2vgshM2"},
+	{14712, "int2Hoose11"},{14713, "int2Hoose16"},{14714, "int2Hoose08"},{14715, "int2Hoose09_Bits"},{14716, "int2lamid01_rail"},
+	{14717, "int2lasmtwo02"},{14718, "int2lasmone04"},{14719, "int2lasmone01"},{14720, "int2lasmone02"},{14721, "2labigone_bits"},
+	{14722, "int2Hoose09_Bits2"},{14723, "int2Hoose09_Bits3"},{14724, "int2Hoose09_Bits4"},{14725, "int2lamid01_rail2"},{14726, "int2lamid01_rail3"},
+	{14727, "int2lamid01_rail4"},{14728, "int2labig302"},{14735, "crackhoose"},{14736, "AH_chiller2"},{14737, "whorepix"},
+	{14738, "brothelbar"},{14739, "whorefurn"},{14740, "ryblinds"},{14741, "rykitunit"},{14742, "ryders_wall_stuf"},
+	{14743, "rydhall"},{14744, "rybathroom"},{14745, "rybatharse01"},{14746, "rylounge"},{14747, "curses04"},
+	{14748, "sfhsm1"},{14749, "sfhsm1lights"},{14750, "sfhsm2"},{14751, "sfhsm2bits"},{14752, "curses02"},
+	{14753, "sfhsb2curts"},{14754, "bigsanfranhoose"},{14755, "shite"},{14756, "shitlobby"},{14757, "sfmansionbits"},
+	{14758, "sfmansion1"},{14759, "sfhsm03"},{14760, "Object03"},{14761, "ryshadroom"},{14762, "arsewinows"},
+	{14763, "sweetsdaylight02"},{14764, "ballustrades"},{14765, "lacrakbulb"},{14770, "int_brothelseats"},{14771, "int3int_brothel"},
+	{14772, "int3int_LOW_TV"},{14773, "int3int_brothel03"},{14774, "int_5kb_flykiller"},{14775, "int3int_brothel04"},{14776, "int3int_carupg_int"},
+	{14777, "int_5weecasino"},{14778, "int_boxing02"},{14779, "int_boxing03"},{14780, "in_bxing04"},{14781, "in_bxing05"},
+	{14782, "int3int_boxing30"},{14783, "int3int_kbsgarage"},{14784, "genint_warehs"},{14785, "gen_otb"},{14786, "ab_sfGymBeams1"},
+	{14787, "ab_sfGymBits02a"},{14788, "ab_sfGymBits01a"},{14789, "ab_sfGymMain1"},{14790, "ab_sfGymBits03a"},{14791, "a_vgsGymBoxa"},
+	{14792, "ab_vgsGymBits01a"},{14793, "ab_vegasGymLitesa"},{14794, "ab_vegasGymMain2"},{14795, "genint3_smashtv"},{14796, "int_kbsgarage05b"},
+	{14797, "int_kbsgarage3b"},{14798, "int_kbsgarage3"},{14799, "otb_glass"},{14800, "gen_otb_bits"},{14801, "Bdups_main"},
+	{14802, "BDups_interior"},{14803, "BDupsNEW"},{14804, "BDups_plant"},{14805, "BDupsNew_int"},{14806, "BDupshifi"},
+	{14807, "BDupslight01"},{14808, "Strip2_Building"},{14809, "Strip2_Platforms"},{14810, "Strip2_Tables"},{14811, "Strip2_neon"},
+	{14812, "StudioHall_frames"},{14813, "StudioHall_Furn"},{14814, "StudioHallBuild"},{14815, "Whhouse_main"},{14816, "Whhouse_furn"},
+	{14817, "Whhouse_Rms"},{14818, "mc_straps"},{14819, "OG_Door"},{14820, "dj_stuff"},{14821, "mc_straps_int"},
+	{14822, "Gym2_doorway"},{14823, "Gym3_doorway"},{14824, "Gym1_doorway"},{14825, "int_boxing07"},{14826, "int_kbsgarage2"},
+	{14827, "ab_sfGymBits01a2"},{14828, "LM_strip2Priv"},{14829, "strip_signs"},{14830, "strip_lights"},{14831, "LM_stripbar"},
+	{14832, "LM_stripCorner"},{14833, "LM_stripchairs1"},{14834, "LM_stripplant"},{14835, "LM_stripColumns"},{14836, "LM_strippoles"},
+	{14837, "LM_stripchairs"},{14838, "int_strip_club"},{14839, "LM_stripPriv"},{14840, "Bdups_graf"},{14841, "Lee_gymers"},
+	{14842, "int_policeA07"},{14843, "int_policeA01"},{14844, "int_policeA02"},{14845, "int_policeA03"},{14846, "int_ppol"},
+	{14847, "mp_sfpd_big"},{14848, "mp_sfpd_stairs1"},{14849, "mp_sfpd_lights1"},{14850, "mp_sfpd_obj1"},{14851, "mp_sfpd_signa"},
+	{14852, "mp_sfpd_win1"},{14853, "veg_pol_main2"},{14854, "countera"},{14855, "counterb"},{14856, "cellsa"},
+	{14858, "veg_pol_main1"},{14859, "coochie-room"},{14860, "coochie-posters"},{14861, "choochie-bed"},{14862, "headboard"},
+	{14863, "clothes"},{14864, "shoes"},{14865, "bobbi-room01"},{14866, "bobbie-bed01"},{14867, "bobbie-cupboards"},
+	{14868, "pennants01"},{14869, "bobbie-table"},{14870, "pompom01"},{14871, "Kylie_barn"},{14872, "Kylie_logs"},
+	{14873, "Kylie_hay"},{14874, "Kylie_stairs"},{14875, "Kylie_hay1"},{14876, "michelle-garage"},{14877, "michelle-stairs"},
+	{14878, "michelle-barrels"},{14879, "michelle-bits"},{14880, "michelle-bed01"},{14881, "barbara-cop"},{14882, "barb-pipes"},
+	{14883, "prison-gates"},{14885, "Vegas-signs1"},{14886, "polvegsigns1"},{14887, "polvegsigns3"},{14888, "Millie-headboard"},
+	{14889, "Millie-room"},{14890, "millie-vibrators"},{14891, "millie-swing"},{14892, "mp_sfpd_win2"},{14893, "police1-exit"},
+	{14894, "police2-exit01"},{14895, "mp_sfpd_obj2"},{14896, "mp_sfpd_lights2a"},{14897, "mp_sfpd_lights1a"},{14898, "int_policeA03a"},
+	{14900, "police3-exit01"},{14901, "police3-exit02"},{14902, "veg_pol_window"},{14903, "mp_sfpd_lights2"},{15025, "genmotelfurn_sv"},
+	{15026, "imy_roomfurn12_sv"},{15027, "immy_clothes_sv"},{15028, "genmotel2sh_sv"},{15029, "genmotel2_sv"},{15030, "genmotel_sv"},
+	{15031, "lasmall1_sv"},{15032, "lasmallfurn_sv"},{15033, "vegashotel_sv"},{15034, "hotelgen_sv"},{15035, "kb_bed_test2_sv"},
+	{15036, "kit_cab_washin_sv"},{15037, "MED_DINNING_2_sv"},{15038, "Plant_Pot_3_sv"},{15039, "mrk_bed02_sv"},{15040, "cuntbits"},
+	{15041, "cunthouse"},{15042, "newhouse1"},{15043, "svcuntflorday"},{15044, "lamidshadfloor"},{15045, "bigLAshadow"},
+	{15046, "countrysavehouse"},{15047, "svvgmdshadfloor"},{15048, "LABIGSAVEHOUse"},{15049, "svlabigkitchshad"},{15050, "svlabigbits"},
+	{15051, "svlasmshad"},{15052, "svsfsmshad"},{15053, "bigniceveghotel"},{15054, "svvgmedhoose"},{15055, "savelamid"},
+	{15056, "svsfsmshadfloor2"},{15057, "bihotelshad"},{15058, "midvegsavehouse"},{15059, "labihalfhouse"},{15060, "svsfmdshadflr1"},
+	{15061, "svlamidshad"},{15062, "lamidshadflr"},{15063, "svmidsavebits"},{15064, "svrails"},{16000, "drvin_screen"},
+	{16001, "drvin_projhut"},{16002, "drvin_sign"},{16003, "drvin_ticket"},{16004, "des_tepeoff"},{16005, "desn2_stwnblok2"},
+	{16006, "ros_townhall"},{16007, "desn2_cn2blok1"},{16008, "des_nbrstruct"},{16009, "des_nbrstruct2"},{16010, "des_reslab_"},
+	{16011, "des_westrn2_"},{16012, "des_ntcafe"},{16013, "des_ntwn_lines1_"},{16014, "des_ntwn_lines2_"},{16015, "des_ntwn_lines6_"},
+	{16016, "des_roadbar01"},{16017, "des_roadbar02"},{16018, "des_roadbar03"},{16019, "des_roadbar04"},{16020, "des_roadbar05"},
+	{16021, "des_geyhotbase_"},{16022, "des_geywall1"},{16023, "des_trXingsign02"},{16024, "des_ltraintunnel2"},{16025, "des_trainline06"},
+	{16026, "des_trainline07"},{16027, "des_trainline08"},{16028, "des_trainline09"},{16029, "des_trainline11"},{16030, "des_trainline12"},
+	{16031, "des_trainline13"},{16032, "des_trainline14"},{16033, "des_trainline15"},{16034, "des_trainline16"},{16035, "des_trainline10"},
+	{16036, "des_trainline17"},{16037, "des_railbr_twr10"},{16038, "des_powercable_01"},{16039, "des_powercable_03"},{16040, "des_powercable_04"},
+	{16041, "des_powercable_07"},{16042, "des_powercable_08"},{16043, "des_powercable_09"},{16044, "des_powercable_10"},{16045, "des_powercable_11"},
+	{16046, "des_powercable_12"},{16047, "des_powercable_19"},{16048, "des_powercable_20"},{16049, "des_powercable_21"},{16050, "des_powercable_22"},
+	{16051, "des_westsaloon_01"},{16052, "des_ghotfence"},{16053, "des_westrn7_01"},{16054, "des_westrn9_01"},{16055, "quarry_bit04"},
+	{16056, "quarry_bit02"},{16057, "quarry_bit01"},{16058, "quarry_bit05"},{16059, "quarry_bit03"},{16060, "des_treeline1"},
+	{16061, "des_treeline2"},{16062, "des_nt_buntpoles"},{16063, "des_cockbunting"},{16064, "des_cn2blok4"},{16065, "des_stwnshop01"},
+	{16066, "des_bluecafe01"},{16067, "des_stwnmotel02"},{16068, "des_stripblock1"},{16069, "des_stwnyelmot1_"},{16070, "des_stwnhotel1"},
+	{16071, "des_quarrybelt02"},{16072, "des_quarrybelt01"},{16073, "des_quarrybelt03"},{16074, "des_quarrybelt04"},{16075, "des_quarrybelt07"},
+	{16076, "des_sorter01"},{16077, "des_gravelpile01"},{16078, "des_quarrybelt08"},{16079, "des_quarrybelt09"},{16080, "des_bigquaryconv01"},
+	{16081, "des_bigquaryconv02"},{16082, "des_quarryplatform"},{16083, "des_quarry_hopper01"},{16084, "des_quarryramp"},{16085, "des_quarstmound_02"},
+	{16086, "des_bigoilpipe01"},{16087, "des_oilfieldpipe01"},{16088, "des_pipestrut01"},{16089, "des_pipestrut02"},{16090, "des_pipestrut03"},
+	{16091, "des_pipestrut04"},{16092, "des_pipestrut05"},{16093, "a51_gatecontrol"},{16094, "des_a51infenc"},{16095, "des_a51guardbox02"},
+	{16096, "des_a51guardbox04"},{16097, "n_bit_16"},{16098, "des_by_hangar_"},{16099, "des_powercable_end"},{16100, "des_substa_bldgs"},
+	{16101, "des_windsockpole"},{16102, "cen_bit_18"},{16103, "ne_bit_22"},{16104, "des_boulders_"},{16105, "des_westrn11_04"},
+	{16106, "des_nmot_"},{16107, "des_ngassta"},{16108, "des_snakefarm_"},{16109, "radar_bit_03"},{16110, "des_rockgp1_01"},
+	{16111, "des_rockgp1_02"},{16112, "des_rockfl1_"},{16113, "des_rockgp2_03"},{16114, "des_rockgp2_"},{16115, "des_rockgp1_03"},
+	{16116, "des_rockgp2_04"},{16117, "des_rockgp1_04"},{16118, "des_rockgp2_05"},{16119, "des_rockgp2_06"},{16120, "des_rockgp2_07"},
+	{16121, "des_rockgp2_09"},{16122, "des_rockgp2_11"},{16123, "des_rockgp2_13"},{16124, "des_rockgp1_06"},{16125, "des_rockgp1_07"},
+	{16126, "des_rockgp2_15"},{16127, "des_rockgp1_08"},{16128, "des_rockgp1_09"},{16129, "des_rockgp1_12"},{16130, "des_rockgp2_16"},
+	{16131, "des_rockgp2_17"},{16132, "dam_trellis01"},{16133, "des_rockgp2_18"},{16134, "des_rockfl1_01"},{16135, "des_geysrwalk2"},
+	{16136, "des_telefenc"},{16137, "des_teleshed2_"},{16138, "des_teleshed2_01"},{16139, "des_rockgp2_19"},{16140, "des_rockgp2_20"},
+	{16141, "des_rockgp2_21"},{16142, "des_rockgp2_22"},{16143, "des_telecafe"},{16144, "des_telecafenc"},{16145, "des_rockgp2_23"},
+	{16146, "des_ufoinn"},{16147, "radar_bit_02"},{16148, "radar_bit_01"},{16149, "radar_bit_04"},{16150, "ufo_barinterior"},
+	{16151, "ufo_bar"},{16152, "ufo_booths"},{16153, "ufo_photos"},{16154, "ufo_backroom"},{16155, "ufo_backrmstuff"},
+	{16156, "Vdes_trainline18"},{16157, "n_bit_01"},{16158, "n_bit_02"},{16159, "n_bit_03"},{16160, "n_bit_04"},
+	{16161, "n_bit_05"},{16162, "n_bit_06"},{16163, "n_bit_07"},{16164, "n_bit_08"},{16165, "n_bit_10"},
+	{16166, "n_bit_11"},{16167, "n_bit_12"},{16168, "n_bit_13"},{16169, "n_bit_14"},{16170, "n_bit_15"},
+	{16171, "ne_bit_23"},{16172, "ne_bit_01"},{16173, "ne_bit_02"},{16174, "ne_bit_03"},{16175, "ne_bit_04"},
+	{16176, "ne_bit_06"},{16177, "ne_bit_07"},{16178, "ne_bit_08"},{16179, "ne_bit_09"},{16180, "ne_bit_10"},
+	{16181, "ne_bit_11"},{16182, "ne_bit_12"},{16183, "ne_bit_13"},{16184, "ne_bit_14"},{16185, "ne_bit_15"},
+	{16186, "ne_bit_16"},{16187, "ne_bit_17"},{16188, "ne_bit_18"},{16189, "ne_bit_19"},{16190, "ne_bit_20"},
+	{16191, "ne_bit_21"},{16192, "cen_bit_01"},{16193, "cen_bit_02"},{16194, "cen_bit_03"},{16195, "cen_bit_04"},
+	{16196, "cen_bit_20"},{16197, "cen_bit_05"},{16198, "cen_bit_06"},{16199, "cen_bit_07"},{16200, "cen_bit_08"},
+	{16201, "cen_bit_09"},{16202, "cen_bit_10"},{16203, "cen_bit_11"},{16204, "cen_bit_12"},{16205, "cen_bit_13"},
+	{16206, "cen_bit_14"},{16207, "cen_bit_15"},{16208, "cen_bit_16"},{16209, "cen_bit_19"},{16210, "cen_bit_17"},
+	{16211, "s_bit_01"},{16212, "s_bit_02"},{16213, "s_bit_03"},{16214, "s_bit_04"},{16215, "s_bit_05"},
+	{16216, "s_bit_06"},{16217, "s_bit_07"},{16218, "s_bit_08"},{16219, "s_bit_09"},{16220, "s_bit_10"},
+	{16221, "s_bit_11"},{16222, "s_bit_12"},{16223, "s_bit_13"},{16224, "s_bit_14"},{16225, "s_bit_15"},
+	{16226, "s_bit_16"},{16227, "s_bit_17"},{16228, "s_bit_18"},{16229, "s_bit_19"},{16230, "se_bit_01"},
+	{16231, "se_bit_02"},{16232, "se_bit_03"},{16233, "se_bit_04"},{16234, "se_bit_05"},{16235, "se_bit_06"},
+	{16236, "se_bit_07"},{16237, "se_bit_08"},{16238, "se_bit_09"},{16239, "se_bit_10"},{16240, "se_bit_11"},
+	{16241, "se_bit_12"},{16242, "se_bit_13"},{16243, "se_bit_14"},{16244, "se_bit_15"},{16245, "se_bit_16"},
+	{16246, "se_bit_17"},{16247, "se_bit_18"},{16248, "se_bit_20"},{16249, "se_bit_21"},{16250, "se_bit_23"},
+	{16251, "n_bit_17"},{16252, "n_bit_18"},{16253, "n_bit_19"},{16254, "n_bit_20"},{16255, "ne_bit_24"},
+	{16256, "ne_bit_25"},{16257, "ne_bit_26"},{16258, "cen_bit_21"},{16259, "cen_bit_22"},{16260, "cen_bit_23"},
+	{16261, "cen_bit_24"},{16262, "s_bit_21"},{16263, "se_bit_24"},{16264, "radar_bit_05"},{16265, "des_damlodbit04"},
+	{16266, "des_railbridgeoil"},{16267, "des_oilpipe_04"},{16268, "des_oillines01"},{16269, "des_oillines02"},{16270, "des_oillines03"},
+	{16271, "des_railfac02"},{16272, "des_railfac01"},{16273, "oilderricklod01"},{16274, "oilderricklod02"},{16275, "oilderricklod03"},
+	{16276, "oilderricklod04"},{16277, "oilderricklod05"},{16278, "oilderricklod06"},{16279, "oilderricklod07"},{16280, "des_farmhouse1_"},
+	{16281, "des_fgateway01"},{16282, "cn2_slines02"},{16283, "cn2_slines01"},{16284, "cn2_slines04"},{16285, "des_westrn7_03"},
+	{16286, "cn2_slines06"},{16287, "des_fshed1_"},{16288, "cn2_slines03"},{16289, "cn2_slines05"},{16290, "cn2_slines07"},
+	{16291, "cn2_slines08"},{16292, "cn2_slines09"},{16293, "a51_extfence03"},{16294, "a51_extfence06"},{16295, "quarry_fenc01"},
+	{16296, "quarry_fenc04"},{16297, "quarry_fenc06"},{16298, "quarry_fenc05"},{16299, "quarry_fenc02"},{16300, "quarry_fenc03"},
+	{16301, "des_quarrybelt13"},{16302, "des_gravelpile04"},{16303, "des_quarryramp01"},{16304, "des_gravelpile05"},{16305, "des_gravelpile06"},
+	{16306, "cn2_ywire"},{16307, "des_tellines01"},{16308, "des_sbridsupps"},{16309, "des_quarrybelt11"},{16310, "des_quarryhut1"},
+	{16311, "des_quarrybelt15"},{16312, "quarry_walllthing"},{16313, "quarry_fencins"},{16314, "quarry_chutelift"},{16315, "quarry_fencins2"},
+	{16316, "des_quarrybelt17"},{16317, "des_quarstmound_03"},{16318, "des_quarrybelt18"},{16319, "quarrystuff4"},{16320, "quarry_fenc07"},
+	{16321, "quarry_fenc08"},{16322, "a51_plat"},{16323, "a51_outbldgs"},{16324, "des_quaoldfenc"},{16325, "des_quarryhut02"},
+	{16326, "des_byoffice"},{16327, "des_bycontowr"},{16328, "quarry_crane"},{16329, "quarry_cranearm"},{16330, "quarry_cranebase"},
+	{16331, "quarry_cranecable"},{16332, "quarry_cranhook"},{16333, "quarry_crhookcble"},{16334, "des_cranelines01"},{16335, "des_transtower"},
+	{16337, "des_cranecontrol"},{16338, "dam_genbay01"},{16339, "dam_genend01"},{16340, "dam_genturbine05"},{16341, "dam_genalpha01"},
+	{16342, "dam_genturbine04"},{16343, "dam_genalpha02"},{16344, "dam_genbay02"},{16345, "dam_genturbine03"},{16346, "dam_genturbine02"},
+	{16347, "dam_genalpha04"},{16348, "dam_genbay04"},{16349, "dam_genturbine01"},{16350, "dam_genend02"},{16351, "dam_genalpha06"},
+	{16352, "dam_genbay06"},{16353, "dam_genalpha07"},{16354, "dam_genbay07"},{16355, "dam_gencrane01"},{16356, "dam_gencrane02"},
+	{16357, "des_ebrigroad01"},{16358, "des_ebrigroad07"},{16359, "des_shed3_01"},{16360, "desn2_tsfuelpay"},{16361, "desn2_tsblock"},
+	{16362, "desn2_tscanopy"},{16363, "des_trstplines"},{16364, "des_quaybase"},{16365, "des_substat_17"},{16366, "des_substat_37"},
+	{16367, "des_quayramp"},{16368, "bonyrd_windsock"},{16369, "des_quaoldfenc01"},{16370, "by_fuelfence"},{16371, "desn2_alphabit01"},
+	{16372, "desn2_alphabit02"},{16373, "desn2_alphabit04"},{16374, "desn2_alphabit05"},{16375, "by_helimarkings"},{16376, "desn2dambit01"},
+	{16377, "tv_stand_by"},{16378, "des_byofficeint"},{16384, "des_ebrigroad10"},{16385, "desh2_weefact2_"},{16386, "desn2_shed3_"},
+	{16387, "desn2_ammun"},{16388, "des_studbldg"},{16389, "des_studgrnd"},{16390, "desn2_studbush"},{16391, "des_reffenc04"},
+	{16392, "des_reffenc01"},{16393, "des_reffenc02"},{16394, "des_reffenc03"},{16395, "desn2_minerun"},{16396, "des_ntshop5_"},
+	{16397, "n_bit_09"},{16398, "desn2_peckfac1"},{16399, "desn2_peckfac2"},{16400, "desn2_peckfac3"},{16401, "desn2_peckjump"},
+	{16402, "desn2_peckalpha"},{16403, "des2_bushybits"},{16404, "desn2_hutskel2"},{16405, "desn2_hutskel03"},{16406, "desn2_weemineb"},
+	{16407, "airfieldhus1"},{16408, "airfieldhus2"},{16409, "by_weehangr"},{16410, "desn2_graves"},{16411, "desn2_platroks"},
+	{16420, "des_sbridsupps04"},{16421, "s_bit_06_2"},{16422, "s_bit_06_3"},{16423, "s_bit_06_4"},{16424, "s_bit_06_5"},
+	{16430, "des_ebrigroad02"},{16434, "desn2_stwnalph1"},{16436, "cn2_roadblock01"},{16437, "cn2_roadblock02"},{16438, "cn2_roadblock03"},
+	{16439, "cn2_roadblock04"},{16442, "desn2_stripsigs1"},{16444, "des_blackbags"},{16445, "des_quarrycut"},{16446, "quarry_weecrushr"},
+	{16448, "des_nt_buntpoles01"},{16475, "des_stwnbowl"},{16477, "des_stwngas1"},{16479, "des_stgas1sig"},{16480, "ftcarson_sign"},
+	{16481, "des_quarrybelt19"},{16498, "des_rdalpha01"},{16500, "cn2_savgardr1_"},{16501, "cn2_savgardr2_"},{16502, "cn2_jetty1"},
+	{16503, "cn2_rockgpst"},{16530, "des_oilfieldpipe02"},{16531, "des_oilpipe_03"},{16532, "des_oilpipe_05"},{16533, "des_oilpipe_06"},
+	{16534, "des_oilpipe_01"},{16535, "des_oilpipe_07"},{16562, "cn2_rosmot1"},{16563, "cn2_polis"},{16564, "des_stmedicentre_"},
+	{16568, "cn2_rosmot02"},{16571, "des_railbridgest01"},{16593, "se_bit_19"},{16599, "by_fuel06"},{16601, "by_fuel07"},
+	{16605, "des_stwnmotel03"},{16610, "des_nbridgebit_02"},{16613, "des_bigtelescope"},{16622, "des_ntwn_lines3_"},{16623, "des_rdalpha02"},
+	{16627, "des_ghotfenc01"},{16628, "des_ghotfenc02"},{16629, "des_ghotfenc03"},{16630, "des_ghotfenc04"},{16631, "des_ghotfenc05"},
+	{16632, "des_ghotfenc06"},{16633, "des_ghotfenc07"},{16634, "des_ghotfenc08"},{16635, "des_ghotfenc09"},{16636, "des_ghotfenc10"},
+	{16637, "ghostgardoor"},{16638, "a51_gatecon_a"},{16639, "des_a51_labs"},{16640, "des_a51_inner3"},{16641, "des_a51warheads"},
+	{16642, "a51_genroom"},{16643, "a51_stormech"},{16644, "a51_ventsouth"},{16645, "a51_ventsouth01"},{16646, "a51_ugstore1a"},
+	{16647, "a51_storeroom"},{16648, "a51_fakeroom2"},{16649, "a51_entstair"},{16650, "a51_genroomalpha"},{16651, "a51_genwalkway"},
+	{16652, "a51_fakealpha1"},{16653, "a51_fakealpha2"},{16654, "a51_fakeroom1"},{16655, "a51_labglass"},{16656, "a51_rocketlab"},
+	{16657, "des_a51_labs2"},{16658, "des_a51_labent"},{16659, "des_a51_entalpha"},{16660, "a51_entstuff"},{16661, "a51_sci_stair"},
+	{16662, "a51_radar_stuff"},{16663, "a51_jetpstuff"},{16664, "a51_jetpalpha"},{16665, "a51_radarroom"},{16666, "a51_machines"},
+	{16667, "des_rockgp2_14"},{16668, "a51_extfence04"},{16669, "a51_extfence05"},{16670, "a51_extfence02"},{16671, "a51_extfence01"},
+	{16673, "des_nmot_02"},{16675, "des_rockgp1_13"},{16676, "des_quarrycut3"},{16677, "des_quarrycut2"},{16678, "desn2_alphabit07"},
+	{16681, "a51_launchbottom"},{16682, "a51_jetroom"},{16683, "cn2_alphabit01"},{16684, "cn2_rnway_bit"},{16685, "cn2_rnway_bit2"},
+	{16689, "des_westrn7_02"},{16690, "des_westsaloon_02"},{16692, "des_rockgp1_05"},{16693, "n_bit_11b"},{16694, "n_bit_11c"},
+	{16700, "androm_des_obj"},{16701, "china_town_gateb"},{16702, "cargo_stuff"},{16705, "cargo_test"},{16706, "carge_barrels"},
+	{16707, "cargo_netting"},{16708, "cargo_store"},{16731, "cxrf_a51_stairs08"},{16732, "a51_ventcover"},{16733, "cn2_DETAIL01"},
+	{16734, "cn2_DETAIL02"},{16735, "des_alphabit08"},{16736, "des_alphabit05"},{16737, "des_alphabit01"},{16738, "des_alphabit02"},
+	{16739, "des_alphabit03"},{16740, "des_alphabit04"},{16741, "des_alphabit"},{16742, "des_alphabit06"},{16743, "des_alphabit07"},
+	{16744, "des_alphabit09"},{16745, "des_alphabit10"},{16746, "des_alphabit11"},{16747, "des_alphabit12"},{16753, "des_cn2_detailbit"},
+	{16754, "des_cn2_detail2"},{16756, "des_cn2_detail3"},{16757, "des_cn2_detail4"},{16758, "des_cn2_detailbit2"},{16759, "desn2_alphabit06"},
+	{16760, "cn2_ftcar_sig1"},{16766, "des_oilpipe_02"},{16767, "cluckinbell1_cn2"},{16769, "desn2_ammun04"},{16770, "des_gunbldg01"},
+	{16771, "des_savhangr"},{16773, "door_savhangr1"},{16774, "des_gunbldg"},{16775, "door_savhangr2"},{16776, "des_cockbody"},
+	{16777, "des_stmotsigbas1"},{16778, "des_ufosign"},{16779, "ufo_light02"},{16780, "ufo_light03"},{16781, "cn2_ringking"},
+	{16782, "a51_radar_scan"},{16783, "des_detailbit06"},{16784, "des_alphabit13"},{16785, "des_aroadbit02"},{16786, "des_aroadbit03"},
+	{16787, "des_aroadbit04"},{16788, "des_aroadbit08"},{16789, "des_aroadbit12"},{16790, "desn2_aroadbit05"},{17000, "wt6suppsxc"},
+	{17001, "cuntgrsilos"},{17002, "lawestbridge_law"},{17003, "cuntwcridge"},{17004, "cos_pch_brig_1"},{17005, "farmhouse"},
+	{17006, "D5002whi"},{17007, "wt6supps01"},{17008, "farmhouse01"},{17009, "truth_barn02"},{17010, "truth_barn03"},
+	{17011, "truth_barn04"},{17012, "cwsthseing26"},{17013, "cuntplant05"},{17014, "cuntwplant01"},{17015, "cuntwplant07"},
+	{17016, "cutnwplant09"},{17017, "cuntwplant10"},{17018, "cuntsplantfnce03"},{17019, "cuntfrates1"},{17020, "cuntfrates02"},
+	{17021, "cuntplant06"},{17022, "cuntwplant11"},{17023, "cutnwplant10"},{17024, "cuntwplant12"},{17025, "cunt_rockgp1_"},
+	{17026, "cunt_rockgp2_"},{17027, "cunt_rockgp1_03"},{17028, "cunt_rockgp2_04"},{17029, "cunt_rockgp2_09"},{17030, "cunt_rockgp2_11"},
+	{17031, "cunt_rockgp2_13"},{17032, "cunt_rockgp2_14"},{17033, "cunt_rockgp2_15"},{17034, "cunt_rockgp2_16"},{17035, "cunt_rockgp2_17"},
+	{17036, "cuntw_carport1_"},{17037, "cuntw_carport2_"},{17038, "cuntw_weefactory1_"},{17039, "cuntw_weebarn1_"},{17040, "cuntw_weefact1_"},
+	{17041, "cuntw_stwn"},{17042, "cuntw_stwnmotsign2"},{17043, "concretearch1"},{17044, "cuntw_stwnyels"},{17045, "cuntw_stwnyel"},
+	{17046, "telewirescuntw"},{17047, "cuntwwires"},{17048, "cuntwwires2"},{17049, "cw_Silo01"},{17050, "cw_Silo02"},
+	{17051, "cw_Silo03"},{17052, "cw_bigbarn02"},{17053, "cw_bigbarn03"},{17054, "cw_bigbarn04"},{17055, "cw_fueldrum03"},
+	{17056, "cw_corrug01"},{17057, "cw_haypile03"},{17058, "cw_tempbarn01"},{17059, "cw_haypile05"},{17060, "cw_haypile06"},
+	{17061, "cw_barnie"},{17062, "cuntytunnel"},{17063, "cw2_weebarn1_01"},{17064, "cw2_garage"},{17065, "cw2_garagecanopy"},
+	{17066, "cw2_genstore"},{17067, "cw2_logcabins"},{17068, "xjetty01"},{17069, "cunt_rockgp2_24"},{17070, "carspaces03"},
+	{17071, "cunt_rockgp2_25"},{17072, "smltrukext"},{17073, "smlltrukint"},{17074, "truth_barn05"},{17075, "cuntwland01b"},
+	{17076, "cunt_rockgp2_26"},{17077, "cuntwland02b"},{17078, "cuntwland03b"},{17079, "cuntwland04b"},{17080, "cuntwland05b"},
+	{17081, "cuntwland06b"},{17082, "cuntwland07b"},{17083, "cuntwland08b"},{17084, "cuntwland09b"},{17085, "cuntwland10bb"},
+	{17086, "cuntwland11b"},{17087, "cuntwland12b"},{17088, "cuntwland13b"},{17089, "cuntwland15b"},{17090, "cuntwland16b"},
+	{17091, "cuntwland17_de"},{17092, "cuntwland_de"},{17093, "cuntwland19b"},{17094, "cuntwland20b"},{17095, "cuntwland21b"},
+	{17096, "cuntwland22b"},{17097, "cuntwland23b"},{17098, "cuntwland24b"},{17099, "cuntwland25b"},{17100, "cuntwland26b"},
+	{17101, "cuntwland29b"},{17102, "cuntwland31b"},{17103, "cuntwland32b"},{17104, "cuntwland33b"},{17105, "cuntwland34b"},
+	{17106, "cuntwland35b"},{17107, "cuntwland36b"},{17108, "cuntwland37b"},{17109, "cuntwland38b"},{17110, "cuntwland39b"},
+	{17111, "cuntwland40b"},{17112, "cuntwland41b"},{17113, "cuntwland42b"},{17114, "cuntwland45b"},{17115, "cuntwland46b"},
+	{17116, "cuntwland47b"},{17117, "cuntwland48b"},{17118, "cuntwland50b"},{17119, "cuntwland52b"},{17120, "cuntwland53b"},
+	{17121, "cuntwland54b"},{17122, "cuntwland55b"},{17123, "cuntwland56bx"},{17124, "cuntwland58b"},{17125, "cuntwland59b"},
+	{17126, "cuntwland60b"},{17127, "cuntwland62b"},{17128, "cuntwland63b"},{17129, "cuntwland64b"},{17130, "cuntwland65b"},
+	{17131, "cuntwland66b"},{17132, "cuntwland67b"},{17133, "cuntwland68b"},{17134, "cuntwland69b"},{17135, "cuntwland70b"},
+	{17136, "cuntwland71b"},{17137, "cuntwland72b"},{17138, "cuntwland73b"},{17139, "cuntwland74b"},{17140, "cuntwland75b"},
+	{17141, "cuntwland76b"},{17142, "cuntwland77b"},{17143, "cuntwland78b"},{17144, "cuntwland79b"},{17145, "cuntwland80b"},
+	{17146, "cuntwroad37"},{17148, "cuntwroad02"},{17150, "cuntwroad03"},{17152, "cuntwroad04"},{17154, "cuntwroad72"},
+	{17156, "cuntwroad06"},{17158, "cuntwroad07"},{17160, "cuntwroad08"},{17162, "cuntwroad09"},{17164, "cuntwroad10"},
+	{17166, "cuntwroad11"},{17168, "cuntwroad12"},{17170, "cuntwroad13"},{17172, "cuntwroad14"},{17174, "cuntwroad15"},
+	{17176, "cuntwroad16"},{17178, "cuntwroad17"},{17180, "cuntwroad18"},{17182, "cuntwroad19"},{17184, "cuntwroad20"},
+	{17186, "cuntwroad21"},{17188, "cuntwroad24"},{17190, "cuntwroad25"},{17192, "cuntwroad26"},{17194, "cuntwroad27"},
+	{17196, "cuntwroad28"},{17198, "cuntwroad29"},{17200, "cuntwroad30"},{17202, "cuntwroad31"},{17204, "cuntwroad32"},
+	{17208, "cuntwroad74"},{17210, "cuntwroad73"},{17212, "cuntwroad34"},{17214, "cuntwroad35"},{17216, "cuntwroad36"},
+	{17218, "cuntwroad01"},{17220, "cuntwroad38"},{17222, "cuntwroad05"},{17224, "cuntwroad40"},{17226, "cuntwroad41"},
+	{17228, "cuntwroad42"},{17230, "cuntwroad43"},{17232, "cuntwroad44"},{17234, "cuntwroad45"},{17236, "cuntwroad46"},
+	{17238, "cuntwroad47"},{17240, "cuntwroad48"},{17242, "cuntwroad49"},{17244, "cuntwroad50"},{17246, "cuntwroad51"},
+	{17248, "cuntwroad52"},{17250, "cuntwroad33"},{17252, "cuntwroad54"},{17254, "cuntwroad55"},{17256, "cuntwroad39"},
+	{17258, "cuntwroad57"},{17260, "cuntwroad58"},{17262, "cuntwroad59"},{17267, "cuntwroad66"},{17269, "cuntwroad67"},
+	{17271, "cuntwroad63"},{17273, "cuntwroad65"},{17275, "cuntwroad69"},{17277, "cuntwroad70"},{17279, "cuntwroad68"},
+	{17281, "cuntwroad71"},{17283, "cuntwrail12"},{17284, "cuntwrail11"},{17285, "cuntwrail10"},{17286, "cuntwrail09"},
+	{17287, "cuntwrail08"},{17288, "cuntwrail07"},{17289, "cuntwrail01"},{17290, "cuntwrail02"},{17291, "cuntwrail03"},
+	{17292, "cuntwrail04"},{17293, "bwidgecuntw"},{17294, "cuntwland53bd"},{17295, "cuntwland53bc"},{17296, "cuntwrail04v"},
+	{17297, "cuntwrail04c"},{17298, "sjmoldbarn03"},{17299, "cunt_rockgp2_27"},{17300, "cuntytunnel2"},{17301, "cuntwland49b"},
+	{17302, "cuntwland51b"},{17303, "cuntwroad22"},{17305, "cuntwroad23"},{17307, "cuntwland40c"},{17308, "cuntwland02c"},
+	{17309, "concretearch02"},{17310, "concretearch03"},{17323, "cuntwmotsignCJ"},{17324, "cw_combbarn"},{17326, "cuntwroad60"},
+	{17327, "cuntwroad61"},{17329, "cuntwroad62"},{17331, "cuntwroad53"},{17333, "cuntwroad64"},{17334, "cuntwroad56"},
+	{17335, "farmhouse02"},{17426, "cuntwwiresx"},{17427, "cuntwwiresxx"},{17428, "cuntwwiresxxx"},{17429, "telewirescuntw01"},
+	{17430, "telewirescuntw02"},{17431, "telewirescuntw03"},{17432, "telewirescuntw04"},{17433, "cuntwwiresxx01"},{17434, "cuntwwiresxz"},
+	{17436, "xoverlaymap01"},{17437, "xoverlaymap02"},{17438, "xoverlaymap03"},{17439, "xoverlaymap04"},{17440, "xoverlaymap05"},
+	{17441, "xoverlaymap06"},{17442, "xoverlaymap13"},{17443, "xoverlaymap08"},{17444, "xoverlay_rock"},{17448, "xoverlaymap09"},
+	{17450, "xoverlaymap10"},{17451, "xoverlaymap07"},{17452, "xoverlaymap07b"},{17453, "brownwater"},{17454, "cuntgrsilosrail"},
+	{17455, "dirtover"},{17456, "rockovergay"},{17457, "sjmoldbarn04"},{17458, "xxxxxxtra"},{17459, "xxxtra2"},
+	{17460, "xxxover"},{17461, "xxxe"},{17462, "xxxxxxxxa"},{17463, "xxxc01"},{17464, "xxxd"},
+	{17465, "xxxzc"},{17466, "xxxza"},{17467, "xxovr2"},{17468, "xxcliffx"},{17469, "xoverelaya"},
+	{17470, "xoverlaydrt"},{17471, "cuntybitx"},{17472, "cunt_rocgxp2_04"},{17474, "cuntwland17_de_a"},{17500, "stormdrainLAE2_05"},
+	{17501, "RiverBridge1_LAe"},{17502, "RiverBridge2_LAe"},{17503, "Furniture_LAe"},{17504, "furnittrans1_LAe"},{17505, "lae2_ground02"},
+	{17506, "stormdrainLAE2_06"},{17507, "stormdrainLAE2_03"},{17508, "BlockK_LAe2"},{17509, "lae2_ground03"},{17510, "barrioTrans01_LAe"},
+	{17511, "gwforum1_LAe"},{17513, "lae2_ground04"},{17514, "starthootra1_LAe"},{17515, "scumgym1_LAe"},{17516, "BlockItrans_LAe"},
+	{17517, "BarberBlock1_LAe"},{17518, "telwire_01_LAe2"},{17519, "market2_lae"},{17520, "market1_lae"},{17521, "Pawnshp_lae2"},
+	{17522, "gangshop7_lae2"},{17523, "Stripbar_lae"},{17524, "LongBeBlok1_LAe"},{17525, "RiverBridge3_LAe2"},{17526, "gangshops1_LAe"},
+	{17527, "gangblock1Tr_LAe"},{17528, "barrioTrans01_LAe01"},{17529, "gangshops2_LAe2"},{17530, "pigpenblok1Tr_LAe"},{17531, "barrio03A_LAe"},
+	{17532, "barrio06Trans_LAe"},{17533, "tempLB1_LAe2"},{17534, "cluckinbell1_LAe"},{17535, "furnsign1_LAe2"},{17536, "dambuild1_LAe2"},
+	{17537, "cineblock1_LAe2"},{17538, "powerstat1_LAe2"},{17539, "rdsigns4_LAe03"},{17540, "rdsigns4_LAe05"},{17541, "LBeachBlok1z_LAe2"},
+	{17542, "gangshops6_LAe2"},{17543, "gangshops5_LAe2"},{17544, "gangshops4_LAe2"},{17545, "barrio02_LAe"},{17546, "hydro3_LAe"},
+	{17547, "EBeachAp1_LAe2"},{17548, "lae2_ground05"},{17549, "BeachBlok01_LAe2"},{17550, "EasBeBrij1_LAe2"},{17551, "BeachBlok02_LAe2"},
+	{17552, "burnHous1_LAe2"},{17553, "BeachBlok3_LAe2"},{17554, "BeachBlok5_LAe2"},{17555, "BeachBlok7_LAe2"},{17556, "MStorCP1_LAe2"},
+	{17557, "MStorCP2_LAe2"},{17558, "MStorCP4_LAe2"},{17559, "MStorCP6_LAe2"},{17560, "EBeachAp3_LAe2"},{17561, "MsCpTunn2_LAe2"},
+	{17562, "LongBeBlokx_LAe"},{17563, "wattspark1_LAe2"},{17564, "Tempdoor_LAe2"},{17565, "rustybrij01_LAe2"},{17566, "sweetsdoor_LAe2"},
+	{17567, "stormdrainLAE2_07"},{17568, "stormdrainLAE2_04"},{17573, "rydhou01_LAe2"},{17574, "rydbkyar1_LAe2"},{17575, "burgho01_LAe2"},
+	{17576, "hubbridge1_LAe2"},{17577, "Liquorstore01_LAe2"},{17578, "Liquorstore02_LAe2"},{17579, "Liquorstore03_LAe2"},{17582, "stadtplaza_lae2"},
+	{17583, "stadt_fence"},{17585, "lae2transbit"},{17586, "ebeach_alphabits"},{17588, "ebeach_alpahbits2"},{17589, "ebeachpark"},
+	{17591, "ebeachalpha5"},{17592, "ebeach_veg"},{17594, "lae2_ground06"},{17595, "Lae2_roads01"},{17596, "Lae2_roads02"},
+	{17597, "Lae2_roads03"},{17598, "Lae2_roads04"},{17599, "Lae2_roads85"},{17600, "Lae2_roads05"},{17601, "lae2_ground07"},
+	{17602, "Lae2_roads07"},{17603, "Lae2_roads08"},{17604, "Lae2_roads09"},{17605, "Lae2_roads10"},{17606, "lae2_roadscoast04"},
+	{17607, "Lae2_roads12"},{17608, "Lae2_roads13"},{17609, "Lae2_roads14"},{17610, "Lae2_roads15"},{17611, "Lae2_roads16"},
+	{17612, "Lae2_roads88"},{17613, "Lae2_roads89"},{17614, "Lae2_landHUB02"},{17615, "Lae2_landHUB03"},{17616, "Lae2_landHUB04"},
+	{17617, "Lae2_landHUB05"},{17618, "Lae2_landHUB06"},{17619, "Lae2_landHUB07"},{17620, "Lae2_landHUB01"},{17621, "Lae2_roads17"},
+	{17622, "Lae2_roads18"},{17623, "Lae2_roads19"},{17624, "Lae2_roads20"},{17625, "Lae2_roads21"},{17626, "Lae2_roads22"},
+	{17627, "Lae2_roads23"},{17628, "Lae2_roads24"},{17629, "Lae2_roads25"},{17630, "Lae2_roads26"},{17631, "Lae2_roads27"},
+	{17632, "Lae2_roads28"},{17633, "lae2_ground08"},{17634, "lae2_ground09"},{17635, "lae2_ground10"},{17636, "lae2_ground11"},
+	{17637, "Lae2_roads29"},{17638, "Lae2_roads30"},{17639, "Lae2_roads31"},{17640, "Lae2_roads32"},{17641, "Lae2_roads33"},
+	{17642, "Lae2_roads90"},{17643, "Lae2_roads34"},{17644, "Lae2_roads35"},{17645, "lae2_ground12"},{17646, "Lae2_roads36"},
+	{17647, "Lae2_roads37"},{17648, "Lae2_roads38"},{17649, "Lae2_roads39"},{17650, "Lae2_roads40"},{17651, "Lae2_roads41"},
+	{17652, "Lae2_roads42"},{17653, "Lae2_roads43"},{17654, "Lae2_roads44"},{17655, "Lae2_roads46"},{17656, "Lae2_roads50"},
+	{17657, "Lae2_roads52"},{17658, "Lae2_roads53"},{17659, "Lae2_roads54"},{17660, "Lae2_roads55"},{17661, "Lae2_roads56"},
+	{17662, "Lae2_roads57"},{17663, "Lae2_roads58"},{17664, "lae2_ground13"},{17665, "lae2_ground14"},{17666, "Lae2_roads86"},
+	{17667, "Lae2_roads59"},{17668, "Lae2_roads64"},{17669, "Lae2_roads65"},{17670, "Lae2_roads66"},{17671, "Lae2_roads67"},
+	{17672, "Lae2_roads68"},{17673, "lae2_roadscoast06"},{17674, "lae2_roadscoast05"},{17675, "lae2_roadscoast03"},{17676, "lae2_roadscoast01"},
+	{17677, "lae2_ground15"},{17678, "grnd05_lae2"},{17679, "lae2_bigblock"},{17680, "Lae2_roads76"},{17681, "Lae2_roads77"},
+	{17682, "Lae2_roads78"},{17683, "Lae2_roads79"},{17684, "Lae2_roads80"},{17685, "lae2_ground16"},{17686, "stormdrainLAE2_01"},
+	{17687, "Lae2_roads81"},{17688, "stormdrainLAE2_02"},{17689, "brglae2"},{17690, "lae2_blockN"},{17691, "lae2_ground17"},
+	{17692, "Lae2_roads83"},{17693, "Lae2_roads84"},{17694, "lae2_ground17b"},{17695, "brg_lae2"},{17696, "lae2_ground18"},
+	{17697, "carlshou1_LAe2"},{17698, "sweetshou1_LAe2"},{17699, "mcstraps_LAe2"},{17700, "pigpenblok1_LAe2"},{17804, "LBeachApts1_LAe2"},
+	{17805, "BeachApartAT_LAe2"},{17807, "BeachApartA4_LAe2"},{17809, "BeachApartA5_LAe2"},{17829, "Lae2_roads48"},{17841, "gymblok2_lae2"},
+	{17848, "pigpen_props"},{17849, "Lae2_roads60"},{17851, "cineblok_alpha"},{17852, "autoshpblok_lae2"},{17853, "cine_mark_lae2"},
+	{17854, "cinmamkr_alpha"},{17859, "cinemark2_lae2"},{17860, "autoshp_alpha"},{17862, "compomark_lae2"},{17863, "compmart_alpha"},
+	{17864, "comp_puchase"},{17865, "comp_ground"},{17866, "grass_bank"},{17867, "Lae2_roads46b"},{17872, "grbank_alpha"},
+	{17874, "hubst_alpha"},{17875, "hubst2_alpha"},{17876, "hubst3_alpha"},{17877, "lae2_hubgrass"},{17878, "lae2_hubgrass2"},
+	{17879, "hubst4alpha"},{17880, "hub_grass3"},{17881, "hub5_grass"},{17886, "stdrain_alpha"},{17887, "stdrain_alpha2"},
+	{17888, "EBeachAp2_LAe2"},{17891, "ground2_alpha"},{17892, "grnd02_lae2"},{17893, "splitapts01"},{17894, "splitapts02"},
+	{17897, "cparkshit_alpha"},{17898, "hubbrdge_alphab"},{17899, "blockN_alpha"},{17901, "coast_apts"},{17902, "coastapt_alpha"},
+	{17904, "blokz_fireescape"},{17905, "bighillalpha"},{17906, "lae2_ground15b"},{17907, "bighillalpha2"},{17911, "stdrainalpha3"},
+	{17912, "stdrainalpha3b"},{17913, "hubbrdge_alpha"},{17915, "lae2billbrds2"},{17916, "lae2billbrds3"},{17917, "lae2billbrds4"},
+	{17918, "lae2billbrds5"},{17919, "lae2billbrds6"},{17920, "Lae2_roads49"},{17921, "Lae2_roads82"},{17922, "coast_apts2"},
+	{17925, "carls_faux"},{17926, "sweet_faux_ent"},{17927, "Lae2_roads06"},{17928, "burnsfakeint"},{17933, "Carter-light15b"},
+	{17934, "coochieghous"},{17936, "rbridge3_girders"},{17937, "stormd_fill"},{17938, "stormd_fillc"},{17939, "stormd_fillb"},
+	{17940, "rbridg23_girders"},{17941, "stormd_filld"},{17942, "stormd_fille"},{17943, "ebeachalpha5b"},{17944, "LngBeBlok2_LAe"},
+	{17946, "Carter_GROUND"},{17947, "burg_alpha"},{17950, "cjsaveg"},{17951, "cjgaragedoor"},{17953, "conc_bblok"},
+	{17954, "nitelites_LAE2"},{17955, "nitelitesb_LAE2"},{17956, "nitelitesc_LAE2"},{17957, "nitelitesd_LAE2"},{17958, "buringd_alpha"},
+	{17968, "hubridge_smash"},{17969, "hub_graffitti"},{17971, "hub_grnd_alpha"},{17972, "grnd_alpha2"},{17973, "grnd_alpha3"},
+	{17974, "grnd_alpha4"},{17976, "grnd_alpha5"},{17978, "grnd_alpha6"},{18000, "ammunationwwws01"},{18001, "int_barberA07"},
+	{18002, "int_barberA02"},{18003, "int_barberA03"},{18004, "int_barberA05"},{18005, "int_barberA01"},{18006, "int_barberA08"},
+	{18007, "int_barberA12"},{18008, "int_clothingA01"},{18009, "int_rest_main"},{18010, "int_3rest_lights"},{18011, "int_rest_veg02"},
+	{18012, "int_rest_veg01"},{18013, "int_rest_veg3"},{18014, "int_rest_veg03"},{18015, "int_rest_veg04"},{18016, "int_rest_canopy"},
+	{18017, "int_rest_counchs"},{18018, "int_bars"},{18019, "int_burger_furn"},{18020, "int_6burger_main"},{18021, "int_din_donut_main"},
+	{18022, "int_chick_main"},{18023, "int_pizzaplace"},{18024, "int_clothe_ship"},{18025, "clothes_sports"},{18026, "clothes_shit"},
+	{18027, "CJ_BARB_2"},{18028, "smllbarinterior"},{18029, "smllrestaurant"},{18030, "GAP"},{18031, "clothesexl"},
+	{18032, "range_xtras2"},{18033, "munation_main"},{18034, "CJ_AMMUN1_EXTRA"},{18035, "munation_xtras2"},{18036, "range_main"},
+	{18038, "Gun-Shop-Vegas"},{18039, "vg_mun_opac2"},{18040, "vg_mun_xtras4"},{18041, "vg_mun_xtras3"},{18042, "gun_counter09"},
+	{18043, "CJ_AMMUN_BITS"},{18044, "CJ_AMMUN3_EXTRA"},{18045, "mp_ammu01"},{18046, "mp_ammu03"},{18047, "mpgun_counter06"},
+	{18048, "mp_ammu02"},{18049, "ammu_twofloor"},{18050, "range_opac01"},{18051, "range_xtras03"},{18052, "munation_xtras03"},
+	{18053, "munation_xtras04"},{18054, "munation_xtras05"},{18055, "smllrestseats"},{18056, "mp_dinerbig"},{18057, "table-plain"},
+	{18058, "mp_dinersmall"},{18059, "tables"},{18060, "big_seats"},{18061, "condiments07"},{18062, "ab_sfAmmuItems01"},
+	{18063, "ab_sfAmmuItems02"},{18064, "ab_sfAmmuUnits"},{18065, "ab_sfAmmuMain"},{18066, "posterv"},{18067, "blood-splat"},
+	{18068, "clothes-spot"},{18069, "clothes_sports2"},{18070, "GAP_COUNTER"},{18071, "Gap_Shadow"},{18072, "GAP_WINDOW"},
+	{18073, "Sub_shadow"},{18074, "Donut_rail"},{18075, "lightD"},{18076, "SHAD_1"},{18077, "din_donut_furn"},
+	{18078, "CJ_BARB_2_acc"},{18079, "BARB_CURTAIN"},{18080, "DONUT_BLINDS"},{18081, "CJ_AB_Barber2_2"},{18082, "CJ_Barber2"},
+	{18083, "CJ_Barber2_1"},{18084, "BARBER_BLINDS"},{18085, "Object01hjk"},{18086, "B_Lights"},{18087, "DONUT_BLINDS2"},
+	{18088, "cj_changing_room"},{18089, "DISCO_FENCE"},{18090, "Bar_BAR1"},{18091, "CJ_BAR_2_DETAILS"},{18092, "ammun3_counter"},
+	{18093, "LIGHT_SHARD_"},{18094, "CJ_SWEATER_F_71"},{18095, "BARBER_BLINDS02"},{18096, "LIGHT_SHARD_06"},{18097, "LIGHT_SHARD_07"},
+	{18098, "BARBER_BLINDS03"},{18099, "cj_RUBBISH"},{18100, "cj_RUBBISH01"},{18101, "cj_RUBBISH02"},{18102, "Light_box1"},
+	{18104, "CJ_AMMUN_BITS1"},{18105, "CJ_AMMUN5_EXTRA"},{18109, "CJ_AMMUN4_EXTRA"},{18112, "sub_signs"},{18200, "w_town_11"},
+	{18201, "wtown_bits2_02"},{18202, "wtown_trailwal"},{18203, "wtown_bits2_05"},{18204, "w_townwires_01"},{18205, "w_townwires_02"},
+	{18206, "w_townwires_03"},{18207, "w_townwires_04"},{18208, "w_townwires_05"},{18209, "w_townwires_06"},{18210, "w_townwires_07"},
+	{18211, "w_townwires_08"},{18212, "w_townwires_09"},{18213, "w_townwires_10"},{18214, "w_townwires_11"},{18215, "w_townwires_12"},
+	{18216, "mtbfence1"},{18217, "mtbfence06"},{18218, "mtbfence08"},{18219, "mtbfence09"},{18220, "mtbfence10"},
+	{18221, "mtbfence11"},{18222, "mtbfence12"},{18223, "mtbfence14"},{18224, "mtbfence15"},{18225, "cunt_rockgp2_18"},
+	{18226, "cunt_rockgp2_19"},{18227, "cunt_rockgp2_20"},{18228, "cunt_rockgp2_21"},{18229, "w7bark"},{18230, "logcabinnlogs"},
+	{18231, "cs_landbit_81"},{18232, "cuntw_ngassta"},{18233, "cuntw_town07"},{18234, "cuntw_shed2_"},{18235, "cuntw_weechurch_"},
+	{18236, "cuntw_shed3_"},{18237, "cuntw_dinerwst"},{18238, "cuntw_stwnfurn_"},{18239, "cuntw_restrnt1"},{18240, "cuntw_liquor01"},
+	{18241, "cuntw_weebuild"},{18242, "cuntw_stwnmotel01"},{18243, "cuntw_stmotsigbas1"},{18244, "cuntw_stwnmotsign1"},{18245, "cuntwjunk02"},
+	{18246, "cuntwjunk04"},{18247, "cuntwjunk03"},{18248, "cuntwjunk01"},{18249, "cuntwjunk05"},{18250, "cuntwjunk06"},
+	{18251, "cuntwjunk07"},{18252, "cuntwjunk08"},{18253, "cuntwjunk09"},{18254, "cuntwjunk10"},{18255, "cuntwjunk11"},
+	{18256, "w7bark01"},{18257, "crates"},{18258, "logcabinnlogs01"},{18259, "logcabinn01"},{18260, "crates01"},
+	{18261, "cw2_photoblock"},{18262, "cw2_phroofstuf"},{18263, "wtown_bits2_06"},{18264, "cw2_cinemablock"},{18265, "cw2_wtownblok1"},
+	{18266, "wtown_shops"},{18267, "logcabinn"},{18268, "cw2_mntfir05"},{18269, "cw2_mntfir11"},{18270, "cw2_mntfir13"},
+	{18271, "cw2_mntfir16"},{18272, "cw2_mntfir27"},{18273, "cw2_weefirz08"},{18274, "cuntw_shed3_01"},{18275, "cw2_mtbfinish"},
+	{18276, "mtb2_barrier1"},{18277, "mtb2_barrier2"},{18278, "mtb2_barrier3"},{18279, "mtb2_barrier6"},{18280, "mtb2_barrier4"},
+	{18281, "mtb2_barrier5"},{18282, "cw_tsblock"},{18283, "cw_fuelpay"},{18284, "cw_tscanopy"},{18285, "cw_trucklines"},
+	{18286, "cw_mountbarr06"},{18287, "cw_mountbarr01"},{18288, "cw_mountbarr02"},{18289, "cw_mountbarr03"},{18290, "cw_mountbarr04"},
+	{18291, "cw_mountbarr07"},{18292, "cw_mountbarr05"},{18293, "cs_landbit_03"},{18294, "cs_landbit_04"},{18295, "cs_landbit_05"},
+	{18296, "cs_landbit_06"},{18297, "cs_landbit_07"},{18298, "cs_landbit_08"},{18299, "cs_landbit_09"},{18300, "cs_landbit_10"},
+	{18301, "cs_landbit_11"},{18302, "cs_landbit_13"},{18303, "cs_landbit_14"},{18304, "cs_landbit_15"},{18305, "cs_landbit_16"},
+	{18306, "cs_landbit_17"},{18307, "cs_landbit_18"},{18308, "cs_landbit_19"},{18309, "cs_landbit_20"},{18310, "cs_landbit_21"},
+	{18311, "cs_landbit_22"},{18312, "cs_landbit_23"},{18313, "cs_landbit_24"},{18314, "cs_landbit_25"},{18315, "cs_landbit_26"},
+	{18316, "cs_landbit_27"},{18317, "cs_landbit_28"},{18318, "cs_landbit_29"},{18319, "cs_landbit_30"},{18320, "cs_landbit_31"},
+	{18321, "cs_landbit_32"},{18322, "cs_landbit_33"},{18323, "cs_landbit_34"},{18324, "cs_landbit_35"},{18325, "cs_landbit_36"},
+	{18326, "cs_landbit_37"},{18327, "cs_landbit_38"},{18328, "cs_landbit_39"},{18329, "cs_landbit_40"},{18330, "cs_landbit_41"},
+	{18331, "cs_landbit_42"},{18332, "cs_landbit_43"},{18333, "cs_landbit_44"},{18334, "cs_landbit_45"},{18335, "cs_landbit_47"},
+	{18336, "cs_landbit_48"},{18337, "cs_landbit_49"},{18338, "cs_landbit_50"},{18339, "cs_landbit_51"},{18340, "cs_landbit_52"},
+	{18341, "cs_landbit_53"},{18342, "cs_landbit_55"},{18343, "cs_landbit_56"},{18344, "cs_landbit_57"},{18345, "cs_landbit_58"},
+	{18346, "cs_landbit_59"},{18347, "cs_landbit_60"},{18348, "cs_landbit_61"},{18349, "cs_landbit_62"},{18350, "cs_landbit_64"},
+	{18351, "cs_landbit_65"},{18352, "cs_landbit_66"},{18353, "cs_landbit_67"},{18354, "cs_landbit_68"},{18355, "cs_landbit_69"},
+	{18356, "cs_landbit_70"},{18357, "cs_landbit_71"},{18358, "cs_landbit_73"},{18359, "cs_landbit_74"},{18360, "cs_landbit_75"},
+	{18361, "cs_landbit_76"},{18362, "cs_landbit_79"},{18363, "cs_landbit_80"},{18364, "cs_landbit_01"},{18365, "sawmill"},
+	{18366, "cw2_mountwalk1"},{18367, "cw2_bikelog"},{18368, "cs_mountplat"},{18369, "cs_roads01"},{18370, "cs_roads02"},
+	{18371, "cs_roads03"},{18372, "cs_roads04"},{18373, "cs_roads05"},{18374, "cs_roads06"},{18375, "cs_roads07"},
+	{18376, "cs_roads08"},{18377, "cs_roads09"},{18378, "cs_roads10"},{18379, "cs_roads11"},{18380, "cs_roads12"},
+	{18381, "cs_roads13"},{18382, "cs_roads16"},{18383, "cs_roads17"},{18384, "cs_roads20"},{18385, "cuntsrod03"},
+	{18386, "cuntsrod02"},{18387, "cuntsrod14"},{18388, "cuntsrod01"},{18389, "cs_roads26"},{18390, "cs_roads27"},
+	{18391, "cs_roads28"},{18392, "cs_roads29"},{18393, "cuntsrod04"},{18394, "cs_roads35"},{18432, "mtbfence17"},
+	{18433, "mtbfence21"},{18434, "mtbfence24"},{18435, "mtb_poles01"},{18436, "mtb_poles02"},{18437, "mtb_poles03"},
+	{18438, "mtb_poles04"},{18439, "mtb_poles05"},{18440, "mtbfence26"},{18441, "mtbfence29"},{18442, "mtbfence31"},
+	{18443, "mtbfence32"},{18444, "mtbfence39"},{18445, "mtbfence40"},{18446, "mtbfence43"},{18447, "cs_mntdetail01"},
+	{18448, "w_townwires_13"},{18449, "cs_roadbridge01"},{18450, "cs_roadbridge04"},{18451, "cs_oldcarjmp"},{18452, "cw_tscanopy01"},
+	{18453, "cs_detrok01"},{18454, "cs_detrok02"},{18455, "cs_detrok04"},{18456, "cs_detrok03"},{18457, "cs_detrok05"},
+	{18458, "cs_detrok06"},{18459, "cs_detrok07"},{18460, "cs_detrok08"},{18461, "cs_detrok09"},{18462, "cs_detrok10"},
+	{18463, "cs_detrok11"},{18464, "cs_detrok12"},{18465, "cs_detrok13"},{18466, "cs_detrok14"},{18467, "cs_detrok15"},
+	{18468, "cs_detrok16"},{18469, "cs_landbit_12"},{18470, "telewires2cs"},{18471, "telewires1cs"},{18472, "telewires3cs"},
+	{18473, "cs_landbit_50b"},{18474, "cstwnland03"},{18475, "cs_landbit_50c"},{18476, "cuntsrod12"},{18477, "cuntsrod11"},
+	{18478, "cuntsrod09"},{18479, "cuntsrod10"},{18480, "cuntsrod06"},{18481, "cuntsrod08"},{18482, "cuntsrod05"},
+	{18483, "cuntsrod07"},{18484, "cuntsrod13"},{18485, "cs_landbit_50d"},{18496, "w_town11b"},{18518, "cuntsrod02NEW"},
+	{18551, "countS_barriers"},{18552, "cunts_ammun"},{18553, "count_ammundoor"},{18561, "cS_newbridge"},{18563, "cS_bsupport"},
+	{18565, "Cs_Logs03"},{18566, "Cs_Logs02"},{18567, "Cs_Logs04"},{18568, "Cs_Logs05"},{18569, "Cs_Logs01"},
+	{18608, "countS_lights01"},{18609, "Cs_Logs06"},{18610, "cs_landbit_70_A"},{18611, "cs_landbit_71_A"},{18612, "cs_landbit_53_A"},
+	{18613, "cs_landbit_61_A"},{18614, "cs_landbit_44_A"},{18615, "cs_landbit_33_A"},{18616, "cs_landbit_25_A"},{18617, "cs_landbit_A"},
+	{18618, "cs_landbit_41_A"},{18619, "cs_landbit_50_A"},{18620, "w_town_11_A"},{18621, "cs_landbit_58_A"},{18622, "cs_landbit_50b_A"},
+	{18623, "cs_landbit_68_A"},{18624, "cs_landbit_65_A"},{18625, "cs_landbit_48_A"},{18626, "cs_landbit_36_A"},{18627, "cs_landbit_27_A"},
+	{18628, "cs_landbit_10_A"},{18629, "cs_landbit_06_A"},{18630, "cs_landbit_20_A"},{18631, "NoModelFile"},{18632, "FishingRod"},
+	{18633, "GTASAWrench1"},{18634, "GTASACrowbar1"},{18635, "GTASAHammer1"},{18636, "PoliceCap1"},{18637, "PoliceShield1"},
+	{18638, "HardHat1"},{18639, "BlackHat1"},{18640, "Hair1"},{18641, "Flashlight1"},{18642, "Taser1"},
+	{18643, "LaserPointer1"},{18644, "Screwdriver1"},{18645, "MotorcycleHelmet1"},{18646, "PoliceLight1"},{18647, "RedNeonTube1"},
+	{18648, "BlueNeonTube1"},{18649, "GreenNeonTube1"},{18650, "YellowNeonTube1"},{18651, "PinkNeonTube1"},{18652, "WhiteNeonTube1"},
+	{18653, "DiscoLightRed"},{18654, "DiscoLightGreen"},{18655, "DiscoLightBlue"},{18656, "LightBeamWhite"},{18657, "LightBeamRed"},
+	{18658, "LightBeamBlue"},{18659, "SprayTag1"},{18660, "SprayTag2"},{18661, "SprayTag3"},{18662, "SprayTag4"},
+	{18663, "SprayTag5"},{18664, "SprayTag6"},{18665, "SprayTag7"},{18666, "SprayTag8"},{18667, "SprayTag9"},
+	{18667, "SprayTag9H"},{18668, "blood_heli"},{18669, "boat_prop"},{18670, "camflash"},{18671, "carwashspray"},
+	{18672, "cementp"},{18673, "cigarette_smoke"},{18674, "cloudfast"},{18675, "coke_puff"},{18676, "coke_trail"},
+	{18677, "exhale"},{18678, "explosion_barrel"},{18679, "explosion_crate"},{18680, "explosion_door"},{18681, "explosion_fuel_car"},
+	{18682, "explosion_large"},{18683, "explosion_medium"},{18684, "explosion_molotov"},{18685, "explosion_small"},{18686, "explosion_tiny"},
+	{18687, "extinguisher"},{18688, "fire"},{18689, "fire_bike"},{18690, "fire_car"},{18691, "fire_large"},
+	{18692, "fire_med"},{18693, "Flame99"},{18694, "flamethrower"},{18694, "flamethrowerp"},{18695, "gunflash"},
+	{18696, "gunsmoke"},{18697, "heli_dust"},{18698, "insects"},{18699, "jetpack"},{18699, "jetpackp"},
+	{18700, "jetthrust"},{18701, "molotov_flame"},{18702, "nitro"},{18702, "nitrop"},{18703, "overheat_car"},
+	{18704, "overheat_car_elec"},{18705, "petrolcan"},{18706, "prt_blood"},{18707, "prt_boatsplash"},{18708, "prt_bubble"},
+	{18709, "prt_cardebris"},{18710, "prt_collisionsmoke"},{18711, "prt_glass"},{18712, "prt_gunshell"},{18713, "prt_sand2"},
+	{18714, "prt_sand"},{18715, "prt_smoke_huge"},{18716, "prt_smoke_expand"},{18717, "prt_spark"},{18718, "prt_spark_2"},
+	{18719, "prt_wake"},{18720, "prt_watersplash"},{18721, "prt_wheeldirt"},{18722, "puke"},{18723, "riot_smoke"},
+	{18724, "shootlight"},{18725, "smoke30lit"},{18726, "smoke30m"},{18727, "smoke50lit"},{18728, "smoke_flare"},
+	{18729, "spraycan"},{18729, "spraycanp"},{18730, "tank_fire"},{18731, "teargas99"},{18732, "teargasAD"},
+	{18733, "tree_hit_fir"},{18734, "tree_hit_palm"},{18735, "vent2"},{18736, "vent"},{18737, "wallbust"},
+	{18738, "water_fnt_tme"},{18739, "water_fountain"},{18740, "water_hydrant"},{18741, "water_ripples"},{18742, "water_speed"},
+	{18743, "water_splash"},{18744, "water_splash_big"},{18745, "water_splsh_sml"},{18746, "water_swim"},{18747, "waterfall_end"},
+	{18748, "WS_factorysmoke"},{18749, "SAMPLogoSmall"},{18750, "SAMPLogoBig"},{18751, "IslandBase1"},{18752, "Volcano"},
+	{18753, "Base125mx125m1"},{18754, "Base250mx250m1"},{18755, "VCElevator1"},{18756, "ElevatorDoor1"},{18757, "ElevatorDoor2"},
+	{18758, "VCElevatorFront1"},{18759, "DMCage1"},{18760, "DMCage2"},{18761, "RaceFinishLine1"},{18762, "Concrete1mx1mx5m"},
+	{18763, "Concrete3mx3mx5m"},{18764, "Concrete5mx5mx5m"},{18765, "Concrete10mx10mx5m"},{18766, "Concrete10mx1mx5m"},{18767, "ConcreteStair1"},
+	{18767, "ConcreteStair1H"},{18768, "SkyDivePlatform1"},{18769, "SkyDivePlatform1a"},{18770, "SkyDivePlatform1b"},{18771, "SpiralStair1"},
+	{18772, "TunnelSection1"},{18773, "TunnelJoinSection1"},{18774, "TunnelJoinSection2"},{18775, "TunnelJoinSection3"},{18776, "TunnelJoinSection4"},
+	{18777, "TunnelSpiral1"},{18778, "RampT1"},{18779, "RampT2"},{18780, "RampT3"},{18781, "MeshRampBig"},
+	{18782, "CookieRamp1"},{18783, "FunBoxTop1"},{18784, "FunBoxRamp1"},{18785, "FunBoxRamp2"},{18786, "FunBoxRamp3"},
+	{18787, "FunBoxRamp4"},{18788, "MRoad40m"},{18789, "MRoad150m"},{18790, "MRoadBend180Deg1"},{18791, "MRoadBend45Deg"},
+	{18792, "MRoadTwist15DegL"},{18793, "MRoadTwist15DegR"},{18794, "MRoadBend15Deg1"},{18795, "MRoadBend15Deg2"},{18796, "MRoadBend15Deg3"},
+	{18797, "MRoadBend15Deg4"},{18798, "MRoadB45T15DegL"},{18799, "MRoadB45T15DegR"},{18800, "MRoadHelix1"},{18801, "MRoadLoop1"},
+	{18802, "MBridgeRamp1"},{18803, "MBridge150m1"},{18804, "MBridge150m2"},{18805, "MBridge150m3"},{18806, "MBridge150m4"},
+	{18807, "MBridge75mHalf"},{18808, "Tube50m1"},{18809, "Tube50mGlass1"},{18810, "Tube50mBulge1"},{18811, "Tube50mGlassBulge1"},
+	{18812, "Tube50mFunnel1"},{18813, "Tube50mGlassFunnel1"},{18814, "Tube50mFunnel2"},{18815, "Tube50mFunnel3"},{18816, "Tube50mFunnel4"},
+	{18817, "Tube50mTSection1"},{18818, "Tube50mGlassT1"},{18819, "Tube50mPlus1"},{18820, "Tube50mGlassPlus1"},{18821, "Tube50m45Bend1"},
+	{18822, "Tube50mGlass45Bend1"},{18823, "Tube50m90Bend1"},{18824, "Tube50mGlass90Bend1"},{18825, "Tube50m180Bend1"},{18826, "Tube50mGlass180Bend"},
+	{18827, "Tube100m2"},{18828, "SpiralTube1"},{18829, "RTexturetube"},{18830, "RTexturebridge"},{18831, "RT25mBend90Tube1"},
+	{18832, "RT25mBend180Tube1"},{18833, "RT50mBend45Tube1"},{18834, "RT50mBend180Tube1"},{18835, "RBFunnel"},{18836, "RBHalfpipe"},
+	{18837, "RB25mBend90Tube"},{18838, "RB25mBend180Tube"},{18839, "RB50mBend45Tube"},{18840, "RB50mBend90Tube"},{18841, "RB50mBend180Tube"},
+	{18842, "RB50mTube"},{18843, "GlassSphere1"},{18844, "WaterUVAnimSphere1"},{18845, "RTexturesphere"},{18846, "BigCesar"},
+	{18846, "UFO"},{18847, "HugeHalfPipe1"},{18848, "SamSiteNonDynamic"},{18849, "ParaDropNonDynamic"},{18850, "HeliPad1"},
+	{18851, "TubeToRoad1"},{18852, "Tube100m1"},{18853, "Tube100m45Bend1"},{18854, "Tube100m90Bend1"},{18855, "Tube100m180Bend1"},
+	{18856, "Cage5mx5mx3m"},{18857, "Cage20mx20mx10m"},{18858, "FoamHoop1"},{18859, "QuarterPipe1"},{18860, "skyscrpunbuilt2"},
+	{18861, "scaffoldlift"},{18862, "GarbagePileRamp1"},{18863, "SnowArc1"},{18864, "FakeSnow1"},{18865, "MobilePhone1"},
+	{18866, "MobilePhone2"},{18867, "MobilePhone3"},{18868, "MobilePhone4"},{18869, "MobilePhone5"},{18870, "MobilePhone6"},
+	{18871, "MobilePhone7"},{18872, "MobilePhone8"},{18873, "MobilePhone9"},{18874, "MobilePhone10"},{18875, "Pager1"},
+	{18876, "BigGreenGloop1"},{18877, "FerrisWheelBit"},{18878, "FerrisBaseBit"},{18879, "FerrisCageBit"},{18880, "SpeedCamera1"},
+	{18881, "SkyDivePlatform2"},{18882, "HugeBowl1"},{18883, "HugeBowl2"},{18884, "HugeBowl3"},{18885, "GunVendingMachine1"},
+	{18886, "ElectroMagnet1"},{18887, "ForceField1"},{18888, "ForceField2"},{18889, "ForceField3"},{18890, "Rake1"},
+	{18891, "Bandana1"},{18892, "Bandana2"},{18893, "Bandana3"},{18894, "Bandana4"},{18895, "Bandana5"},
+	{18896, "Bandana6"},{18897, "Bandana7"},{18898, "Bandana8"},{18899, "Bandana9"},{18900, "Bandana10"},
+	{18901, "Bandana11"},{18902, "Bandana12"},{18903, "Bandana13"},{18904, "Bandana14"},{18905, "Bandana15"},
+	{18906, "Bandana16"},{18907, "Bandana17"},{18908, "Bandana18"},{18909, "Bandana19"},{18910, "Bandana20"},
+	{18911, "Mask1"},{18912, "Mask2"},{18913, "Mask3"},{18914, "Mask4"},{18915, "Mask5"},
+	{18916, "Mask6"},{18917, "Mask7"},{18918, "Mask8"},{18919, "Mask9"},{18920, "Mask10"},
+	{18921, "Beret1"},{18922, "Beret2"},{18923, "Beret3"},{18924, "Beret4"},{18925, "Beret5"},
+	{18926, "Hat1"},{18927, "Hat2"},{18928, "Hat3"},{18929, "Hat4"},{18930, "Hat5"},
+	{18931, "Hat6"},{18932, "Hat7"},{18933, "Hat8"},{18934, "Hat9"},{18935, "Hat10"},
+	{18936, "Helmet1"},{18937, "Helmet2"},{18938, "Helmet3"},{18939, "CapBack1"},{18940, "CapBack2"},
+	{18941, "CapBack3"},{18942, "CapBack4"},{18943, "CapBack5"},{18944, "HatBoater1"},{18945, "HatBoater2"},
+	{18946, "HatBoater3"},{18947, "HatBowler1"},{18948, "HatBowler2"},{18949, "HatBowler3"},{18950, "HatBowler4"},
+	{18951, "HatBowler5"},{18952, "BoxingHelmet1"},{18953, "CapKnit1"},{18954, "CapKnit2"},{18955, "CapOverEye1"},
+	{18956, "CapOverEye2"},{18957, "CapOverEye3"},{18958, "CapOverEye4"},{18959, "CapOverEye5"},{18960, "CapRimUp1"},
+	{18961, "CapTrucker1"},{18962, "CowboyHat2"},{18963, "CJElvisHead"},{18964, "SkullyCap1"},{18965, "SkullyCap2"},
+	{18966, "SkullyCap3"},{18967, "HatMan1"},{18968, "HatMan2"},{18969, "HatMan3"},{18970, "HatTiger1"},
+	{18971, "HatCool1"},{18972, "HatCool2"},{18973, "HatCool3"},{18974, "MaskZorro1"},{18975, "Hair2"},
+	{18976, "MotorcycleHelmet2"},{18977, "MotorcycleHelmet3"},{18978, "MotorcycleHelmet4"},{18979, "MotorcycleHelmet5"},{18980, "Concrete1mx1mx25m"},
+	{18981, "Concrete1mx25mx25m"},{18982, "Tube100m3"},{18983, "Tube100m4"},{18984, "Tube100m5"},{18985, "Tube100m6"},
+	{18986, "TubeToPipe1"},{18987, "Tube25m1"},{18988, "Tube25mCutEnd1"},{18989, "Tube25m45Bend1"},{18990, "Tube25m90Bend1"},
+	{18991, "Tube25m180Bend1"},{18992, "Tube10m45Bend1"},{18993, "Tube10m90Bend1"},{18994, "Tube10m180Bend1"},{18995, "Tube5m1"},
+	{18996, "Tube5m45Bend1"},{18997, "Tube1m1"},{18998, "Tube200m1"},{18999, "Tube200mBendy1"},{19000, "Tube200mBulge1"},
+	{19001, "VCWideLoop1"},{19001, "VCWideLoop10"},{19002, "FireHoop1"},{19003, "LAOfficeFloors1"},{19003, "RampT5"},
+	{19004, "RoundBuilding1"},{19005, "RampT4"},{19006, "GlassesType1"},{19007, "GlassesType2"},{19008, "GlassesType3"},
+	{19009, "GlassesType4"},{19010, "GlassesType5"},{19011, "GlassesType6"},{19012, "GlassesType7"},{19013, "GlassesType8"},
+	{19014, "GlassesType9"},{19015, "GlassesType10"},{19016, "GlassesType11"},{19017, "GlassesType12"},{19018, "GlassesType13"},
+	{19019, "GlassesType14"},{19020, "GlassesType15"},{19021, "GlassesType16"},{19022, "GlassesType17"},{19023, "GlassesType18"},
+	{19024, "GlassesType19"},{19025, "GlassesType20"},{19026, "GlassesType21"},{19027, "GlassesType22"},{19028, "GlassesType23"},
+	{19029, "GlassesType24"},{19030, "GlassesType25"},{19031, "GlassesType26"},{19032, "GlassesType27"},{19033, "GlassesType28"},
+	{19034, "GlassesType29"},{19035, "GlassesType30"},{19036, "HockeyMask1"},{19037, "HockeyMask2"},{19038, "HockeyMask3"},
+	{19039, "WatchType1"},{19040, "WatchType2"},{19041, "WatchType3"},{19042, "WatchType4"},{19043, "WatchType5"},
+	{19044, "WatchType6"},{19045, "WatchType7"},{19046, "WatchType8"},{19047, "WatchType9"},{19048, "WatchType10"},
+	{19049, "WatchType11"},{19050, "WatchType12"},{19051, "WatchType13"},{19052, "WatchType14"},{19053, "WatchType15"},
+	{19054, "XmasBox1"},{19055, "XmasBox2"},{19056, "XmasBox3"},{19057, "XmasBox4"},{19058, "XmasBox5"},
+	{19059, "XmasOrb1"},{19060, "XmasOrb2"},{19061, "XmasOrb3"},{19062, "XmasOrb4"},{19063, "XmasOrb5"},
+	{19064, "SantaHat1"},{19065, "SantaHat2"},{19066, "SantaHat3"},{19067, "HoodyHat1"},{19068, "HoodyHat2"},
+	{19069, "HoodyHat3"},{19070, "WSDown1"},{19071, "WSStraight1"},{19072, "WSBend45Deg1"},{19073, "WSRocky1"},
+	{19074, "Cage20mx20mx10mv2"},{19075, "Cage5mx5mx3mv2"},{19076, "XmasTree1"},{19077, "Hair3"},{19078, "TheParrot1"},
+	{19079, "TheParrot2"},{19080, "LaserPointer2"},{19081, "LaserPointer3"},{19082, "LaserPointer4"},{19083, "LaserPointer5"},
+	{19084, "LaserPointer6"},{19085, "EyePatch1"},{19086, "ChainsawDildo1"},{19087, "Rope1"},{19088, "Rope2"},
+	{19089, "Rope3"},{19090, "PomPomBlue"},{19091, "PomPomRed"},{19092, "PomPomGreen"},{19093, "HardHat2"},
+	{19094, "BurgerShotHat1"},{19095, "CowboyHat1"},{19096, "CowboyHat3"},{19097, "CowboyHat4"},{19098, "CowboyHat5"},
+	{19099, "PoliceCap2"},{19100, "PoliceCap3"},{19101, "ArmyHelmet1"},{19102, "ArmyHelmet2"},{19103, "ArmyHelmet3"},
+	{19104, "ArmyHelmet4"},{19105, "ArmyHelmet5"},{19106, "ArmyHelmet6"},{19107, "ArmyHelmet7"},{19108, "ArmyHelmet8"},
+	{19109, "ArmyHelmet9"},{19110, "ArmyHelmet10"},{19111, "ArmyHelmet11"},{19112, "ArmyHelmet12"},{19113, "SillyHelmet1"},
+	{19114, "SillyHelmet2"},{19115, "SillyHelmet3"},{19116, "PlainHelmet1"},{19117, "PlainHelmet2"},{19118, "PlainHelmet3"},
+	{19119, "PlainHelmet4"},{19120, "PlainHelmet5"},{19121, "BollardLight1"},{19122, "BollardLight2"},{19123, "BollardLight3"},
+	{19124, "BollardLight4"},{19125, "BollardLight5"},{19126, "BollardLight6"},{19127, "BollardLight7"},{19128, "DanceFloor1"},
+	{19129, "DanceFloor2"},{19130, "ArrowType1"},{19131, "ArrowType2"},{19132, "ArrowType3"},{19133, "ArrowType4"},
+	{19134, "ArrowType5"},{19135, "EnExMarker1"},{19136, "Hair4"},{19137, "CluckinBellHat1"},{19138, "PoliceGlasses1"},
+	{19139, "PoliceGlasses2"},{19140, "PoliceGlasses3"},{19141, "SWATHelmet1"},{19142, "SWATArmour1"},{19143, "PinSpotLight1"},
+	{19144, "PinSpotLight2"},{19145, "PinSpotLight3"},{19146, "PinSpotLight4"},{19147, "PinSpotLight5"},{19148, "PinSpotLight6"},
+	{19149, "PinSpotLight7"},{19150, "PinSpotLight8"},{19151, "PinSpotLight9"},{19152, "PinSpotLight10"},{19153, "PinSpotLight11"},
+	{19154, "PinSpotLight12"},{19155, "PinSpotLight13"},{19156, "PinSpotLight14"},{19157, "MetalLightBars1"},{19158, "MetalLightBars2"},
+	{19159, "MirrorBall1"},{19160, "HardHat3"},{19161, "PoliceHat1"},{19162, "PoliceHat2"},{19163, "GimpMask1"},
+	{19164, "GTASAMap1"},{19164, "GTASAMap1vert"},{19165, "GTASAMap2"},{19166, "GTASAMap3"},{19167, "GTASAMap4"},
+	{19168, "GTASAMap5"},{19169, "GTASAMap6"},{19170, "GTASAMap7"},{19171, "GTASAMap8"},{19172, "SAMPPicture1"},
+	{19173, "SAMPPicture2"},{19174, "SAMPPicture3"},{19175, "SAMPPicture4"},{19176, "LSOffice1Door1"},{19177, "MapMarkerNew1"},
+	{19178, "MapMarkerNew2"},{19179, "MapMarkerNew3"},{19180, "MapMarkerNew4"},{19181, "MapMarkerNew5"},{19182, "MapMarkerNew6"},
+	{19183, "MapMarkerNew7"},{19184, "MapMarkerNew8"},{19185, "MapMarkerNew9"},{19186, "MapMarkerNew10"},{19187, "MapMarkerNew11"},
+	{19188, "MapMarkerNew12"},{19189, "MapMarkerNew13"},{19190, "MapMarkerNew14"},{19191, "MapMarkerNew15"},{19192, "MapMarkerNew16"},
+	{19193, "MapMarkerNew17"},{19194, "MapMarkerNew18"},{19195, "MapMarkerNew19"},{19196, "MapMarkerNew20"},{19197, "EnExMarker2"},
+	{19198, "EnExMarker3"},{19199, "LCObservatory"},{19200, "PoliceHelmet1"},{19201, "MapMarker1"},{19202, "MapMarker2"},
+	{19203, "MapMarker3"},{19204, "MapMarker4"},{19205, "MapMarker5"},{19206, "MapMarker6"},{19207, "MapMarker7"},
+	{19208, "MapMarker8"},{19209, "MapMarker9"},{19210, "MapMarker10"},{19211, "MapMarker11"},{19212, "MapMarker12"},
+	{19213, "MapMarker13"},{19214, "MapMarker14"},{19215, "MapMarker15"},{19216, "MapMarker16"},{19217, "MapMarker17"},
+	{19218, "MapMarker18"},{19219, "MapMarker19"},{19220, "MapMarker20"},{19221, "MapMarker21"},{19222, "MapMarker22"},
+	{19223, "MapMarker23"},{19224, "MapMarker24"},{19225, "MapMarker25"},{19226, "MapMarker26"},{19227, "MapMarker27"},
+	{19228, "MapMarker28"},{19229, "MapMarker29"},{19230, "MapMarker30"},{19231, "MapMarker31"},{19232, "MapMarker32"},
+	{19233, "MapMarker33"},{19234, "MapMarker34"},{19235, "MapMarker35"},{19236, "MapMarker36"},{19237, "MapMarker37"},
+	{19238, "MapMarker38"},{19239, "MapMarker39"},{19240, "MapMarker40"},{19241, "MapMarker41"},{19242, "MapMarker42"},
+	{19243, "MapMarker43"},{19244, "MapMarker44"},{19245, "MapMarker45"},{19246, "MapMarker46"},{19247, "MapMarker47"},
+	{19248, "MapMarker48"},{19249, "MapMarker49"},{19250, "MapMarker50"},{19251, "MapMarker51"},{19252, "MapMarker52"},
+	{19253, "MapMarker53"},{19254, "MapMarker54"},{19255, "MapMarker55"},{19256, "MapMarker56"},{19257, "MapMarker57"},
+	{19258, "MapMarker58"},{19259, "MapMarker59"},{19260, "MapMarker60"},{19261, "MapMarker61"},{19262, "MapMarker62"},
+	{19263, "MapMarker63"},{19264, "MapMarker1a"},{19265, "MapMarker1b"},{19266, "MapMarker31a"},{19267, "MapMarker31b"},
+	{19268, "MapMarker31c"},{19269, "MapMarker31d"},{19270, "MapMarkerFire1"},{19271, "MapMarkerLight1"},{19272, "DMCage3"},
+	{19273, "KeypadNonDynamic"},{19274, "Hair5"},{19275, "SAMPLogo2"},{19276, "SAMPLogo3"},{19277, "LiftType1"},
+	{19278, "LiftPlatform1"},{19279, "LCSmallLight1"},{19280, "CarRoofLight1"},{19281, "PointLight1"},{19282, "PointLight2"},
+	{19283, "PointLight3"},{19284, "PointLight4"},{19285, "PointLight5"},{19286, "PointLight6"},{19287, "PointLight7"},
+	{19288, "PointLight8"},{19289, "PointLight9"},{19290, "PointLight10"},{19291, "PointLight11"},{19292, "PointLight12"},
+	{19293, "PointLight13"},{19294, "PointLight14"},{19295, "PointLight15"},{19296, "PointLight16"},{19297, "PointLight17"},
+	{19298, "PointLight18"},{19299, "PointLightMoon1"},{19300, "blankmodel"},{19300, "bridge_liftsec"},{19301, "mp_sfpd_nocell"},
+	{19301, "subbridge01"},{19302, "pd_jail_door01"},{19302, "subbridge07"},{19303, "pd_jail_door02"},{19303, "subbridge19"},
+	{19304, "pd_jail_door_top01"},{19304, "subbridge20"},{19305, "sec_keypad2"},{19305, "subbridge_lift"},{19306, "kmb_goflag2"},
+	{19306, "verticalift_bridg2"},{19307, "kmb_goflag3"},{19307, "verticalift_bridge"},{19308, "taxi01"},{19309, "taxi02"},
+	{19310, "taxi03"},{19311, "taxi04"},{19312, "a51fencing"},{19313, "a51fensin"},{19314, "bullhorns01"},
+	{19315, "deer01"},{19316, "FerrisCageBit01"},{19317, "bassguitar01"},{19318, "flyingv01"},{19319, "warlock01"},
+	{19320, "pumpkin01"},{19321, "cuntainer"},{19322, "mallb_laW02"},{19323, "lsmall_shop01"},{19324, "kmb_atm1_2"},
+	{19325, "lsmall_window01"},{19326, "7_11_sign01"},{19327, "7_11_sign02"},{19328, "7_11_sign03"},{19329, "7_11_sign04"},
+	{19330, "fire_hat01"},{19331, "fire_hat02"},{19332, "Hot_Air_Balloon01"},{19333, "Hot_Air_Balloon02"},{19334, "Hot_Air_Balloon03"},
+	{19335, "Hot_Air_Balloon04"},{19336, "Hot_Air_Balloon05"},{19337, "Hot_Air_Balloon06"},{19338, "Hot_Air_Balloon07"},{19339, "coffin01"},
+	{19340, "cslab01"},{19341, "easter_egg01"},{19342, "easter_egg02"},{19343, "easter_egg03"},{19344, "easter_egg04"},
+	{19345, "easter_egg05"},{19346, "hotdog01"},{19347, "badge01"},{19348, "cane01"},{19349, "monocle01"},
+	{19350, "moustache01"},{19351, "moustache02"},{19352, "tophat01"},{19353, "wall001"},{19354, "wall002"},
+	{19355, "wall003"},{19356, "wall004"},{19357, "wall005"},{19358, "wall006"},{19359, "wall007"},
+	{19360, "wall008"},{19361, "wall009"},{19362, "wall010"},{19363, "wall011"},{19364, "wall012"},
+	{19365, "wall013"},{19366, "wall014"},{19367, "wall015"},{19368, "wall016"},{19369, "wall017"},
+	{19370, "wall018"},{19371, "wall019"},{19372, "wall020"},{19373, "wall021"},{19374, "wall022"},
+	{19375, "wall023"},{19376, "wall024"},{19377, "wall025"},{19378, "wall026"},{19379, "wall027"},
+	{19380, "wall028"},{19381, "wall029"},{19382, "wall030"},{19383, "wall031"},{19384, "wall032"},
+	{19385, "wall033"},{19386, "wall034"},{19387, "wall035"},{19388, "wall036"},{19389, "wall037"},
+	{19390, "wall038"},{19391, "wall039"},{19392, "wall040"},{19393, "wall041"},{19394, "wall042"},
+	{19395, "wall043"},{19396, "wall044"},{19397, "wall045"},{19398, "wall046"},{19399, "wall047"},
+	{19400, "wall048"},{19401, "wall049"},{19402, "wall050"},{19403, "wall051"},{19404, "wall052"},
+	{19405, "wall053"},{19406, "wall054"},{19407, "wall055"},{19408, "wall056"},{19409, "wall057"},
+	{19410, "wall058"},{19411, "wall059"},{19412, "wall060"},{19413, "wall061"},{19414, "wall062"},
+	{19415, "wall063"},{19416, "wall064"},{19417, "wall065"},{19418, "handcuffs01"},{19419, "police_lights01"},
+	{19420, "police_lights02"},{19421, "headphones01"},{19422, "headphones02"},{19423, "headphones03"},{19424, "headphones04"},
+	{19425, "speed_bump01"},{19426, "wall066"},{19427, "wall067"},{19428, "wall068"},{19429, "wall069"},
+	{19430, "wall070"},{19431, "wall071"},{19432, "wall072"},{19433, "wall073"},{19434, "wall074"},
+	{19435, "wall075"},{19436, "wall076"},{19437, "wall077"},{19438, "wall078"},{19439, "wall079"},
+	{19440, "wall080"},{19441, "wall081"},{19442, "wall082"},{19443, "wall083"},{19444, "wall084"},
+	{19445, "wall085"},{19446, "wall086"},{19447, "wall087"},{19448, "wall088"},{19449, "wall089"},
+	{19450, "wall090"},{19451, "wall091"},{19452, "wall092"},{19453, "wall093"},{19454, "wall094"},
+	{19455, "wall095"},{19456, "wall096"},{19457, "wall097"},{19458, "wall098"},{19459, "wall099"},
+	{19460, "wall100"},{19461, "wall101"},{19462, "wall102"},{19463, "wall103"},{19464, "wall104"},
+	{19465, "wall105"},{19466, "window001"},{19467, "vehicle_barrier01"},{19468, "bucket01"},{19469, "scarf01"},
+	{19470, "forsale01"},{19471, "forsale02"},{19472, "gasmask01"},{19473, "grassplant01"},{19474, "pokertable01"},
+	{19475, "Plane001"},{19476, "Plane002"},{19477, "Plane003"},{19478, "Plane004"},{19479, "Plane005"},
+	{19480, "Plane006"},{19481, "Plane007"},{19482, "Plane008"},{19483, "Plane009"},{19484, "landbit01_01"},
+	{19485, "Groundbit84_SFS_01"},{19486, "burg_SFS_01"},{19486, "SFHarryPlums1"},{19487, "tophat02"},{19488, "HatBowler6"},
+	{19489, "sfhouse1"},{19490, "sfhouse1int"},{19491, "sfhouse2"},{19492, "sfhouse2int"},{19493, "sfhouse3"},
+	{19494, "sfhouse3int"},{19495, "sfhouse4"},{19496, "sfhouse4int"},{19497, "lvhouse1"},{19498, "lvhouse1int"},
+	{19499, "lvhouse2"},{19500, "lvhouse2int"},{19501, "lvhouse3"},{19502, "lvhouse3int"},{19503, "lvhouse4"},
+	{19504, "lvhouse4int"},{19505, "lshouse1"},{19506, "lshouse1int"},{19507, "lshouse2"},{19508, "lshouse2int"},
+	{19509, "lshouse3"},{19510, "lshouse3int"},{19511, "lshouse4"},{19512, "lshouse4int"},{19513, "whitephone"},
+	{19514, "SWATHgrey"},{19515, "SWATAgrey"},{19516, "Hair2_nc"},{19517, "Hair3_nc"},{19518, "Hair5_nc"},
+	{19519, "Hair1_nc"},{19520, "pilotHat01"},{19521, "policeHat01"},{19522, "property_red"},{19523, "property_orange"},
+	{19524, "property_yellow"},{19525, "WeddingCake1"},{19526, "ATMFixed"},{19527, "Cauldron1"},{19528, "WitchesHat1"},
+	{19529, "Plane125x125Grass1"},{19530, "Plane125x125Sand1"},{19531, "Plane125x125Conc1"},{19532, "15x125Road1"},{19533, "15x62_5Road1"},
+	{19534, "15x15RoadInters1"},{19535, "15x15RoadInters2"},{19536, "Plane62_5x125Grass1"},{19537, "Plane62_5x125Sand1"},{19538, "Plane62_5x125Conc1"},
+	{19539, "Edge62_5x62_5Grass1"},{19540, "Edge62_5x62_5Grass2"},{19541, "Edge62_5x15Grass1"},{19542, "Edge62_5x125Grass1"},{19543, "Plane62_5x15Grass1"},
+	{19544, "Plane62_5x15Sand1"},{19545, "Plane62_5x15Conc1"},{19546, "Edge62_5x62_5Grass3"},{19547, "Hill125x125Grass1"},{19548, "Hill125x125Sand1"},
+	{19549, "Edge62_5x32_5Grass1"},{19550, "Plane125x125Grass2"},{19551, "Plane125x125Sand2"},{19552, "Plane125x125Conc2"},{19553, "StrawHat1"},
+	{19554, "Beanie1"},{19555, "BoxingGloveL"},{19556, "BoxingGloveR"},{19557, "SexyMask1"},{19558, "PizzaHat1"},
+	{19559, "HikerBackpack1"},{19560, "MeatTray1"},{19561, "CerealBox1"},{19562, "CerealBox2"},{19563, "JuiceBox1"},
+	{19564, "JuiceBox2"},{19565, "IceCreamBarsBox1"},{19566, "FishFingersBox1"},{19567, "IcecreamContainer1"},{19568, "IcecreamContainer2"},
+	{19569, "MilkCarton1"},{19570, "MilkBottle1"},{19571, "PizzaBox1"},{19572, "PisshBox1"},{19573, "BriquettesBag1"},
+	{19574, "Orange1"},{19575, "Apple1"},{19576, "Apple2"},{19577, "Tomato1"},{19578, "Banana1"},
+	{19579, "BreadLoaf1"},{19580, "Pizza1"},{19581, "MarcosFryingPan1"},{19582, "MarcosSteak1"},{19583, "MarcosKnife1"},
+	{19584, "MarcosSaucepan1"},{19585, "MarcosPan1"},{19586, "MarcosSpatula1"},{19587, "PlasticTray1"},{19588, "FootBridge1"},
+	{19589, "RubbishSkipEmpty1"},{19590, "WooziesSword1"},{19591, "WooziesHandFan1"},{19592, "ShopBasket1"},{19593, "ZomboTechBuilding1"},
+	{19594, "ZomboTechLab1"},{19595, "LSAppartments1"},{19597, "LSBeachSideInsides"},{19598, "SFBuilding1Outside"},{19599, "SFBuilding1Inside"},
+	{19600, "SFBuilding1Land"},{19601, "SnowPlow1"},{19602, "Landmine1"},{19603, "WaterPlane1"},{19604, "WaterPlane2"},
+	{19605, "EnExMarker4-2"},{19606, "EnExMarker4-3"},{19607, "EnExMarker4-4"},{19608, "WoodenStage1"},{19609, "DrumKit1"},
+	{19610, "Microphone1"},{19611, "MicrophoneStand1"},{19612, "GuitarAmp1"},{19613, "GuitarAmp2"},{19614, "GuitarAmp3"},
+	{19615, "GuitarAmp4"},{19616, "GuitarAmp5"},{19617, "GoldRecord1"},{19618, "Safe1"},{19619, "SafeDoor1"},
+	{19620, "LightBar1"},{19621, "OilCan1"},{19622, "Broom1"},{19623, "Camera1"},{19624, "Case1"},
+	{19625, "Ciggy1"},{19626, "Spade1"},{19627, "Wrench1"},{19628, "MRoadBend90Banked1"},{19629, "MRoadBend90Banked2"},
+	{19630, "Fish1"},{19631, "SledgeHammer1"},{19632, "FireWood1"},{19633, "Ramp360Degree1"},{19634, "Ramp360Degree2"},
+	{19635, "Ramp360Degree3"},{19636, "RedApplesCrate1"},{19637, "GreenApplesCrate1"},{19638, "OrangesCrate1"},{19639, "EmptyCrate1"},
+	{19640, "EmptyShopShelf1"},{19641, "FenceSection1"},{19642, "TubeSeg10m1"},{19643, "TubeSeg10m2a"},{19644, "TubeSeg10m2b"},
+	{19645, "TubeSeg25m1"},{19646, "TubeHalf10m1"},{19647, "TubeHalf10mJoin1a"},{19648, "TubeHalf10mJoin1b"},{19649, "TubeHalf50m1"},
+	{19650, "TubeFlat25x25m1"},{19651, "TubeHalfSpiral1a"},{19652, "TubeHalfSpiral1b"},{19653, "TubeHalfSpiral2a"},{19654, "TubeHalfSpiral2b"},
+	{19655, "TubeHalfSpiral3a"},{19656, "TubeHalfSpiral3b"},{19657, "TubeHalfSpiral4a"},{19658, "TubeHalfSpiral4b"},{19659, "TubeHalf180Bend1a"},
+	{19660, "TubeHalf180Bend1b"},{19661, "TubeHalf90Bend1a"},{19662, "TubeHalf90Bend1b"},{19663, "TubeHalf50mDip1"},{19664, "TubeHalf50mBump1"},
+	{19665, "TubeHalfLoop1a"},{19666, "TubeHalfLoop1b"},{19667, "TubeHalfLoop2a"},{19668, "TubeHalfLoop2b"},{19669, "TubeHalfBowl1"},
+	{19670, "TubeSupport1"},{19671, "TubeSupport2"},{19672, "TubeHalfLight1"},{19673, "TubeHalf5Bend1a"},{19674, "TubeHalf5Bend1b"},
+	{19675, "TubeHalf5Bend2a"},{19676, "TubeHalf5Bend2b"},{19677, "TubeHalfTwist1a"},{19678, "alaman1"},{19678, "TubeHalfTwist1b"},
+	{19679, "TubeHalfTwist2a"},{19680, "TubeHalfTwist2b"},{19681, "TubeHalf45Bend1a"},{19682, "TubeHalf45Bend1b"},{19683, "TubeHalf15Bend1a"},
+	{19684, "TubeHalf15Bend1b"},{19685, "TubeHalf15Bend2a"},{19686, "TubeHalf15Bend2b"},{19687, "TubeHalf25m1"},{19688, "TubeHalf45Bend3"},
+	{19689, "TubeHalf45Bend4"},{19690, "TubeHalfNtoMJoin1a"},{19691, "TubeHalfNtoMJoin1b"},{19692, "MTubeSeg5m1"},{19693, "MTubeSeg5m2a"},
+	{19694, "MTubeSeg5m2b"},{19695, "MTubeSeg12_5m1"},{19696, "MTubeHalf10m1"},{19697, "MTubeHalf5mJoin1a"},{19698, "MTubeHalf5mJoin1b"},
+	{19699, "MTubeHalf25m1"},{19700, "MTubeFlt12_5x12_5m1"},{19701, "MTubeHalfSpiral1a"},{19702, "MTubeHalfSpiral1b"},{19703, "MTubeHalfSpiral2a"},
+	{19704, "MTubeHalfSpiral2b"},{19705, "MTubeHalfSpiral3a"},{19706, "MTubeHalfSpiral3b"},{19707, "MTubeHalfSpiral4a"},{19708, "MTubeHalfSpiral4b"},
+	{19709, "MTubeHalf180Bend1a"},{19710, "MTubeHalf180Bend1b"},{19711, "MTubeHalf90Bend1a"},{19712, "MTubeHalf90Bend1b"},{19713, "MTubeHalf25mDip1"},
+	{19714, "MTubeHalf25mBump1"},{19715, "MTubeHalfBowl1"},{19716, "MTubeSupport1"},{19717, "MTubeSupport2"},{19718, "MTubeHalfLight1"},
+	{19719, "MTubeHalf5Bend1a"},{19720, "MTubeHalf5Bend1b"},{19721, "MTubeHalf5Bend2a"},{19722, "MTubeHalf5Bend2b"},{19723, "MTubeHalf45Bend1a"},
+	{19724, "MTubeHalf45Bend1b"},{19725, "MTubeHalf15Bend1a"},{19726, "MTubeHalf15Bend1b"},{19727, "MTubeHalf15Bend2a"},{19728, "MTubeHalf15Bend2b"},
+	{19729, "MTubeHalf45Bend3"},{19730, "MTubeHalf45Bend4"},{19731, "TubeHalfMtoSJoin1a"},{19732, "TubeHalfMtoSJoin1B"},{19733, "STubeSeg5m1"},
+	{19734, "STubeSeg5m2a"},{19735, "STubeSeg5m2b"},{19736, "STubeSeg6_25m1"},{19737, "STubeHalf10m1"},{19738, "STubeHalf5mJoin1a"},
+	{19739, "STubeHalf5mJoin1b"},{19740, "STubeHalf12_5m1"},{19741, "STubeFlat6_25m1"},{19742, "STubeHalfSpiral1a"},{19743, "STubeHalfSpiral1b"},
+	{19744, "STubeHalfSpiral2a"},{19745, "STubeHalfSpiral2b"},{19746, "STubeHalfSpiral3a"},{19747, "STubeHalfSpiral3b"},{19748, "STubeHalfSpiral4a"},
+	{19749, "STubeHalfSpiral4b"},{19750, "STubeHalf180Bend1a"},{19751, "STubeHalf180Bend1b"},{19752, "STubeHalf90Bend1a"},{19753, "STubeHalf90Bend1b"},
+	{19754, "STubeHalf12_5mDip1"},{19755, "STubeHalf12_5mBump1"},{19756, "STubeHalfBowl1"},{19757, "STubeSupport1"},{19758, "STubeSupport2"},
+	{19759, "STubeHalfLight1"},{19760, "STubeHalf5Bend1a"},{19761, "STubeHalf5Bend1b"},{19762, "STubeHalf5Bend2a"},{19763, "STubeHalf5Bend2b"},
+	{19764, "STubeHalf45Bend1a"},{19765, "STubeHalf45Bend1b"},{19766, "STubeHalf15Bend1a"},{19767, "STubeHalf15Bend1b"},{19768, "STubeHalf15Bend2a"},
+	{19769, "STubeHalf15Bend2b"},{19770, "STubeHalf45Bend3"},{19771, "STubeHalf45Bend4"},{19772, "CrushedCarCube1"},{19773, "GunHolster1"},
+	{19774, "PoliceBadge2"},{19775, "PoliceBadge3"},{19776, "FBIIDCard1"},{19777, "FBILogo1"},{19778, "InsigniaDetective1"},
+	{19779, "InsigniaDetective2"},{19780, "InsigniaDetective3"},{19781, "InsigniaSergeant1"},{19782, "InsigniaSergeant2"},{19783, "InsigniaPOfficer2"},
+	{19784, "InsigniaPOfficer3"},{19785, "InsigniaSeniorLdOff"},{19786, "LCDTVBig1"},{19787, "LCDTV1"},{19788, "15x15RoadCorner1"},
+	{19789, "Cube1mx1m"},{19790, "Cube5mx5m"},{19791, "Cube10mx10m"},{19792, "SAMPKeycard1"},{19793, "FireWoodLog1"},
+	{19794, "LSPrisonWalls1"},{19795, "LSPrisonGateEast"},{19796, "LSPrisonGateSouth"},{19797, "PoliceVisorStrobe1"},{19798, "LSACarPark1"},
+	{19799, "CaligulasVaultDoor"},{19800, "LSBCarPark1"},{19801, "Balaclava1"},{19802, "GenDoorINT04Static"},{19803, "TowTruckLights1"},
+	{19804, "Padlock1"},{19805, "Whiteboard1"},{19806, "Chandelier1"},{19807, "Telephone1"},{19808, "Keyboard1"},
+	{19809, "MetalTray1"},{19810, "StaffOnlySign1"},{19811, "BurgerBox1"},{19812, "BeerKeg1"},{19813, "ElectricalOutlet1"},
+	{19814, "ElectricalOutlet2"},{19815, "ToolBoard1"},{19816, "OxygenCylinder1"},{19817, "CarFixerRamp1"},{19818, "WineGlass1"},
+	{19819, "CocktailGlass1"},{19820, "AlcoholBottle1"},{19821, "AlcoholBottle2"},{19822, "AlcoholBottle3"},{19823, "AlcoholBottle4"},
+	{19824, "AlcoholBottle5"},{19825, "SprunkClock1"},{19826, "LightSwitch1"},{19827, "LightSwitch2"},{19828, "LightSwitch3Off"},
+	{19829, "LightSwitch3On"},{19830, "Blender1"},{19831, "Barbeque1"},{19832, "AmmoBox1"},{19833, "Cow1"},
+	{19834, "PoliceLineTape1"},{19835, "CoffeeCup1"},{19836, "BloodPool1"},{19837, "GrassClump1"},{19838, "GrassClump2"},
+	{19839, "GrassClump3"},{19840, "WaterFall1"},{19841, "WaterFall2"},{19842, "WaterFallWater1"},{19843, "MetalPanel1"},
+	{19844, "MetalPanel2"},{19845, "MetalPanel3"},{19846, "MetalPanel4"},{19847, "LegHam1"},{19848, "CargoBobPlatform1"},
+	{19849, "MIHouse1Land"},{19850, "MIHouse1Land2"},{19851, "MIHouse1Land3"},{19852, "MIHouse1Land4"},{19853, "MIHouse1Land5"},
+	{19854, "MIHouse1Outside"},{19855, "MIHouse1Inside"},{19856, "MIHouse1IntWalls1"},{19857, "MIHouse1Door1"},{19858, "MIHouse1Door2"},
+	{19859, "MIHouse1Door3"},{19860, "MIHouse1Door4"},{19861, "MIHouse1GarageDoor1"},{19862, "MIHouse1GarageDoor2"},{19863, "MIHouse1GarageDoor3"},
+	{19864, "MIHouse1GarageDoor4"},{19865, "MIFenceWood1"},{19866, "MIFenceBlocks1"},{19867, "MailBox1"},{19868, "MeshFence1"},
+	{19869, "MeshFence2"},{19870, "MetalGate1"},{19871, "CordonStand1"},{19872, "CarFixerRamp2"},{19873, "ToiletPaperRoll1"},
+	{19874, "SoapBar1"},{19875, "CRDoor01New"},{19876, "DillimoreGasExt1"},{19877, "DillimoreGasInt1"},{19878, "Skateboard1"},
+	{19879, "WellsFargoBuild1"},{19880, "WellsFargoGrgDoor1"},{19881, "KylieBarnFixed1"},{19882, "MarcosSteak2"},{19883, "BreadSlice1"},
+	{19884, "WSBend45Deg2"},{19885, "WSStraight2"},{19886, "WSStraight3"},{19887, "WSStart1"},{19888, "WSBend45Deg3"},
+	{19889, "WSBend45Deg4"},{19890, "WSStraight4"},{19891, "WSTubeJoiner1"},{19892, "WSRoadJoiner1"},{19893, "LaptopSAMP1"},
+	{19894, "LaptopSAMP2"},{19895, "LadderFireTruckLts1"},{19896, "CigarettePack1"},{19897, "CigarettePack2"},{19898, "OilFloorStain1"},
+	{19899, "ToolCabinet1"},{19900, "ToolCabinet2"},{19901, "AnimTube"},{19902, "EnExMarker4"},{19903, "MechanicComputer1"},
+	{19904, "ConstructionVest1"},{19905, "A51Building1"},{19906, "A51Building1GrgDoor"},{19907, "A51Building2"},{19908, "A51Building2GrgDoor"},
+	{19909, "A51Building3"},{19910, "A51Building3GrgDoor"},{19911, "A51HangarDoor1"},{19912, "SAMPMetalGate1"},{19913, "SAMPBigFence1"},
+	{19914, "CutsceneBat1"},{19915, "CutsceneCooker1"},{19916, "CutsceneFridge1"},{19917, "CutsceneEngine1"},{19918, "CutsceneBox1"},
+	{19919, "CutscenePerch1"},{19920, "CutsceneRemote1"},{19921, "CutsceneToolBox1"},{19922, "MKTable1"},{19923, "MKIslandCooker1"},
+	{19924, "MKExtractionHood1"},{19925, "MKWorkTop1"},{19926, "MKWorkTop2"},{19927, "MKWorkTop3"},{19928, "MKWorkTop4"},
+	{19929, "MKWorkTop5"},{19930, "MKWorkTop6"},{19931, "MKWorkTop7"},{19932, "MKWallOvenCabinet1"},{19933, "MKWallOven1"},
+	{19934, "MKCupboard1"},{19935, "MKCupboard2"},{19936, "MKCupboard3"},{19937, "MKCupboard4"},{19938, "MKShelf1"},
+	{19939, "MKShelf2"},{19940, "MKShelf3"},{19941, "GoldBar1"},{19942, "PoliceRadio1"},{19943, "StonePillar1"},
+	{19944, "BodyBag1"},{19945, "CPSize16Red"},{19946, "CPSize16Green"},{19947, "CPSize16Blue"},{19948, "SAMPRoadSign1"},
+	{19949, "SAMPRoadSign2"},{19950, "SAMPRoadSign3"},{19951, "SAMPRoadSign4"},{19952, "SAMPRoadSign5"},{19953, "SAMPRoadSign6"},
+	{19954, "SAMPRoadSign7"},{19955, "SAMPRoadSign8"},{19956, "SAMPRoadSign9"},{19957, "SAMPRoadSign10"},{19958, "SAMPRoadSign11"},
+	{19959, "SAMPRoadSign12"},{19960, "SAMPRoadSign13"},{19961, "SAMPRoadSign14"},{19962, "SAMPRoadSign15"},{19963, "SAMPRoadSign16"},
+	{19964, "SAMPRoadSign17"},{19965, "SAMPRoadSign18"},{19966, "SAMPRoadSign19"},{19967, "SAMPRoadSign20"},{19968, "SAMPRoadSign21"},
+	{19969, "SAMPRoadSign22"},{19970, "SAMPRoadSign23"},{19971, "SAMPRoadSign24"},{19972, "SAMPRoadSign25"},{19973, "SAMPRoadSign26"},
+	{19974, "SAMPRoadSign27"},{19975, "SAMPRoadSign28"},{19976, "SAMPRoadSign29"},{19977, "SAMPRoadSign30"},{19978, "SAMPRoadSign31"},
+	{19979, "SAMPRoadSign32"},{19980, "SAMPRoadSign33"},{19981, "SAMPRoadSign34"},{19982, "SAMPRoadSign35"},{19983, "SAMPRoadSign36"},
+	{19984, "SAMPRoadSign37"},{19985, "SAMPRoadSign38"},{19986, "SAMPRoadSign39"},{19987, "SAMPRoadSign40"},{19988, "SAMPRoadSign41"},
+	{19989, "SAMPRoadSign42"},{19990, "SAMPRoadSign43"},{19991, "SAMPRoadSign44"},{19992, "SAMPRoadSign45"},{19993, "CutsceneBowl1"},
+	{19994, "CutsceneChair1"},{19995, "CutsceneAmmoClip1"},{19996, "CutsceneFoldChair1"},{19997, "CutsceneGrgTable1"},{19998, "CutsceneLighterFl"},
+	{19999, "CutsceneChair2"},{0, "N/A"}
+};
+
+stock IsValidModel(modelid)
+{
+	for(new i = 0; i < sizeof(ObjectList); i++)
+	{
+	    if(ObjectList[i][oID] == modelid) return 1;
+	}
+	if(IsUnListedValidModel(modelid)) return 1;
+	return 0;
+}
+
+tsfunc GetModelArray(modelid)
+{
+	for(new i = 0; i < sizeof(ObjectList); i++)
+	{
+	    if(ObjectList[i][oID] == modelid) return i;
+	}
+	
+	return -1;
+}
+
+tsfunc GetModelName(modelid) 
+{
+	new temp[50] = "N/A";
+	for(new i = 0; i < sizeof(ObjectList); i++)
+	{
+	    if(ObjectList[i][oID] == modelid) 
+		{
+			format(temp, 50, "%s", ObjectList[i][oName]);
+			break;
+		}
+	}
+	
+	return temp;
+}
+
+stock IsUnListedValidModel(modelid)
+{
+	static modeldat[] =
+	{
+		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128,
+		-515899393, -134217729, -1, -1, 33554431, -1, -1, -1, -14337, -1, -33,
+		127, 0, 0, 0, 0, 0, -8388608, -1, -1, -1, -16385, -1, -1, -1, -1, -1,
+		-1, -1, -33, -1, -771751937, -1, -9, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+		-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+		-1, -1, -1, -1, -1, -1, -1, -1, 33554431, -25, -1, -1, -1, -1, -1, -1,
+		-1073676289, -2147483648, 34079999, 2113536, -4825600, -5, -1, -3145729,
+		-1, -16777217, -63, -1, -1, -1, -1, -201326593, -1, -1, -1, -1, -1,
+		-257, -1, 1073741823, -133122, -1, -1, -65, -1, -1, -1, -1, -1, -1,
+		-2146435073, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1073741823, -64, -1,
+		-1, -1, -1, -2635777, 134086663, 0, -64, -1, -1, -1, -1, -1, -1, -1,
+		-536870927, -131069, -1, -1, -1, -1, -1, -1, -1, -1, -16384, -1,
+		-33554433, -1, -1, -1, -1, -1, -1610612737, 524285, -128, -1,
+		2080309247, -1, -1, -1114113, -1, -1, -1, 66977343, -524288, -1, -1, -1,
+		-1, -2031617, -1, 114687, -256, -1, -4097, -1, -4097, -1, -1,
+		1010827263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32768, -1, -1, -1, -1, -1,
+		2147483647, -33554434, -1, -1, -49153, -1148191169, 2147483647,
+		-100781080, -262145, -57, 134217727, -8388608, -1, -1, -1, -1, -1, -1,
+		-1, -1, -1, -1, -1, -1, -1, -1, -1048577, -1, -449, -1017, -1, -1, -1,
+		-1, -1, -1, -1, -1, -1, -1, -1, -1835009, -2049, -1, -1, -1, -1, -1, -1,
+		-8193, -1, -536870913, -1, -1, -1, -1, -1, -87041, -1, -1, -1, -1, -1,
+		-1, -209860, -1023, -8388609, -2096897, -1, -1048577, -1, -1, -1, -1,
+		-1, -1, -897, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1610612737,
+		-3073, -28673, -1, -1, -1, -1537, -1, -1, -13, -1, -1, -1, -1, -1985,
+		-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1056964609, -1, -1, -1,
+		-1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+		-236716037, -1, -1, -1, -1, -1, -1, -1, -536870913, 3, 0, 0, 0, 0, 0, 0,
+		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+		0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+		-1, -1, -1, -1, -1, -2097153, -2109441, -1, 201326591, -4194304, -1, -1,
+		-241, -1, -1, -1, -1, -1, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+		0, -32768, -1, -1, -1, -2, -671096835, -1, -8388609, -66323585, -13,
+		-1793, -32257, -247809, -1, -1, -513, 16252911, 0, 0, 0, -131072,
+		33554383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+		0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+		-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8356095, 0, 0, 0, 0, 0,
+		0, -256, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+		-268435449, -1, -1, -2049, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+		92274627, -65536, -2097153, -268435457, 591191935, 1, 0, -16777216, -1,
+		-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127
+	};
+	if ((modelid >= 0) && ((modelid / 32) < sizeof (modeldat)) && (modeldat[modelid / 32] & (1 << (modelid % 32))))
+	{
+		return 1;
+	}
+	
+	if(-30000 < modelid <= -1000) // DL-SUPPORT
+	{
+		return 1;
+	}
+	
+	return 0;
+}

+ 52 - 0
Texture-Studio-master/filterscripts/tstudio/vehiclecolors.pwn

@@ -0,0 +1,52 @@
+
+new VehicleColorList[4096];
+
+new VehicleColoursTableRGBA[256] = {
+	// The existing colours from San Andreas
+	0x000000FF, 0xF5F5F5FF, 0x2A77A1FF, 0x840410FF, 0x263739FF, 0x86446EFF, 0xD78E10FF, 0x4C75B7FF, 0xBDBEC6FF, 0x5E7072FF,
+	0x46597AFF, 0x656A79FF, 0x5D7E8DFF, 0x58595AFF, 0xD6DAD6FF, 0x9CA1A3FF, 0x335F3FFF, 0x730E1AFF, 0x7B0A2AFF, 0x9F9D94FF,
+	0x3B4E78FF, 0x732E3EFF, 0x691E3BFF, 0x96918CFF, 0x515459FF, 0x3F3E45FF, 0xA5A9A7FF, 0x635C5AFF, 0x3D4A68FF, 0x979592FF,
+	0x421F21FF, 0x5F272BFF, 0x8494ABFF, 0x767B7CFF, 0x646464FF, 0x5A5752FF, 0x252527FF, 0x2D3A35FF, 0x93A396FF, 0x6D7A88FF,
+	0x221918FF, 0x6F675FFF, 0x7C1C2AFF, 0x5F0A15FF, 0x193826FF, 0x5D1B20FF, 0x9D9872FF, 0x7A7560FF, 0x989586FF, 0xADB0B0FF,
+	0x848988FF, 0x304F45FF, 0x4D6268FF, 0x162248FF, 0x272F4BFF, 0x7D6256FF, 0x9EA4ABFF, 0x9C8D71FF, 0x6D1822FF, 0x4E6881FF,
+	0x9C9C98FF, 0x917347FF, 0x661C26FF, 0x949D9FFF, 0xA4A7A5FF, 0x8E8C46FF, 0x341A1EFF, 0x6A7A8CFF, 0xAAAD8EFF, 0xAB988FFF,
+	0x851F2EFF, 0x6F8297FF, 0x585853FF, 0x9AA790FF, 0x601A23FF, 0x20202CFF, 0xA4A096FF, 0xAA9D84FF, 0x78222BFF, 0x0E316DFF,
+	0x722A3FFF, 0x7B715EFF, 0x741D28FF, 0x1E2E32FF, 0x4D322FFF, 0x7C1B44FF, 0x2E5B20FF, 0x395A83FF, 0x6D2837FF, 0xA7A28FFF,
+	0xAFB1B1FF, 0x364155FF, 0x6D6C6EFF, 0x0F6A89FF, 0x204B6BFF, 0x2B3E57FF, 0x9B9F9DFF, 0x6C8495FF, 0x4D8495FF, 0xAE9B7FFF,
+	0x406C8FFF, 0x1F253BFF, 0xAB9276FF, 0x134573FF, 0x96816CFF, 0x64686AFF, 0x105082FF, 0xA19983FF, 0x385694FF, 0x525661FF,
+	0x7F6956FF, 0x8C929AFF, 0x596E87FF, 0x473532FF, 0x44624FFF, 0x730A27FF, 0x223457FF, 0x640D1BFF, 0xA3ADC6FF, 0x695853FF,
+	0x9B8B80FF, 0x620B1CFF, 0x5B5D5EFF, 0x624428FF, 0x731827FF, 0x1B376DFF, 0xEC6AAEFF, 0x000000FF,
+	// SA-MP extended colours (0.3x)
+	0x177517FF, 0x210606FF, 0x125478FF, 0x452A0DFF, 0x571E1EFF, 0x010701FF, 0x25225AFF, 0x2C89AAFF, 0x8A4DBDFF, 0x35963AFF,
+	0xB7B7B7FF, 0x464C8DFF, 0x84888CFF, 0x817867FF, 0x817A26FF, 0x6A506FFF, 0x583E6FFF, 0x8CB972FF, 0x824F78FF, 0x6D276AFF,
+	0x1E1D13FF, 0x1E1306FF, 0x1F2518FF, 0x2C4531FF, 0x1E4C99FF, 0x2E5F43FF, 0x1E9948FF, 0x1E9999FF, 0x999976FF, 0x7C8499FF,
+	0x992E1EFF, 0x2C1E08FF, 0x142407FF, 0x993E4DFF, 0x1E4C99FF, 0x198181FF, 0x1A292AFF, 0x16616FFF, 0x1B6687FF, 0x6C3F99FF,
+	0x481A0EFF, 0x7A7399FF, 0x746D99FF, 0x53387EFF, 0x222407FF, 0x3E190CFF, 0x46210EFF, 0x991E1EFF, 0x8D4C8DFF, 0x805B80FF,
+	0x7B3E7EFF, 0x3C1737FF, 0x733517FF, 0x781818FF, 0x83341AFF, 0x8E2F1CFF, 0x7E3E53FF, 0x7C6D7CFF, 0x020C02FF, 0x072407FF,
+	0x163012FF, 0x16301BFF, 0x642B4FFF, 0x368452FF, 0x999590FF, 0x818D96FF, 0x99991EFF, 0x7F994CFF, 0x839292FF, 0x788222FF,
+	0x2B3C99FF, 0x3A3A0BFF, 0x8A794EFF, 0x0E1F49FF, 0x15371CFF, 0x15273AFF, 0x375775FF, 0x060820FF, 0x071326FF, 0x20394BFF,
+	0x2C5089FF, 0x15426CFF, 0x103250FF, 0x241663FF, 0x692015FF, 0x8C8D94FF, 0x516013FF, 0x090F02FF, 0x8C573AFF, 0x52888EFF,
+	0x995C52FF, 0x99581EFF, 0x993A63FF, 0x998F4EFF, 0x99311EFF, 0x0D1842FF, 0x521E1EFF, 0x42420DFF, 0x4C991EFF, 0x082A1DFF,
+	0x96821DFF, 0x197F19FF, 0x3B141FFF, 0x745217FF, 0x893F8DFF, 0x7E1A6CFF, 0x0B370BFF, 0x27450DFF, 0x071F24FF, 0x784573FF,
+	0x8A653AFF, 0x732617FF, 0x319490FF, 0x56941DFF, 0x59163DFF, 0x1B8A2FFF, 0x38160BFF, 0x041804FF, 0x355D8EFF, 0x2E3F5BFF,
+	0x561A28FF, 0x4E0E27FF, 0x706C67FF, 0x3B3E42FF, 0x2E2D33FF, 0x7B7E7DFF, 0x4A4442FF, 0x28344EFF
+};
+
+public OnFilterScriptInit()
+{
+	for(new i = 0; i < 256; i++) format(VehicleColorList, sizeof(VehicleColorList), "%s{%06x}%i XXX\n", VehicleColorList, VehicleColoursTableRGBA[i] >>> 8, i);
+
+	#if defined VC_OnFilterScriptInit
+		VC_OnFilterScriptInit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptInit
+	#undef OnFilterScriptInit
+#else
+	#define _ALS_OnFilterScriptInit
+#endif
+#define OnFilterScriptInit VC_OnFilterScriptInit
+#if defined VC_OnFilterScriptInit
+	forward VC_OnFilterScriptInit();
+#endif

+ 2343 - 0
Texture-Studio-master/filterscripts/tstudio/vehicles.pwn

@@ -0,0 +1,2343 @@
+
+#define         MAX_EDIT_CARS                   1000
+#define         MAX_CAR_OBJECTS         		30
+#define         MAX_CAR_COMPONENTS              14
+
+#define         NOMODSHOP			0
+#define         TRANSFENDER         1
+#define         LOCOLOWCO           2
+#define         WHEELARCHANGELS     3
+
+
+// Edit check makes sure the player is actually has a vehicle selected
+#define VehicleCheck(%0); if(CurrVehicle[%0] == -1) { \
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________"); \
+	return SendClientMessage(playerid, STEALTH_YELLOW, "You need to select an vehicle to use this command"); }
+
+enum CARINFO
+{
+	CarID,
+	CarModel,
+	Text3D:CarText,
+	CarColor1,
+	CarColor2,
+	CarPaintJob,
+	CarSiren,
+	Float:CarSpawnX,
+	Float:CarSpawnY,
+	Float:CarSpawnZ,
+	Float:CarSpawnFA,
+	CarComponents[MAX_CAR_COMPONENTS],
+	CarObjectRef[MAX_CAR_OBJECTS],
+	Float:COX[MAX_CAR_OBJECTS],
+	Float:COY[MAX_CAR_OBJECTS],
+	Float:COZ[MAX_CAR_OBJECTS],
+	Float:CORX[MAX_CAR_OBJECTS],
+	Float:CORY[MAX_CAR_OBJECTS],
+	Float:CORZ[MAX_CAR_OBJECTS],
+}
+
+new Iterator:Cars<MAX_EDIT_CARS>;
+new CarData[MAX_EDIT_CARS][CARINFO];
+
+new CurrVehicle[MAX_PLAYERS] = { -1, ... };
+static TempVehicle[MAX_PLAYERS] = { -1, ... };
+static bool:IsTempVehicle[MAX_VEHICLES] = { false, ... };
+
+static VehicleNames[212][] = {
+	{"Landstalker"},{"Bravura"},{"Buffalo"},{"Linerunner"},{"Perrenial"},{"Sentinel"},{"Dumper"},
+	{"Firetruck"},{"Trashmaster"},{"Stretch"},{"Manana"},{"Infernus"},{"Voodoo"},{"Pony"},{"Mule"},
+	{"Cheetah"},{"Ambulance"},{"Leviathan"},{"Moonbeam"},{"Esperanto"},{"Taxi"},{"Washington"},
+	{"Bobcat"},{"Mr Whoopee"},{"BF Injection"},{"Hunter"},{"Premier"},{"Enforcer"},{"Securicar"},
+	{"Banshee"},{"Predator"},{"Bus"},{"Rhino"},{"Barracks"},{"Hotknife"},{"Trailer 1"},{"Previon"},
+	{"Coach"},{"Cabbie"},{"Stallion"},{"Rumpo"},{"RC Bandit"},{"Romero"},{"Packer"},{"Monster"},
+	{"Admiral"},{"Squalo"},{"Seasparrow"},{"Pizzaboy"},{"Tram"},{"Trailer 2"},{"Turismo"},
+	{"Speeder"},{"Reefer"},{"Tropic"},{"Flatbed"},{"Yankee"},{"Caddy"},{"Solair"},{"Berkley's RC Van"},
+	{"Skimmer"},{"PCJ-600"},{"Faggio"},{"Freeway"},{"RC Baron"},{"RC Raider"},{"Glendale"},{"Oceanic"},
+	{"Sanchez"},{"Sparrow"},{"Patriot"},{"Quad"},{"Coastguard"},{"Dinghy"},{"Hermes"},{"Sabre"},
+	{"Rustler"},{"ZR-350"},{"Walton"},{"Regina"},{"Comet"},{"BMX"},{"Burrito"},{"Camper"},{"Marquis"},
+	{"Baggage"},{"Dozer"},{"Maverick"},{"News Chopper"},{"Rancher"},{"FBI Rancher"},{"Virgo"},{"Greenwood"},
+	{"Jetmax"},{"Hotring"},{"Sandking"},{"Blista Compact"},{"Police Maverick"},{"Boxville"},{"Benson"},
+	{"Mesa"},{"RC Goblin"},{"Hotring Racer A"},{"Hotring Racer B"},{"Bloodring Banger"},{"Rancher"},
+	{"Super GT"},{"Elegant"},{"Journey"},{"Bike"},{"Mountain Bike"},{"Beagle"},{"Cropdust"},{"Stunt"},
+	{"Tanker"}, {"Roadtrain"},{"Nebula"},{"Majestic"},{"Buccaneer"},{"Shamal"},{"Hydra"},{"FCR-900"},
+	{"NRG-500"},{"HPV1000"},{"Cement Truck"},{"Tow Truck"},{"Fortune"},{"Cadrona"},{"FBI Truck"},
+	{"Willard"},{"Forklift"},{"Tractor"},{"Combine"},{"Feltzer"},{"Remington"},{"Slamvan"},
+	{"Blade"},{"Freight"},{"Streak"},{"Vortex"},{"Vincent"},{"Bullet"},{"Clover"},{"Sadler"},
+	{"Firetruck LA"},{"Hustler"},{"Intruder"},{"Primo"},{"Cargobob"},{"Tampa"},{"Sunrise"},{"Merit"},
+	{"Utility"},{"Nevada"},{"Yosemite"},{"Windsor"},{"Monster A"},{"Monster B"},{"Uranus"},{"Jester"},
+	{"Sultan"},{"Stratum"},{"Elegy"},{"Raindance"},{"RC Tiger"},{"Flash"},{"Tahoma"},{"Savanna"},
+	{"Bandito"},{"Freight Flat"},{"Streak Carriage"},{"Kart"},{"Mower"},{"Duneride"},{"Sweeper"},
+	{"Broadway"},{"Tornado"},{"AT-400"},{"DFT-30"},{"Huntley"},{"Stafford"},{"BF-400"},{"Newsvan"},
+	{"Tug"},{"Trailer 3"},{"Emperor"},{"Wayfarer"},{"Euros"},{"Hotdog"},{"Club"},{"Freight Carriage"},
+	{"Trailer 3"},{"Andromada"},{"Dodo"},{"RC Cam"},{"Launch"},{"Police Car (LSPD)"},{"Police Car (SFPD)"},
+	{"Police Car (LVPD)"},{"Police Ranger"},{"Picador"},{"S.W.A.T. Van"},{"Alpha"},{"Phoenix"},{"Glendale"},
+	{"Sadler"},{"Luggage Trailer A"},{"Luggage Trailer B"},{"Stair Trailer"},{"Boxville"},{"Farm Plow"},
+	{"Utility Trailer"}
+};
+
+static CarModShops[212] = {
+	1,1,1,0,0,1,0,0,0,1,1,1,2,0,0,1,0,0,1,1,
+	1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,1,1,
+	0,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,
+	0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,1,1,1,
+	1,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,1,0,0,0,
+	1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,0,
+	0,0,0,0,0,0,1,1,0,1,0,0,0,1,2,2,2,0,0,0,
+	1,1,1,0,0,1,1,1,0,1,1,1,0,0,0,1,0,0,3,3,
+	3,3,3,0,0,3,2,2,0,0,0,0,0,0,0,2,2,0,0,1,
+	1,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,
+	1,0,1,1,0,0,0,0,0,0,0,0
+};
+
+static Float:ModCarPos[MAX_PLAYERS][4];
+
+YCMD:avmodcar(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Modify car components using modshop.");
+		return 1;
+	}
+
+	new vid = GetPlayerVehicleID(playerid);
+	foreach(new i : Cars)
+	{
+	    if(CarData[i][CarID] == vid)
+		{
+            switch(CarModShops[GetVehicleModel(vid) - 400])
+            {
+	            case NOMODSHOP:
+	            {
+					SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+					SendClientMessage(playerid, STEALTH_YELLOW, "This model can not be modded.");
+					return 1;
+	            }
+	            case TRANSFENDER:
+	            {
+					GetVehiclePos(vid, ModCarPos[playerid][0], ModCarPos[playerid][1], ModCarPos[playerid][2]);
+					GetVehicleZAngle(vid, ModCarPos[playerid][3]);
+					SetVehiclePos(vid, -1935.8020,247.0903,34.5477);
+					EditingMode[playerid] = true;
+					SetEditMode(playerid, EDIT_MODE_MODCAR);
+	            }
+	            case LOCOLOWCO:
+	            {
+					GetVehiclePos(vid, ModCarPos[playerid][0], ModCarPos[playerid][1], ModCarPos[playerid][2]);
+					GetVehicleZAngle(vid, ModCarPos[playerid][3]);
+					SetVehiclePos(vid, 2645.0527,-2044.9419,13.4548);
+					EditingMode[playerid] = true;
+					SetEditMode(playerid, EDIT_MODE_MODCAR);
+	            }
+	            case WHEELARCHANGELS:
+	            {
+					GetVehiclePos(vid, ModCarPos[playerid][0], ModCarPos[playerid][1], ModCarPos[playerid][2]);
+					GetVehicleZAngle(vid, ModCarPos[playerid][3]);
+					SetVehiclePos(vid, -2720.8887,217.4109,4.1550);
+					EditingMode[playerid] = true;
+					SetEditMode(playerid, EDIT_MODE_MODCAR);
+	            }
+			}
+			ResetPlayerMoney(playerid);
+			GivePlayerMoney(playerid, 50000);
+			return 1;
+		}
+	}
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	SendClientMessage(playerid, STEALTH_YELLOW, "You must be in a car created by texture studio to mod a car.");
+
+	return 1;
+}
+
+YCMD:avsetspawn(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Set vehicle's spawn point to current position.");
+		return 1;
+	}
+
+	new vid = GetPlayerVehicleID(playerid);
+	foreach(new i : Cars)
+	{
+	    if(CarData[i][CarID] == vid)
+		{
+            GetVehiclePos(CarData[i][CarID], CarData[i][CarSpawnX], CarData[i][CarSpawnY], CarData[i][CarSpawnZ]);
+            GetVehicleZAngle(CarData[i][CarID], CarData[i][CarSpawnFA]);
+			sqlite_SaveVehicleData(i);
+			SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+			SendClientMessage(playerid, STEALTH_YELLOW, "Vehicle spawn has been set (Note vehicle won't respawn here until reloading map!).");
+			return 1;
+		}
+	}
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	SendClientMessage(playerid, STEALTH_YELLOW, "You must be in a car created by texture studio set a spawn position.");
+
+	return 1;
+}
+
+YCMD:avdeletecar(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Destroy current vehicle.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	NoEditingMode(playerid);
+
+	VehicleCheck(playerid);
+	
+	inline DeleteVehicleObjects(pid, dialogid, response, listitem, string:text[])
+    {
+        #pragma unused listitem, dialogid, pid, text
+		if(response) DestroyEditCar(CurrVehicle[playerid], true, true);
+		else DestroyEditCar(CurrVehicle[playerid], true);
+	    CurrVehicle[playerid] = -1;
+    }
+    Dialog_ShowCallback(playerid, using inline DeleteVehicleObjects, DIALOG_STYLE_LIST, "Texture Studio", "Delete Vehicles Objects?", "Yes", "No");
+	
+   	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	SendClientMessage(playerid, STEALTH_GREEN, "Vehicle has been deleted.");
+
+	return 1;
+}
+
+
+static VehicleList[4096];
+SSCANF:vehiclemodel(string[])
+{
+    if('0' <= string[0] <= '9')
+    {
+        new ret = strval(string);
+        if (400 <= ret <= 611)
+        {
+            return ret;
+        }
+    }
+	else for(new i; i < sizeof(VehicleNames); i++)
+	{
+		if(strfind(string, VehicleNames[i], true) != -1)
+		{
+			return i + 400;
+		}
+	}
+    
+    return -1;
+}
+
+public OnFilterScriptInit()
+{
+	for(new i = 0; i < 212; i++) format(VehicleList, sizeof(VehicleList), "%s(%i) %s\n", VehicleList, i+400, VehicleNames[i]);
+
+	#if defined VH_OnFilterScriptInit
+		VH_OnFilterScriptInit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptInit
+	#undef OnFilterScriptInit
+#else
+	#define _ALS_OnFilterScriptInit
+#endif
+#define OnFilterScriptInit VH_OnFilterScriptInit
+#if defined VH_OnFilterScriptInit
+	forward VH_OnFilterScriptInit();
+#endif
+
+public OnFilterScriptExit()
+{
+	DeleteAllCars();
+
+	#if defined VH_OnFilterScriptExit
+		VH_OnFilterScriptExit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptExit
+	#undef OnFilterScriptExit
+#else
+	#define _ALS_OnFilterScriptExit
+#endif
+#define OnFilterScriptExit VH_OnFilterScriptExit
+#if defined VH_OnFilterScriptExit
+	forward VH_OnFilterScriptExit();
+#endif
+
+public OnPlayerDisconnect(playerid, reason)
+{
+    CurrVehicle[playerid] = -1;
+
+	#if defined VH_OnPlayerDisconnect
+		VH_OnPlayerDisconnect(playerid, reason);
+	#endif
+	return 1;
+}
+#if defined _ALS_OnPlayerDisconnect
+	#undef OnPlayerDisconnect
+#else
+	#define _ALS_OnPlayerDisconnect
+#endif
+#define OnPlayerDisconnect VH_OnPlayerDisconnect
+#if defined VH_OnPlayerDisconnect
+	forward VH_OnPlayerDisconnect(playerid, reason);
+#endif
+
+public OnEnterExitModShop(playerid,enterexit,interiorid)
+{
+    if(enterexit == 1) EditingMode[playerid] = true;
+	if(enterexit == 0)
+	{
+		new vid = GetPlayerVehicleID(playerid);
+		foreach(new i : Cars)
+		{
+		    if(CarData[i][CarID] == vid)
+			{
+				for(new j = 0; j < MAX_CAR_COMPONENTS; j++)
+				{
+					CarData[i][CarComponents][j] = GetVehicleComponentInSlot(vid, j);
+				}
+                sqlite_SaveVehicleData(i);
+                
+                if(GetEditMode(playerid) == EDIT_MODE_MODCAR)
+                {
+					SetVehiclePos(vid, ModCarPos[playerid][0], ModCarPos[playerid][1], ModCarPos[playerid][2]);
+					SetVehicleZAngle(vid, ModCarPos[playerid][3]);
+					SetEditMode(playerid, EDIT_MODE_NONE);
+                }
+                EditingMode[playerid] = false;
+				return 1;
+			}
+		}
+	}
+	return 1;
+}
+
+public OnVehicleRespray(playerid, vehicleid, color1, color2)
+{
+	foreach(new i : Cars)
+	{
+	    if(CarData[i][CarID] == vehicleid)
+		{
+            CarData[i][CarColor1] = color1;
+			CarData[i][CarColor2] = color2;
+			return 1;
+		}
+	}
+	return 1;
+}
+
+public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
+{
+	foreach(new i : Cars)
+	{
+	    if(CarData[i][CarID] == vehicleid)
+		{
+            CarData[i][CarPaintJob] = paintjobid;
+			return 1;
+		}
+	}
+	return 1;
+}
+
+public OnVehicleSpawn(vehicleid)
+{
+	if(IsTempVehicle[vehicleid])
+	{
+		foreach(new i: Player)
+		{
+			if(vehicleid == TempVehicle[i])
+			{
+				TempVehicle[i] = -1;
+				break;
+			}
+		}
+		IsTempVehicle[vehicleid] = false;
+		
+		DestroyVehicle(vehicleid);
+	}
+
+	foreach(new i : Cars)
+	{
+	    if(CarData[i][CarID] == vehicleid)
+		{
+		 	ChangeVehicleColor(CarData[i][CarID], CarData[i][CarColor1], CarData[i][CarColor2]);
+		 	ChangeVehiclePaintjob(CarData[i][CarID], CarData[i][CarPaintJob]);
+		 	for(new j = 0; j < MAX_CAR_COMPONENTS; j++)
+		 	{
+		 	    if(CarData[i][CarComponents][j] > 0) AddVehicleComponent(CarData[i][CarID], CarData[i][CarComponents][j]);
+		 	}
+			return 1;
+		}
+	}
+
+	return 1;
+}
+
+public OnPlayerStateChange(playerid, newstate, oldstate)
+{
+	if(oldstate == PLAYER_STATE_DRIVER && TempVehicle[playerid] != -1)
+	{
+		IsTempVehicle[TempVehicle[playerid]] = false;
+		DestroyVehicle(TempVehicle[playerid]);
+		TempVehicle[playerid] = -1;
+	}
+	return 1;
+}
+
+YCMD:tcar(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Gives you a temporary vehicle.");
+		return 1;
+	}
+	
+	new model;
+	sscanf(arg, "K<vehiclemodel>(0)", model);
+	
+    if(model)
+    {
+		if(model != -1)
+		{
+			new Float:X, Float:Y, Float:Z, Float:R;
+			GetPlayerPos(playerid, X, Y, Z);
+			GetPlayerFacingAngle(playerid, R);
+			TempVehicle[playerid] = CreateVehicle(model, X + 5.0 * floatcos(R + 180.0, degrees), Y + 5.0 * floatsin(R + 180.0, degrees), Z, R, 0, 0, 1);
+			IsTempVehicle[TempVehicle[playerid]] = true;
+			PutPlayerInVehicle(playerid, TempVehicle[playerid], 0);
+			return 1;
+		}
+		else
+		{
+			SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+			SendClientMessage(playerid, STEALTH_YELLOW, "Invalid vehicle name/ID.");
+		}
+	}
+	else
+	{
+		inline SelectModel(pid, dialogid, response, listitem, string:text[])
+		{
+			#pragma unused listitem, dialogid, pid, text
+			if(response)
+			{
+				new Float:X, Float:Y, Float:Z, Float:R;
+				GetPlayerPos(playerid, X, Y, Z);
+				GetPlayerFacingAngle(playerid, R);
+				TempVehicle[playerid] = CreateVehicle(listitem+400, X, Y, Z, R, 0, 0, 1);
+				IsTempVehicle[TempVehicle[playerid]] = true;
+				PutPlayerInVehicle(playerid, TempVehicle[playerid], 0);
+				return 1;
+			}
+		}
+		Dialog_ShowCallback(playerid, using inline SelectModel, DIALOG_STYLE_LIST, "Texture Studio", VehicleList, "Ok", "Cancel");
+	}
+	
+	return 1;
+}
+
+YCMD:avselectcar(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Adds a vehicle to the loaded map.");
+		return 1;
+	}
+
+    inline SelectID(pid, dialogid, response, listitem, string:text[])
+    {
+        #pragma unused listitem, dialogid, pid, text
+		if(response)
+		{
+			new id = strval(text);
+			foreach(new i : Cars)
+			{
+			    if(CarData[i][CarID] == id)
+			    {
+					SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+					SendClientMessage(playerid, STEALTH_YELLOW, "This vehicle is already in Texture Studio!");
+					return 1;
+			    }
+			}
+			new index = Iter_Free(Cars);
+			if(index > -1)
+			{
+				Iter_Add(Cars, id);
+			    GetVehiclePos(id, CarData[index][CarSpawnX], CarData[index][CarSpawnY], CarData[index][CarSpawnZ]);
+			    GetVehicleZAngle(id, CarData[index][CarSpawnFA]);
+	            CarData[index][CarID] = id;
+			    CarData[index][CarModel] = GetVehicleModel(id);
+
+				new line[32];
+				format(line, sizeof(line), "Car Index: %i", index);
+				CarData[index][CarText] = CreateDynamic3DTextLabel(line, -1, CarData[index][CarSpawnX], CarData[index][CarSpawnY], CarData[index][CarSpawnZ], 20.0, INVALID_PLAYER_ID, CarData[index][CarID]);
+		        Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL, CarData[index][CarText], E_STREAMER_ATTACH_OFFSET_Z, 2.0);
+
+				for(new i = 0; i < MAX_CAR_OBJECTS; i++) CarData[index][CarObjectRef][i] = -1;
+				CarData[index][CarPaintJob] = 3;
+
+				sqlite_InsertCar(index);
+
+				SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_GREEN, "Vehicle can now be edited!");
+			}
+		}
+	}
+    Dialog_ShowCallback(playerid, using inline SelectID, DIALOG_STYLE_INPUT, "Texture Studio", "Input vehicle ID to select", "Ok", "Cancel");
+	return 1;
+}
+
+
+YCMD:avnewcar(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Add a vehicle to map.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	NoEditingMode(playerid);
+
+	new model;
+	sscanf(arg, "K<vehiclemodel>(0)", model);
+	
+    if(model)
+    {
+        new index = Iter_Free(Cars);
+        if(index > -1)
+        {
+            if(model != -1)
+            {
+                GetPlayerPos(playerid, CarData[index][CarSpawnX], CarData[index][CarSpawnY], CarData[index][CarSpawnZ]);
+                GetXYInFrontOfPlayer(playerid, CarData[index][CarSpawnX], CarData[index][CarSpawnY], 2.0);
+                GetPlayerFacingAngle(playerid, CarData[index][CarSpawnFA]);
+				
+                CurrVehicle[playerid] = AddNewCar(model, index, true);
+				
+				SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_GREEN, "Vehicle can now be edited!");
+				
+                return 1;
+            }
+            else
+                SendClientMessage(playerid, STEALTH_YELLOW, "Invalid vehicle name or ID");
+        }
+        else
+            SendClientMessage(playerid, STEALTH_YELLOW, "Too many cars");
+    }
+    else 
+    {
+        inline SelectModel(pid, dialogid, response, listitem, string:text[])
+        {
+            #pragma unused listitem, dialogid, pid, text
+            if(response)
+            {
+                new index = Iter_Free(Cars);
+                if(index > -1)
+                {
+                    GetPlayerPos(playerid, CarData[index][CarSpawnX], CarData[index][CarSpawnY], CarData[index][CarSpawnZ]);
+                    GetXYInFrontOfPlayer(playerid, CarData[index][CarSpawnX], CarData[index][CarSpawnY], 2.0);
+                    GetPlayerFacingAngle(playerid, CarData[index][CarSpawnFA]);
+                    CurrVehicle[playerid] = AddNewCar(listitem+400, index, true);
+                    return 1;
+                }
+                SendClientMessage(playerid, STEALTH_YELLOW, "Too many cars");
+            }
+        }
+        Dialog_ShowCallback(playerid, using inline SelectModel, DIALOG_STYLE_LIST, "Texture Studio", VehicleList, "Ok", "Cancel");
+    }
+    
+	return 1;
+}
+
+static AddNewCar(modelid, index = -1, bool:sqlsave = true, bool:clearref = true)
+{
+	if(index == -1) index = Iter_Free(Cars);
+	
+	if(index > -1)
+	{
+	    Iter_Add(Cars, index);
+	    CarData[index][CarID] = CreateVehicle(modelid, CarData[index][CarSpawnX], CarData[index][CarSpawnY], CarData[index][CarSpawnZ], CarData[index][CarSpawnFA], CarData[index][CarColor1], CarData[index][CarColor2], -1, CarData[index][CarSiren]);
+		CarData[index][CarModel] = modelid;
+
+		new line[32];
+		format(line, sizeof(line), "Car Index: %i", index);
+		CarData[index][CarText] = CreateDynamic3DTextLabel(line, -1, CarData[index][CarSpawnX], CarData[index][CarSpawnY], CarData[index][CarSpawnZ], 20.0, INVALID_PLAYER_ID, CarData[index][CarID]);
+        Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL, CarData[index][CarText], E_STREAMER_ATTACH_OFFSET_Z, 2.0);
+
+        ChangeVehiclePaintjob(CarData[index][CarID], CarData[index][CarPaintJob]);
+        for(new i; i < MAX_CAR_COMPONENTS; i++)
+            if(CarData[index][CarComponents][i])
+                AddVehicleComponent(CarData[index][CarID], CarData[index][CarComponents][i]);
+        
+		if(clearref)
+		{
+			for(new i = 0; i < MAX_CAR_OBJECTS; i++) CarData[index][CarObjectRef][i] = -1;
+			CarData[index][CarPaintJob] = 3;
+		}
+		if(sqlsave) sqlite_InsertCar(index);
+		return index;
+	}
+	return -1;
+}
+
+Update3DAttachCarPos(objindex, carindex)
+{
+	for(new i = 0; i < MAX_CAR_OBJECTS; i++)
+	{
+	    if(CarData[carindex][CarObjectRef][i] == objindex)
+	    {
+            Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL, ObjectData[objindex][oTextID], E_STREAMER_ATTACH_OFFSET_X, CarData[carindex][COX][i]);
+            Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL, ObjectData[objindex][oTextID], E_STREAMER_ATTACH_OFFSET_Y, CarData[carindex][COY][i]);
+            Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL, ObjectData[objindex][oTextID], E_STREAMER_ATTACH_OFFSET_Z, CarData[carindex][COZ][i]);
+	        return 1;
+	    }
+	}
+	return 0;
+}
+
+static NewVehicleString[512];
+sqlite_CreateVehicle()
+{
+	if(!NewVehicleString[0])
+	{
+		strimplode(" ",
+			NewVehicleString,
+			sizeof(NewVehicleString),
+			"CREATE TABLE IF NOT EXISTS `Vehicles`",
+			"(IndexID INTEGER,",
+			"CarModel INTEGER,",
+			"CarColor1 INTEGER,",
+			"CarColor2 INTEGER,",
+			"CarPaintJob INTEGER,",
+			"CarSpawnX REAL,",
+			"CarSpawnY REAL,",
+			"CarSpawnZ REAL,",
+			"CarSpawnFA REAL,",
+			"CarComponents TEXT,",
+			"CarObjectRef TEXT,",
+			"COX TEXT,",
+			"COY TEXT,",
+			"COZ TEXT,",
+			"CORX TEXT,",
+			"CORY TEXT,",
+			"CORZ TEXT,",
+            "CarSiren INTEGER);"
+		);
+	}
+	db_exec(EditMap, NewVehicleString);
+}
+
+
+// Insert stmt statement
+new DBStatement:insertcarstmt;
+new InsertCarString[512];
+
+// Sqlite query functions
+sqlite_InsertCar(index)
+{
+	// Inserts a new index
+	if(!InsertCarString[0])
+	{
+		// Prepare query
+		strimplode(" ",
+			InsertCarString,
+			sizeof(InsertCarString),
+			"INSERT INTO `Vehicles`",
+	        "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
+		);
+		// Prepare data base for writing
+	}
+
+	insertcarstmt = db_prepare(EditMap, InsertCarString);
+
+	// Bind our results
+    stmt_bind_value(insertcarstmt, 0, DB::TYPE_INT, index);
+    stmt_bind_value(insertcarstmt, 1, DB::TYPE_INT, CarData[index][CarModel]);
+    stmt_bind_value(insertcarstmt, 2, DB::TYPE_INT, CarData[index][CarColor1]);
+    stmt_bind_value(insertcarstmt, 3, DB::TYPE_INT, CarData[index][CarColor2]);
+    stmt_bind_value(insertcarstmt, 4, DB::TYPE_INT, CarData[index][CarPaintJob]);
+    stmt_bind_value(insertcarstmt, 5, DB::TYPE_FLOAT, CarData[index][CarSpawnX]);
+    stmt_bind_value(insertcarstmt, 6, DB::TYPE_FLOAT, CarData[index][CarSpawnY]);
+    stmt_bind_value(insertcarstmt, 7, DB::TYPE_FLOAT, CarData[index][CarSpawnZ]);
+    stmt_bind_value(insertcarstmt, 8, DB::TYPE_FLOAT, CarData[index][CarSpawnFA]);
+    stmt_bind_value(insertcarstmt, 9, DB::TYPE_ARRAY, CarData[index][CarComponents], MAX_CAR_COMPONENTS);
+    stmt_bind_value(insertcarstmt, 10, DB::TYPE_ARRAY, CarData[index][CarObjectRef], MAX_CAR_OBJECTS);
+    stmt_bind_value(insertcarstmt, 11, DB::TYPE_ARRAY, CarData[index][COX], MAX_CAR_OBJECTS);
+    stmt_bind_value(insertcarstmt, 12, DB::TYPE_ARRAY, CarData[index][COY], MAX_CAR_OBJECTS);
+    stmt_bind_value(insertcarstmt, 13, DB::TYPE_ARRAY, CarData[index][COZ], MAX_CAR_OBJECTS);
+    stmt_bind_value(insertcarstmt, 14, DB::TYPE_ARRAY, CarData[index][CORX], MAX_CAR_OBJECTS);
+    stmt_bind_value(insertcarstmt, 15, DB::TYPE_ARRAY, CarData[index][CORY], MAX_CAR_OBJECTS);
+    stmt_bind_value(insertcarstmt, 16, DB::TYPE_ARRAY, CarData[index][CORZ], MAX_CAR_OBJECTS);
+    stmt_bind_value(insertcarstmt, 17, DB::TYPE_INT, CarData[index][CarSiren]);
+
+    stmt_execute(insertcarstmt);
+	stmt_close(insertcarstmt);
+}
+
+new DBStatement:savevposstmt;
+new VehiclePosUpdateString[4096];
+
+// Saves all other data
+sqlite_SaveVehicleData(index)
+{
+	// Inserts a new index
+	if(!VehiclePosUpdateString[0])
+	{
+		// Prepare query
+		strimplode(" ",
+			VehiclePosUpdateString,
+			sizeof(VehiclePosUpdateString),
+			"UPDATE `Vehicles` SET",
+			"`CarModel` = ?,",
+			"`CarColor1` = ?,",
+			"`CarColor2` = ?,",
+			"`CarPaintJob` = ?,",
+			"`CarSpawnX` = ?,",
+			"`CarSpawnY` = ?,",
+			"`CarSpawnZ` = ?,",
+			"`CarSpawnFA` = ?,",
+			"`CarComponents` = ?,",
+			"`CarSiren` = ?",
+			"WHERE `IndexID` = ?"
+		);
+	}
+
+    savevposstmt = db_prepare(EditMap, VehiclePosUpdateString);
+
+	// Bind values
+	stmt_bind_value(savevposstmt, 0, DB::TYPE_INT, CarData[index][CarModel]);
+	stmt_bind_value(savevposstmt, 1, DB::TYPE_INT, CarData[index][CarColor1]);
+	stmt_bind_value(savevposstmt, 2, DB::TYPE_INT, CarData[index][CarColor2]);
+	stmt_bind_value(savevposstmt, 3, DB::TYPE_INT, CarData[index][CarPaintJob]);
+	stmt_bind_value(savevposstmt, 4, DB::TYPE_FLOAT, CarData[index][CarSpawnX]);
+	stmt_bind_value(savevposstmt, 5, DB::TYPE_FLOAT, CarData[index][CarSpawnY]);
+	stmt_bind_value(savevposstmt, 6, DB::TYPE_FLOAT, CarData[index][CarSpawnZ]);
+	stmt_bind_value(savevposstmt, 7, DB::TYPE_FLOAT, CarData[index][CarSpawnFA]);
+	stmt_bind_value(savevposstmt, 8, DB::TYPE_ARRAY, CarData[index][CarComponents], MAX_CAR_COMPONENTS);
+	stmt_bind_value(savevposstmt, 9, DB::TYPE_INT, CarData[index][CarSiren]);
+	stmt_bind_value(savevposstmt, 10, DB::TYPE_INT, index);
+
+	// Execute stmt
+    stmt_execute(savevposstmt);
+	stmt_close(savevposstmt);
+	return 1;
+}
+
+// Save vehicle data
+new DBStatement:savevdatastmt;
+new VehicleDataUpdateString[4096];
+
+// Saves a specific texture index to DB
+sqlite_SaveVehicleObjectData(index)
+{
+	// Inserts a new index
+	if(!VehicleDataUpdateString[0])
+	{
+		// Prepare query
+		strimplode(" ",
+			VehicleDataUpdateString,
+			sizeof(VehicleDataUpdateString),
+			"UPDATE `Vehicles` SET",
+			"`CarObjectRef` = ?,",
+			"`COX` = ?,",
+			"`COY` = ?,",
+			"`COZ` = ?,",
+			"`CORX` = ?,",
+			"`CORY` = ?,",
+			"`CORZ` = ?",
+			"WHERE `IndexID` = ?"
+		);
+	}
+
+    savevdatastmt = db_prepare(EditMap, VehicleDataUpdateString);
+
+	// Bind values
+	stmt_bind_value(savevdatastmt, 0, DB::TYPE_ARRAY, CarData[index][CarObjectRef], MAX_CAR_OBJECTS);
+	stmt_bind_value(savevdatastmt, 1, DB::TYPE_ARRAY, CarData[index][COX], MAX_CAR_OBJECTS);
+	stmt_bind_value(savevdatastmt, 2, DB::TYPE_ARRAY, CarData[index][COY], MAX_CAR_OBJECTS);
+	stmt_bind_value(savevdatastmt, 3, DB::TYPE_ARRAY, CarData[index][COZ], MAX_CAR_OBJECTS);
+	stmt_bind_value(savevdatastmt, 4, DB::TYPE_ARRAY, CarData[index][CORX], MAX_CAR_OBJECTS);
+	stmt_bind_value(savevdatastmt, 5, DB::TYPE_ARRAY, CarData[index][CORY], MAX_CAR_OBJECTS);
+	stmt_bind_value(savevdatastmt, 6, DB::TYPE_ARRAY, CarData[index][CORZ], MAX_CAR_OBJECTS);
+	stmt_bind_value(savevdatastmt, 7, DB::TYPE_INT, index);
+
+	// Execute stmt
+    stmt_execute(savevdatastmt);
+	stmt_close(savevdatastmt);
+
+	return 1;
+}
+
+// Load query stmt
+static DBStatement:loadcarstmt;
+
+// Load all cars
+sqlite_LoadCars()
+{
+	new tmpcar[CARINFO];
+	new currindex;
+
+	loadcarstmt = db_prepare(EditMap, "SELECT * FROM `Vehicles`");
+	
+	// Bind our results
+    stmt_bind_result_field(loadcarstmt, 0, DB::TYPE_INT, currindex);
+    stmt_bind_result_field(loadcarstmt, 1, DB::TYPE_INT, tmpcar[CarModel]);
+    stmt_bind_result_field(loadcarstmt, 2, DB::TYPE_INT, tmpcar[CarColor1]);
+    stmt_bind_result_field(loadcarstmt, 3, DB::TYPE_INT, tmpcar[CarColor2]);
+    stmt_bind_result_field(loadcarstmt, 4, DB::TYPE_INT, tmpcar[CarPaintJob]);
+    stmt_bind_result_field(loadcarstmt, 5, DB::TYPE_FLOAT, tmpcar[CarSpawnX]);
+    stmt_bind_result_field(loadcarstmt, 6, DB::TYPE_FLOAT, tmpcar[CarSpawnY]);
+    stmt_bind_result_field(loadcarstmt, 7, DB::TYPE_FLOAT, tmpcar[CarSpawnZ]);
+    stmt_bind_result_field(loadcarstmt, 8, DB::TYPE_FLOAT, tmpcar[CarSpawnFA]);
+    stmt_bind_result_field(loadcarstmt, 9, DB::TYPE_ARRAY, tmpcar[CarComponents], MAX_CAR_COMPONENTS);
+    stmt_bind_result_field(loadcarstmt, 10, DB::TYPE_ARRAY, tmpcar[CarObjectRef], MAX_CAR_OBJECTS);
+    stmt_bind_result_field(loadcarstmt, 11, DB::TYPE_ARRAY, tmpcar[COX], MAX_CAR_OBJECTS);
+    stmt_bind_result_field(loadcarstmt, 12, DB::TYPE_ARRAY, tmpcar[COY], MAX_CAR_OBJECTS);
+    stmt_bind_result_field(loadcarstmt, 13, DB::TYPE_ARRAY, tmpcar[COZ], MAX_CAR_OBJECTS);
+    stmt_bind_result_field(loadcarstmt, 14, DB::TYPE_ARRAY, tmpcar[CORX], MAX_CAR_OBJECTS);
+    stmt_bind_result_field(loadcarstmt, 15, DB::TYPE_ARRAY, tmpcar[CORY], MAX_CAR_OBJECTS);
+    stmt_bind_result_field(loadcarstmt, 16, DB::TYPE_ARRAY, tmpcar[CORZ], MAX_CAR_OBJECTS);
+    stmt_bind_result_field(loadcarstmt, 17, DB::TYPE_INT, tmpcar[CarSiren]);
+
+	// Execute query
+    if(stmt_execute(loadcarstmt))
+    {
+        while(stmt_fetch_row(loadcarstmt))
+        {
+            CarData[currindex][CarModel] = tmpcar[CarModel];
+            CarData[currindex][CarColor1] = tmpcar[CarColor1];
+            CarData[currindex][CarColor2] = tmpcar[CarColor2];
+            CarData[currindex][CarPaintJob] = tmpcar[CarPaintJob];
+            CarData[currindex][CarSpawnX] = tmpcar[CarSpawnX];
+            CarData[currindex][CarSpawnY] = tmpcar[CarSpawnY];
+            CarData[currindex][CarSpawnZ] = tmpcar[CarSpawnZ];
+            CarData[currindex][CarSpawnFA] = tmpcar[CarSpawnFA];
+            CarData[currindex][CarSiren] = tmpcar[CarSiren];
+
+			for(new i = 0; i < MAX_CAR_COMPONENTS; i++) CarData[currindex][CarComponents][i] = tmpcar[CarComponents][i];
+			for(new i = 0; i < MAX_CAR_OBJECTS; i++)
+			{
+				CarData[currindex][CarObjectRef][i] = tmpcar[CarObjectRef][i];
+				CarData[currindex][COX][i] = tmpcar[COX][i];
+				CarData[currindex][COY][i] = tmpcar[COY][i];
+				CarData[currindex][COZ][i] = tmpcar[COZ][i];
+				CarData[currindex][CORX][i] = tmpcar[CORX][i];
+				CarData[currindex][CORY][i] = tmpcar[CORY][i];
+				CarData[currindex][CORZ][i] = tmpcar[CORZ][i];
+			}
+			
+		 	AddNewCar(CarData[currindex][CarModel], currindex, false, false);
+		 	ChangeVehicleColor(CarData[currindex][CarID], CarData[currindex][CarColor1], CarData[currindex][CarColor2]);
+		 	ChangeVehiclePaintjob(CarData[currindex][CarID], CarData[currindex][CarPaintJob]);
+		 	for(new i = 0; i < MAX_CAR_COMPONENTS; i++)
+		 	{
+		 	    if(CarData[currindex][CarComponents][i] > 0) AddVehicleComponent(CarData[currindex][CarID], CarData[currindex][CarComponents][i]);
+		 	}
+		 	
+		 	for(new i = 0; i < MAX_CAR_OBJECTS; i++)
+		 	{
+		 	    if(tmpcar[CarObjectRef][i] > -1)
+		 	    {
+	                AttachDynamicObjectToVehicle(ObjectData[CarData[currindex][CarObjectRef][i]][oID], CarData[currindex][CarID],
+						CarData[currindex][COX][i], CarData[currindex][COY][i], CarData[currindex][COZ][i], CarData[currindex][CORX][i], CarData[currindex][CORY][i], CarData[currindex][CORZ][i]);
+					ObjectData[CarData[currindex][CarObjectRef][i]][oAttachedVehicle] = currindex;
+	                UpdateObject3DText(CarData[currindex][CarObjectRef][i], false);
+		 	    }
+		 	}
+	 	}
+	}
+	stmt_close(loadcarstmt);
+}
+
+ClearVehicles()
+{
+	foreach(new i : Player) CurrVehicle[i] = -1;
+    DeleteAllCars();
+    return 1;
+}
+
+
+DeleteAllCars()
+{
+	foreach(new i : Cars)
+	{
+		i = DestroyEditCar(i, false);
+	}
+	return 1;
+}
+
+DestroyEditCar(index, bool:sqldelete=true, deleteobjects=false)
+{
+    DestroyVehicle(CarData[index][CarID]);
+    CarData[index][CarModel] = -1;
+    CarData[index][CarColor1] = -1;
+    CarData[index][CarColor2] = -1;
+    CarData[index][CarPaintJob] = 0;
+    CarData[index][CarSiren] = 0;
+    CarData[index][CarSpawnX] = 0.0;
+    CarData[index][CarSpawnY] = 0.0;
+    CarData[index][CarSpawnZ] = 0.0;
+    CarData[index][CarSpawnFA] = 0.0;
+    
+    DestroyDynamic3DTextLabel(CarData[index][CarText]);
+    
+    for(new i = 0; i < MAX_CAR_COMPONENTS; i++) CarData[index][CarComponents][i] = 0;
+	for(new i = 0; i < MAX_CAR_OBJECTS; i++)
+	{
+		if(CarData[index][CarObjectRef][i] > -1)
+		{
+			new oindex = CarData[index][CarObjectRef][i];
+
+			if(deleteobjects) DeleteDynamicObject(oindex);
+			else
+			{
+				// Destroy the object
+			    DestroyDynamicObject(ObjectData[oindex][oID]);
+
+				// Re-create object
+				ObjectData[index][oID] = CreateDynamicObject(ObjectData[oindex][oModel], ObjectData[oindex][oX], ObjectData[oindex][oY], ObjectData[oindex][oZ], ObjectData[oindex][oRX], ObjectData[oindex][oRY], ObjectData[oindex][oRZ], MapSetting[mVirtualWorld], MapSetting[mInterior], -1, 300.0);
+				Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[oindex][oID], E_STREAMER_DRAW_DISTANCE, 300.0);
+
+				// We need to update textures and materials
+				UpdateMaterial(oindex);
+
+				// Update the object text
+				UpdateObjectText(oindex);
+
+				// Update 3d Text
+				UpdateObject3DText(oindex, false);
+			}
+		}
+	    CarData[index][CarObjectRef][i] = -1;
+	    CarData[index][COX][i] = 0.0;
+	    CarData[index][COY][i] = 0.0;
+	    CarData[index][COZ][i] = 0.0;
+	    CarData[index][CORX][i] = 0.0;
+	    CarData[index][CORY][i] = 0.0;
+	    CarData[index][CORZ][i] = 0.0;
+	}
+	if(sqldelete)
+	{
+	    new q[128];
+	    format(q, sizeof(q), "DELETE FROM `Vehicles` WHERE `IndexID` = %i", index);
+	    db_query(EditMap, q);
+	}
+	
+	new next;
+	Iter_SafeRemove(Cars, index, next);
+	
+	return next;
+}
+
+YCMD:avcarcolor(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Set current vehicle's colors.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	NoEditingMode(playerid);
+
+	VehicleCheck(playerid);
+
+	inline Response(pid, dialogid, response, listitem, string:text[])
+	{
+		#pragma unused listitem, dialogid, pid, response, text
+		if(response)
+		{
+			inline ChooseColor(cpid, cdialogid, cresponse, clistitem, string:ctext[])
+			{
+				#pragma unused clistitem, cdialogid, cpid, cresponse, ctext
+				if(cresponse)
+				{
+					if(listitem == 0) CarData[CurrVehicle[playerid]][CarColor1] = clistitem;
+					else if(listitem == 1) CarData[CurrVehicle[playerid]][CarColor2] = clistitem;
+				    ChangeVehicleColor(CarData[CurrVehicle[playerid]][CarID], CarData[CurrVehicle[playerid]][CarColor1], CarData[CurrVehicle[playerid]][CarColor2]);
+					sqlite_SaveVehicleData(CurrVehicle[playerid]);
+				}
+				Dialog_ShowCallback(playerid, using inline Response, DIALOG_STYLE_LIST, "Select car color", "Car Color 1\nCar Color 2", "Ok", "Cancel");
+			}
+		    Dialog_ShowCallback(playerid, using inline ChooseColor, DIALOG_STYLE_LIST, "Car Color List", VehicleColorList, "Ok", "Cancel");
+			return 1;
+		}
+	}
+    Dialog_ShowCallback(playerid, using inline Response, DIALOG_STYLE_LIST, "Select car color", "Car Color 1\nCar Color 2", "Ok", "Cancel");
+	return 1;
+}
+
+YCMD:avpaint(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Set current vehicle's paintjob ID.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	NoEditingMode(playerid);
+
+	VehicleCheck(playerid);
+
+	inline Response(pid, dialogid, response, listitem, string:text[])
+	{
+		#pragma unused listitem, dialogid, pid, response, text
+		if(response)
+		{
+			CarData[CurrVehicle[playerid]][CarPaintJob] = listitem;
+		    ChangeVehiclePaintjob(CarData[CurrVehicle[playerid]][CarID], CarData[CurrVehicle[playerid]][CarPaintJob]);
+			sqlite_SaveVehicleData(CurrVehicle[playerid]);
+			Dialog_ShowCallback(playerid, using inline Response, DIALOG_STYLE_LIST, "Select Paint Job", "Paint Job 1\nPaint Job 2\nPaint Job 3\nNone", "Ok", "Cancel");
+		}
+	}
+    Dialog_ShowCallback(playerid, using inline Response, DIALOG_STYLE_LIST, "Select Paint Job", "Paint Job 1\nPaint Job 2\nPaint Job 3\nNone", "Ok", "Cancel");
+	return 1;
+}
+
+YCMD:avsiren(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Toggle current vehicle's siren.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	NoEditingMode(playerid);
+
+	VehicleCheck(playerid);
+
+	CarData[CurrVehicle[playerid]][CarSiren] = CarData[CurrVehicle[playerid]][CarSiren] ? 0 : 1;
+    
+    // TODO: Destroy and recreate vehicle to apply the siren
+    
+    sqlite_SaveVehicleData(CurrVehicle[playerid]);
+    
+    SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+    SendClientMessage(playerid, STEALTH_GREEN, sprintf("Toggled vehicle's siren %s{33DD11}",
+        (CarData[CurrVehicle[playerid]][CarSiren] ? ("{00AA00}On") : ("{AA0000}Off"))));
+    return 1;
+}
+
+YCMD:avrespawn(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Respawn current vehicle.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	NoEditingMode(playerid);
+
+	VehicleCheck(playerid);
+
+	SetVehicleToRespawn(CarData[CurrVehicle[playerid]][CarID]);
+    return 1;
+}
+
+YCMD:avattach(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Attach current object to current vehicle.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	NoEditingMode(playerid);
+	
+	EditCheck(playerid);
+	
+	VehicleCheck(playerid);
+	
+ 	inline CloneVA(cpid, cdialogid, cresponse, clistitem, string:ctext[])
+	{
+    	#pragma unused clistitem, cdialogid, cpid, ctext
+		new bool:clone;
+ 		if(cresponse) clone = true;
+        for(new i = 0; i < MAX_CAR_OBJECTS; i++)
+        {
+            if(CarData[CurrVehicle[playerid]][CarObjectRef][i] == -1)
+            {
+            	if(clone) SetCurrObject(playerid, CloneObject(CurrObject[playerid]));
+				else
+				{
+					if(IsObjectAttachedToVehicle(CurrObject[playerid]))
+					{
+						SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+						SendClientMessage(playerid, STEALTH_YELLOW, "That object is already attached to a vehicle.");
+					}
+				}
+
+                AttachDynamicObjectToVehicle(ObjectData[CurrObject[playerid]][oID], CarData[CurrVehicle[playerid]][CarID], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
+                CarData[CurrVehicle[playerid]][CarObjectRef][i] = CurrObject[playerid];
+                ObjectData[CurrObject[playerid]][oAttachedVehicle] = CurrVehicle[playerid];
+                
+                CarData[CurrVehicle[playerid]][COX][i] = 0.0;
+                CarData[CurrVehicle[playerid]][COY][i] = 0.0;
+                CarData[CurrVehicle[playerid]][COZ][i] = 0.0;
+                CarData[CurrVehicle[playerid]][CORX][i] = 0.0;
+                CarData[CurrVehicle[playerid]][CORY][i] = 0.0;
+                CarData[CurrVehicle[playerid]][CORZ][i] = 0.0;
+
+                sqlite_SaveVehicleObjectData(CurrVehicle[playerid]);
+                
+                UpdateObject3DText(CurrObject[playerid], false);
+
+				SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_GREEN, "Attached object to vehicle.");
+
+				return 1;
+			}
+        }
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "This vehicle has too many objects.");
+   	}
+	Dialog_ShowCallback(playerid, using inline CloneVA, DIALOG_STYLE_MSGBOX, "Texture Studio", "Would you like to clone this object\nbefore attaching to vehicle?", "Yes", "No");
+
+	return 1;
+}
+
+YCMD:avmirror(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Mirror an attached object on the current vehicle.");
+		return 1;
+	}
+
+	MapOpenCheck();
+
+	NoEditingMode(playerid);
+
+	EditCheck(playerid);
+
+	if(ObjectData[CurrObject[playerid]][oAttachedVehicle] < 0)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "This object is not attached to any vehicles.");
+	}
+	
+	inline Mirror(mxpid, mxdialogid, mxresponse, mxlistitem, string:mxtext[])
+	{
+		#pragma unused mxpid, mxdialogid, mxtext
+		if(!mxresponse)
+			return 1;
+	
+		new bool:mx, bool:my, bool:mz;
+		switch(mxlistitem)
+		{
+			case 0: mx = true;
+			case 1: my = true;
+			case 2: mz = true;
+		}
+		
+		for(new i = 0; i < MAX_CAR_OBJECTS; i++)
+		{
+			if(CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][CarObjectRef][i] == -1)
+			{
+				new cloneindex = CurrObject[playerid];
+				SetCurrObject(playerid, CloneObject(CurrObject[playerid]));
+				new refindex = GetCarObjectRefIndex(ObjectData[cloneindex][oAttachedVehicle], cloneindex);
+				
+				if(mx) {
+					CarData[ObjectData[cloneindex][oAttachedVehicle]][COX][i] = -CarData[ObjectData[cloneindex][oAttachedVehicle]][COX][refindex];
+					CarData[ObjectData[cloneindex][oAttachedVehicle]][CORX][i] = CarData[ObjectData[cloneindex][oAttachedVehicle]][CORX][refindex];
+					CarData[ObjectData[cloneindex][oAttachedVehicle]][CORY][i] = -CarData[ObjectData[cloneindex][oAttachedVehicle]][CORY][refindex];
+					CarData[ObjectData[cloneindex][oAttachedVehicle]][CORZ][i] = -CarData[ObjectData[cloneindex][oAttachedVehicle]][CORZ][refindex];
+				}
+				else CarData[ObjectData[cloneindex][oAttachedVehicle]][COX][i] = CarData[ObjectData[cloneindex][oAttachedVehicle]][COX][refindex];
+
+				if(my) {
+					CarData[ObjectData[cloneindex][oAttachedVehicle]][COY][i] = -CarData[ObjectData[cloneindex][oAttachedVehicle]][COY][refindex];
+					CarData[ObjectData[cloneindex][oAttachedVehicle]][CORX][i] = -CarData[ObjectData[cloneindex][oAttachedVehicle]][CORX][refindex];
+					CarData[ObjectData[cloneindex][oAttachedVehicle]][CORY][i] = CarData[ObjectData[cloneindex][oAttachedVehicle]][CORY][refindex];
+					CarData[ObjectData[cloneindex][oAttachedVehicle]][CORZ][i] = -CarData[ObjectData[cloneindex][oAttachedVehicle]][CORZ][refindex];
+				}
+				else CarData[ObjectData[cloneindex][oAttachedVehicle]][COY][i] = CarData[ObjectData[cloneindex][oAttachedVehicle]][COY][refindex];
+
+				if(mz) {
+					CarData[ObjectData[cloneindex][oAttachedVehicle]][COZ][i] = -CarData[ObjectData[cloneindex][oAttachedVehicle]][COZ][refindex];
+					CarData[ObjectData[cloneindex][oAttachedVehicle]][CORX][i] = -CarData[ObjectData[cloneindex][oAttachedVehicle]][CORX][refindex];
+					CarData[ObjectData[cloneindex][oAttachedVehicle]][CORY][i] = -CarData[ObjectData[cloneindex][oAttachedVehicle]][CORY][refindex];
+					CarData[ObjectData[cloneindex][oAttachedVehicle]][CORZ][i] = CarData[ObjectData[cloneindex][oAttachedVehicle]][CORZ][refindex];
+				}
+				else CarData[ObjectData[cloneindex][oAttachedVehicle]][COZ][i] = CarData[ObjectData[cloneindex][oAttachedVehicle]][COZ][refindex];
+
+				AttachDynamicObjectToVehicle(ObjectData[CurrObject[playerid]][oID], CarData[ObjectData[cloneindex][oAttachedVehicle]][CarID],
+					0.0, 0.0, 0.0, 0.0, 0.0, 0.0
+				);
+
+				CarData[ObjectData[cloneindex][oAttachedVehicle]][CarObjectRef][i] = CurrObject[playerid];
+				ObjectData[CurrObject[playerid]][oAttachedVehicle] = ObjectData[cloneindex][oAttachedVehicle];
+
+				UpdateAttachedVehicleObject(ObjectData[CurrObject[playerid]][oAttachedVehicle], i, VEHICLE_ATTACH_UPDATE);
+
+				sqlite_SaveVehicleObjectData(ObjectData[CurrObject[playerid]][oAttachedVehicle]);
+
+				SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+				SendClientMessage(playerid, STEALTH_GREEN, "Mirror attached object to vehicle.");
+				return 1;
+			}
+		}
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "Too many attached objects.");
+	}
+	Dialog_ShowCallback(playerid, using inline Mirror, DIALOG_STYLE_LIST, "Texture Studio - Select Mirror Axis", "X\nY\nZ", "Select", "");
+	return 1;
+}
+
+YCMD:avclone(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Clone an attached object on the current vehicle.");
+		return 1;
+	}
+
+	MapOpenCheck();
+
+	NoEditingMode(playerid);
+
+	EditCheck(playerid);
+
+	if(ObjectData[CurrObject[playerid]][oAttachedVehicle] < 0)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "This object is not attached to any vehicles.");
+	}
+	
+	for(new i = 0; i < MAX_CAR_OBJECTS; i++)
+	{
+		if(CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][CarObjectRef][i] == -1)
+		{
+			new cloneindex = CurrObject[playerid];
+			SetCurrObject(playerid, CloneObject(CurrObject[playerid]));
+			new refindex = GetCarObjectRefIndex(ObjectData[cloneindex][oAttachedVehicle], cloneindex);
+			
+			CarData[ObjectData[cloneindex][oAttachedVehicle]][COX][i] = CarData[ObjectData[cloneindex][oAttachedVehicle]][COX][refindex];
+			CarData[ObjectData[cloneindex][oAttachedVehicle]][COY][i] = CarData[ObjectData[cloneindex][oAttachedVehicle]][COY][refindex];
+			CarData[ObjectData[cloneindex][oAttachedVehicle]][COZ][i] = CarData[ObjectData[cloneindex][oAttachedVehicle]][COZ][refindex];
+
+			AttachDynamicObjectToVehicle(ObjectData[CurrObject[playerid]][oID], CarData[ObjectData[cloneindex][oAttachedVehicle]][CarID],
+				0.0, 0.0, 0.0, 0.0, 0.0, 0.0
+			);
+
+			CarData[ObjectData[cloneindex][oAttachedVehicle]][CarObjectRef][i] = CurrObject[playerid];
+			ObjectData[CurrObject[playerid]][oAttachedVehicle] = ObjectData[cloneindex][oAttachedVehicle];
+
+			UpdateAttachedVehicleObject(ObjectData[CurrObject[playerid]][oAttachedVehicle], i, VEHICLE_ATTACH_UPDATE);
+
+			sqlite_SaveVehicleObjectData(ObjectData[CurrObject[playerid]][oAttachedVehicle]);
+
+			SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+			SendClientMessage(playerid, STEALTH_GREEN, "Cloned object attached object to vehicle.");
+			return 1;
+		}
+	}
+	
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	SendClientMessage(playerid, STEALTH_YELLOW, "Too many attached objects.");
+	return 1;
+}
+
+YCMD:avdetach(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Detach the current object from a vehicle.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	NoEditingMode(playerid);
+
+	EditCheck(playerid);
+	
+	if(ObjectData[CurrObject[playerid]][oAttachedVehicle] > -1)
+	{
+		new index = CurrObject[playerid];
+		if(ObjectData[index][oAttachedVehicle] > -1) UpdateAttachedObjectRef(ObjectData[index][oAttachedVehicle], index);
+		
+	    ObjectData[CurrObject[playerid]][oAttachedVehicle] = -1;
+	    
+		// Destroy the object
+	    DestroyDynamicObject(ObjectData[index][oID]);
+
+		// Re-create object
+		ObjectData[index][oID] = CreateDynamicObject(ObjectData[index][oModel], ObjectData[index][oX], ObjectData[index][oY], ObjectData[index][oZ], ObjectData[index][oRX], ObjectData[index][oRY], ObjectData[index][oRZ], MapSetting[mVirtualWorld], MapSetting[mInterior], -1, 300.0);
+		Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[index][oID], E_STREAMER_DRAW_DISTANCE, 300.0);
+
+		// We need to update textures and materials
+		UpdateMaterial(index);
+
+		// Update the object text
+		UpdateObjectText(index);
+		
+		// Update 3d Text
+		UpdateObject3DText(index, false);
+	
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Detached object from vehicle.");
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "This object is not attached to any vehicles.");
+	}
+	return 1;
+
+
+}
+
+YCMD:avsel(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Select a vehicle by index.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    new index = strval(arg);
+    if(Iter_Contains(Cars, index))
+	{
+		CurrVehicle[playerid] = index;
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		new line[128];
+		format(line, sizeof(line), "Select vehicle index: %i", index);
+		SendClientMessage(playerid, STEALTH_GREEN, line);
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "That vehicle does not exist.");
+	}
+
+
+	return 1;
+}
+
+YCMD:avclonecar(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Clone current vehicle with all properties and objects.");
+		return 1;
+	}
+
+    MapOpenCheck();
+    NoEditingMode(playerid);
+	VehicleCheck(playerid);
+	
+	new index = Iter_Free(Cars);
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	if(index > -1)
+	{
+		// Create clone car
+		new CloneCar = CurrVehicle[playerid];
+		GetPlayerPos(playerid, CarData[index][CarSpawnX], CarData[index][CarSpawnY], CarData[index][CarSpawnZ]);
+		GetXYInFrontOfPlayer(playerid, CarData[index][CarSpawnX], CarData[index][CarSpawnY], 2.0);
+		GetPlayerFacingAngle(playerid, CarData[index][CarSpawnFA]);
+        
+        CarData[index][CarColor1]     = CarData[CloneCar][CarColor1];
+        CarData[index][CarColor2]     = CarData[CloneCar][CarColor2];
+        CarData[index][CarPaintJob]   = CarData[CloneCar][CarPaintJob];
+        CarData[index][CarSiren]      = CarData[CloneCar][CarSiren];
+        CarData[index][CarComponents] = CarData[CloneCar][CarComponents];
+        
+		CurrVehicle[playerid] = AddNewCar(CarData[CloneCar][CarModel], index, true);
+
+		// Clone and attach objects
+		for(new i = 0; i < MAX_CAR_OBJECTS; i++)
+		{
+		    if(CarData[CloneCar][CarObjectRef][i] == -1) continue;
+
+		    // Clone and attach
+		    new CloneIndex = CloneObject(CarData[CloneCar][CarObjectRef][i]);
+
+            AttachDynamicObjectToVehicle(ObjectData[CloneIndex][oID], CarData[CurrVehicle[playerid]][CarID],
+				CarData[CloneCar][COX][i], CarData[CloneCar][COY][i], CarData[CloneCar][COZ][i], CarData[CloneCar][CORX][i], CarData[CloneCar][CORY][i], CarData[CloneCar][CORZ][i]);
+            CarData[CurrVehicle[playerid]][CarObjectRef][i] = CloneIndex;
+            ObjectData[CloneIndex][oAttachedVehicle] = CurrVehicle[playerid];
+            
+            CarData[CurrVehicle[playerid]][COX][i] = CarData[CloneCar][COX][i];
+            CarData[CurrVehicle[playerid]][COY][i] = CarData[CloneCar][COY][i];
+            CarData[CurrVehicle[playerid]][COZ][i] = CarData[CloneCar][COZ][i];
+            CarData[CurrVehicle[playerid]][CORX][i] = CarData[CloneCar][CORX][i];
+            CarData[CurrVehicle[playerid]][CORY][i] = CarData[CloneCar][CORY][i];
+            CarData[CurrVehicle[playerid]][CORZ][i] = CarData[CloneCar][CORZ][i];
+
+            sqlite_SaveVehicleObjectData(CurrVehicle[playerid]);
+
+            UpdateObject3DText(CloneIndex, false);
+		}
+        SendClientMessage(playerid, STEALTH_GREEN, "You have cloned this vehicle.");
+		return 1;
+	}
+	SendClientMessage(playerid, STEALTH_YELLOW, "Too many cars");
+
+	return 1;
+}
+
+
+YCMD:avox(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Move a vehicle's attached object along the X axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	NoEditingMode(playerid);
+
+	EditCheck(playerid);
+
+	if(ObjectData[CurrObject[playerid]][oAttachedVehicle] > -1)
+	{
+		new Float:dist;
+		dist = floatstr(arg);
+		if(dist == 0) dist = 1.0;
+		
+		new refindex = GetCarObjectRefIndex(ObjectData[CurrObject[playerid]][oAttachedVehicle], CurrObject[playerid]);
+		CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][COX][refindex] += dist;
+	    UpdateAttachedVehicleObject(ObjectData[CurrObject[playerid]][oAttachedVehicle], refindex, VEHICLE_ATTACH_UPDATE);
+
+	    sqlite_SaveVehicleObjectData(ObjectData[CurrObject[playerid]][oAttachedVehicle]);
+
+		UpdatePlayerOSelText(playerid);
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "This object is not attached to a vehicle");
+	}
+
+	return 1;
+}
+
+YCMD:avoy(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Move a vehicle's attached object along the Y axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	NoEditingMode(playerid);
+
+	EditCheck(playerid);
+
+	if(ObjectData[CurrObject[playerid]][oAttachedVehicle] > -1)
+	{
+		new Float:dist;
+		dist = floatstr(arg);
+		if(dist == 0) dist = 1.0;
+
+		new refindex = GetCarObjectRefIndex(ObjectData[CurrObject[playerid]][oAttachedVehicle], CurrObject[playerid]);
+		CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][COY][refindex] += dist;
+	    UpdateAttachedVehicleObject(ObjectData[CurrObject[playerid]][oAttachedVehicle], refindex, VEHICLE_ATTACH_UPDATE);
+
+	    sqlite_SaveVehicleObjectData(ObjectData[CurrObject[playerid]][oAttachedVehicle]);
+
+		UpdatePlayerOSelText(playerid);
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "This object is not attached to a vehicle");
+	}
+
+	return 1;
+}
+
+YCMD:avoz(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Move a vehicle's attached object along the Z axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	NoEditingMode(playerid);
+
+	EditCheck(playerid);
+
+	if(ObjectData[CurrObject[playerid]][oAttachedVehicle] > -1)
+	{
+		new Float:dist;
+		dist = floatstr(arg);
+		if(dist == 0) dist = 1.0;
+
+		new refindex = GetCarObjectRefIndex(ObjectData[CurrObject[playerid]][oAttachedVehicle], CurrObject[playerid]);
+		CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][COZ][refindex] += dist;
+	    UpdateAttachedVehicleObject(ObjectData[CurrObject[playerid]][oAttachedVehicle], refindex, VEHICLE_ATTACH_UPDATE);
+
+	    sqlite_SaveVehicleObjectData(ObjectData[CurrObject[playerid]][oAttachedVehicle]);
+
+		UpdatePlayerOSelText(playerid);
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "This object is not attached to a vehicle");
+	}
+
+	return 1;
+}
+
+YCMD:avrx(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Rotate a vehicle's attached object along the X axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	NoEditingMode(playerid);
+
+	EditCheck(playerid);
+
+	if(ObjectData[CurrObject[playerid]][oAttachedVehicle] > -1)
+	{
+		new Float:dist;
+		dist = floatstr(arg);
+		if(dist == 0) dist = 5.0;
+
+		new refindex = GetCarObjectRefIndex(ObjectData[CurrObject[playerid]][oAttachedVehicle], CurrObject[playerid]);
+		CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][CORX][refindex] += dist;
+	    UpdateAttachedVehicleObject(ObjectData[CurrObject[playerid]][oAttachedVehicle], refindex, VEHICLE_ATTACH_UPDATE);
+
+	    sqlite_SaveVehicleObjectData(ObjectData[CurrObject[playerid]][oAttachedVehicle]);
+
+		UpdatePlayerOSelText(playerid);
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "This object is not attached to a vehicle");
+	}
+
+	return 1;
+}
+
+YCMD:avry(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Rotate a vehicle's attached object along the Y axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	NoEditingMode(playerid);
+
+	EditCheck(playerid);
+
+	if(ObjectData[CurrObject[playerid]][oAttachedVehicle] > -1)
+	{
+		new Float:dist;
+		dist = floatstr(arg);
+		if(dist == 0) dist = 5.0;
+
+		new refindex = GetCarObjectRefIndex(ObjectData[CurrObject[playerid]][oAttachedVehicle], CurrObject[playerid]);
+		CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][CORY][refindex] += dist;
+	    UpdateAttachedVehicleObject(ObjectData[CurrObject[playerid]][oAttachedVehicle], refindex, VEHICLE_ATTACH_UPDATE);
+
+	    sqlite_SaveVehicleObjectData(ObjectData[CurrObject[playerid]][oAttachedVehicle]);
+
+		UpdatePlayerOSelText(playerid);
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "This object is not attached to a vehicle");
+	}
+
+	return 1;
+}
+
+YCMD:avrz(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Rotate a vehicle's attached object along the Z axis.");
+		return 1;
+	}
+
+    MapOpenCheck();
+
+	NoEditingMode(playerid);
+
+	EditCheck(playerid);
+
+	if(ObjectData[CurrObject[playerid]][oAttachedVehicle] > -1)
+	{
+		new Float:dist;
+		dist = floatstr(arg);
+		if(dist == 0) dist = 5.0;
+
+		new refindex = GetCarObjectRefIndex(ObjectData[CurrObject[playerid]][oAttachedVehicle], CurrObject[playerid]);
+		CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][CORZ][refindex] += dist;
+	    UpdateAttachedVehicleObject(ObjectData[CurrObject[playerid]][oAttachedVehicle], refindex, VEHICLE_ATTACH_UPDATE);
+
+	    sqlite_SaveVehicleObjectData(ObjectData[CurrObject[playerid]][oAttachedVehicle]);
+
+		UpdatePlayerOSelText(playerid);
+	}
+	else
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "This object is not attached to a vehicle");
+	}
+
+	return 1;
+}
+
+static Float:AVEditPos[MAX_PLAYERS][3];
+static Float:AVEditObjPos[MAX_PLAYERS][6];
+
+EditVehicleObject(playerid)
+{
+    MapOpenCheck();
+
+	EditCheck(playerid);
+
+   	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+
+   	if(!EditingMode[playerid])
+	{
+		new carindex = ObjectData[CurrObject[playerid]][oAttachedVehicle];
+		new refindex = GetCarObjectRefIndex(ObjectData[CurrObject[playerid]][oAttachedVehicle], CurrObject[playerid]);
+		
+		GetVehiclePos(CarData[carindex][CarID], AVEditPos[playerid][0], AVEditPos[playerid][1], AVEditPos[playerid][2]);
+
+		PivotObject[playerid] = CreateDynamicObject(1974,
+			AVEditPos[playerid][0]+CarData[carindex][COX][refindex],
+			AVEditPos[playerid][1]+CarData[carindex][COY][refindex],
+			AVEditPos[playerid][2]+CarData[carindex][COZ][refindex],
+			CarData[carindex][CORX][refindex],
+			CarData[carindex][CORY][refindex],
+			CarData[carindex][CORZ][refindex],
+			-1, -1, playerid);
+
+        AVEditObjPos[playerid][0] = CarData[carindex][COX][refindex];
+        AVEditObjPos[playerid][1] = CarData[carindex][COY][refindex];
+        AVEditObjPos[playerid][2] = CarData[carindex][COZ][refindex];
+        AVEditObjPos[playerid][3] = CarData[carindex][CORX][refindex];
+        AVEditObjPos[playerid][4] = CarData[carindex][CORY][refindex];
+        AVEditObjPos[playerid][5] = CarData[carindex][CORZ][refindex];
+
+		Streamer_SetFloatData(STREAMER_TYPE_OBJECT, PivotObject[playerid], E_STREAMER_DRAW_DISTANCE, 3000.0);
+
+		SetDynamicObjectMaterial(PivotObject[playerid], 0, 10765, "airportgnd_sfse", "white", -256);
+
+		Streamer_Update(playerid);
+
+		EditingMode[playerid] = true;
+		SetEditMode(playerid, EDIT_MODE_VOBJECT);
+
+		SetVehicleZAngle(CarData[carindex][CarID], 0.0);
+
+		EditDynamicObject(playerid, PivotObject[playerid]);
+
+		SendClientMessage(playerid, STEALTH_GREEN, "Entered Vehicle Edit Object Mode");
+
+	}
+	else SendClientMessage(playerid, STEALTH_YELLOW, "You are in editing mode already");
+	return 1;
+}
+
+OnPlayerEditVObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
+{
+	#pragma unused objectid
+	if(response == EDIT_RESPONSE_FINAL)
+	{
+		new refindex = GetCarObjectRefIndex(ObjectData[CurrObject[playerid]][oAttachedVehicle], CurrObject[playerid]);
+
+	    AVEditPos[playerid][0] = x - AVEditPos[playerid][0];
+	    AVEditPos[playerid][1] = y - AVEditPos[playerid][1];
+	    AVEditPos[playerid][2] = z - AVEditPos[playerid][2];
+
+        CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][COX][refindex] = AVEditPos[playerid][0];
+	    CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][COY][refindex] = AVEditPos[playerid][1];
+        CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][COZ][refindex] = AVEditPos[playerid][2];
+
+        CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][CORX][refindex] = rx;
+	    CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][CORY][refindex] = ry;
+        CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][CORZ][refindex] = rz;
+
+	    UpdateAttachedVehicleObject(ObjectData[CurrObject[playerid]][oAttachedVehicle], refindex, VEHICLE_ATTACH_UPDATE);
+	    sqlite_SaveVehicleObjectData(ObjectData[CurrObject[playerid]][oAttachedVehicle]);
+
+		DestroyDynamicObject(PivotObject[playerid]);
+
+		EditingMode[playerid] = false;
+		SetEditMode(playerid, EDIT_MODE_NONE);
+		
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "Saved new attached object position");
+	}
+	else if(response == EDIT_RESPONSE_UPDATE)
+	{
+		new Float:tmpx, Float:tmpy, Float:tmpz;
+
+		new refindex = GetCarObjectRefIndex(ObjectData[CurrObject[playerid]][oAttachedVehicle], CurrObject[playerid]);
+
+	    tmpx = x - AVEditPos[playerid][0];
+	    tmpy = y - AVEditPos[playerid][1];
+	    tmpz = z - AVEditPos[playerid][2];
+
+        CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][COX][refindex] = tmpx;
+	    CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][COY][refindex] = tmpy;
+        CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][COZ][refindex] = tmpz;
+        
+        CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][CORX][refindex] = rx;
+	    CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][CORY][refindex] = ry;
+        CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][CORZ][refindex] = rz;
+        
+        SetVehicleZAngle(CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][CarID], 0.0);
+
+        UpdateAttachedVehicleObject(ObjectData[CurrObject[playerid]][oAttachedVehicle], refindex, VEHICLE_ATTACH_UPDATE);
+	
+	}
+	else if(response == EDIT_RESPONSE_CANCEL)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "Cancelled vehicle object editing");
+
+		DestroyDynamicObject(PivotObject[playerid]);
+
+		new refindex = GetCarObjectRefIndex(ObjectData[CurrObject[playerid]][oAttachedVehicle], CurrObject[playerid]);
+
+        CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][COX][refindex] = AVEditObjPos[playerid][0];
+        CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][COY][refindex] = AVEditObjPos[playerid][1];
+        CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][COZ][refindex] = AVEditObjPos[playerid][2];
+        CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][CORX][refindex] = AVEditObjPos[playerid][3];
+        CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][CORY][refindex] = AVEditObjPos[playerid][4];
+        CarData[ObjectData[CurrObject[playerid]][oAttachedVehicle]][CORZ][refindex] = AVEditObjPos[playerid][5];
+
+        UpdateAttachedVehicleObject(ObjectData[CurrObject[playerid]][oAttachedVehicle], refindex, VEHICLE_ATTACH_UPDATE);
+
+		EditingMode[playerid] = false;
+		SetEditMode(playerid, EDIT_MODE_NONE);
+	}
+	return 1;
+}
+
+
+UpdateAttachedVehicleObject(carindex, refindex, type)
+{
+	if(type == VEHICLE_ATTACH_UPDATE)
+	{
+	    Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[CarData[carindex][CarObjectRef][refindex]][oID], E_STREAMER_ATTACH_OFFSET_X, CarData[carindex][COX][refindex]);
+	    Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[CarData[carindex][CarObjectRef][refindex]][oID], E_STREAMER_ATTACH_OFFSET_Y, CarData[carindex][COY][refindex]);
+	    Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[CarData[carindex][CarObjectRef][refindex]][oID], E_STREAMER_ATTACH_OFFSET_Z, CarData[carindex][COZ][refindex]);
+	    Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[CarData[carindex][CarObjectRef][refindex]][oID], E_STREAMER_ATTACH_R_X, CarData[carindex][CORX][refindex]);
+	    Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[CarData[carindex][CarObjectRef][refindex]][oID], E_STREAMER_ATTACH_R_Y, CarData[carindex][CORY][refindex]);
+	    Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ObjectData[CarData[carindex][CarObjectRef][refindex]][oID], E_STREAMER_ATTACH_R_Z, CarData[carindex][CORZ][refindex]);
+
+	}
+	else if(type == VEHICLE_REATTACH_UPDATE)
+	{
+		refindex = GetCarObjectRefIndex(carindex, refindex);
+		
+	    AttachDynamicObjectToVehicle(ObjectData[CarData[carindex][CarObjectRef][refindex]][oID], CarData[carindex][CarID],
+			CarData[carindex][COX][refindex], CarData[carindex][COY][refindex], CarData[carindex][COZ][refindex],
+			CarData[carindex][CORX][refindex], CarData[carindex][CORY][refindex], CarData[carindex][CORZ][refindex]
+		);
+	}
+
+	UpdateObject3DText(CarData[carindex][CarObjectRef][refindex], false);
+
+	return 1;
+}
+
+
+UpdateAttachedObjectRef(carindex, objindex)
+{
+	new refindex = GetCarObjectRefIndex(carindex, objindex);
+	if(refindex > -1)
+	{
+		CarData[carindex][CarObjectRef][refindex] = -1;
+		sqlite_SaveVehicleObjectData(carindex);
+	    return 1;
+	}
+    return 0;
+}
+
+GetCarObjectRefIndex(carindex, objindex)
+{
+	for(new i = 0; i < MAX_CAR_OBJECTS; i++)
+	{
+		if(CarData[carindex][CarObjectRef][i] == objindex) return i;
+	}
+	return -1;
+}
+
+static IsObjectAttachedToVehicle(index)
+{
+	foreach(new i : Cars)
+	{
+	    for(new j = 0; j < MAX_CAR_OBJECTS; j++) if(CarData[i][CarObjectRef][j] == index) return 1;
+	}
+	return 0;
+}
+
+GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
+{	// Created by Y_Less
+
+	new Float:a;
+
+	GetPlayerPos(playerid, x, y, a);
+	GetPlayerFacingAngle(playerid, a);
+
+	if (GetPlayerVehicleID(playerid)) {
+	    GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
+	}
+
+	x += (distance * floatsin(-a, degrees));
+	y += (distance * floatcos(-a, degrees));
+}
+
+static ExportCar(playerid, index, name[])
+{
+	new File:f = fopen(name, io_write);
+	new templine[256];
+	
+	// Header
+	fwrite(f,"//Vehicle Exported with Texture Studio By: [uL]Pottus/////////////////////////////////////////////////////////////\r\n");
+	fwrite(f,"//////////////////////////////////////////////////and Crayder/////////////////////////////////////////////////////\r\n");
+	fwrite(f,"//////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n");
+
+	// Includes
+	fwrite(f, "#include <a_samp>\r\n");
+	fwrite(f, "#include <streamer>\r\n\n");
+
+	// Car id
+	fwrite(f, "new carvid;\r\n\n");
+	
+	// Init script
+    fwrite(f, "public OnFilterScriptInit()\r\n");
+    fwrite(f, "{ \r\n");
+    fwrite(f,"    new tmpobjid;\r\n\n");
+    
+	format(templine, sizeof(templine), "    carvid = CreateVehicle(%i,%.3f,%.3f,%.3f,%.3f,%i,%i,-1,%i);\r\n\n",
+        CarData[index][CarModel], CarData[index][CarSpawnX], CarData[index][CarSpawnY], CarData[index][CarSpawnZ], CarData[index][CarSpawnFA], CarData[index][CarColor1], CarData[index][CarColor2], CarData[index][CarSiren] ? 1 : 0
+	);
+	
+ 	fwrite(f, templine);
+
+
+	// Mod components
+	for(new i = 0; i < MAX_CAR_COMPONENTS; i++)
+	{
+	    if(CarData[index][CarComponents][i] > 0)
+	    {
+	        format(templine, sizeof(templine), "    AddVehicleComponent(carvid, %i);\r\n", CarData[index][CarComponents][i]);
+			fwrite(f, templine);
+	    }
+	}
+	
+	// Paintjob
+	if(CarData[index][CarPaintJob] < 3)
+	{
+        format(templine, sizeof(templine), "    ChangeVehiclePaintjob(carvid, %i);\r\n\n", CarData[index][CarPaintJob]);
+		fwrite(f, templine);
+	}
+
+
+	// Objects
+    for(new i = 0; i < MAX_CAR_OBJECTS; i++)
+    {
+		// No object
+        if(CarData[index][CarObjectRef][i] == -1) continue;
+        new oindex = CarData[index][CarObjectRef][i];
+
+		// Create object
+		format(templine,sizeof(templine),"    tmpobjid = CreateDynamicObject(%i,0.0,0.0,-1000.0,0.0,0.0,0.0,-1,-1,-1,300.0,300.0);\r\n",ObjectData[oindex][oModel]);
+        fwrite(f,templine);
+
+
+		// Write all materials and colors
+		for(new j = 0; j < MAX_MATERIALS; j++)
+    	{
+			// Does object have a texture set?
+            if(ObjectData[oindex][oTexIndex][j] != 0)
+            {
+				format(templine,sizeof(templine),"    SetDynamicObjectMaterial(tmpobjid, %i, %i, %c%s%c, %c%s%c, %i);\r\n",
+					j, GetTModel(ObjectData[oindex][oTexIndex][j]), 34, GetTXDName(ObjectData[oindex][oTexIndex][j]), 34, 34,GetTextureName(ObjectData[oindex][oTexIndex][j]), 34, ObjectData[oindex][oColorIndex][j]
+				);
+
+				fwrite(f,templine);
+            }
+
+            // No texture how about a color?
+            else if(ObjectData[oindex][oColorIndex][j] != 0)
+            {
+				format(templine,sizeof(templine),"    SetDynamicObjectMaterial(tmpobjid, %i, -1, %c%s%c, %c%s%c, %i);\r\n", j, 34, "none", 34, 34,"none", 34, ObjectData[oindex][oColorIndex][j]);
+				fwrite(f,templine);
+			}
+		}
+
+		// Write any text
+		if(ObjectData[oindex][ousetext])
+		{
+			format(templine,sizeof(templine),"    SetDynamicObjectMaterialText(tmpobjid, 0, %c%s%c, %i, %c%s%c, %i, %i, %i, %i, %i);\r\n",
+				34, ObjectData[oindex][oObjectText], 34,
+				FontSizes[ObjectData[oindex][oFontSize]],
+				34, FontNames[ObjectData[oindex][oFontFace]], 34,
+				ObjectData[oindex][oTextFontSize],
+				ObjectData[oindex][oFontBold],
+				ObjectData[oindex][oFontColor],
+				ObjectData[oindex][oBackColor],
+				ObjectData[oindex][oAlignment]
+			);
+			fwrite(f,templine);
+		}
+		
+		// Attach object to vehicle
+		format(templine, sizeof(templine), "    AttachDynamicObjectToVehicle(tmpobjid, carvid, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f);\r\n",
+			CarData[index][COX][i], CarData[index][COY][i], CarData[index][COZ][i], CarData[index][CORX][i], CarData[index][CORY][i], CarData[index][CORZ][i]
+		);
+		
+		fwrite(f,templine);
+	}
+
+    fwrite(f, "} \r\n\n");
+
+	// Exit script
+    fwrite(f, "public OnFilterScriptExit()\r\n");
+    fwrite(f, "{ \r\n");
+    fwrite(f,"    DestroyVehicle(carvid);\r\n");
+    fwrite(f, "} \r\n\n");
+    
+	// Vehicle respawn
+    fwrite(f, "public OnVehicleSpawn(vehicleid)\r\n");
+
+    fwrite(f, "{ \r\n");
+    fwrite(f, "    if(vehicleid == carvid)\r\n");
+    fwrite(f, "    { \r\n");
+
+	// Mod components
+	for(new i = 0; i < MAX_CAR_COMPONENTS; i++)
+	{
+	    if(CarData[index][CarComponents][i] > 0)
+	    {
+	        format(templine, sizeof(templine), "        AddVehicleComponent(carvid, %i);\r\n", CarData[index][CarComponents][i]);
+			fwrite(f, templine);
+	    }
+	}
+
+
+
+	// Paintjob
+	if(CarData[index][CarPaintJob] < 3)
+	{
+        format(templine, sizeof(templine), "        ChangeVehiclePaintjob(carvid, %i);\r\n", CarData[index][CarPaintJob]);
+		fwrite(f, templine);
+	}
+
+    fwrite(f, "    } \r\n");
+
+
+    fwrite(f, "} \r\n");
+
+    fclose(f);
+
+	format(templine, sizeof(templine), "Exported vehicle to filterscript %s", name);
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	SendClientMessage(playerid, STEALTH_GREEN, templine);
+
+	return 1;
+}
+
+static ExportAllCars(playerid, name[])
+{
+	new File:f = fopen(name, io_write);
+	new templine[256];
+
+	// Header
+	fwrite(f,"//Vehicle Exported with Texture Studio By: [uL]Pottus/////////////////////////////////////////////////////////////\r\n");
+	fwrite(f,"//////////////////////////////////////////////////and Crayder/////////////////////////////////////////////////////\r\n");
+	fwrite(f,"//////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n");
+
+	// Includes
+	fwrite(f, "#include <a_samp>\r\n");
+	fwrite(f, "#include <streamer>\r\n\n");
+
+	new CarCount = Iter_Count(Cars);
+	new CurrCar;
+
+	// Car id
+	for(new i = 0; i < CarCount; i++)
+	{
+		format(templine, sizeof(templine), "new carvid_%i;\r\n", i);
+		fwrite(f, templine);
+	}
+
+	fwrite(f, "\n");
+
+	// Init script
+    fwrite(f, "public OnFilterScriptInit()\r\n");
+    fwrite(f, "{ \r\n");
+    fwrite(f,"    new tmpobjid;\r\n\n");
+
+	foreach(new i : Cars)
+	{
+		format(templine, sizeof(templine), "    carvid_%i = CreateVehicle(%i,%.3f,%.3f,%.3f,%.3f,%i,%i,-1,%i);\r\n",
+	        CurrCar++, CarData[i][CarModel], CarData[i][CarSpawnX], CarData[i][CarSpawnY], CarData[i][CarSpawnZ], CarData[i][CarSpawnFA], CarData[i][CarColor1], CarData[i][CarColor2], CarData[i][CarSiren] ? 1 : 0
+		);
+        fwrite(f, templine);
+	}
+	
+	CurrCar = 0;
+
+    fwrite(f, "\n");
+
+	foreach(new i : Cars)
+	{
+		// Mod components
+		for(new j = 0; j < MAX_CAR_COMPONENTS; j++)
+		{
+		    if(CarData[i][CarComponents][j] > 0)
+		    {
+		        format(templine, sizeof(templine), "    AddVehicleComponent(carvid_%i, %i);\r\n", CurrCar, CarData[i][CarComponents][j]);
+				fwrite(f, templine);
+		    }
+		}
+		CurrCar++;
+	}
+
+    CurrCar = 0;
+    
+    fwrite(f, "\n");
+
+	foreach(new i : Cars)
+	{
+		// Paintjob
+		if(CarData[i][CarPaintJob] < 3)
+		{
+	        format(templine, sizeof(templine), "    ChangeVehiclePaintjob(carvid_%i, %i);\r\n", CurrCar, CarData[i][CarPaintJob]);
+			fwrite(f, templine);
+		}
+		CurrCar++;
+	}
+
+    CurrCar = 0;
+    
+    fwrite(f, "\n");
+
+	foreach(new i : Cars)
+	{
+		// Objects
+	    for(new j = 0; j < MAX_CAR_OBJECTS; j++)
+	    {
+			// No object
+	        if(CarData[i][CarObjectRef][j] == -1) continue;
+	        new oindex = CarData[i][CarObjectRef][j];
+
+			// Create object
+			format(templine,sizeof(templine),"    tmpobjid = CreateDynamicObject(%i,0.0,0.0,-1000.0,0.0,0.0,0.0,-1,-1,-1,300.0,300.0);\r\n",ObjectData[oindex][oModel]);
+	        fwrite(f,templine);
+
+
+			// Write all materials and colors
+			for(new k = 0; k < MAX_MATERIALS; k++)
+	    	{
+				// Does object have a texture set?
+	            if(ObjectData[oindex][oTexIndex][k] != 0)
+	            {
+					format(templine,sizeof(templine),"    SetDynamicObjectMaterial(tmpobjid, %i, %i, %c%s%c, %c%s%c, %i);\r\n",
+						k, GetTModel(ObjectData[oindex][oTexIndex][k]), 34, GetTXDName(ObjectData[oindex][oTexIndex][k]), 34, 34,GetTextureName(ObjectData[oindex][oTexIndex][k]), 34, ObjectData[oindex][oColorIndex][k]
+					);
+
+					fwrite(f,templine);
+	            }
+
+	            // No texture how about a color?
+	            else if(ObjectData[oindex][oColorIndex][k] != 0)
+	            {
+					format(templine,sizeof(templine),"    SetDynamicObjectMaterial(tmpobjid, %i, -1, %c%s%c, %c%s%c, %i);\r\n", j, 34, "none", 34, 34,"none", 34, ObjectData[oindex][oColorIndex][k]);
+					fwrite(f,templine);
+				}
+			}
+
+			// Write any text
+			if(ObjectData[oindex][ousetext])
+			{
+				format(templine,sizeof(templine),"    SetDynamicObjectMaterialText(tmpobjid, 0, %c%s%c, %i, %c%s%c, %i, %i, %i, %i, %i);\r\n",
+					34, ObjectData[oindex][oObjectText], 34,
+					FontSizes[ObjectData[oindex][oFontSize]],
+					34, FontNames[ObjectData[oindex][oFontFace]], 34,
+					ObjectData[oindex][oTextFontSize],
+					ObjectData[oindex][oFontBold],
+					ObjectData[oindex][oFontColor],
+					ObjectData[oindex][oBackColor],
+					ObjectData[oindex][oAlignment]
+				);
+				fwrite(f,templine);
+			}
+
+			// Attach object to vehicle
+			format(templine, sizeof(templine), "    AttachDynamicObjectToVehicle(tmpobjid, carvid_%i, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f);\r\n",
+				CurrCar, CarData[i][COX][j], CarData[i][COY][j], CarData[i][COZ][j], CarData[i][CORX][j], CarData[i][CORY][j], CarData[i][CORZ][j]
+			);
+
+			fwrite(f,templine);
+		}
+		CurrCar++;
+		
+		fwrite(f, "\n");
+	}
+    fwrite(f, "} \r\n\n");
+
+	CurrCar = 0;
+
+	// Exit script
+    fwrite(f, "public OnFilterScriptExit()\r\n");
+    fwrite(f, "{ \r\n");
+    
+	foreach(new i : Cars)
+	{
+		format(templine, sizeof(templine), "    DestroyVehicle(carvid_%i);\r\n", CurrCar);
+    	fwrite(f, templine);
+        CurrCar++;
+	}
+
+    fwrite(f, "} \r\n\n");
+
+    CurrCar = 0;
+    
+	// Vehicle respawn
+    fwrite(f, "public OnVehicleSpawn(vehicleid)\r\n");
+
+    fwrite(f, "{ \r\n");
+    foreach(new i : Cars)
+    {
+		if(CurrCar == 0) format(templine, sizeof(templine), "    if(vehicleid == carvid_%i)\r\n", CurrCar);
+		else format(templine, sizeof(templine), "    else if(vehicleid == carvid_%i)\r\n", CurrCar);
+        fwrite(f, templine);
+
+		fwrite(f, "    {\r\n");
+
+		// Mod components
+		for(new j = 0; j < MAX_CAR_COMPONENTS; j++)
+		{
+		    if(CarData[i][CarComponents][j] > 0)
+		    {
+		        format(templine, sizeof(templine), "        AddVehicleComponent(carvid_%i, %i);\r\n", CurrCar, CarData[i][CarComponents][i]);
+				fwrite(f, templine);
+		    }
+		}
+
+		// Paintjob
+		if(CarData[i][CarPaintJob] < 3)
+		{
+	        format(templine, sizeof(templine), "        ChangeVehiclePaintjob(carvid_%i, %i);\r\n", CurrCar, CarData[i][CarPaintJob]);
+			fwrite(f, templine);
+		}
+
+	    fwrite(f, "    }\r\n");
+
+        CurrCar++;
+	}
+
+    fwrite(f, "} \r\n");
+
+    fclose(f);
+
+	format(templine, sizeof(templine), "Exported vehicles to filterscript %s", name);
+
+	SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+	SendClientMessage(playerid, STEALTH_GREEN, templine);
+
+	return 1;
+}
+
+
+YCMD:avexport(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Export all vehicles to a text file.");
+		return 1;
+	}
+
+	MapOpenCheck();
+
+	VehicleCheck(playerid);
+
+	// Ask for a map name
+	inline ExportVehicle(epid, edialogid, eresponse, elistitem, string:etext[])
+	{
+	    #pragma unused elistitem, edialogid, epid
+	    if(eresponse)
+	    {
+			// Was a map name supplied ?
+			if(!isnull(etext))
+			{
+				new exportmap[256];
+				
+				// Check map name length
+				if(strlen(etext) >= 20)
+				{
+					SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+					SendClientMessage(playerid, STEALTH_YELLOW, "Choose a shorter vehicle name to export to...");
+					return 1;
+				}
+
+				// Format the output name
+				format(exportmap, sizeof(exportmap), "tstudio/ExportCars/%s.pwn", etext);
+
+				// Map exists ask to remove
+			    if(fexist(exportmap))
+				{
+					inline RemoveVehicle(rpid, rdialogid, rresponse, rlistitem, string:rtext[])
+					{
+				        #pragma unused rlistitem, rdialogid, rpid, rtext
+
+						// Remove map and export
+				        if(rresponse)
+				        {
+				            fremove(exportmap);
+				            ExportCar(playerid, CurrVehicle[playerid], exportmap);
+				        }
+					}
+					Dialog_ShowCallback(playerid, using inline RemoveVehicle, DIALOG_STYLE_MSGBOX, "Texture Studio (Vehicle Export)", "A export exists with this name replace?", "Ok", "Cancel");
+				}
+				// We can start the export
+				else ExportCar(playerid, CurrVehicle[playerid], exportmap);
+			}
+		}
+		else
+		{
+			SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+			SendClientMessage(playerid, STEALTH_YELLOW, "You can't export a vehicle with no name");
+			Dialog_ShowCallback(playerid, using inline ExportVehicle, DIALOG_STYLE_INPUT, "Texture Studio (Vehicle Export)", "Enter a export vehicle name", "Ok", "Cancel");
+		}
+	}
+	Dialog_ShowCallback(playerid, using inline ExportVehicle, DIALOG_STYLE_INPUT, "Texture Studio (Vehicle Export)", "Enter a export vehicle name", "Ok", "Cancel");
+	
+	return 1;
+
+}
+
+YCMD:avexportall(playerid, arg[], help)
+{
+	if(help)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_GREEN, "Export all vehicles to a filterscript.");
+		return 1;
+	}
+
+	MapOpenCheck();
+
+	if(Iter_Count(Cars) == 0)
+	{
+		SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+		SendClientMessage(playerid, STEALTH_YELLOW, "There are no cars to export.");
+		return 1;
+	}
+
+	// Ask for a map name
+	inline ExportVehicles(epid, edialogid, eresponse, elistitem, string:etext[])
+	{
+	    #pragma unused elistitem, edialogid, epid
+	    if(eresponse)
+	    {
+			// Was a map name supplied ?
+			if(!isnull(etext))
+			{
+				new exportmap[256];
+
+				// Check map name length
+				if(strlen(etext) >= 20)
+				{
+					SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+					SendClientMessage(playerid, STEALTH_YELLOW, "Choose a shorter vehicles name to export to...");
+					return 1;
+				}
+
+				// Format the output name
+				format(exportmap, sizeof(exportmap), "tstudio/ExportCars/%s.pwn", etext);
+
+				// Map exists ask to remove
+			    if(fexist(exportmap))
+				{
+					inline RemoveVehicles(rpid, rdialogid, rresponse, rlistitem, string:rtext[])
+					{
+				        #pragma unused rlistitem, rdialogid, rpid, rtext
+
+						// Remove map and export
+				        if(rresponse)
+				        {
+				            fremove(exportmap);
+				            ExportAllCars(playerid, exportmap);
+				        }
+					}
+					Dialog_ShowCallback(playerid, using inline RemoveVehicles, DIALOG_STYLE_MSGBOX, "Texture Studio (Export Vehicles)", "A export exists with this name replace?", "Ok", "Cancel");
+				}
+				// We can start the export
+				else ExportAllCars(playerid, exportmap);
+			}
+		}
+		else
+		{
+			SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
+			SendClientMessage(playerid, STEALTH_YELLOW, "You can't export a vehicle with no name");
+			Dialog_ShowCallback(playerid, using inline ExportVehicles, DIALOG_STYLE_INPUT, "Texture Studio (Export Vehicles)", "Enter a export vehicle name", "Ok", "Cancel");
+		}
+	}
+	Dialog_ShowCallback(playerid, using inline ExportVehicles, DIALOG_STYLE_INPUT, "Texture Studio (Export Vehicles)", "Enter a export vehicle name", "Ok", "Cancel");
+
+	return 1;
+}
+

+ 101 - 0
Texture-Studio-master/filterscripts/tstudio/webcolors.pwn

@@ -0,0 +1,101 @@
+
+new webcolors[216 * (9 + 2 + 3)];
+
+new WebColorsRGB[216][9] = {
+	"{000000}","{000033}","{000066}","{000099}","{0000CC}","{0000FF}",
+	"{003300}","{003333}","{003366}","{003399}","{0033CC}","{0033FF}",
+	"{006600}","{006633}","{006666}","{006699}","{0066CC}","{0066FF}",
+	"{009900}","{009933}","{009966}","{009999}","{0099CC}","{0099FF}",
+	"{00CC00}","{00CC33}","{00CC66}","{00CC99}","{00CCCC}","{00CCFF}",
+	"{00FF00}","{00FF33}","{00FF66}","{00FF99}","{00FFCC}","{00FFFF}",
+	"{330000}","{330033}","{330066}","{330099}","{3300CC}","{3300FF}",
+	"{333300}","{333333}","{333366}","{333399}","{3333CC}","{3333FF}",
+	"{336600}","{336633}","{336666}","{336699}","{3366CC}","{3366FF}",
+	"{339900}","{339933}","{339966}","{339999}","{3399CC}","{3399FF}",
+	"{33CC00}","{33CC33}","{33CC66}","{33CC99}","{33CCCC}","{33CCFF}",
+	"{33FF00}","{33FF33}","{33FF66}","{33FF99}","{33FFCC}","{33FFFF}",
+	"{660000}","{660033}","{660066}","{660099}","{6600CC}","{6600FF}",
+	"{663300}","{663333}","{663366}","{663399}","{6633CC}","{6633FF}",
+	"{666600}","{666633}","{666666}","{666699}","{6666CC}","{6666FF}",
+	"{669900}","{669933}","{669966}","{669999}","{6699CC}","{6699FF}",
+	"{66CC00}","{66CC33}","{66CC66}","{66CC99}","{66CCCC}","{66CCFF}",
+	"{66FF00}","{66FF33}","{66FF66}","{66FF99}","{66FFCC}","{66FFFF}",
+	"{990000}","{990033}","{990066}","{990099}","{9900CC}","{9900FF}",
+	"{993300}","{993333}","{993366}","{993399}","{9933CC}","{9933FF}",
+	"{996600}","{996633}","{996666}","{996699}","{9966CC}","{9966FF}",
+	"{999900}","{999933}","{999966}","{999999}","{9999CC}","{9999FF}",
+	"{99CC00}","{99CC33}","{99CC66}","{99CC99}","{99CCCC}","{99CCFF}",
+	"{99FF00}","{99FF33}","{99FF66}","{99FF99}","{99FFCC}","{99FFFF}",
+	"{CC0000}","{CC0033}","{CC0066}","{CC0099}","{CC00CC}","{CC00FF}",
+	"{CC3300}","{CC3333}","{CC3366}","{CC3399}","{CC33CC}","{CC33FF}",
+	"{CC6600}","{CC6633}","{CC6666}","{CC6699}","{CC66CC}","{CC66FF}",
+	"{CC9900}","{CC9933}","{CC9966}","{CC9999}","{CC99CC}","{CC99FF}",
+	"{CCCC00}","{CCCC33}","{CCCC66}","{CCCC99}","{CCCCCC}","{CCCCFF}",
+	"{CCFF00}","{CCFF33}","{CCFF66}","{CCFF99}","{CCFFCC}","{CCFFFF}",
+	"{FF0000}","{FF0033}","{FF0066}","{FF0099}","{FF00CC}","{FF00FF}",
+	"{FF3300}","{FF3333}","{FF3366}","{FF3399}","{FF33CC}","{FF33FF}",
+	"{FF6600}","{FF6633}","{FF6666}","{FF6699}","{FF66CC}","{FF66FF}",
+	"{FF9900}","{FF9933}","{FF9966}","{FF9999}","{FF99CC}","{FF99FF}",
+	"{FFCC00}","{FFCC33}","{FFCC66}","{FFCC99}","{FFCCCC}","{FFCCFF}",
+	"{FFFF00}","{FFFF33}","{FFFF66}","{FFFF99}","{FFFFCC}","{FFFFFF}"
+};
+
+new WebColorsARGB[216][11] = {
+	{"0xFF000000"},{"0xFF000033"},{"0xFF000066"},{"0xFF000099"},{"0xFF0000CC"},{"0xFF0000FF"},
+	{"0xFF003300"},{"0xFF003333"},{"0xFF003366"},{"0xFF003399"},{"0xFF0033CC"},{"0xFF0033FF"},
+	{"0xFF006600"},{"0xFF006633"},{"0xFF006666"},{"0xFF006699"},{"0xFF0066CC"},{"0xFF0066FF"},
+	{"0xFF009900"},{"0xFF009933"},{"0xFF009966"},{"0xFF009999"},{"0xFF0099CC"},{"0xFF0099FF"},
+	{"0xFF00CC00"},{"0xFF00CC33"},{"0xFF00CC66"},{"0xFF00CC99"},{"0xFF00CCCC"},{"0xFF00CCFF"},
+	{"0xFF00FF00"},{"0xFF00FF33"},{"0xFF00FF66"},{"0xFF00FF99"},{"0xFF00FFCC"},{"0xFF00FFFF"},
+	{"0xFF330000"},{"0xFF330033"},{"0xFF330066"},{"0xFF330099"},{"0xFF3300CC"},{"0xFF3300FF"},
+	{"0xFF333300"},{"0xFF333333"},{"0xFF333366"},{"0xFF333399"},{"0xFF3333CC"},{"0xFF3333FF"},
+	{"0xFF336600"},{"0xFF336633"},{"0xFF336666"},{"0xFF336699"},{"0xFF3366CC"},{"0xFF3366FF"},
+	{"0xFF339900"},{"0xFF339933"},{"0xFF339966"},{"0xFF339999"},{"0xFF3399CC"},{"0xFF3399FF"},
+	{"0xFF33CC00"},{"0xFF33CC33"},{"0xFF33CC66"},{"0xFF33CC99"},{"0xFF33CCCC"},{"0xFF33CCFF"},
+	{"0xFF33FF00"},{"0xFF33FF33"},{"0xFF33FF66"},{"0xFF33FF99"},{"0xFF33FFCC"},{"0xFF33FFFF"},
+	{"0xFF660000"},{"0xFF660033"},{"0xFF660066"},{"0xFF660099"},{"0xFF6600CC"},{"0xFF6600FF"},
+	{"0xFF663300"},{"0xFF663333"},{"0xFF663366"},{"0xFF663399"},{"0xFF6633CC"},{"0xFF6633FF"},
+	{"0xFF666600"},{"0xFF666633"},{"0xFF666666"},{"0xFF666699"},{"0xFF6666CC"},{"0xFF6666FF"},
+	{"0xFF669900"},{"0xFF669933"},{"0xFF669966"},{"0xFF669999"},{"0xFF6699CC"},{"0xFF6699FF"},
+	{"0xFF66CC00"},{"0xFF66CC33"},{"0xFF66CC66"},{"0xFF66CC99"},{"0xFF66CCCC"},{"0xFF66CCFF"},
+	{"0xFF66FF00"},{"0xFF66FF33"},{"0xFF66FF66"},{"0xFF66FF99"},{"0xFF66FFCC"},{"0xFF66FFFF"},
+	{"0xFF990000"},{"0xFF990033"},{"0xFF990066"},{"0xFF990099"},{"0xFF9900CC"},{"0xFF9900FF"},
+	{"0xFF993300"},{"0xFF993333"},{"0xFF993366"},{"0xFF993399"},{"0xFF9933CC"},{"0xFF9933FF"},
+	{"0xFF996600"},{"0xFF996633"},{"0xFF996666"},{"0xFF996699"},{"0xFF9966CC"},{"0xFF9966FF"},
+	{"0xFF999900"},{"0xFF999933"},{"0xFF999966"},{"0xFF999999"},{"0xFF9999CC"},{"0xFF9999FF"},
+	{"0xFF99CC00"},{"0xFF99CC33"},{"0xFF99CC66"},{"0xFF99CC99"},{"0xFF99CCCC"},{"0xFF99CCFF"},
+	{"0xFF99FF00"},{"0xFF99FF33"},{"0xFF99FF66"},{"0xFF99FF99"},{"0xFF99FFCC"},{"0xFF99FFFF"},
+	{"0xFFCC0000"},{"0xFFCC0033"},{"0xFFCC0066"},{"0xFFCC0099"},{"0xFFCC00CC"},{"0xFFCC00FF"},
+	{"0xFFCC3300"},{"0xFFCC3333"},{"0xFFCC3366"},{"0xFFCC3399"},{"0xFFCC33CC"},{"0xFFCC33FF"},
+	{"0xFFCC6600"},{"0xFFCC6633"},{"0xFFCC6666"},{"0xFFCC6699"},{"0xFFCC66CC"},{"0xFFCC66FF"},
+	{"0xFFCC9900"},{"0xFFCC9933"},{"0xFFCC9966"},{"0xFFCC9999"},{"0xFFCC99CC"},{"0xFFCC99FF"},
+	{"0xFFCCCC00"},{"0xFFCCCC33"},{"0xFFCCCC66"},{"0xFFCCCC99"},{"0xFFCCCCCC"},{"0xFFCCCCFF"},
+	{"0xFFCCFF00"},{"0xFFCCFF33"},{"0xFFCCFF66"},{"0xFFCCFF99"},{"0xFFCCFFCC"},{"0xFFCCFFFF"},
+	{"0xFFFF0000"},{"0xFFFF0033"},{"0xFFFF0066"},{"0xFFFF0099"},{"0xFFFF00CC"},{"0xFFFF00FF"},
+	{"0xFFFF3300"},{"0xFFFF3333"},{"0xFFFF3366"},{"0xFFFF3399"},{"0xFFFF33CC"},{"0xFFFF33FF"},
+	{"0xFFFF6600"},{"0xFFFF6633"},{"0xFFFF6666"},{"0xFFFF6699"},{"0xFFFF66CC"},{"0xFFFF66FF"},
+	{"0xFFFF9900"},{"0xFFFF9933"},{"0xFFFF9966"},{"0xFFFF9999"},{"0xFFFF99CC"},{"0xFFFF99FF"},
+	{"0xFFFFCC00"},{"0xFFFFCC33"},{"0xFFFFCC66"},{"0xFFFFCC99"},{"0xFFFFCCCC"},{"0xFFFFCCFF"},
+	{"0xFFFFFF00"},{"0xFFFFFF33"},{"0xFFFFFF66"},{"0xFFFFFF99"},{"0xFFFFFFCC"},{"0xFFFFFFFF"}
+};
+
+public OnFilterScriptInit()
+{
+	for(new j = 0; j < 216; j++)
+		strcat(webcolors, sprintf("%s@@@\n", WebColorsRGB[j]));
+
+	#if defined WC_OnFilterScriptInit
+		WC_OnFilterScriptInit();
+	#endif
+	return 1;
+}
+#if defined _ALS_OnFilterScriptInit
+	#undef OnFilterScriptInit
+#else
+	#define _ALS_OnFilterScriptInit
+#endif
+#define OnFilterScriptInit WC_OnFilterScriptInit
+#if defined WC_OnFilterScriptInit
+	forward WC_OnFilterScriptInit();
+#endif
+

BIN
Texture-Studio-master/gamemodes/bare.amx


+ 44 - 0
Texture-Studio-master/gamemodes/bare.pwn

@@ -0,0 +1,44 @@
+#include <a_samp>
+
+main()
+{
+	print("\n/*-----------------------------------*\\");
+	print("|*=====[TS Base GameMode Loaded]=====*|");
+	print("\\*-----------------------------------*/\n");
+}
+
+new bool:JustConnected[MAX_PLAYERS];
+
+public OnPlayerRequestClass(playerid, classid)
+{
+	TogglePlayerSpectating(playerid, true);
+	if(JustConnected[playerid])
+	{
+		JustConnected[playerid] = false;
+		SetTimerEx("OnPlayerRequestClass", 100, false, "ii", playerid, classid);
+	}
+	else
+	{
+		TogglePlayerSpectating(playerid, false);
+		SpawnPlayer(playerid);
+	}
+	return 1;
+}
+
+public OnPlayerConnect(playerid)
+{
+	GameTextForPlayer(playerid,"~r~T~w~exture ~r~S~w~tudio ~b~1.9~g~g",5000,5);
+	JustConnected[playerid] = true;
+	return 1;
+}
+
+public OnGameModeInit()
+{
+	SetGameModeText("TS 1.9g");
+	UsePlayerPedAnims();
+
+	AddPlayerClass(265,1322.1832,1564.2081,10.8203,300.1425,0,0,0,0,-1,-1);
+	//AddPlayerClass(265,1958.3783,1343.1572,15.3746,270.1425,0,0,0,0,-1,-1);
+
+	return 1;
+}

BIN
Texture-Studio-master/gamemodes/barron.amx


+ 264 - 0
Texture-Studio-master/gamemodes/barron.pwn

@@ -0,0 +1,264 @@
+//
+//  RC BARNSTORM - A demonstration vehicle vs vehicle script for SA-MP 0.2
+//  -- by kyeman (SA-MP team) 2007
+//
+//  This script demonstrates the following :-
+//  - An automatic vehicle observer mode switchable via a key press.
+//  - Text drawing and the use of GTA ~k~ key constants.
+//  - Use of RC vehicles
+//  - Dynamic creation and destruction of vehicles
+//  - The OnPlayerKeyStateChange event/callback and determining
+//    if a key has just been pressed.
+//  - Bypassing SA-MP's class selection with SetSpawnInfo
+
+#include <a_samp>
+#include <core>
+#include <float>
+
+new gPlayerVehicles[MAX_PLAYERS]; // the vehicleid for the active playerid
+new gPlayerObserving[MAX_PLAYERS]; // player observing which active player
+new Text:txtObsHelper;
+
+new Float:gSpawnPositions[26][4] = { // positions where players in vehicles spawn
+{-205.7703,-119.6655,2.4094,342.0546},
+{-202.1386,-54.1213,2.4111,95.6799},
+{-197.2334,7.5293,2.4034,16.0852},
+{-135.7348,61.7265,2.4112,354.3534},
+{-73.7883,73.4238,2.4082,260.5399},
+{-6.9850,27.9988,2.4112,201.7691},
+{0.6782,-16.0898,2.4076,161.7720},
+{-46.3365,-88.3937,2.4092,180.7382},
+{-72.4389,-127.2939,2.4107,113.5616},
+{-128.1940,-144.1725,2.4094,78.9676},
+{-266.0189,-50.6718,2.4125,223.8079},
+{-244.2617,-1.0468,2.1038,257.3333},
+{-93.3146,-32.4889,2.4085,186.0631},
+{-130.7054,-93.4983,2.4124,73.8375},
+{-117.4049,4.2989,2.4112,337.1284},
+{-26.1622,135.8739,2.4094,248.1580},
+{45.5705,86.7586,2.0753,147.3342},
+{54.9881,2.2997,1.1132,95.7173},
+{-248.9905,-119.3982,2.4083,303.7859},
+{-60.1321,55.5239,2.4038,325.2209},
+{-60.9184,47.9302,5.7706,342.8299},
+{-70.0303,-22.0071,2.4113,165.2789},
+{-138.3093,-83.2640,2.4152,4.0455},
+{-25.5989,94.6100,2.4041,150.8322},
+{-161.0327,-70.5945,2.4042,142.9221},
+{-54.8308,-139.6148,2.4119,258.7639}
+};
+
+//------------------------------------------------------------------------------------------------------
+
+main()
+{
+	print("Running: RC BARNSTORM by kyeman 2007");
+}
+
+//------------------------------------------------
+// ObserverSwitchToNextVehicle
+// Will increment the current observed player
+// until it finds a new player with an active vehicle.
+
+ObserverSwitchToNextVehicle(playerid)
+{
+	new x=0;
+	while(x!=MAX_PLAYERS) { // MAX_PLAYERS iterations
+	    gPlayerObserving[playerid]++;
+	    if(gPlayerObserving[playerid] == MAX_PLAYERS) {
+			// we need to cycle back to the start
+			gPlayerObserving[playerid] = 0;
+		}
+		// see if the target player has a vehicle,
+		// if so assign this player to observe it
+		if(gPlayerVehicles[gPlayerObserving[playerid]] != 0) {
+			PlayerSpectateVehicle(playerid,gPlayerVehicles[gPlayerObserving[playerid]]);
+			return;
+		}
+		x++;
+	}
+	// didn't find any vehicles to observe. we'll have to default to last
+	PlayerSpectateVehicle(playerid,gPlayerVehicles[gPlayerObserving[playerid]]);
+}
+
+//------------------------------------------------
+// IsKeyJustDown. Returns 1 if the key
+// has just been pressed, 0 otherwise.
+
+IsKeyJustDown(key, newkeys, oldkeys)
+{
+	if((newkeys & key) && !(oldkeys & key)) return 1;
+	return 0;
+}
+
+//------------------------------------------------
+
+public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
+{
+	if(gPlayerObserving[playerid] >= 0 && IsKeyJustDown(KEY_SPRINT,newkeys,oldkeys)) {
+		// They're requesting to spawn, so take them out of observer mode
+		// this will cause them to spawn automatically, using the SpawnInfo
+		// we previously forced upon them during OnPlayerRequestClass
+		TogglePlayerSpectating(playerid,0);
+		gPlayerObserving[playerid] = (-1);
+		SendClientMessage(playerid,0xFFFFFFFF,"Leaving spectate");
+		return;
+	}
+	
+	if(gPlayerObserving[playerid] >= 0 && IsKeyJustDown(KEY_FIRE,newkeys,oldkeys)) {
+	   // They're requesting to change observer to another vehicle.
+	   ObserverSwitchToNextVehicle(playerid);
+	}
+}
+
+//------------------------------------------------
+
+public OnPlayerConnect(playerid)
+{
+	GameTextForPlayer(playerid,"~w~SA-MP: ~r~RC Barnstorm",5000,5);
+	
+	return 1;
+}
+
+//------------------------------------------------
+
+public OnPlayerDisconnect(playerid)
+{
+	if(gPlayerVehicles[playerid]) {
+	    // Make sure their vehicle is destroyed when they leave.
+    	DestroyVehicle(gPlayerVehicles[playerid]);
+    	gPlayerVehicles[playerid] = 0;
+	}
+	return 0;
+}
+
+//------------------------------------------------
+//rcbarron = 464
+
+public OnPlayerSpawn(playerid)
+{
+	// Create their own vehicle and put them in
+    gPlayerVehicles[playerid] = CreateVehicle(464,
+						gSpawnPositions[playerid][0],
+						gSpawnPositions[playerid][1],
+						gSpawnPositions[playerid][2],
+						gSpawnPositions[playerid][3],
+						-1,-1,10);
+
+    PutPlayerInVehicle(playerid,gPlayerVehicles[playerid],0);
+    //ForceClassSelection(playerid); // for next time they respawn
+    TextDrawHideForPlayer(playerid, txtObsHelper);
+    SetPlayerWorldBounds(playerid,200.0,-300.0,200.0,-200.0);
+   	return 1;
+}
+
+//------------------------------------------------
+
+public OnPlayerDeath(playerid, killerid, reason)
+{
+	// We need to cleanup their vehicle
+	RemovePlayerFromVehicle(gPlayerVehicles[playerid]);
+	DestroyVehicle(gPlayerVehicles[playerid]);
+	gPlayerVehicles[playerid] = 0;
+	
+	// Send the death information to all clients
+	SendDeathMessage(killerid,playerid,reason);
+
+    // If anyone was observing them, they'll have to switch to the next
+    new x=0;
+    while(x!=MAX_PLAYERS) {
+        if(x != playerid && gPlayerObserving[x] == playerid) {
+            ObserverSwitchToNextVehicle(x);
+		}
+		x++;
+	}
+
+ 	return 1;
+}
+
+//------------------------------------------------
+
+public OnPlayerRequestClass(playerid, classid)
+{
+	// put them straight into observer mode, effectively
+	// bypassing class selection.
+ 	TogglePlayerSpectating(playerid,1);
+    ObserverSwitchToNextVehicle(playerid);
+    TextDrawShowForPlayer(playerid, txtObsHelper);
+
+    // also force this dud spawn info upon them so that they
+    // have spawn information set.
+    SetSpawnInfo(playerid,0,0,
+			gSpawnPositions[playerid][0],
+			gSpawnPositions[playerid][1],
+			gSpawnPositions[playerid][2],
+			gSpawnPositions[playerid][3],
+			-1,-1,-1,-1,-1,-1);
+    
+	return 0;
+}
+
+//------------------------------------------------
+
+public OnGameModeInit()
+{
+	SetGameModeText("RC Barnstorm");
+
+	// General settings for the gamemode
+	ShowPlayerMarkers(0);
+	ShowNameTags(1);
+	SetWorldTime(7);
+	SetWeather(5);
+
+	// Add a dud player class
+	AddPlayerClass(0,0.0,0.0,4.0,0.0,-1,-1,-1,-1,-1,-1);
+	
+	// Init our globals
+	new x=0;
+	while(x!=MAX_PLAYERS) {
+	    gPlayerVehicles[x] = 0;
+	    gPlayerObserving[x] = (-1);
+	    x++;
+	}
+	
+	// Init our observer helper text display
+	txtObsHelper = TextDrawCreate(20.0, 400.0,
+	"Press ~b~~k~~PED_SPRINT~ ~w~to spawn~n~Press ~b~~k~~PED_FIREWEAPON~ ~w~to switch players");
+	TextDrawUseBox(txtObsHelper, 0);
+	TextDrawFont(txtObsHelper, 2);
+	TextDrawSetShadow(txtObsHelper,0);
+    TextDrawSetOutline(txtObsHelper,1);
+    TextDrawBackgroundColor(txtObsHelper,0x000000FF);
+    TextDrawColor(txtObsHelper,0xFFFFFFFF);
+    
+	return 1;
+}
+
+//------------------------------------------------
+
+public OnPlayerUpdate(playerid)
+{
+	/*
+	new Keys,ud,lr;
+	
+	if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING) {
+	    GetPlayerKeys(playerid,Keys,ud,lr);
+	    if(ud > 0) {
+	        SendClientMessage(playerid, 0xFFFFFFFF, "DOWN");
+		}
+		else if(ud < 0) {
+		    SendClientMessage(playerid, 0xFFFFFFFF, "UP");
+		}
+		
+		if(lr > 0) {
+	        SendClientMessage(playerid, 0xFFFFFFFF, "RIGHT");
+		}
+		else if(lr < 0) {
+		    SendClientMessage(playerid, 0xFFFFFFFF, "LEFT");
+		}
+	}*/
+	
+	return 1;
+}
+
+//------------------------------------------------

BIN
Texture-Studio-master/gamemodes/grandlarc.amx


+ 457 - 0
Texture-Studio-master/gamemodes/grandlarc.pwn

@@ -0,0 +1,457 @@
+//----------------------------------------------------------
+//
+//  GRAND LARCENY  1.0
+//  A freeroam gamemode for SA-MP 0.3
+//
+//----------------------------------------------------------
+
+#include <a_samp>
+#include <core>
+#include <float>
+#include "../include/gl_common.inc"
+#include "../include/gl_spawns.inc"
+
+#pragma tabsize 0
+
+//----------------------------------------------------------
+
+#define COLOR_WHITE 		0xFFFFFFFF
+#define COLOR_NORMAL_PLAYER 0xFF4444FF
+
+#define CITY_LOS_SANTOS 	0
+#define CITY_SAN_FIERRO 	1
+#define CITY_LAS_VENTURAS 	2
+
+new total_vehicles_from_files=0;
+
+// Class selection globals
+new gPlayerCitySelection[MAX_PLAYERS];
+new gPlayerHasCitySelected[MAX_PLAYERS];
+new gPlayerLastCitySelectionTick[MAX_PLAYERS];
+
+new Text:txtClassSelHelper;
+new Text:txtLosSantos;
+new Text:txtSanFierro;
+new Text:txtLasVenturas;
+
+//----------------------------------------------------------
+
+main()
+{
+	print("\n---------------------------------------");
+	print("Running Grand Larceny - by the SA-MP team\n");
+	print("---------------------------------------\n");
+}
+
+//----------------------------------------------------------
+
+public OnPlayerConnect(playerid)
+{
+	GameTextForPlayer(playerid,"~w~Grand Larceny",3000,4);
+  	SendClientMessage(playerid,COLOR_WHITE,"Welcome to Grand Larceny");
+  	
+  	// class selection init vars
+  	gPlayerCitySelection[playerid] = -1;
+	gPlayerHasCitySelected[playerid] = 0;
+	gPlayerLastCitySelectionTick[playerid] = GetTickCount();
+
+	//SetPlayerColor(playerid,COLOR_NORMAL_PLAYER);
+	
+	return 1;
+}
+
+//----------------------------------------------------------
+
+public OnPlayerSpawn(playerid)
+{
+	if(IsPlayerNPC(playerid)) return 1;
+	
+	new randSpawn = 0;
+	
+	SetPlayerInterior(playerid,0);
+	TogglePlayerClock(playerid,0);
+ 	ResetPlayerMoney(playerid);
+	GivePlayerMoney(playerid, 30000);
+	
+	// if they ever return to class selection make them city
+	// select again first
+	gPlayerHasCitySelected[playerid] = 0;
+
+	if(CITY_LOS_SANTOS == gPlayerCitySelection[playerid]) {
+ 	    randSpawn = random(sizeof(gRandomSpawns_LosSantos));
+ 	    SetPlayerPos(playerid,
+		 gRandomSpawns_LosSantos[randSpawn][0],
+		 gRandomSpawns_LosSantos[randSpawn][1],
+		 gRandomSpawns_LosSantos[randSpawn][2]);
+		SetPlayerFacingAngle(playerid,gRandomSpawns_LosSantos[randSpawn][3]);
+	}
+	else if(CITY_SAN_FIERRO == gPlayerCitySelection[playerid]) {
+ 	    randSpawn = random(sizeof(gRandomSpawns_SanFierro));
+ 	    SetPlayerPos(playerid,
+		 gRandomSpawns_SanFierro[randSpawn][0],
+		 gRandomSpawns_SanFierro[randSpawn][1],
+		 gRandomSpawns_SanFierro[randSpawn][2]);
+		SetPlayerFacingAngle(playerid,gRandomSpawns_SanFierro[randSpawn][3]);
+	}
+	else if(CITY_LAS_VENTURAS == gPlayerCitySelection[playerid]) {
+ 	    randSpawn = random(sizeof(gRandomSpawns_LasVenturas));
+ 	    SetPlayerPos(playerid,
+		 gRandomSpawns_LasVenturas[randSpawn][0],
+		 gRandomSpawns_LasVenturas[randSpawn][1],
+		 gRandomSpawns_LasVenturas[randSpawn][2]);
+		SetPlayerFacingAngle(playerid,gRandomSpawns_LasVenturas[randSpawn][3]);
+	}
+
+	//SetPlayerColor(playerid,COLOR_NORMAL_PLAYER);
+	
+	SetPlayerSkillLevel(playerid,WEAPONSKILL_PISTOL,200);
+    SetPlayerSkillLevel(playerid,WEAPONSKILL_PISTOL_SILENCED,200);
+    SetPlayerSkillLevel(playerid,WEAPONSKILL_DESERT_EAGLE,200);
+    SetPlayerSkillLevel(playerid,WEAPONSKILL_SHOTGUN,200);
+    SetPlayerSkillLevel(playerid,WEAPONSKILL_SAWNOFF_SHOTGUN,200);
+    SetPlayerSkillLevel(playerid,WEAPONSKILL_SPAS12_SHOTGUN,200);
+    SetPlayerSkillLevel(playerid,WEAPONSKILL_MICRO_UZI,200);
+    SetPlayerSkillLevel(playerid,WEAPONSKILL_MP5,200);
+    SetPlayerSkillLevel(playerid,WEAPONSKILL_AK47,200);
+    SetPlayerSkillLevel(playerid,WEAPONSKILL_M4,200);
+    SetPlayerSkillLevel(playerid,WEAPONSKILL_SNIPERRIFLE,200);
+    
+    GivePlayerWeapon(playerid,WEAPON_COLT45,100);
+	//GivePlayerWeapon(playerid,WEAPON_MP5,100);
+	//TogglePlayerClock(playerid, 1);
+
+	return 1;
+}
+
+//----------------------------------------------------------
+
+public OnPlayerDeath(playerid, killerid, reason)
+{
+    new playercash;
+    
+	if(killerid == INVALID_PLAYER_ID) {
+        ResetPlayerMoney(playerid);
+	} else {
+		playercash = GetPlayerMoney(playerid);
+		if(playercash > 0)  {
+			GivePlayerMoney(killerid, playercash);
+			ResetPlayerMoney(playerid);
+		}
+	}
+   	return 1;
+}
+
+//----------------------------------------------------------
+
+ClassSel_SetupCharSelection(playerid)
+{
+   	if(gPlayerCitySelection[playerid] == CITY_LOS_SANTOS) {
+		SetPlayerInterior(playerid,11);
+		SetPlayerPos(playerid,508.7362,-87.4335,998.9609);
+		SetPlayerFacingAngle(playerid,0.0);
+    	SetPlayerCameraPos(playerid,508.7362,-83.4335,998.9609);
+		SetPlayerCameraLookAt(playerid,508.7362,-87.4335,998.9609);
+	}
+	else if(gPlayerCitySelection[playerid] == CITY_SAN_FIERRO) {
+		SetPlayerInterior(playerid,3);
+		SetPlayerPos(playerid,-2673.8381,1399.7424,918.3516);
+		SetPlayerFacingAngle(playerid,181.0);
+    	SetPlayerCameraPos(playerid,-2673.2776,1394.3859,918.3516);
+		SetPlayerCameraLookAt(playerid,-2673.8381,1399.7424,918.3516);
+	}
+	else if(gPlayerCitySelection[playerid] == CITY_LAS_VENTURAS) {
+		SetPlayerInterior(playerid,3);
+		SetPlayerPos(playerid,349.0453,193.2271,1014.1797);
+		SetPlayerFacingAngle(playerid,286.25);
+    	SetPlayerCameraPos(playerid,352.9164,194.5702,1014.1875);
+		SetPlayerCameraLookAt(playerid,349.0453,193.2271,1014.1797);
+	}
+	
+}
+
+//----------------------------------------------------------
+// Used to init textdraws of city names
+
+ClassSel_InitCityNameText(Text:txtInit)
+{
+  	TextDrawUseBox(txtInit, 0);
+	TextDrawLetterSize(txtInit,1.25,3.0);
+	TextDrawFont(txtInit, 0);
+	TextDrawSetShadow(txtInit,0);
+    TextDrawSetOutline(txtInit,1);
+    TextDrawColor(txtInit,0xEEEEEEFF);
+    TextDrawBackgroundColor(txtClassSelHelper,0x000000FF);
+}
+
+//----------------------------------------------------------
+
+ClassSel_InitTextDraws()
+{
+    // Init our observer helper text display
+	txtLosSantos = TextDrawCreate(10.0, 380.0, "Los Santos");
+	ClassSel_InitCityNameText(txtLosSantos);
+	txtSanFierro = TextDrawCreate(10.0, 380.0, "San Fierro");
+	ClassSel_InitCityNameText(txtSanFierro);
+	txtLasVenturas = TextDrawCreate(10.0, 380.0, "Las Venturas");
+	ClassSel_InitCityNameText(txtLasVenturas);
+
+    // Init our observer helper text display
+	txtClassSelHelper = TextDrawCreate(10.0, 415.0,
+	   " Press ~b~~k~~GO_LEFT~ ~w~or ~b~~k~~GO_RIGHT~ ~w~to switch cities.~n~ Press ~r~~k~~PED_FIREWEAPON~ ~w~to select.");
+	TextDrawUseBox(txtClassSelHelper, 1);
+	TextDrawBoxColor(txtClassSelHelper,0x222222BB);
+	TextDrawLetterSize(txtClassSelHelper,0.3,1.0);
+	TextDrawTextSize(txtClassSelHelper,400.0,40.0);
+	TextDrawFont(txtClassSelHelper, 2);
+	TextDrawSetShadow(txtClassSelHelper,0);
+    TextDrawSetOutline(txtClassSelHelper,1);
+    TextDrawBackgroundColor(txtClassSelHelper,0x000000FF);
+    TextDrawColor(txtClassSelHelper,0xFFFFFFFF);
+}
+
+//----------------------------------------------------------
+
+ClassSel_SetupSelectedCity(playerid)
+{
+	if(gPlayerCitySelection[playerid] == -1) {
+		gPlayerCitySelection[playerid] = CITY_LOS_SANTOS;
+	}
+	
+	if(gPlayerCitySelection[playerid] == CITY_LOS_SANTOS) {
+		SetPlayerInterior(playerid,0);
+   		SetPlayerCameraPos(playerid,1630.6136,-2286.0298,110.0);
+		SetPlayerCameraLookAt(playerid,1887.6034,-1682.1442,47.6167);
+		
+		TextDrawShowForPlayer(playerid,txtLosSantos);
+		TextDrawHideForPlayer(playerid,txtSanFierro);
+		TextDrawHideForPlayer(playerid,txtLasVenturas);
+	}
+	else if(gPlayerCitySelection[playerid] == CITY_SAN_FIERRO) {
+		SetPlayerInterior(playerid,0);
+   		SetPlayerCameraPos(playerid,-1300.8754,68.0546,129.4823);
+		SetPlayerCameraLookAt(playerid,-1817.9412,769.3878,132.6589);
+		
+		TextDrawHideForPlayer(playerid,txtLosSantos);
+		TextDrawShowForPlayer(playerid,txtSanFierro);
+		TextDrawHideForPlayer(playerid,txtLasVenturas);
+	}
+	else if(gPlayerCitySelection[playerid] == CITY_LAS_VENTURAS) {
+		SetPlayerInterior(playerid,0);
+   		SetPlayerCameraPos(playerid,1310.6155,1675.9182,110.7390);
+		SetPlayerCameraLookAt(playerid,2285.2944,1919.3756,68.2275);
+		
+		TextDrawHideForPlayer(playerid,txtLosSantos);
+		TextDrawHideForPlayer(playerid,txtSanFierro);
+		TextDrawShowForPlayer(playerid,txtLasVenturas);
+	}
+}
+
+//----------------------------------------------------------
+
+ClassSel_SwitchToNextCity(playerid)
+{
+    gPlayerCitySelection[playerid]++;
+	if(gPlayerCitySelection[playerid] > CITY_LAS_VENTURAS) {
+	    gPlayerCitySelection[playerid] = CITY_LOS_SANTOS;
+	}
+	PlayerPlaySound(playerid,1052,0.0,0.0,0.0);
+	gPlayerLastCitySelectionTick[playerid] = GetTickCount();
+	ClassSel_SetupSelectedCity(playerid);
+}
+
+//----------------------------------------------------------
+
+ClassSel_SwitchToPreviousCity(playerid)
+{
+    gPlayerCitySelection[playerid]--;
+	if(gPlayerCitySelection[playerid] < CITY_LOS_SANTOS) {
+	    gPlayerCitySelection[playerid] = CITY_LAS_VENTURAS;
+	}
+	PlayerPlaySound(playerid,1053,0.0,0.0,0.0);
+	gPlayerLastCitySelectionTick[playerid] = GetTickCount();
+	ClassSel_SetupSelectedCity(playerid);
+}
+
+//----------------------------------------------------------
+
+ClassSel_HandleCitySelection(playerid)
+{
+	new Keys,ud,lr;
+    GetPlayerKeys(playerid,Keys,ud,lr);
+    
+    if(gPlayerCitySelection[playerid] == -1) {
+		ClassSel_SwitchToNextCity(playerid);
+		return;
+	}
+
+	// only allow new selection every ~500 ms
+	if( (GetTickCount() - gPlayerLastCitySelectionTick[playerid]) < 500 ) return;
+	
+	if(Keys & KEY_FIRE) {
+	    gPlayerHasCitySelected[playerid] = 1;
+	    TextDrawHideForPlayer(playerid,txtClassSelHelper);
+		TextDrawHideForPlayer(playerid,txtLosSantos);
+		TextDrawHideForPlayer(playerid,txtSanFierro);
+		TextDrawHideForPlayer(playerid,txtLasVenturas);
+	    TogglePlayerSpectating(playerid,0);
+	    return;
+	}
+	
+	if(lr > 0) {
+	   ClassSel_SwitchToNextCity(playerid);
+	}
+	else if(lr < 0) {
+	   ClassSel_SwitchToPreviousCity(playerid);
+	}
+}
+
+//----------------------------------------------------------
+
+public OnPlayerRequestClass(playerid, classid)
+{
+	if(IsPlayerNPC(playerid)) return 1;
+
+	if(gPlayerHasCitySelected[playerid]) {
+		ClassSel_SetupCharSelection(playerid);
+		return 1;
+	} else {
+		if(GetPlayerState(playerid) != PLAYER_STATE_SPECTATING) {
+			TogglePlayerSpectating(playerid,1);
+    		TextDrawShowForPlayer(playerid, txtClassSelHelper);
+    		gPlayerCitySelection[playerid] = -1;
+		}
+  	}
+    
+	return 0;
+}
+
+//----------------------------------------------------------
+
+public OnGameModeInit()
+{
+	SetGameModeText("Grand Larceny");
+	ShowPlayerMarkers(PLAYER_MARKERS_MODE_GLOBAL);
+	ShowNameTags(1);
+	SetNameTagDrawDistance(40.0);
+	EnableStuntBonusForAll(0);
+	DisableInteriorEnterExits();
+	SetWeather(2);
+	
+	//LimitGlobalChatRadius(300.0);
+	
+	ClassSel_InitTextDraws();
+
+	// Player Class
+	AddPlayerClass(1,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(2,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+ 	AddPlayerClass(269,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(270,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(271,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(272,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(47,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(48,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(49,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(50,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(51,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(52,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(53,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(54,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(55,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(56,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(57,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(58,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+   	AddPlayerClass(68,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(69,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(70,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(71,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(72,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(73,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(75,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(76,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(78,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(79,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(80,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(81,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(82,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(83,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(84,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(85,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(87,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(88,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(89,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(91,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(92,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(93,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(95,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(96,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(97,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(98,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+	AddPlayerClass(99,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
+
+	// SPECIAL
+	total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/trains.txt");
+	total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/pilots.txt");
+
+   	// LAS VENTURAS
+     total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/lv_law.txt");
+    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/lv_airport.txt");
+    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/lv_gen.txt");
+    
+    // SAN FIERRO
+    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/sf_law.txt");
+    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/sf_airport.txt");
+    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/sf_gen.txt");
+    
+    // LOS SANTOS
+    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/ls_law.txt");
+    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/ls_airport.txt");
+    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/ls_gen_inner.txt");
+    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/ls_gen_outer.txt");
+    
+    // OTHER AREAS
+    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/whetstone.txt");
+    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/bone.txt");
+    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/flint.txt");
+    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/tierra.txt");
+    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/red_county.txt");
+
+    printf("Total vehicles from files: %d",total_vehicles_from_files);
+
+	return 1;
+}
+
+//----------------------------------------------------------
+
+public OnPlayerUpdate(playerid)
+{
+	if(!IsPlayerConnected(playerid)) return 0;
+	
+	// changing cities by inputs
+	if( !gPlayerHasCitySelected[playerid] &&
+	    GetPlayerState(playerid) == PLAYER_STATE_SPECTATING ) {
+	    ClassSel_HandleCitySelection(playerid);
+	    return 1;
+	}
+	
+	// No weapons in interiors
+	if(GetPlayerInterior(playerid) != 0 && GetPlayerWeapon(playerid) != 0) {
+	    SetPlayerArmedWeapon(playerid,0); // fists
+	    return 0; // no syncing until they change their weapon
+	}
+	
+	// Don't allow minigun
+	if(GetPlayerWeapon(playerid) == WEAPON_MINIGUN) {
+	    Kick(playerid);
+	    return 0;
+	}
+	
+	// No jetpacks allowed
+	if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_USEJETPACK) {
+	    Kick(playerid);
+	    return 0;
+	}
+
+	return 1;
+}
+
+//----------------------------------------------------------

BIN
Texture-Studio-master/gamemodes/lvdm.amx


+ 932 - 0
Texture-Studio-master/gamemodes/lvdm.pwn

@@ -0,0 +1,932 @@
+#include <a_samp>
+#include <core>
+#include <float>
+
+#pragma tabsize 0
+
+#define COLOR_GREY 0xAFAFAFAA
+#define COLOR_GREEN 0x33AA33AA
+#define COLOR_RED 0xAA3333AA
+#define COLOR_YELLOW 0xFFFF00AA
+#define COLOR_WHITE 0xFFFFFFAA
+#define PocketMoney 50000 // Amount player recieves on spawn.
+#define INACTIVE_PLAYER_ID 255
+#define GIVECASH_DELAY 5000 // Time in ms between /givecash commands.
+
+#define NUMVALUES 4
+
+forward MoneyGrubScoreUpdate();
+forward Givecashdelaytimer(playerid);
+forward SetPlayerRandomSpawn(playerid);
+forward SetupPlayerForClassSelection(playerid);
+forward GameModeExitFunc();
+forward SendPlayerFormattedText(playerid, const str[], define);
+forward public SendAllFormattedText(playerid, const str[], define);
+
+//------------------------------------------------------------------------------------------------------
+
+new CashScoreOld;
+new iSpawnSet[MAX_PLAYERS];
+
+new Float:gRandomPlayerSpawns[23][3] = {
+{1958.3783,1343.1572,15.3746},
+{2199.6531,1393.3678,10.8203},
+{2483.5977,1222.0825,10.8203},
+{2637.2712,1129.2743,11.1797},
+{2000.0106,1521.1111,17.0625},
+{2024.8190,1917.9425,12.3386},
+{2261.9048,2035.9547,10.8203},
+{2262.0986,2398.6572,10.8203},
+{2244.2566,2523.7280,10.8203},
+{2335.3228,2786.4478,10.8203},
+{2150.0186,2734.2297,11.1763},
+{2158.0811,2797.5488,10.8203},
+{1969.8301,2722.8564,10.8203},
+{1652.0555,2709.4072,10.8265},
+{1564.0052,2756.9463,10.8203},
+{1271.5452,2554.0227,10.8203},
+{1441.5894,2567.9099,10.8203},
+{1480.6473,2213.5718,11.0234},
+{1400.5906,2225.6960,11.0234},
+{1598.8419,2221.5676,11.0625},
+{1318.7759,1251.3580,10.8203},
+{1558.0731,1007.8292,10.8125},
+//{-857.0551,1536.6832,22.5870},   Out of Town Spawns
+//{817.3494,856.5039,12.7891},
+//{116.9315,1110.1823,13.6094},
+//{-18.8529,1176.0159,19.5634},
+//{-315.0575,1774.0636,43.6406},
+{1705.2347,1025.6808,10.8203}
+};
+
+new Float:gCopPlayerSpawns[2][3] = {
+{2297.1064,2452.0115,10.8203},
+{2297.0452,2468.6743,10.8203}
+};
+
+//Round code stolen from mike's Manhunt :P
+//new gRoundTime = 3600000;                   // Round time - 1 hour
+//new gRoundTime = 1200000;					// Round time - 20 mins
+//new gRoundTime = 900000;					// Round time - 15 mins
+//new gRoundTime = 600000;					// Round time - 10 mins
+//new gRoundTime = 300000;					// Round time - 5 mins
+//new gRoundTime = 120000;					// Round time - 2 mins
+//new gRoundTime = 60000;					// Round time - 1 min
+
+new gActivePlayers[MAX_PLAYERS];
+new gLastGaveCash[MAX_PLAYERS];
+
+//------------------------------------------------------------------------------------------------------
+
+main()
+{
+		print("\n----------------------------------");
+		print("  Running LVDM ~MoneyGrub\n");
+		print("         Coded By");
+		print("            Jax");
+		print("----------------------------------\n");
+}
+
+//------------------------------------------------------------------------------------------------------
+
+public OnPlayerRequestSpawn(playerid)
+{
+	//printf("OnPlayerRequestSpawn(%d)",playerid);
+	return 1;
+}
+
+//------------------------------------------------------------------------------------------------------
+
+public OnPlayerPickUpPickup(playerid, pickupid)
+{
+	//new s[256];
+	//format(s,256,"Picked up %d",pickupid);
+	//SendClientMessage(playerid,0xFFFFFFFF,s);
+}
+
+//------------------------------------------------------------------------------------------------------
+
+public MoneyGrubScoreUpdate()
+{
+	new CashScore;
+	new name[MAX_PLAYER_NAME];
+	//new string[256];
+	for(new i=0; i<MAX_PLAYERS; i++)
+	{
+		if (IsPlayerConnected(i))
+		{
+			GetPlayerName(i, name, sizeof(name));
+   			CashScore = GetPlayerMoney(i);
+			SetPlayerScore(i, CashScore);
+			if (CashScore > CashScoreOld)
+			{
+				CashScoreOld = CashScore;
+				//format(string, sizeof(string), "$$$ %s is now in the lead $$$", name);
+				//SendClientMessageToAll(COLOR_YELLOW, string);
+			}
+		}
+	}
+}
+
+//------------------------------------------------------------------------------------------------------
+
+/*public GrubModeReset()
+{
+	for(new i=0; i<MAX_PLAYERS; i++)
+	{
+		if (IsPlayerConnected(i))
+		{
+			SetPlayerScore(i, PocketMoney);
+			SetPlayerRandomSpawn(i, classid);
+		}
+	}
+
+}*/
+
+//------------------------------------------------------------------------------------------------------
+
+public OnPlayerConnect(playerid)
+{
+	GameTextForPlayer(playerid,"~w~SA-MP: ~r~Las Venturas ~g~MoneyGrub",5000,5);
+	SendPlayerFormattedText(playerid, "Welcome to Las Venturas MoneyGrub, For help type /help.", 0);
+	gActivePlayers[playerid]++;
+	gLastGaveCash[playerid] = GetTickCount();
+	return 1;
+}
+
+//------------------------------------------------------------------------------------------------------
+public OnPlayerDisconnect(playerid)
+{
+	gActivePlayers[playerid]--;
+}
+//------------------------------------------------------------------------------------------------------
+
+public OnPlayerCommandText(playerid, cmdtext[])
+{
+	new string[256];
+	new playermoney;
+	new sendername[MAX_PLAYER_NAME];
+	new giveplayer[MAX_PLAYER_NAME];
+	new cmd[256];
+	new giveplayerid, moneys, idx;
+
+	cmd = strtok(cmdtext, idx);
+
+	if(strcmp(cmd, "/help", true) == 0) {
+		SendPlayerFormattedText(playerid,"Las Venturas Deathmatch: Money Grub Coded By Jax and the SA-MP Team.",0);
+		SendPlayerFormattedText(playerid,"Type: /objective : to find out what to do in this gamemode.",0);
+		SendPlayerFormattedText(playerid,"Type: /givecash [playerid] [money-amount] to send money to other players.",0);
+		SendPlayerFormattedText(playerid,"Type: /tips : to see some tips from the creator of the gamemode.", 0);
+    return 1;
+	}
+	if(strcmp(cmd, "/objective", true) == 0) {
+		SendPlayerFormattedText(playerid,"This gamemode is faily open, there's no specific win / endgame conditions to meet.",0);
+		SendPlayerFormattedText(playerid,"In LVDM:Money Grub, when you kill a player, you will receive whatever money they have.",0);
+		SendPlayerFormattedText(playerid,"Consequently, if you have lots of money, and you die, your killer gets your cash.",0);
+		SendPlayerFormattedText(playerid,"However, you're not forced to kill players for money, you can always gamble in the", 0);
+		SendPlayerFormattedText(playerid,"Casino's.", 0);
+    return 1;
+	}
+	if(strcmp(cmd, "/tips", true) == 0) {
+		SendPlayerFormattedText(playerid,"Spawning with just a desert eagle might sound lame, however the idea of this",0);
+		SendPlayerFormattedText(playerid,"gamemode is to get some cash, get better guns, then go after whoever has the",0);
+		SendPlayerFormattedText(playerid,"most cash. Once you've got the most cash, the idea is to stay alive(with the",0);
+		SendPlayerFormattedText(playerid,"cash intact)until the game ends, simple right?", 0);
+    return 1;
+	}
+	
+ 	if(strcmp(cmd, "/givecash", true) == 0) {
+	    new tmp[256];
+		tmp = strtok(cmdtext, idx);
+
+		if(!strlen(tmp)) {
+			SendClientMessage(playerid, COLOR_WHITE, "USAGE: /givecash [playerid] [amount]");
+			return 1;
+		}
+		giveplayerid = strval(tmp);
+		
+		tmp = strtok(cmdtext, idx);
+		if(!strlen(tmp)) {
+			SendClientMessage(playerid, COLOR_WHITE, "USAGE: /givecash [playerid] [amount]");
+			return 1;
+		}
+ 		moneys = strval(tmp);
+		
+		//printf("givecash_command: %d %d",giveplayerid,moneys);
+
+		
+		if (IsPlayerConnected(giveplayerid)) {
+			GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
+			GetPlayerName(playerid, sendername, sizeof(sendername));
+			playermoney = GetPlayerMoney(playerid);
+			if (moneys > 0 && playermoney >= moneys) {
+				GivePlayerMoney(playerid, (0 - moneys));
+				GivePlayerMoney(giveplayerid, moneys);
+				format(string, sizeof(string), "You have sent %s(player: %d), $%d.", giveplayer,giveplayerid, moneys);
+				SendClientMessage(playerid, COLOR_YELLOW, string);
+				format(string, sizeof(string), "You have recieved $%d from %s(player: %d).", moneys, sendername, playerid);
+				SendClientMessage(giveplayerid, COLOR_YELLOW, string);
+				printf("%s(playerid:%d) has transfered %d to %s(playerid:%d)",sendername, playerid, moneys, giveplayer, giveplayerid);
+			}
+			else {
+				SendClientMessage(playerid, COLOR_YELLOW, "Invalid transaction amount.");
+			}
+		}
+		else {
+				format(string, sizeof(string), "%d is not an active player.", giveplayerid);
+				SendClientMessage(playerid, COLOR_YELLOW, string);
+			}
+		return 1;
+	}
+	
+	// PROCESS OTHER COMMANDS
+	
+	
+	return 0;
+}
+
+//------------------------------------------------------------------------------------------------------
+
+public OnPlayerSpawn(playerid)
+{
+	GivePlayerMoney(playerid, PocketMoney);
+	SetPlayerInterior(playerid,0);
+	SetPlayerRandomSpawn(playerid);
+	TogglePlayerClock(playerid,1);
+	return 1;
+}
+
+public SetPlayerRandomSpawn(playerid)
+{
+	if (iSpawnSet[playerid] == 1)
+	{
+		new rand = random(sizeof(gCopPlayerSpawns));
+		SetPlayerPos(playerid, gCopPlayerSpawns[rand][0], gCopPlayerSpawns[rand][1], gCopPlayerSpawns[rand][2]); // Warp the player
+		SetPlayerFacingAngle(playerid, 270.0);
+    }
+    else if (iSpawnSet[playerid] == 0)
+    {
+		new rand = random(sizeof(gRandomPlayerSpawns));
+		SetPlayerPos(playerid, gRandomPlayerSpawns[rand][0], gRandomPlayerSpawns[rand][1], gRandomPlayerSpawns[rand][2]); // Warp the player
+	}
+	return 1;
+}
+
+//------------------------------------------------------------------------------------------------------
+
+public OnPlayerDeath(playerid, killerid, reason)
+{
+    new playercash;
+	if(killerid == INVALID_PLAYER_ID) {
+        SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
+        ResetPlayerMoney(playerid);
+	} else {
+	    	SendDeathMessage(killerid,playerid,reason);
+			SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
+			playercash = GetPlayerMoney(playerid);
+			if (playercash > 0)  {
+				GivePlayerMoney(killerid, playercash);
+				ResetPlayerMoney(playerid);
+			}
+			else
+			{
+			}
+     	}
+ 	return 1;
+}
+
+/* public OnPlayerDeath(playerid, killerid, reason)
+{   haxed by teh mike
+	new name[MAX_PLAYER_NAME];
+	new string[256];
+	new deathreason[20];
+	new playercash;
+	GetPlayerName(playerid, name, sizeof(name));
+	GetWeaponName(reason, deathreason, 20);
+	if (killerid == INVALID_PLAYER_ID) {
+	    switch (reason) {
+			case WEAPON_DROWN:
+			{
+                format(string, sizeof(string), "*** %s drowned.)", name);
+			}
+			default:
+			{
+			    if (strlen(deathreason) > 0) {
+					format(string, sizeof(string), "*** %s died. (%s)", name, deathreason);
+				} else {
+				    format(string, sizeof(string), "*** %s died.", name);
+				}
+			}
+		}
+	}
+	else {
+	new killer[MAX_PLAYER_NAME];
+	GetPlayerName(killerid, killer, sizeof(killer));
+	if (strlen(deathreason) > 0) {
+		format(string, sizeof(string), "*** %s killed %s. (%s)", killer, name, deathreason);
+		} else {
+				format(string, sizeof(string), "*** %s killed %s.", killer, name);
+			}
+		}
+	SendClientMessageToAll(COLOR_RED, string);
+		{
+		playercash = GetPlayerMoney(playerid);
+		if (playercash > 0)
+		{
+			GivePlayerMoney(killerid, playercash);
+			ResetPlayerMoney(playerid);
+		}
+		else
+		{
+		}
+	}
+ 	return 1;
+}*/
+
+//------------------------------------------------------------------------------------------------------
+
+public OnPlayerRequestClass(playerid, classid)
+{
+	iSpawnSet[playerid] = 0;
+	SetupPlayerForClassSelection(playerid);
+	return 1;
+}
+
+public SetupPlayerForClassSelection(playerid)
+{
+ 	SetPlayerInterior(playerid,14);
+	SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
+	SetPlayerFacingAngle(playerid, 270.0);
+	SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);
+	SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
+}
+
+public GameModeExitFunc()
+{
+	GameModeExit();
+}
+
+public OnGameModeInit()
+{
+	SetGameModeText("Ventura's DM~MG");
+
+	ShowPlayerMarkers(1);
+	ShowNameTags(1);
+	EnableStuntBonusForAll(0);
+
+	// Player Class's
+	AddPlayerClass(0,1958.3783,1343.1572,15.3746,270.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(266,1958.3783,1343.1572,15.3746,270.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(267,1958.3783,1343.1572,15.3746,270.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(268,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(269,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(270,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(271,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(272,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	
+	AddPlayerClass(280,1958.3783,1343.1572,15.3746,270.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(281,1958.3783,1343.1572,15.3746,270.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(282,1958.3783,1343.1572,15.3746,270.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(283,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(284,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(285,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(286,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(287,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	
+	AddPlayerClass(254,1958.3783,1343.1572,15.3746,0.0,0,0,24,300,-1,-1);
+	AddPlayerClass(255,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(256,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(257,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(258,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(259,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(260,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(261,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(262,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(263,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(264,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(274,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(275,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(276,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	
+	AddPlayerClass(1,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(2,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(290,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(291,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(292,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(293,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(294,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(295,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(296,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(297,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(298,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+    AddPlayerClass(299,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+
+	AddPlayerClass(277,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(278,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(279,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(288,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(47,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(48,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(49,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(50,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(51,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(52,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(53,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(54,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(55,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(56,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(57,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(58,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(59,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(60,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(61,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(62,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(63,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(64,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(66,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(67,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(68,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(69,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(70,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(71,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(72,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(73,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(75,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(76,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(78,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(79,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(80,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(81,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(82,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(83,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(84,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(85,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(87,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(88,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(89,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(91,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(92,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(93,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(95,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(96,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(97,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(98,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(99,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(100,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(101,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(102,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(103,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(104,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(105,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(106,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(107,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(108,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(109,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(110,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(111,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(112,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(113,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(114,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(115,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(116,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(117,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(118,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(120,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(121,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(122,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(123,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(124,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(125,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(126,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(127,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(128,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(129,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(131,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(133,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(134,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(135,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(136,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(137,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(138,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(139,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(140,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(141,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(142,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(143,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(144,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(145,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(146,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(147,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(148,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(150,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(151,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(152,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(153,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(154,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(155,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(156,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(157,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(158,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(159,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(160,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(161,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(162,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(163,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(164,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(165,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(166,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(167,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(168,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(169,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(170,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(171,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(172,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(173,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(174,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(175,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(176,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(177,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(178,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(179,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(180,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(181,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(182,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(183,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(184,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(185,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(186,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(187,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(188,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(189,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(190,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(191,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(192,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(193,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(194,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(195,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(196,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(197,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(198,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(199,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(200,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(201,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(202,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(203,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(204,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(205,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(206,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(207,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(209,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(210,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(211,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(212,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(213,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(214,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(215,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(216,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(217,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(218,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(219,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(220,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(221,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(222,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(223,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(224,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(225,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(226,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(227,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(228,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(229,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(230,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(231,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(232,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(233,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(234,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(235,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(236,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(237,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(238,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(239,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(240,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(241,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(242,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(243,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(244,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(245,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(246,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(247,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(248,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(249,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(250,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(251,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+	AddPlayerClass(253,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
+
+	// Car Spawns
+
+	AddStaticVehicle(451,2040.0520,1319.2799,10.3779,183.2439,16,16);
+	AddStaticVehicle(429,2040.5247,1359.2783,10.3516,177.1306,13,13);
+	AddStaticVehicle(421,2110.4102,1398.3672,10.7552,359.5964,13,13);
+	AddStaticVehicle(411,2074.9624,1479.2120,10.3990,359.6861,64,64);
+	AddStaticVehicle(477,2075.6038,1666.9750,10.4252,359.7507,94,94);
+	AddStaticVehicle(541,2119.5845,1938.5969,10.2967,181.9064,22,22);
+	AddStaticVehicle(541,1843.7881,1216.0122,10.4556,270.8793,60,1);
+	AddStaticVehicle(402,1944.1003,1344.7717,8.9411,0.8168,30,30);
+	AddStaticVehicle(402,1679.2278,1316.6287,10.6520,180.4150,90,90);
+	AddStaticVehicle(415,1685.4872,1751.9667,10.5990,268.1183,25,1);
+	AddStaticVehicle(411,2034.5016,1912.5874,11.9048,0.2909,123,1);
+	AddStaticVehicle(411,2172.1682,1988.8643,10.5474,89.9151,116,1);
+	AddStaticVehicle(429,2245.5759,2042.4166,10.5000,270.7350,14,14);
+	AddStaticVehicle(477,2361.1538,1993.9761,10.4260,178.3929,101,1);
+	AddStaticVehicle(550,2221.9946,1998.7787,9.6815,92.6188,53,53);
+	AddStaticVehicle(558,2243.3833,1952.4221,14.9761,359.4796,116,1);
+	AddStaticVehicle(587,2276.7085,1938.7263,31.5046,359.2321,40,1);
+	AddStaticVehicle(587,2602.7769,1853.0667,10.5468,91.4813,43,1);
+	AddStaticVehicle(603,2610.7600,1694.2588,10.6585,89.3303,69,1);
+	AddStaticVehicle(587,2635.2419,1075.7726,10.5472,89.9571,53,1);
+	AddStaticVehicle(437,2577.2354,1038.8063,10.4777,181.7069,35,1);
+	AddStaticVehicle(535,2039.1257,1545.0879,10.3481,359.6690,123,1);
+	AddStaticVehicle(535,2009.8782,2411.7524,10.5828,178.9618,66,1);
+	AddStaticVehicle(429,2010.0841,2489.5510,10.5003,268.7720,1,2);
+	AddStaticVehicle(415,2076.4033,2468.7947,10.5923,359.9186,36,1);
+	AddStaticVehicle(487,2093.2754,2414.9421,74.7556,89.0247,26,57);
+	AddStaticVehicle(506,2352.9026,2577.9768,10.5201,0.4091,7,7);
+	AddStaticVehicle(506,2166.6963,2741.0413,10.5245,89.7816,52,52);
+	AddStaticVehicle(411,1960.9989,2754.9072,10.5473,200.4316,112,1);
+	AddStaticVehicle(429,1919.5863,2760.7595,10.5079,100.0753,2,1);
+	AddStaticVehicle(415,1673.8038,2693.8044,10.5912,359.7903,40,1);
+	AddStaticVehicle(402,1591.0482,2746.3982,10.6519,172.5125,30,30);
+	AddStaticVehicle(603,1580.4537,2838.2886,10.6614,181.4573,75,77);
+	AddStaticVehicle(550,1555.2734,2750.5261,10.6388,91.7773,62,62);
+	AddStaticVehicle(535,1455.9305,2878.5288,10.5837,181.0987,118,1);
+	AddStaticVehicle(477,1537.8425,2578.0525,10.5662,0.0650,121,1);
+	AddStaticVehicle(451,1433.1594,2607.3762,10.3781,88.0013,16,16);
+	AddStaticVehicle(603,2223.5898,1288.1464,10.5104,182.0297,18,1);
+	AddStaticVehicle(558,2451.6707,1207.1179,10.4510,179.8960,24,1);
+	AddStaticVehicle(550,2461.7253,1357.9705,10.6389,180.2927,62,62);
+	AddStaticVehicle(558,2461.8162,1629.2268,10.4496,181.4625,117,1);
+	AddStaticVehicle(477,2395.7554,1658.9591,10.5740,359.7374,0,1);
+	AddStaticVehicle(404,1553.3696,1020.2884,10.5532,270.6825,119,50);
+	AddStaticVehicle(400,1380.8304,1159.1782,10.9128,355.7117,123,1);
+	AddStaticVehicle(418,1383.4630,1035.0420,10.9131,91.2515,117,227);
+	AddStaticVehicle(404,1445.4526,974.2831,10.5534,1.6213,109,100);
+	AddStaticVehicle(400,1704.2365,940.1490,10.9127,91.9048,113,1);
+	AddStaticVehicle(404,1658.5463,1028.5432,10.5533,359.8419,101,101);
+	AddStaticVehicle(581,1677.6628,1040.1930,10.4136,178.7038,58,1);
+	AddStaticVehicle(581,1383.6959,1042.2114,10.4121,85.7269,66,1);
+	AddStaticVehicle(581,1064.2332,1215.4158,10.4157,177.2942,72,1);
+	AddStaticVehicle(581,1111.4536,1788.3893,10.4158,92.4627,72,1);
+	AddStaticVehicle(522,953.2818,1806.1392,8.2188,235.0706,3,8);
+	AddStaticVehicle(522,995.5328,1886.6055,10.5359,90.1048,3,8);
+	AddStaticVehicle(521,993.7083,2267.4133,11.0315,1.5610,75,13);
+	AddStaticVehicle(535,1439.5662,1999.9822,10.5843,0.4194,66,1);
+	AddStaticVehicle(522,1430.2354,1999.0144,10.3896,352.0951,6,25);
+	AddStaticVehicle(522,2156.3540,2188.6572,10.2414,22.6504,6,25);
+	AddStaticVehicle(598,2277.6846,2477.1096,10.5652,180.1090,0,1);
+	AddStaticVehicle(598,2268.9888,2443.1697,10.5662,181.8062,0,1);
+	AddStaticVehicle(598,2256.2891,2458.5110,10.5680,358.7335,0,1);
+	AddStaticVehicle(598,2251.6921,2477.0205,10.5671,179.5244,0,1);
+	AddStaticVehicle(523,2294.7305,2441.2651,10.3860,9.3764,0,0);
+	AddStaticVehicle(523,2290.7268,2441.3323,10.3944,16.4594,0,0);
+	AddStaticVehicle(523,2295.5503,2455.9656,2.8444,272.6913,0,0);
+	AddStaticVehicle(522,2476.7900,2532.2222,21.4416,0.5081,8,82);
+	AddStaticVehicle(522,2580.5320,2267.9595,10.3917,271.2372,8,82);
+	AddStaticVehicle(522,2814.4331,2364.6641,10.3907,89.6752,36,105);
+	AddStaticVehicle(535,2827.4143,2345.6953,10.5768,270.0668,97,1);
+	AddStaticVehicle(521,1670.1089,1297.8322,10.3864,359.4936,87,118);
+	AddStaticVehicle(487,1614.7153,1548.7513,11.2749,347.1516,58,8);
+	AddStaticVehicle(487,1647.7902,1538.9934,11.2433,51.8071,0,8);
+	AddStaticVehicle(487,1608.3851,1630.7268,11.2840,174.5517,58,8);
+	AddStaticVehicle(476,1283.0006,1324.8849,9.5332,275.0468,7,6); //11.5332
+	AddStaticVehicle(476,1283.5107,1361.3171,9.5382,271.1684,1,6); //11.5382
+	AddStaticVehicle(476,1283.6847,1386.5137,11.5300,272.1003,89,91);
+	AddStaticVehicle(476,1288.0499,1403.6605,11.5295,243.5028,119,117);
+	AddStaticVehicle(415,1319.1038,1279.1791,10.5931,0.9661,62,1);
+	AddStaticVehicle(521,1710.5763,1805.9275,10.3911,176.5028,92,3);
+	AddStaticVehicle(521,2805.1650,2027.0028,10.3920,357.5978,92,3);
+	AddStaticVehicle(535,2822.3628,2240.3594,10.5812,89.7540,123,1);
+	AddStaticVehicle(521,2876.8013,2326.8418,10.3914,267.8946,115,118);
+	AddStaticVehicle(429,2842.0554,2637.0105,10.5000,182.2949,1,3);
+	AddStaticVehicle(549,2494.4214,2813.9348,10.5172,316.9462,72,39);
+	AddStaticVehicle(549,2327.6484,2787.7327,10.5174,179.5639,75,39);
+	AddStaticVehicle(549,2142.6970,2806.6758,10.5176,89.8970,79,39);
+	AddStaticVehicle(521,2139.7012,2799.2114,10.3917,229.6327,25,118);
+	AddStaticVehicle(521,2104.9446,2658.1331,10.3834,82.2700,36,0);
+	AddStaticVehicle(521,1914.2322,2148.2590,10.3906,267.7297,36,0);
+	AddStaticVehicle(549,1904.7527,2157.4312,10.5175,183.7728,83,36);
+	AddStaticVehicle(549,1532.6139,2258.0173,10.5176,359.1516,84,36);
+	AddStaticVehicle(521,1534.3204,2202.8970,10.3644,4.9108,118,118);
+	AddStaticVehicle(549,1613.1553,2200.2664,10.5176,89.6204,89,35);
+	AddStaticVehicle(400,1552.1292,2341.7854,10.9126,274.0815,101,1);
+	AddStaticVehicle(404,1637.6285,2329.8774,10.5538,89.6408,101,101);
+	AddStaticVehicle(400,1357.4165,2259.7158,10.9126,269.5567,62,1);
+	AddStaticVehicle(411,1281.7458,2571.6719,10.5472,270.6128,106,1);
+	AddStaticVehicle(522,1305.5295,2528.3076,10.3955,88.7249,3,8);
+	AddStaticVehicle(521,993.9020,2159.4194,10.3905,88.8805,74,74);
+	AddStaticVehicle(415,1512.7134,787.6931,10.5921,359.5796,75,1);
+	AddStaticVehicle(522,2299.5872,1469.7910,10.3815,258.4984,3,8);
+	AddStaticVehicle(522,2133.6428,1012.8537,10.3789,87.1290,3,8);
+
+	//Monday 13th Additions ~ Jax
+	AddStaticVehicle(415,2266.7336,648.4756,11.0053,177.8517,0,1); //
+	AddStaticVehicle(461,2404.6636,647.9255,10.7919,183.7688,53,1); //
+	AddStaticVehicle(506,2628.1047,746.8704,10.5246,352.7574,3,3); //
+	AddStaticVehicle(549,2817.6445,928.3469,10.4470,359.5235,72,39); //
+	// --- uncommented
+	AddStaticVehicle(562,1919.8829,947.1886,10.4715,359.4453,11,1); //
+	AddStaticVehicle(562,1881.6346,1006.7653,10.4783,86.9967,11,1); //
+	AddStaticVehicle(562,2038.1044,1006.4022,10.4040,179.2641,11,1); //
+	AddStaticVehicle(562,2038.1614,1014.8566,10.4057,179.8665,11,1); //
+	AddStaticVehicle(562,2038.0966,1026.7987,10.4040,180.6107,11,1); //
+	// --- uncommented end
+
+	//Uber haxed
+	AddStaticVehicle(422,9.1065,1165.5066,19.5855,2.1281,101,25); //
+	AddStaticVehicle(463,19.8059,1163.7103,19.1504,346.3326,11,11); //
+	AddStaticVehicle(463,12.5740,1232.2848,18.8822,121.8670,22,22); //
+	//AddStaticVehicle(434,-110.8473,1133.7113,19.7091,359.7000,2,2); //hotknife
+	AddStaticVehicle(586,69.4633,1217.0189,18.3304,158.9345,10,1); //
+	AddStaticVehicle(586,-199.4185,1223.0405,19.2624,176.7001,25,1); //
+	//AddStaticVehicle(605,-340.2598,1177.4846,19.5565,182.6176,43,8); // SMASHED UP CAR
+	AddStaticVehicle(476,325.4121,2538.5999,17.5184,181.2964,71,77); //
+	AddStaticVehicle(476,291.0975,2540.0410,17.5276,182.7206,7,6); //
+	AddStaticVehicle(576,384.2365,2602.1763,16.0926,192.4858,72,1); //
+	AddStaticVehicle(586,423.8012,2541.6870,15.9708,338.2426,10,1); //
+	AddStaticVehicle(586,-244.0047,2724.5439,62.2077,51.5825,10,1); //
+	AddStaticVehicle(586,-311.1414,2659.4329,62.4513,310.9601,27,1); //
+
+	//uber haxed x 50
+	//AddStaticVehicle(406,547.4633,843.0204,-39.8406,285.2948,1,1); // DUMPER
+	//AddStaticVehicle(406,625.1979,828.9873,-41.4497,71.3360,1,1); // DUMPER
+	//AddStaticVehicle(486,680.7997,919.0510,-40.4735,105.9145,1,1); // DOZER
+	//AddStaticVehicle(486,674.3994,927.7518,-40.6087,128.6116,1,1); // DOZER
+	AddStaticVehicle(543,596.8064,866.2578,-43.2617,186.8359,67,8); //
+	AddStaticVehicle(543,835.0838,836.8370,11.8739,14.8920,8,90); //
+	AddStaticVehicle(549,843.1893,838.8093,12.5177,18.2348,79,39); //
+	//AddStaticVehicle(605,319.3803,740.2404,6.7814,271.2593,8,90); // SMASHED UP CAR
+	AddStaticVehicle(400,-235.9767,1045.8623,19.8158,180.0806,75,1); //
+	AddStaticVehicle(599,-211.5940,998.9857,19.8437,265.4935,0,1); //
+	AddStaticVehicle(422,-304.0620,1024.1111,19.5714,94.1812,96,25); //
+	AddStaticVehicle(588,-290.2229,1317.0276,54.1871,81.7529,1,1); //
+	//AddStaticVehicle(424,-330.2399,1514.3022,75.1388,179.1514,2,2); //BF INJECT
+	AddStaticVehicle(451,-290.3145,1567.1534,75.0654,133.1694,61,61); //
+	AddStaticVehicle(470,280.4914,1945.6143,17.6317,310.3278,43,0); //
+	AddStaticVehicle(470,272.2862,1949.4713,17.6367,285.9714,43,0); //
+	AddStaticVehicle(470,271.6122,1961.2386,17.6373,251.9081,43,0); //
+	AddStaticVehicle(470,279.8705,1966.2362,17.6436,228.4709,43,0); //
+	//AddStaticVehicle(548,292.2317,1923.6440,19.2898,235.3379,1,1); // CARGOBOB
+	AddStaticVehicle(433,277.6437,1985.7559,18.0772,270.4079,43,0); //
+	AddStaticVehicle(433,277.4477,1994.8329,18.0773,267.7378,43,0); //
+	//AddStaticVehicle(432,275.9634,2024.3629,17.6516,270.6823,43,0); // Tank (can cause scary shit to go down)
+	AddStaticVehicle(568,-441.3438,2215.7026,42.2489,191.7953,41,29); //
+	AddStaticVehicle(568,-422.2956,2225.2612,42.2465,0.0616,41,29); //
+	AddStaticVehicle(568,-371.7973,2234.5527,42.3497,285.9481,41,29); //
+	AddStaticVehicle(568,-360.1159,2203.4272,42.3039,113.6446,41,29); //
+	AddStaticVehicle(468,-660.7385,2315.2642,138.3866,358.7643,6,6); //
+	AddStaticVehicle(460,-1029.2648,2237.2217,42.2679,260.5732,1,3); //
+
+	//Uber haxed x 100
+
+    // --- uncommented
+	AddStaticVehicle(419,95.0568,1056.5530,13.4068,192.1461,13,76); //
+	AddStaticVehicle(429,114.7416,1048.3517,13.2890,174.9752,1,2); //
+	//AddStaticVehicle(466,124.2480,1075.1835,13.3512,174.5334,78,76); // exceeds model limit
+	AddStaticVehicle(411,-290.0065,1759.4958,42.4154,89.7571,116,1); //
+	// --- uncommented end
+	AddStaticVehicle(522,-302.5649,1777.7349,42.2514,238.5039,6,25); //
+	AddStaticVehicle(522,-302.9650,1776.1152,42.2588,239.9874,8,82); //
+	AddStaticVehicle(533,-301.0404,1750.8517,42.3966,268.7585,75,1); //
+	AddStaticVehicle(535,-866.1774,1557.2700,23.8319,269.3263,31,1); //
+	AddStaticVehicle(550,-799.3062,1518.1556,26.7488,88.5295,53,53); //
+	AddStaticVehicle(521,-749.9730,1589.8435,26.5311,125.6508,92,3); //
+	AddStaticVehicle(522,-867.8612,1544.5282,22.5419,296.0923,3,3); //
+	AddStaticVehicle(554,-904.2978,1553.8269,25.9229,266.6985,34,30); //
+	AddStaticVehicle(521,-944.2642,1424.1603,29.6783,148.5582,92,3); //
+	// Exceeds model limit, cars need model adjustments
+	// --- uncommented
+	AddStaticVehicle(429,-237.7157,2594.8804,62.3828,178.6802,1,2); //
+	//AddStaticVehicle(431,-160.5815,2693.7185,62.2031,89.4133,47,74); //
+	AddStaticVehicle(463,-196.3012,2774.4395,61.4775,303.8402,22,22); //
+	//AddStaticVehicle(483,-204.1827,2608.7368,62.6956,179.9914,1,5); //
+	//AddStaticVehicle(490,-295.4756,2674.9141,62.7434,359.3378,0,0); //
+	//AddStaticVehicle(500,-301.5293,2687.6013,62.7723,87.9509,28,119); //
+	//AddStaticVehicle(500,-301.6699,2680.3293,62.7393,89.7925,13,119); //
+	AddStaticVehicle(519,-1341.1079,-254.3787,15.0701,321.6338,1,1); //
+	AddStaticVehicle(519,-1371.1775,-232.3967,15.0676,315.6091,1,1); //
+	//AddStaticVehicle(552,-1396.2028,-196.8298,13.8434,286.2720,56,56); //
+	//AddStaticVehicle(552,-1312.4509,-284.4692,13.8417,354.3546,56,56); //
+	//AddStaticVehicle(552,-1393.5995,-521.0770,13.8441,187.1324,56,56); //
+	//AddStaticVehicle(513,-1355.6632,-488.9562,14.7157,191.2547,48,18); //
+	//AddStaticVehicle(513,-1374.4580,-499.1462,14.7482,220.4057,54,34); //
+	//AddStaticVehicle(553,-1197.8773,-489.6715,15.4841,0.4029,91,87); //
+	//AddStaticVehicle(553,1852.9989,-2385.4009,14.8827,200.0707,102,119); //
+	//AddStaticVehicle(583,1879.9594,-2349.1919,13.0875,11.0992,1,1); //
+	//AddStaticVehicle(583,1620.9697,-2431.0752,13.0951,126.3341,1,1); //
+	//AddStaticVehicle(583,1545.1564,-2409.2114,13.0953,23.5581,1,1); //
+	//AddStaticVehicle(583,1656.3702,-2651.7913,13.0874,352.7619,1,1); //
+	AddStaticVehicle(519,1642.9850,-2425.2063,14.4744,159.8745,1,1); //
+	AddStaticVehicle(519,1734.1311,-2426.7563,14.4734,172.2036,1,1); //
+	// --- uncommented end
+	
+	AddStaticVehicle(415,-680.9882,955.4495,11.9032,84.2754,36,1); //
+	AddStaticVehicle(460,-816.3951,2222.7375,43.0045,268.1861,1,3); //
+	AddStaticVehicle(460,-94.6885,455.4018,1.5719,250.5473,1,3); //
+	AddStaticVehicle(460,1624.5901,565.8568,1.7817,200.5292,1,3); //
+	AddStaticVehicle(460,1639.3567,572.2720,1.5311,206.6160,1,3); //
+	AddStaticVehicle(460,2293.4219,517.5514,1.7537,270.7889,1,3); //
+	AddStaticVehicle(460,2354.4690,518.5284,1.7450,270.2214,1,3); //
+	AddStaticVehicle(460,772.4293,2912.5579,1.0753,69.6706,1,3); //
+
+	// 22/4 UPDATE
+	AddStaticVehicle(560,2133.0769,1019.2366,10.5259,90.5265,9,39); //
+	AddStaticVehicle(560,2142.4023,1408.5675,10.5258,0.3660,17,1); //
+	AddStaticVehicle(560,2196.3340,1856.8469,10.5257,179.8070,21,1); //
+	AddStaticVehicle(560,2103.4146,2069.1514,10.5249,270.1451,33,0); //
+	AddStaticVehicle(560,2361.8042,2210.9951,10.3848,178.7366,37,0); //
+	AddStaticVehicle(560,-1993.2465,241.5329,34.8774,310.0117,41,29); //
+	AddStaticVehicle(559,-1989.3235,270.1447,34.8321,88.6822,58,8); //
+	AddStaticVehicle(559,-1946.2416,273.2482,35.1302,126.4200,60,1); //
+	AddStaticVehicle(558,-1956.8257,271.4941,35.0984,71.7499,24,1); //
+	AddStaticVehicle(562,-1952.8894,258.8604,40.7082,51.7172,17,1); //
+	AddStaticVehicle(411,-1949.8689,266.5759,40.7776,216.4882,112,1); //
+	AddStaticVehicle(429,-1988.0347,305.4242,34.8553,87.0725,2,1); //
+	AddStaticVehicle(559,-1657.6660,1213.6195,6.9062,282.6953,13,8); //
+	AddStaticVehicle(560,-1658.3722,1213.2236,13.3806,37.9052,52,39); //
+	AddStaticVehicle(558,-1660.8994,1210.7589,20.7875,317.6098,36,1); //
+	AddStaticVehicle(550,-1645.2401,1303.9883,6.8482,133.6013,7,7); //
+	AddStaticVehicle(460,-1333.1960,903.7660,1.5568,0.5095,46,32); //
+	
+	// 25/4 UPDATE
+	AddStaticVehicle(411,113.8611,1068.6182,13.3395,177.1330,116,1); //
+	AddStaticVehicle(429,159.5199,1185.1160,14.7324,85.5769,1,2); //
+	AddStaticVehicle(411,612.4678,1694.4126,6.7192,302.5539,75,1); //
+	AddStaticVehicle(522,661.7609,1720.9894,6.5641,19.1231,6,25); //
+	AddStaticVehicle(522,660.0554,1719.1187,6.5642,12.7699,8,82); //
+	AddStaticVehicle(567,711.4207,1947.5208,5.4056,179.3810,90,96); //
+	AddStaticVehicle(567,1031.8435,1920.3726,11.3369,89.4978,97,96); //
+	AddStaticVehicle(567,1112.3754,1747.8737,10.6923,270.9278,102,114); //
+	AddStaticVehicle(567,1641.6802,1299.2113,10.6869,271.4891,97,96); //
+	AddStaticVehicle(567,2135.8757,1408.4512,10.6867,180.4562,90,96); //
+	AddStaticVehicle(567,2262.2639,1469.2202,14.9177,91.1919,99,81); //
+	AddStaticVehicle(567,2461.7380,1345.5385,10.6975,0.9317,114,1); //
+	AddStaticVehicle(567,2804.4365,1332.5348,10.6283,271.7682,88,64); //
+	AddStaticVehicle(560,2805.1685,1361.4004,10.4548,270.2340,17,1); //
+	AddStaticVehicle(506,2853.5378,1361.4677,10.5149,269.6648,7,7); //
+	AddStaticVehicle(567,2633.9832,2205.7061,10.6868,180.0076,93,64); //
+	AddStaticVehicle(567,2119.9751,2049.3127,10.5423,180.1963,93,64); //
+	AddStaticVehicle(567,2785.0261,-1835.0374,9.6874,226.9852,93,64); //
+	AddStaticVehicle(567,2787.8975,-1876.2583,9.6966,0.5804,99,81); //
+	AddStaticVehicle(411,2771.2993,-1841.5620,9.4870,20.7678,116,1); //
+	AddStaticVehicle(420,1713.9319,1467.8354,10.5219,342.8006,6,1); // taxi
+
+	AddStaticPickup(371, 15, 1710.3359,1614.3585,10.1191); //para
+	AddStaticPickup(371, 15, 1964.4523,1917.0341,130.9375); //para
+	AddStaticPickup(371, 15, 2055.7258,2395.8589,150.4766); //para
+	AddStaticPickup(371, 15, 2265.0120,1672.3837,94.9219); //para
+	AddStaticPickup(371, 15, 2265.9739,1623.4060,94.9219); //para
+
+	SetTimer("MoneyGrubScoreUpdate", 1000, 1);
+	//SetTimer("GameModeExitFunc", gRoundTime, 0);
+
+	return 1;
+}
+
+
+
+public SendPlayerFormattedText(playerid, const str[], define)
+{
+	new tmpbuf[256];
+	format(tmpbuf, sizeof(tmpbuf), str, define);
+	SendClientMessage(playerid, 0xFF004040, tmpbuf);
+}
+
+public SendAllFormattedText(playerid, const str[], define)
+{
+	new tmpbuf[256];
+	format(tmpbuf, sizeof(tmpbuf), str, define);
+	SendClientMessageToAll(0xFFFF00AA, tmpbuf);
+}
+
+strtok(const string[], &index)
+{
+	new length = strlen(string);
+	while ((index < length) && (string[index] <= ' '))
+	{
+		index++;
+	}
+
+	new offset = index;
+	new result[20];
+	while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
+	{
+		result[index - offset] = string[index];
+		index++;
+	}
+	result[index - offset] = EOS;
+	return result;
+}
+
+
+
+
+
+

BIN
Texture-Studio-master/gamemodes/rivershell.amx


+ 335 - 0
Texture-Studio-master/gamemodes/rivershell.pwn

@@ -0,0 +1,335 @@
+//---------------------------------------------------------
+//
+// Rivershell by Kye - 2006
+//
+// Updated 2009 for SA-MP 0.3
+//
+//---------------------------------------------------------
+
+#include <a_samp>
+#include <core>
+#include <float>
+
+// Global stuff and defines for our gamemode.
+
+static gTeam[MAX_PLAYERS]; // Tracks the team assignment for each player
+
+#define OBJECTIVE_VEHICLE_GREEN 2
+#define OBJECTIVE_VEHICLE_BLUE 1
+#define TEAM_GREEN 1
+#define TEAM_BLUE 2
+#define OBJECTIVE_COLOR 0xE2C063FF
+#define TEAM_GREEN_COLOR 0x77CC77FF
+#define TEAM_BLUE_COLOR 0x7777DDFF
+#define CAPS_TO_WIN 3
+
+new gObjectiveReached = 0; // Stops the winner logic reentering itself.
+new gObjectiveGreenPlayer=(-1); // Tracks which green player has the vehicle.
+new gObjectiveBluePlayer=(-1); // Tracks which blue player has the vehicle.
+
+// number of times the vehicle has been captured by each team
+new gGreenTimesCapped=0;
+new gBlueTimesCapped=0;
+
+// forward declarations for the PAWN compiler (not really needed, but there for the sake of clarity)
+forward SetPlayerToTeamColor(playerid);
+forward SetupPlayerForClassSelection(playerid);
+forward SetPlayerTeamFromClass(playerid,classid);
+forward ExitTheGameMode();
+
+//---------------------------------------------------------
+
+main()
+{
+	print("\n----------------------------------");
+	print("  Rivershell by Kye 2006\n");
+	print("----------------------------------\n");
+}
+//---------------------------------------------------------
+
+public SetPlayerToTeamColor(playerid)
+{
+	if(gTeam[playerid] == TEAM_GREEN) {
+		SetPlayerColor(playerid,TEAM_GREEN_COLOR); // green
+	} else if(gTeam[playerid] == TEAM_BLUE) {
+	    SetPlayerColor(playerid,TEAM_BLUE_COLOR); // blue
+	}
+}
+//---------------------------------------------------------
+
+public SetupPlayerForClassSelection(playerid)
+{
+	// Set the player's orientation when they're selecting a class.
+	SetPlayerPos(playerid,1984.4445,157.9501,55.9384);
+    SetPlayerCameraPos(playerid,1984.4445,160.9501,55.9384);
+	SetPlayerCameraLookAt(playerid,1984.4445,157.9501,55.9384);
+	SetPlayerFacingAngle(playerid,0.0);
+}
+
+//---------------------------------------------------------
+
+public SetPlayerTeamFromClass(playerid,classid)
+{
+	// Set their team number based on the class they selected.
+	if(classid == 0 || classid == 1) {
+		gTeam[playerid] = TEAM_GREEN;
+	} else if(classid == 2 || classid == 3) {
+	    gTeam[playerid] = TEAM_BLUE;
+	}
+}
+
+//---------------------------------------------------------
+
+public ExitTheGameMode()
+{
+    PlaySoundForAll(1186, 0.0, 0.0, 0.0); // Stops the music
+	//printf("Exiting Game Mode");
+    GameModeExit();
+}
+
+//---------------------------------------------------------
+
+public OnPlayerStateChange(playerid, newstate, oldstate)
+{
+	new vehicleid;
+
+	if(newstate == PLAYER_STATE_DRIVER)
+	{
+		vehicleid = GetPlayerVehicleID(playerid);
+		
+		if(gTeam[playerid] == TEAM_GREEN && vehicleid == OBJECTIVE_VEHICLE_GREEN)
+		{ // It's the objective vehicle
+		    SetPlayerColor(playerid,OBJECTIVE_COLOR);
+		    GameTextForPlayer(playerid,"~w~Take the ~y~boat ~w~back to the ~r~spawn!",3000,5);
+		    SetPlayerCheckpoint(playerid,1982.6150,-220.6680,-0.2432,7.0);
+		    gObjectiveGreenPlayer = playerid;
+		}
+		
+		if(gTeam[playerid] == TEAM_BLUE && vehicleid == OBJECTIVE_VEHICLE_BLUE)
+		{ // It's the objective vehicle
+		    SetPlayerColor(playerid,OBJECTIVE_COLOR);
+		    GameTextForPlayer(playerid,"~w~Take the ~y~boat ~w~back to the ~r~spawn!",3000,5);
+		    SetPlayerCheckpoint(playerid,2328.2935,531.8324,0.0094,7.0);
+		    gObjectiveBluePlayer = playerid;
+		}
+	}
+	else if(newstate == PLAYER_STATE_ONFOOT)
+	{
+		if(playerid == gObjectiveGreenPlayer) {
+		    gObjectiveGreenPlayer = (-1);
+		    SetPlayerToTeamColor(playerid);
+	  		DisablePlayerCheckpoint(playerid);
+		}
+		
+		if(playerid == gObjectiveBluePlayer) {
+		    gObjectiveBluePlayer = (-1);
+		    SetPlayerToTeamColor(playerid);
+		    DisablePlayerCheckpoint(playerid);
+		}
+	}
+
+    return 1;
+}
+
+//---------------------------------------------------------
+
+public OnGameModeInit()
+{
+	SetGameModeText("Rivershell");
+	
+	ShowPlayerMarkers(1);
+	ShowNameTags(1);
+	SetWorldTime(17);
+
+	// GREEN CLASSES
+	AddPlayerClass(162,1980.0054,-266.6487,2.9653,348.9788,0,0,31,400,29,400);
+	AddPlayerClass(157,1980.0054,-266.6487,2.9653,348.9788,0,0,31,400,29,400);
+
+ 	// BLUE CLASSES
+	AddPlayerClass(154,2359.2703,540.5911,1.7969,180.6476,0,0,31,400,29,400);
+	AddPlayerClass(138,2294.0413,541.8565,1.7944,188.6283,0,0,31,400,29,400);
+
+	// OBJECTIVE VEHICLES
+    AddStaticVehicle(453,2057.0154,-236.5598,-0.2621,359.4377,114,1); // gr reefer
+	AddStaticVehicle(453,2381.9685,532.4496,0.2574,183.2029,79,7); // b reefer
+
+    // GREEN VEHICLES
+    AddStaticVehicle(473,2023.5109,-246.4161,-0.1514,351.0038,114,1); // gr dhin
+    AddStaticVehicle(473,1949.2490,-259.5398,-0.2794,13.3247,114,1); // gr ding2fix
+	AddStaticVehicle(473,2003.7256,-248.4939,-0.2243,5.1752,114,1); // gr ding
+	AddStaticVehicle(473,1982.4832,-252.4811,-0.3006,358.3696,114,1); // gr ding
+	AddStaticVehicle(473,1927.7894,-249.3088,-0.2893,320.7715,114,1); // gr ding
+	AddStaticVehicle(473,1907.6969,-230.4202,-0.2585,306.0136,114,1); // gr ding
+	AddStaticVehicle(487,1913.0819,-376.2350,21.4819,350.9412,114,1); // gr mav
+
+	// BLUE VEHICLES
+	AddStaticVehicle(473,2289.7571,518.4412,-0.2167,178.8301,79,7); // b ding
+	AddStaticVehicle(473,2294.3599,519.1021,-0.1391,177.1416,79,7); // b ding
+	AddStaticVehicle(473,2298.8411,518.4229,-0.2333,181.1228,79,7); // b ding
+	AddStaticVehicle(473,2369.9839,519.0364,-0.3190,187.9187,79,7); // b ding
+	AddStaticVehicle(473,2359.9417,519.1055,-0.2271,183.8014,79,7); // b ding
+	AddStaticVehicle(473,2351.4617,519.1046,-0.1172,182.8623,79,7); // b ding
+	AddStaticVehicle(487,2324.4399,573.1667,7.9578,177.6699,79,7); // b mav
+
+   return 1;
+}
+
+//---------------------------------------------------------
+
+public OnPlayerConnect(playerid)
+{
+	SetPlayerColor(playerid,0x888888FF);
+	GameTextForPlayer(playerid,"~r~SA-MP:~w~Rivershell",2000,5);
+	return 1;
+}
+
+//---------------------------------------------------------
+
+public OnPlayerRequestClass(playerid, classid)
+{
+	SetupPlayerForClassSelection(playerid);
+	SetPlayerTeamFromClass(playerid,classid);
+	
+	if(classid == 0 || classid == 1) {
+		GameTextForPlayer(playerid,"~g~GREEN ~w~TEAM",1000,5);
+	} else if(classid == 2 || classid == 3) {
+	    GameTextForPlayer(playerid,"~b~BLUE ~w~TEAM",1000,5);
+	}
+	
+	return 1;
+}
+
+//---------------------------------------------------------
+
+public OnPlayerSpawn(playerid)
+{
+	SetPlayerToTeamColor(playerid);
+
+	if(gTeam[playerid] == TEAM_GREEN) {
+	    SetPlayerWorldBounds(playerid,2444.4185,1687.5696,631.2963,-454.9898);
+	    GameTextForPlayer(playerid,
+		   "Defend the ~g~GREEN ~w~team's ~y~Reefer~n~~w~Capture the ~b~BLUE ~w~team's ~y~Reefer",
+		   6000,5);
+	}
+	else if(gTeam[playerid] == TEAM_BLUE) {
+		SetPlayerWorldBounds(playerid,2444.4185,1687.5696,631.2963,-454.9898);
+	    GameTextForPlayer(playerid,
+		   "Defend the ~b~BLUE ~w~team's ~y~Reefer~n~~w~Capture the ~g~GREEN ~w~team's ~y~Reefer",
+		   6000,5);
+	}
+
+	return 1;
+}
+
+//---------------------------------------------------------
+
+public OnPlayerEnterCheckpoint(playerid)
+{
+ 	new playervehicleid = GetPlayerVehicleID(playerid);
+ 	
+ 	if(gObjectiveReached) return;
+ 	
+	if(playervehicleid == OBJECTIVE_VEHICLE_GREEN && gTeam[playerid] == TEAM_GREEN)
+	{   // Green OBJECTIVE REACHED.
+	    gGreenTimesCapped++;
+	    SetPlayerScore(playerid,GetPlayerScore(playerid)+5);
+	    
+	    if(gGreenTimesCapped==CAPS_TO_WIN) {
+	        GameTextForAll("~g~GREEN ~w~team wins!",3000,5);
+			gObjectiveReached = 1;	PlaySoundForAll(1185, 0.0, 0.0, 0.0);
+ 			SetTimer("ExitTheGameMode", 6000, 0); // Set up a timer to exit this mode.
+		} else {
+		    GameTextForAll("~g~GREEN ~w~team captured the ~y~boat!",3000,5);
+		    SetVehicleToRespawn(OBJECTIVE_VEHICLE_GREEN);
+		}
+	    return;
+	}
+	else if(playervehicleid == OBJECTIVE_VEHICLE_BLUE && gTeam[playerid] == TEAM_BLUE)
+	{   // Blue OBJECTIVE REACHED.
+	    gBlueTimesCapped++;
+	    SetPlayerScore(playerid,GetPlayerScore(playerid)+5);
+	    
+	    if(gBlueTimesCapped==CAPS_TO_WIN) {
+	        GameTextForAll("~b~BLUE ~w~team wins!",3000,5);
+	        gObjectiveReached = 1;	PlaySoundForAll(1185, 0.0, 0.0, 0.0);
+			SetTimer("ExitTheGameMode", 6000, 0); // Set up a timer to exit this mode.
+		} else {
+		    GameTextForAll("~b~BLUE ~w~team captured the ~y~boat!",3000,5);
+		    SetVehicleToRespawn(OBJECTIVE_VEHICLE_BLUE);
+		}
+	    return;
+	}
+}
+
+//---------------------------------------------------------
+
+public OnPlayerDeath(playerid, killerid, reason)
+{
+	if(killerid == INVALID_PLAYER_ID) {
+        SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
+	} else {
+        if(gTeam[killerid] != gTeam[playerid]) {
+	    	// Valid kill
+	    	SendDeathMessage(killerid,playerid,reason);
+			SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
+     	}
+		else {
+		    // Team kill
+		    SendDeathMessage(killerid,playerid,reason);
+		}
+	}
+ 	return 1;
+}
+
+
+//---------------------------------
+
+public OnVehicleStreamIn(vehicleid, forplayerid)
+{
+	// Note for SA-MP 0.3:
+	// As the vehicle streams in, player team dependant params are applied. They can't be
+	// applied to vehicles that don't exist in the player's world.
+	
+    if(vehicleid == OBJECTIVE_VEHICLE_BLUE) {
+        if(gTeam[forplayerid] == TEAM_GREEN) {
+			SetVehicleParamsForPlayer(OBJECTIVE_VEHICLE_BLUE,forplayerid,1,1); // objective; locked
+		}
+		else if(gTeam[forplayerid] == TEAM_BLUE) {
+		    SetVehicleParamsForPlayer(OBJECTIVE_VEHICLE_BLUE,forplayerid,1,0); // objective; unlocked
+		}
+	}
+	else if(vehicleid == OBJECTIVE_VEHICLE_GREEN) {
+        if(gTeam[forplayerid] == TEAM_BLUE) {
+			SetVehicleParamsForPlayer(OBJECTIVE_VEHICLE_GREEN,forplayerid,1,1); // objective; locked
+		}
+		else if(gTeam[forplayerid] == TEAM_GREEN) {
+		    SetVehicleParamsForPlayer(OBJECTIVE_VEHICLE_GREEN,forplayerid,1,0); // objective; unlocked
+		}
+	}
+	
+	return 1;
+	//printf("GameMode: VehicleStreamIn(%d,%d)",vehicleid,forplayerid);
+}
+
+//---------------------------------
+
+public OnVehicleStreamOut(vehicleid, forplayerid)
+{
+	return 1;
+	//printf("GameMode: VehicleStreamOut(%d,%d)",vehicleid,forplayerid);
+}
+
+//---------------------------------
+
+PlaySoundForAll(soundid, Float:x, Float:y, Float:z)
+{
+	for (new i=0; i<MAX_PLAYERS; i++)
+	{
+	    if (IsPlayerConnected(i))
+	    {
+		    PlayerPlaySound(i, soundid, x, y, z);
+	    }
+	}
+}
+
+//---------------------------------

BIN
Texture-Studio-master/gamemodes/timertest.amx


+ 31 - 0
Texture-Studio-master/gamemodes/timertest.pwn

@@ -0,0 +1,31 @@
+#include <a_samp>
+
+forward OneSecTimer();
+
+main()
+{
+	print("\n----------------------------------");
+	print("  This is a blank GameModeScript");
+	print("----------------------------------\n");
+	
+	//printf("GetVehicleComponentType %u",GetVehicleComponentType(1100));
+	
+}
+
+public OnGameModeInit()
+{
+	// Set timer of 1 second.
+	SetTimer("OneSecTimer", 1000, 1);
+	print("GameModeInit()");
+	SetGameModeText("Timer Test");
+	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
+	return 1;
+}
+
+public OneSecTimer() {
+	new sText[256];
+	format(sText,sizeof(sText),"GetTickCount = %d",GetTickCount());
+	print(sText);
+	SendClientMessageToAll(0xFF0000, sText);
+}
+

+ 157 - 0
Texture-Studio-master/include/gl_common.inc

@@ -0,0 +1,157 @@
+//----------------------------------------------------------
+//
+// GRAND LARCENY common functions include.
+//
+//----------------------------------------------------------
+
+stock LoadStaticVehiclesFromFile(const filename[])
+{
+	new File:file_ptr;
+	new line[256];
+	new var_from_line[64];
+	new vehicletype;
+	new Float:SpawnX;
+	new Float:SpawnY;
+	new Float:SpawnZ;
+	new Float:SpawnRot;
+    new Color1, Color2;
+	new index;
+	new vehicles_loaded;
+
+	file_ptr = fopen(filename,filemode:io_read);
+	if(!file_ptr) return 0;
+
+	vehicles_loaded = 0;
+
+	while(fread(file_ptr,line,256) > 0)
+	{
+	    index = 0;
+
+	    // Read type
+  		index = token_by_delim(line,var_from_line,',',index);
+  		if(index == (-1)) continue;
+  		vehicletype = strval(var_from_line);
+   		if(vehicletype < 400 || vehicletype > 611) continue;
+
+  		// Read X, Y, Z, Rotation
+  		index = token_by_delim(line,var_from_line,',',index+1);
+  		if(index == (-1)) continue;
+  		SpawnX = floatstr(var_from_line);
+
+  		index = token_by_delim(line,var_from_line,',',index+1);
+  		if(index == (-1)) continue;
+  		SpawnY = floatstr(var_from_line);
+
+  		index = token_by_delim(line,var_from_line,',',index+1);
+  		if(index == (-1)) continue;
+  		SpawnZ = floatstr(var_from_line);
+
+  		index = token_by_delim(line,var_from_line,',',index+1);
+  		if(index == (-1)) continue;
+  		SpawnRot = floatstr(var_from_line);
+
+  		// Read Color1, Color2
+  		index = token_by_delim(line,var_from_line,',',index+1);
+  		if(index == (-1)) continue;
+  		Color1 = strval(var_from_line);
+
+  		index = token_by_delim(line,var_from_line,';',index+1);
+  		Color2 = strval(var_from_line);
+
+  		//printf("%d,%d,%f,%f,%f,%f,%d,%d",total_vehicles_from_files+vehicles_loaded+1,vehicletype,SpawnX,SpawnY,SpawnZ,SpawnRot,Color1,Color2);
+
+		AddStaticVehicleEx(vehicletype,SpawnX,SpawnY,SpawnZ,SpawnRot,Color1,Color2,(30*60)); // respawn 30 minutes
+		vehicles_loaded++;
+	}
+
+	fclose(file_ptr);
+	printf("Loaded %d vehicles from: %s",vehicles_loaded,filename);
+	return vehicles_loaded;
+}
+
+//----------------------------------------------------------
+
+stock strtok(const string[], &index)
+{
+	new length = strlen(string);
+	while ((index < length) && (string[index] <= ' '))
+	{
+		index++;
+	}
+
+	new offset = index;
+	new result[20];
+	while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
+	{
+		result[index - offset] = string[index];
+		index++;
+	}
+	result[index - offset] = EOS;
+	return result;
+}
+
+//------------------------------------------------
+
+stock strrest(const string[], &index)
+{
+	new length = strlen(string);
+	while ((index < length) && (string[index] <= ' '))
+	{
+		index++;
+	}
+	new offset = index;
+	new result[128];
+	while ((index < length) && ((index - offset) < (sizeof(result) - 1)))
+	{
+		result[index - offset] = string[index];
+		index++;
+	}
+	result[index - offset] = EOS;
+	return result;
+}
+
+//----------------------------------------------------------
+// Tokenise by a delimiter
+// Return string and index of the end determined by the
+// provided delimiter in delim
+
+stock token_by_delim(const string[], return_str[], delim, start_index)
+{
+	new x=0;
+	while(string[start_index] != EOS && string[start_index] != delim) {
+	    return_str[x] = string[start_index];
+	    x++;
+	    start_index++;
+	}
+	return_str[x] = EOS;
+	if(string[start_index] == EOS) start_index = (-1);
+	return start_index;
+}
+
+//----------------------------------------------------------
+
+stock isNumeric(const string[])
+{
+  new length=strlen(string);
+  if (length==0) return false;
+  for (new i = 0; i < length; i++)
+    {
+      if (
+            (string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+') // Not a number,'+' or '-'
+             || (string[i]=='-' && i!=0)                                             // A '-' but not at first.
+             || (string[i]=='+' && i!=0)                                             // A '+' but not at first.
+         ) return false;
+    }
+  if (length==1 && (string[0]=='-' || string[0]=='+')) return false;
+  return true;
+}
+
+//----------------------------------------------------------
+
+stock IsKeyJustDown(key, newkeys, oldkeys)
+{
+	if((newkeys & key) && !(oldkeys & key)) return 1;
+	return 0;
+}
+
+//----------------------------------------------------------

+ 138 - 0
Texture-Studio-master/include/gl_spawns.inc

@@ -0,0 +1,138 @@
+// Some player spawn points around the 3 main cities of San Andreas.
+// Thanks to krisk, Popz and Woet.
+
+// Police dept spawns LS/SF/LV.
+new Float:gPoliceSpawns[3][4] = {
+{1568.2250,-1693.5483,5.8906,177.0983},
+{-1604.8442,732.9442,-5.2344,37.6041},
+{2343.4553,2455.5994,14.9688,96.5022}
+};
+
+// Medical dept spawns LS/SF/LV.
+new Float:gMedicalSpawns[3][4] = {
+{1568.2250,-1693.5483,5.8906,177.0983},
+{-1604.8442,732.9442,-5.2344,37.6041},
+{1609.5922,1820.9641,10.8280,348.1614}
+};
+
+// Army spawns LS/SF/LV.
+new Float:gArmySpawns[3][4] = {
+{2786.2183,-2436.7859,13.6340,82.3043},
+{-1308.4493,504.9661,11.1953,132.5},
+{272.6040,1989.7307,17.6406,268.3605}
+};
+
+new Float:gRandomSpawns_LosSantos[][4] = {
+{1751.1097,-2106.4529,13.5469,183.1979}, // El-Corona - Outside random house
+{2652.6418,-1989.9175,13.9988,182.7107}, // Random house in willowfield - near playa de seville and stadium
+{2489.5225,-1957.9258,13.5881,2.3440}, // Hotel in willowfield - near cluckin bell
+{2689.5203,-1695.9354,10.0517,39.5312}, // Outside stadium - lots of cars
+{2770.5393,-1628.3069,12.1775,4.9637}, // South in east beach - north of stadium - carparks nearby
+{2807.9282,-1176.8883,25.3805,173.6018}, // North in east beach - near apartments
+{2552.5417,-958.0850,82.6345,280.2542}, // Random house north of Las Colinas
+{2232.1309,-1159.5679,25.8906,103.2939}, // Jefferson motel
+{2388.1003,-1279.8933,25.1291,94.3321}, // House south of pig pen
+{2481.1885,-1536.7186,24.1467,273.4944}, // East LS - near clucking bell and car wash
+{2495.0720,-1687.5278,13.5150,359.6696}, // Outside CJ's house - lots of cars nearby
+{2306.8252,-1675.4340,13.9221,2.6271}, // House in ganton - lots of cars nearby
+{2191.8403,-1455.8251,25.5391,267.9925}, // House in south jefferson - lots of cars nearby
+{1830.1359,-1092.1849,23.8656,94.0113}, // Mulholland intersection carpark
+{2015.3630,-1717.2535,13.5547,93.3655}, // Idlewood house
+{1654.7091,-1656.8516,22.5156,177.9729}, // Right next to PD
+{1219.0851,-1812.8058,16.5938,190.0045}, // Conference Center
+{1508.6849,-1059.0846,25.0625,1.8058}, // Across the street of BANK - lots of cars in intersection carpark
+{1421.0819,-885.3383,50.6531,3.6516}, // Outside house in vinewood
+{1133.8237,-1272.1558,13.5469,192.4113}, // Near hospital
+{1235.2196,-1608.6111,13.5469,181.2655}, // Backalley west of mainstreet
+{590.4648,-1252.2269,18.2116,25.0473}, // Outside "BAnk of San Andreas"
+{842.5260,-1007.7679,28.4185,213.9953}, // North of Graveyard
+{911.9332,-1232.6490,16.9766,5.2999}, // LS Film Studio
+{477.6021,-1496.6207,20.4345,266.9252}, // Rodeo Place
+{255.4621,-1366.3256,53.1094,312.0852}, // Outside propery in richman
+{281.5446,-1261.4562,73.9319,305.0017}, // Another richman property
+{790.1918,-839.8533,60.6328,191.9514}, // Mulholland house
+{1299.1859,-801.4249,84.1406,269.5274}, // Maddoggs
+{1240.3170,-2036.6886,59.9575,276.4659}, // Verdant Bluffs
+{2215.5181,-2627.8174,13.5469,273.7786}, // Ocean docks 1
+{2509.4346,-2637.6543,13.6453,358.3565} // Ocean Docks spawn 2
+};
+
+new Float:gRandomSpawns_LasVenturas[][4] = {
+{1435.8024,2662.3647,11.3926,1.1650}, //  Northern train station
+{1457.4762,2773.4868,10.8203,272.2754}, //  Northern golf club
+{1739.6390,2803.0569,14.2735,285.3929}, //  Northern housing estate 1
+{1870.3096,2785.2471,14.2734,42.3102}, //  Northern housing estate 2
+{1959.7142,2754.6863,10.8203,181.4731}, //  Northern house 1
+{2314.2556,2759.4504,10.8203,93.2711}, //  Northern industrial estate 1
+{2216.5674,2715.0334,10.8130,267.6540}, //  Northern industrial estate 2
+{2101.4192,2678.7874,10.8130,92.0607}, //  Northern near railway line
+{1951.1090,2660.3877,10.8203,180.8461}, //  Northern house 2
+{1666.6949,2604.9861,10.8203,179.8495}, //  Northern house 3
+{2808.3367,2421.5107,11.0625,136.2060}, //  Northern shopping centre
+{2633.3203,2349.7061,10.6719,178.7175}, //  V-Rock
+{2606.6348,2161.7490,10.8203,88.7508}, //  South V-Rock
+{2616.5286,2100.6226,10.8158,177.7834}, //  North Ammunation 1
+{2491.8816,2397.9370,10.8203,266.6003}, //  North carpark 1
+{2531.7891,2530.3223,21.8750,91.6686}, //  North carpark 2
+{2340.6677,2530.4324,10.8203,177.8630}, //  North Pizza Stack
+{2097.6855,2491.3313,14.8390,181.8117}, //  Emerald Isle
+{1893.1000,2423.2412,11.1782,269.4385}, //  Souvenir shop
+{1698.9330,2241.8320,10.8203,357.8584}, //  Northern casino
+{1479.4559,2249.0769,11.0234,306.3790}, //  Baseball stadium 1
+{1298.1548,2083.4016,10.8127,256.7034}, //  Baseball stadium 2
+{1117.8785,2304.1514,10.8203,81.5490}, //  North carparks
+{1108.9878,1705.8639,10.8203,0.6785}, //  Dirtring racing 1
+{1423.9780,1034.4188,10.8203,90.9590}, //  Sumo
+{1537.4377,752.0641,11.0234,271.6893}, //  Church
+{1917.9590,702.6984,11.1328,359.2682}, //  Southern housing estate
+{2089.4785,658.0414,11.2707,357.3572}, //  Southern house 1
+{2489.8286,928.3251,10.8280,67.2245}, //  Wedding chapel
+{2697.4717,856.4916,9.8360,267.0983}, //  Southern construction site
+{2845.6104,1288.1444,11.3906,3.6506}, //  Southern train station
+{2437.9370,1293.1442,10.8203,86.3830}, //  Wedding chapel (near Pyramid)
+{2299.5430,1451.4177,10.8203,269.1287}, //  Carpark (near Pyramid)
+{2214.3008,2041.9165,10.8203,268.7626}, //  Central parking lot
+{2005.9174,2152.0835,10.8203,270.1372}, //  Central motel
+{2222.1042,1837.4220,10.8203,88.6461}, //  Clowns Pocket
+{2025.6753,1916.4363,12.3382,272.5852}, //  The Visage
+{2087.9902,1516.5336,10.8203,48.9300}, //  Royal Casino
+{2172.1624,1398.7496,11.0625,91.3783}, //  Auto Bahn
+{2139.1841,987.7975,10.8203,0.2315}, //  Come-a-lot
+{1860.9672,1030.2910,10.8203,271.6988}, //  Behind 4 Dragons
+{1673.2345,1316.1067,10.8203,177.7294}, //  Airport carpark
+{1412.6187,2000.0596,14.7396,271.3568} //  South baseball stadium houses
+};
+
+new Float:gRandomSpawns_SanFierro[][4] = {
+{-2723.4639,-314.8138,7.1839,43.5562},  // golf course spawn
+{-2694.5344,64.5550,4.3359,95.0190},  // in front of a house
+{-2458.2000,134.5419,35.1719,303.9446},  // hotel
+{-2796.6589,219.5733,7.1875,88.8288},  // house
+{-2706.5261,397.7129,4.3672,179.8611},  // park
+{-2866.7683,691.9363,23.4989,286.3060},  // house
+{-2764.9543,785.6434,52.7813,357.6817},  // donut shop
+{-2660.9402,883.2115,79.7738,357.4440},  // house
+{-2861.0796,1047.7109,33.6068,188.2750}, //  parking lot
+{-2629.2009,1383.1367,7.1833,179.7006},  // parking lot at the bridge
+{-2079.6802,1430.0189,7.1016,177.6486},  // pier
+{-1660.2294,1382.6698,9.8047,136.2952}, //  pier 69
+{-1674.1964,430.3246,7.1797,226.1357},  // gas station]
+{-1954.9982,141.8080,27.1747,277.7342},  // train station
+{-1956.1447,287.1091,35.4688,90.4465},  // car shop
+{-1888.1117,615.7245,35.1719,128.4498},  // random
+{-1922.5566,886.8939,35.3359,272.1293},  // random
+{-1983.3458,1117.0645,53.1243,271.2390},  // church
+{-2417.6458,970.1491,45.2969,269.3676},  // gas station
+{-2108.0171,902.8030,76.5792,5.7139},  // house
+{-2097.5664,658.0771,52.3672,270.4487},  // random
+{-2263.6650,393.7423,34.7708,136.4152},  // random
+{-2287.5027,149.1875,35.3125,266.3989},  // baseball parking lot
+{-2039.3571,-97.7205,35.1641,7.4744},  // driving school
+{-1867.5022,-141.9203,11.8984,22.4499},  // factory
+{-1537.8992,116.0441,17.3226,120.8537},  // docks ship
+{-1708.4763,7.0187,3.5489,319.3260},  // docks hangar
+{-1427.0858,-288.9430,14.1484,137.0812},  // airport
+{-2173.0654,-392.7444,35.3359,237.0159},  // stadium
+{-2320.5286,-180.3870,35.3135,179.6980},  // burger shot
+{-2930.0049,487.2518,4.9141,3.8258}  // harbor
+};

BIN
Texture-Studio-master/models/door_5x3.5.dff


BIN
Texture-Studio-master/models/plane_100x100.dff


BIN
Texture-Studio-master/models/plane_10x10.dff


BIN
Texture-Studio-master/models/plane_10x20.dff


BIN
Texture-Studio-master/models/plane_20x20.dff


BIN
Texture-Studio-master/models/plane_25x25.dff


BIN
Texture-Studio-master/models/plane_25x50.dff


BIN
Texture-Studio-master/models/plane_50x100.dff


BIN
Texture-Studio-master/models/plane_50x50.dff


BIN
Texture-Studio-master/models/plane_5x10.dff


BIN
Texture-Studio-master/models/plane_5x5.dff


BIN
Texture-Studio-master/models/platform_10x10x05.dff


BIN
Texture-Studio-master/models/platform_20x20x05.dff


BIN
Texture-Studio-master/models/platform_5x2.5.dff


BIN
Texture-Studio-master/models/platform_5x5.dff


BIN
Texture-Studio-master/models/platform_5x5x05.dff


BIN
Texture-Studio-master/models/ramp_2.5x5x3.5.dff


Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff