Two things: First, the viewID must be the same as the ID on your sprite set in weapontable.
Secondly, there's ID ranges for each kind of weapon.
Weapon Sprite Solution (Renewal Clients <= 2012-04-10a & Main Clients <= 2012-07-10a)
For these clients, Weapons are limited to use a range of Item IDs hardcoded in the clientn for each type. For e.g.
1265,Bloody_Roar,Bloody Roar,4,,10,1000,120,,1,0,4096,7,2,34,4,75,1,16,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bFlee,-160; bonus bFlee2,-160; bonus bNoRegen,1; bonus bNoRegen,2; },{},{}
1266,Test,Test,4,4000,2000,10,165,,1,0,4096,7,2,34,3,33,1,16,{}
// 1-Handed Axes
1301,Axe,Axe,4,500,,800,38,,1,3,8803555,7,2,2,1,3,1,6,{}
Here the item 1266 is a custom katar and it does show up as a katar (if you have the proper sprite files ofcourse). but if i use some id like say 22000, client wont display it. So what is the range of item ids you can use? Look below:
One handed Swords = 1100-1149, 13400-13499
Two handed Swords = 1150-1199, 21000-21999
Knives, Daggers etc = 1200-1249, 13000-13099
Katars = 1250-1299 ; Has 35 free IDs
One handed Axes = 1300-1349; Has 43 free IDs
Two handed Axes = 1350-1399; Has 32 free IDs
One handed Spears = 1400-1449; Has 34 free IDs
Two Handed Spears = 1450-1471, 1474-1499
Maces = 1500-1549, 16000-16999
Books = 1550-1599 ; Has only 2 IDs.
Knuckles = 1800-1899 ; Has 95 free IDs
One Handed Staves/Rods = 1600-1699; Has 79 free IDs
Two Handed Staves/Rods = 1472,1473,2000-2099
Bows = 1700-1749, 18100-18499
Guitars = 1900-1949 ; Has 32 free IDs
Whips = 1950-1999 ; Has 130 free IDs
Handguns = 13100-13149
Other guns = 13150-13199
Ninja weapons = 13300-13399
The number of unused Item IDs left known for a range has also been mentioned above. Best practice to follow check in your range in official db before adding custom weapon.
Weapon Sprite Solution (For New Clients)
For new clients the view id system is also applicable to client. To add a custom weapon you need to first edit a file called weapontable.lub in your data folder
data/luafiles514/lua files/datainfo/weapontable.lub
I will be adding Oriental_Sword which will be a 1-Handed sword. Open weapontable.lub. First you will see a table called Weapon_IDs. Take note of the first 30 values in this table - these are the only available Weapon types in the client right now.
Anyways go to the last entry which should be for Wizardy Staff = 97. You can use a view id after that like shown below
WEAPONTYPE_Oriental_Sword = 98,
Come down and you see the next table called WeaponNameTable. Here is where you add your sprite name suffix.
What do i mean by that? Its the last part in your weapon sprite & act file. Before it used to be _<Item ID>.
data/sprite/<job dependent folder>/<job dependent prefix>_<gender><weapon suffix>.spr
OK Back to topic. so I add my entry like shown below.
[Weapon_IDs.WEAPONTYPE_Oriental_Sword] = "Oriental"
Lastly come down further in weapontable.lub and you see the last table called Expansion_Weapon_IDs.
Remember the 30 types i told you to take note of ? here we assign one of those to our custom (like a mapping or connection).
Since mine is a 1-Handed Sword I specify it like below.
[Weapon_IDs.WEAPONTYPE_Oriental_Sword] = Weapon_IDs.WPCLASS_WEAPONTYPE_SWORD
Now for the most important part. For our client to actually pick up all these details we need to provide the view id which we used in Weapon_IDs table as the ClassNum value in ItemInfo.lua. Check the ItemInfo.lub format shown above for details.
With this your weapon sprite will become visible while attacking.