From The Mana World
(added anti stacking precaution to stat modifiers) |
(→Database: references) |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 2: | Line 2: | ||
Layout for the SQL table to store customized equipment | Layout for the SQL table to store customized equipment | ||
{{beginsqltable|tmw_item_instances}} | {{beginsqltable|tmw_item_instances}} | ||
{{sqltablerow | id | INTEGER | PRIMARY KEY | tmw_item_instances_modifiers.id, tmw_item_instances_runes.id | unique identifier}} | {{sqltablerow | id | INTEGER | PRIMARY KEY | tmw_item_instances_modifiers.id, tmw_item_instances_runes.id, tmw_item_instances_vars | unique identifier}} | ||
{{sqltablerow | archetype-id | INTEGER | | | entry from items.xml to determine the slot the item is equipped in, the used sprite, item icon and description. In case of weapons it also affects the weapon category (used skill) and the attack zone.}} | {{sqltablerow | archetype-id | INTEGER | | | entry from items.xml to determine the slot the item is equipped in, the used sprite, item icon and description. In case of weapons it also affects the weapon category (used skill) and the attack zone.}} | ||
{{sqltablerow | color | TEXT | | | colorization string}} | {{sqltablerow | color | TEXT | | | colorization string}} | ||
Line 16: | Line 16: | ||
Stat modifiers during item creation. Also includes elemental modifiers. | Stat modifiers during item creation. Also includes elemental modifiers. | ||
{{beginsqltable|tmw_item_instances_modifiers}} | {{beginsqltable|tmw_item_instances_modifiers}} | ||
{{sqltablerow | id | INTEGER | PRIMARY KEY | | {{sqltablerow | id | INTEGER | PRIMARY KEY | tmw_item_instances.id | id of the custom item affected}} | ||
{{sqltablerow | attribute | BYTE | | | affected character attribute or modified element}} | {{sqltablerow | attribute | BYTE | | | affected character attribute or modified element}} | ||
{{sqltablerow | absolute | INTEGER | | | linear attribute modifier}} | {{sqltablerow | absolute | INTEGER | | | linear attribute modifier}} | ||
{{sqltablerow | multiplier | FLOAT | | | attribute multiplier in case of character attribute. Elemental damage multiplier in case of element attribute.}} | {{sqltablerow | multiplier | FLOAT | | | attribute multiplier in case of character attribute. Elemental damage multiplier in case of element attribute.}} | ||
{{sqltablerow | stackgroup | INTEGER | | {{sqltablerow | stackgroup | INTEGER | PRIMARY KEY | | Stack group of the modifier effect. Every item may only have one effect from each stack group to avoid having multiple effects which are not supposed to stack. A weapon enchantment from a player would, for example, come from a specific stack group number which translates to "player weapon attack buff" making it impossible to apply it multiple times to the same weapon. }} | ||
{{sqltablerow | time | INTEGER | | | time when the modifier wears off (for temporary enchantments)}} | {{sqltablerow | time | INTEGER | | | time when the modifier wears off (for temporary enchantments)}} | ||
{{endsqltable}} | {{endsqltable}} | ||
Line 26: | Line 26: | ||
Spell runes engraved in the item. | Spell runes engraved in the item. | ||
{{beginsqltable|tmw_item_instances_runes}} | {{beginsqltable|tmw_item_instances_runes}} | ||
{{sqltablerow | id | INTEGER | | {{sqltablerow | id | INTEGER | | tmw_item_instances.id | id of the custom item affected}} | ||
{{sqltablerow | spell | INTEGER | | | spell of the rune }} | {{sqltablerow | spell | INTEGER | | | spell of the rune }} | ||
{{endsqltable}} | {{endsqltable}} | ||
Line 32: | Line 32: | ||
Custom variables for use in item scripts | Custom variables for use in item scripts | ||
{{beginsqltable|tmw_item_instances_vars}} | {{beginsqltable|tmw_item_instances_vars}} | ||
{{sqltablerow | id | INTEGER | PRIMARY KEY | | {{sqltablerow | id | INTEGER | PRIMARY KEY | tmw_item_instances.id | id of the custom item affected}} | ||
{{sqltablerow | key | TEXT | | | key }} | {{sqltablerow | key | TEXT | PRIMARY KEY | | key }} | ||
{{sqltablerow | value | TEXT | | | value}} | {{sqltablerow | value | TEXT | | | value}} | ||
{{endsqltable}} | {{endsqltable}} | ||
== Netcode == | == Netcode == |
Latest revision as of 08:50, 10 February 2010
Database
Layout for the SQL table to store customized equipment
|
Stat modifiers during item creation. Also includes elemental modifiers.
|
Spell runes engraved in the item.
|
Custom variables for use in item scripts
|
Netcode
- Item IDs are 32 bit unsigned integers
- Item IDs 1 - 65.535 are non-customized generic items which may exist multiple times
- Item IDs 65.536 - 4.294.967.296 are unique equipment items which may only exist once in the game.
- When sending the inventory data to a character, every high id is followed by its archetype-id and colorization string. All other information about the item can be requested on demand with an additional message.
- When sending look information about other characters the archetype-id and the colorisation are transfered
- Colorisations are sent in a compressed format:
- 1 Byte bitfield of the used colorisation channels. For each channel:
- 1 Byte for number of entries in the color ramp. for every entry:
- 3 Byte for red, green and blue component of color
- 1 Byte for number of entries in the color ramp. for every entry:
- 1 Byte bitfield of the used colorisation channels. For each channel:
Script API
- tmw.create_item_instance(archetype-id, color, name, inscription, durability, initial-durability, weight, value, runeslots)
- Creates a custom item in the server database. Returns the ID of the item.
- tmw.change_item_instance(id, archetype-id, color, name, inscription, durability, initial-durability, weight, value, runeslots)
- Changes the values of a custom item in the server database. Every argument may be NULL to leave it as it is.
- tmw.add_modifier_to_item_instance(id, attribute, absolute, multiplier, stack, time)
- Adds a modifier to an item.
- tmw.add_rune_to_item_instance(id, spell)
- Adds a spell rune to an item.
- tmw.get_item_instance(id)
- Returns a table with the attributes of the item.
- tmw.get_item_instance_modifiers(id)
- Returns a table of tables with the modifier data of the item.
- tmw.get_item_instance_runes(id)
- Returns a table of tables with the rune data of the item.
- tmw.get_item_instance_var(id, key)
- Returns the string stored in "key" in the var table of the item
- tmw.set_item_instance_var(id, key, value)
- Sets the string stored in "key" in the var table of the item.
(function names not checked for consistency with the rest of the api)