Custom Files
Sprite
Place your images inside the folder <root>/store/sprites/
e.g. /store/sprites/Filename.png
Then use the function CreateSprite in your script like so:
CreateSprite("Filename.png", x, y, rX, rY, rotation, alpha)
Maps
Inside your root server folder create the following folders:
<root>/store/maps
<root>/store/objects
Inside the maps folder place an xml file with any name you want with the following structure:
<?xml version="1.0" encoding="ASCII" ?>
<itemlist>
<item model="6000" name="drugstoreint">
<position x="-856.7597046" y="-79.71799469" z="12.73265266" />
<rotation format="axisangle" x="0.0" y="0.0" z="0.0" angle="1.0" />
</item>
<item model="6001" name="drugstoreext">
<position x="-856.3429565" y="-79.98773956" z="12.64423846" />
<rotation format="axisangle" x="0.0" y="0.0" z="0.0" angle="1.0" />
</item>
</itemlist>
The IPL files have the following structure:
1474, drugstoreint, 0, -856.7597046, -79.71799469, 12.73265266, 1, 1, 1, 0, 0, 0, 1
model name (useless) x y z (useless) (useless) (useless) rot.x rot.y rot.z rot.angle
Objects
Custom object models start with ID 6000.
Create a file called objects.xml in the objects folder with the following structure:
<?xml version="1.0" encoding="ASCII"?>
<objectlist>
<object id="0">
<flags value="0" />
<collision path="drugstoreint.col" />
<texture path="chem2.txd" />
<model path="drugstoreint.dff" distance="350" />
</object>
<object id="1">
<flags value="0" />
<collision path="drugstoreext.col" />
<texture path="chem.txd" />
<model path="drugstoreext.dff" distance="350" />
</object>
</objectlist>
After you've done all that, zip up your col, diff and txd files using 7zip. The file extension must be .7z
Place the .7z with a filename like <somename>_unp.7z in the store folder.
You can also forget the map file and use the custom model IDs (6000+) inside your script.
Weapons
The weapons file is same as MVL(Maxo's Vehicle Loader), so you can use the mod you find on the internet.
Create a new 7-Zip (7z) archive in <root>/store/weapons with a filename in this format:
w<id>_s<slot>_l<weapon>_name.7z
<id> - starting from 100 and increasing with each weapon you add; the ID used by the weapon in-game.
<slot> - the weapon slot the weapon uses, with 0 being fist, 1 being melee, etc.
<weapon> - the ID of the weapon your custom weapon behaves like; putting 6 in here will make your weapon behave like a baseball bat.
Note: If <weapon> is 81, it will act as a hat, and the player will use fists for melee.
The contents of the file are as follows:
weaponname.xml
Describes the weapon and its settings, like in weapon.dat. logicalid is the same as the <weapon> specified in the filename. The following describes a pike used in the public beta server that acts as a baseball bat. If you are specifying a firearm, you will need to modify this.
<?xml version="1.0" encoding="ASCII"?>
<weapon>
<basic>
<name>Pike</name>
<logicalid>6</logicalid>
</basic>
<properties>
<type>melee</type>
<range>2.000000</range>
<firerate>450</firerate>
<reload>100</reload>
<clipsize>1000</clipsize>
<damage>21</damage>
<speed>-1.000000</speed>
<radius>0.800000</radius>
<lifespan>-1.000000</lifespan>
<spread>-1.000000</spread>
<offset>
<x>0.100000</x>
<y>1.800000</y>
<z>0.300000</z>
</offset>
<animgroup>baseball</animgroup>
<animstart>5</animstart>
<animend>20</animend>
<animfire>16</animfire>
<anim2start>3</anim2start>
<anim2end>17</anim2end>
<anim2fire>11</anim2fire>
<animbreak>99</animbreak>
<modelindex>-1</modelindex>
<model2index>-1</model2index>
<flags>00102000</flags>
<weaponslot>1</weaponslot>
</properties>
</weapon>
weaponname_icon.png (optional)
The icon for the weapon that will be used in-game. If not specified, a blank icon is used.
animgroup.ifp (optional)
The animation group file used for the weapon. If not given, the client will use the default animation group provided by Vice City.
weaponname.dff (optional)
The model for the weapon. If not given, the client will use the same model as the logical weapon ID, i.e. the baseball bat in this example.
weaponname.txd (optional)
The texture for the weapon. If not given, the client will use default textures for the logical weapon ID.
scope.png (optional)
For sniper rifles and RPGs; the texture used for the scope when zoomed in. If not given, the client will use default scopes.