Last active
November 4, 2020 13:46
-
-
Save MerijnHendriks/ac8dba12c21b87d8af9ff702be795351 to your computer and use it in GitHub Desktop.
Example weapon mod for SPT-AKI Alpha R5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* mod.js | |
| * license: NCSA | |
| * copyright: Senko's Pub | |
| * website: https://www.guilded.gg/senkospub | |
| * authors: | |
| * - Senko-san (Merijn Hendriks) | |
| */ | |
| class Mod | |
| { | |
| constructor() | |
| { | |
| this.modname = "senko-ar57"; | |
| common_f.logger.logInfo(`Loading: ${this.modname}`); | |
| core_f.packager.onLoad[this.modname] = this.load.bind(this); | |
| } | |
| load() | |
| { | |
| // get allowed ammo from p90 | |
| const ammo = common_f.json.clone(database_f.server.tables.templates.items["5cc82d76e24e8d00134b4b83"] | |
| ._props.Chambers[0]._props.filters[0].Filter); | |
| // register item templates | |
| this.createMagItemTemplate("senko_ar57_mag", "59c1383d86f774290a37e0ca", 80, ammo); | |
| this.createBarrelItemTemplate(); | |
| this.createUpperItemTemplate(); | |
| this.createReceiverItemTemplate(ammo); | |
| // register weapon preset | |
| this.createWeaponPreset("senko_ar57_default"); | |
| // register handbook templates | |
| this.createHandbookTemplate("senko_ar57_mag", "59c1383d86f774290a37e0ca", 1); | |
| this.createHandbookTemplate("senko_ar57_barrel", "58aeaaa886f7744fc1560f81", 1); | |
| this.createHandbookTemplate("senko_ar57_upper", "5c07a8770db8340023300450", 1); | |
| this.createHandbookTemplate("senko_ar57_receiver", "5447a9cd4bdc2dbd208b4567", 1); | |
| // register flea market offer | |
| this.createTraderOffer("senko_ar57_mag", "ragfair"); | |
| this.createTraderOffer("senko_ar57_barrel", "ragfair"); | |
| this.createTraderOffer("senko_ar57_upper", "ragfair"); | |
| this.createTraderOffer("senko_ar57_receiver", "ragfair"); | |
| } | |
| createHandbookTemplate(id, template, price) | |
| { | |
| // clone handbook template | |
| let item = database_f.server.tables.templates.handbook.Items.find((t) => { | |
| return t.Id === template; | |
| }); | |
| item.Id = id; | |
| item.Price = price; | |
| // add new handbook template to database | |
| database_f.server.tables.templates.handbook.Items[id] = item; | |
| } | |
| createTraderOffer(id, trader) | |
| { | |
| // add item | |
| database_f.server.tables.traders[trader].assort.items.push({ | |
| "_id": id, | |
| "_tpl": id, | |
| "parentId": "hideout", | |
| "slotId": "hideout", | |
| "upd": { | |
| "UnlimitedCount": true, | |
| "StackObjectsCount": 999999999 | |
| } | |
| }); | |
| // add purchase cost | |
| database_f.server.tables.traders[trader].assort.barter_scheme[id] = [ | |
| [ | |
| { | |
| "count": database_f.server.tables.templates.handbook.Items[id].Price, | |
| "_tpl": "5449016a4bdc2d6f028b456f" | |
| } | |
| ] | |
| ] | |
| // add trader standing requirement | |
| database_f.server.tables.traders.ragfair.assort.loyal_level_items[id] = 1; | |
| } | |
| createWeaponPreset(id) | |
| { | |
| // | |
| } | |
| createMagItemTemplate(id, template, size, ammo) | |
| { | |
| // clone item template | |
| let item = common_f.json.clone(database_f.server.tables.templates.items[template]); | |
| // basic properties | |
| item._id = id; | |
| item._name = id; | |
| // set size | |
| item._props.Cartridges[0]._max_count = size; | |
| // set allowed ammo | |
| item._props.Cartridges[0]._props.filters[0].Filter = ammo; | |
| // add new item template to database | |
| database_f.server.tables.templates.items[id] = item; | |
| } | |
| createBarrelItemTemplate() | |
| { | |
| // clone MPX-SD barrel | |
| let item = common_f.json.clone(database_f.server.tables.templates.items["58aeaaa886f7744fc1560f81"]); | |
| // basic properties | |
| item._id = "senko_ar57_barrel"; | |
| item._name = item._id; | |
| // set allowed muzzles | |
| item._props.Slots[0]._props.filters[0].Filter = [ | |
| "5cc82796e24e8d000f5859a8", | |
| ]; | |
| // add new item template to database | |
| database_f.server.tables.templates.items[item._id] = item; | |
| } | |
| createUpperItemTemplate() | |
| { | |
| // clone noveske ar15 upper | |
| let item = common_f.json.clone(database_f.server.tables.templates.items["5c07a8770db8340023300450"]); | |
| // basic properties | |
| item._id = "senko_ar57_upper"; | |
| item._name = item._id; | |
| // set allowed barrels | |
| item._props.Slots[1]._props.filters[0].Filter = [ | |
| "senko_ar57_barrel", | |
| ]; | |
| // set allowed handguards | |
| item._props.Slots[1]._props.filters[0].Filter = [ | |
| "5d123102d7ad1a004e475fe5" | |
| ]; | |
| // add new item template to database | |
| database_f.server.tables.templates.items[item._id] = item; | |
| } | |
| createReceiverItemTemplate(ammo) | |
| { | |
| // clone cold m4 receiver | |
| let item = common_f.json.clone(database_f.server.tables.templates.items["5447a9cd4bdc2dbd208b4567"]); | |
| // basic properties | |
| item._id = "senko_ar57_receiver"; | |
| item._name = item._id; | |
| // set ammo type | |
| item._props.ammoCaliber = "Caliber57x28"; | |
| // set allowed ammo | |
| item._props.Chambers[0]._props.filters[0].Filter = ammo; | |
| // set allowed mags | |
| item._props.Slots[1]._props.filters[0].Filter = [ | |
| "senko_ar57_mag" | |
| ]; | |
| // set allowed uppers | |
| item._props.Slots[2]._props.filters[0].Filter = [ | |
| "senko_ar57_upper" | |
| ]; | |
| // set allowed charging handles | |
| item._props.Slots[4]._props.filters[0].Filter = [ | |
| "5d44334ba4b9362b346d1948" | |
| ]; | |
| // add new item template to databases | |
| database_f.server.tables.templates.items[item._id] = item; | |
| } | |
| } | |
| module.exports.Mod = Mod; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment