Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/openface/onset-metaobjects
Inventory system and rich object framework for Onset
https://github.com/openface/onset-metaobjects
onset
Last synced: 3 months ago
JSON representation
Inventory system and rich object framework for Onset
- Host: GitHub
- URL: https://github.com/openface/onset-metaobjects
- Owner: openface
- Created: 2020-03-28T22:50:46.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-04-04T03:04:51.000Z (over 4 years ago)
- Last Synced: 2024-06-20T16:11:11.990Z (5 months ago)
- Topics: onset
- Language: Lua
- Size: 1.53 MB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-onset - MetaObjects - Inventory system and rich object framework for Onset. (Packages and Plugins / Libraries)
README
# MetaObjects - Inventory & rich object system for Onset
## Features
All MetaObjects share these common functionalities:
- **Pickups** - Objects can be picked up and stored in player's inventory.
- **Inventory** - Stores finite number of items. Objects can be used, equipped, or dropped.
- **Equipable** - Objects can configurably be equipped/unequipped.
- **Usable** - Objects can configurably be used/consumed a finite number of times.
- **Extendable** - Object files can be extended using server-side events.Note: Hold the [I] key to bring up the inventory menu.
## How To Use
The MetaObjects package is intended to work along with other packages. To include it
your server, add it to the packages section in the server configuration file. (Eg. `server_config.json`)Import it from a server-side script:
```
MetaObjects = ImportPackage("metaobjects")
```## Exported API Functions
Once this package is imported, you can use it's exported functions in your server-side scripts.
MetaObjects are always referenced by their name.#### RegisterObject(name, meta)
Register a new metaobject by name and configuration.```
MetaObjects.RegisterObject("mop", {
interaction = {
animation = { name = "WALLLEAN03" }
},
modelid = 1673,
max_carry = 1,
attachment = { x = 50, y = 40, z = -114, rx = 0, ry = -40, rz = -30, bone = "hand_r" },
usable = false,
equipable = true
})
```### Pickups API
| Function / Args | |
|----------------------------------------------|---------------------------------------|
| `CreateObjectPickupNearPlayer(player, name)` | Spawn metaobject pickup near a player |
| `CreateObjectPickup(name, x, y, z)` | Spawn metaobject at given location |### Inventory API
| Function / Args | |
|-------------------------------------------|----------------------------------------------------------|
| `AddObjectToInventory(player, name)` | Add a metaobject to a player's inventory |
| `GetInventoryAvailableSlots(player)` | Get number of available inventory slots for a player |
| `GetInventoryCount(player, name)` | Get the count for a given objects in player's inventory |
| `UseObjectFromInventory(player, name)` | Player uses a given metaobject. |
| `EquipObjectFromInventory(player, name)` | Player equips a given metaobject. |
| `UnequipObject(player, name)` | Player unequips a given metaobject, if equipped. |
| `DropObjectFromInventory(player, name)` | Remove object from player inventory and place on ground. |
| `DeleteObjectFromInventory(player, name)` | Remove object from player inventory and discard. |## MetaObject Configuration
#### modelid (int)
ModelID to use in-game and in inventory. See full list [here](https://dev.playonset.com/wiki/Objects).#### max_carry (integer)
Max number of these player can carry at once.#### attachment (table)
How to attach object to the player when equipped or used. These parameters are similar to those in [SetObjectAttached](https://dev.playonset.com/wiki/SetObjectAttached).```
attachment = {
x = -20,
y = 5,
z = 22,
rx = 82,
ry = 180,
rz = 10,
bone = "hand_r"
},
```#### usable (boolean)
Whether or not this object can used directly from the inventory.#### max_use (integer)
Max number of times this object can be used (if usable). The object is discarded after this limit is exceeded.#### equipable (boolean)
Whether or not this object can be equipped directly from the inventory.#### interaction (table)
Play animation and sounds when equipping or using an item. See [AnimationList](https://dev.playonset.com/wiki/AnimationList). Sounds are rendered in 3D from the player to all nearby clients within 1000 units.```
interaction = {
sound = "sounds/chainsaw.wav",
animation = { name = "FISHING", duration = 4000 }
},
```Note: Not all animations require a duration. Animations are cancelled when the player
unequips the object.## TODO
- [ ] Auto-equip when picked up when configured
- [ ] Unequip any equipped weapon when equipping an object
- [ ] Add armor bonus to vest object
- [ ] Consider ExtendObject, similar to RegisterObject, but allows overrides