SHARE
TWEET

Untitled

a guest Aug 23rd, 2019 70 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     console.log(__dirname)
  2.     const ITEMS = require(__dirname + './items.json');
  3.     const RPG = require(__dirname + './library');
  4.     const DATA = {};
  5.     const INV = {};
  6.  
  7.     const PLAYER_DATA = new RPG.DATABASE("data", "Player Data")
  8.  
  9.     function findItem(name) {
  10.         if (!name) return;
  11.         const item = name.toLowerCase();
  12.         for (let index of Object.keys(ITEMS)) {
  13.             if (index.toLowerCase().indexOf(item) == 0) {
  14.                 return index;
  15.             };
  16.         };
  17.     };
  18.  
  19.     function unequip(id) {
  20.         if (!id) return;
  21.         if (!PLAYER_DATA.CHECK(id)) return;
  22.  
  23.         const equip_data = PLAYER_DATA.GET_DATA(`${id}.equip`)
  24.         if (!typeof equip_data === "undefined", equip_data.equipped) return;
  25.         return {
  26.             item: PLAYER_DATA.SET_DATA(undefined, `${id}.equip.item`),
  27.             equip: PLAYER_DATA.SET_DATA(false, `${id}.equip.equipped`)
  28.         }
  29.     }
  30.  
  31.     function tax(price, player) {
  32.         if (!price || isNaN(price)) return {
  33.             err: Error("Price is NaN"),
  34.             noti: RPG.notification("Inv", "This item does not have a sell price!", player, "#0000FF")
  35.         };
  36.         return Math.floor(price * 0.8) // 80% of buy price
  37.     }
  38.  
  39.     function invAdd(item, plr) {
  40.         const id = plr.userId;
  41.         const name = String(item);
  42.         if (PLAYER_DATA.GET_DATA(`${id}.inv.${name}`)) {
  43.             let quan = PLAYER_DATA.GET_DATA(`${id}.inv.${name}.quantity`)
  44.             return PLAYER_DATA.SET_DATA(quan += 1, `${id}.inv.${name}.quantity`);
  45.         }
  46.         INV[item] = {
  47.             quantity: 1
  48.         }
  49.         return PLAYER_DATA.SET_DATA(INV[item], `${id}.inv.${name}`)
  50.     }
  51.  
  52.     Game.on('playerJoin', player => {
  53.         if (PLAYER_DATA.CHECK(player.userId)) { // load their data in
  54.             const data = PLAYER_DATA.GET_DATA(player.userId);
  55.             player.score = data.coins;
  56.  
  57.         }
  58.  
  59.         DATA[player.userId] = {
  60.             "id": player.userId,
  61.             "name": player.username,
  62.             "coins": 100,
  63.             "inv": {},
  64.             "bank": [],
  65.             "equip": {
  66.                 equipped: false,
  67.                 item: undefined
  68.             }
  69.         };
  70.  
  71.         return {
  72.             DATA: PLAYER_DATA.SET_DATA(DATA[player.userId], player.userId),
  73.             SET_SCORE: player.score = PLAYER_DATA.GET_DATA(`${player.userId}.coins`)
  74.         }
  75.     });
  76.  
  77.     Game.on(`playerLeave`, player => {
  78.         if (!PLAYER_DATA.CHECK(player.userId)) return; // just in case something erros and they don't have any data
  79.         return unequip(player.userId); // unequips if the player leaves
  80.     })
  81.  
  82.  
  83.     Game.on('coinsCmd', player => {
  84.         const coins = player.score;
  85.         if (coins > 1) {
  86.             return RPG.notification("Inv", `You have ${player.score} coins!`, player, "#0000FF");
  87.         } else {
  88.             return RPG.notification("Inv", `You have ${player.score} coin!`, player, "#0000FF"); // need correct grammar
  89.         };
  90.     });
  91.  
  92.     Game.on("giveCmd", (player, msg) => {
  93.         if (!RPG.checkAdmins(player.userId)) return;
  94.         const item = findItem(msg);
  95.         if (item) {
  96.             invAdd(item, player)
  97.             RPG.notification("Inv", `You gave yourself one ${item}`, player, "#0000FF")
  98.         }
  99.     })
  100.  
  101.     Game.on('sellCmd', (player, msg) => {
  102.         if (!msg) return;
  103.         const item = findItem(msg);
  104.         if (item) {
  105.             const data = PLAYER_DATA.GET_DATA(player.userId);
  106.             let coins = data.coins;
  107.             if (data) {
  108.                 if (!typeof data.inv === "object" || Object.keys(data.inv).length === 0) return RPG.notification("Inv", "You can sell something you don't have!", player, "#0000FF");
  109.                 for (let index of Object.keys(data.inv)) {
  110.                     if (String(index).toLowerCase() === item.toLowerCase()) {
  111.                         let new_coins = coins += tax(ITEMS[index].cost_price, player)
  112.                         if (data.equip.item == item) { // checks for if the player is selling the item he has equipped
  113.                             if (data.inv[index].quantity === 1) {
  114.                                 PLAYER_DATA.SET_DATA(undefined, `${player.userId}.equip.item`) // unequipping the item if they have more than 1
  115.                                 PLAYER_DATA.SET_DATA(false, `${player.userId}.equip.equipped`)
  116.                                 return { // then sells the item
  117.                                     coins: PLAYER_DATA.SET_DATA(new_coins, `${player.userId}.coins`),
  118.                                     set_score: player.score = new_coins,
  119.                                     del: PLAYER_DATA.DELETE(`${player.userId}.inv.${item}`),
  120.                                     noti: RPG.notification("Inv", `You sold the rest of your ${item}s!`, player, "#0000FF")
  121.                                 }
  122.                             }
  123.                         };
  124.                         if (data.inv[index].quantity > 1) {
  125.                             return {
  126.                                 quan: PLAYER_DATA.SET_DATA(data.inv[index].quantity -= 1, `${player.userId}.inv.${index}.quantity`),
  127.                                 coins: PLAYER_DATA.SET_DATA(new_coins, `${player.userId}.coins`),
  128.                                 set_score: player.score = new_coins,
  129.                                 noti: RPG.notification("Inv", `You sold 1 ${item}`, player, "#0000FF")
  130.                             }
  131.                         }
  132.                         return {
  133.                             coins: PLAYER_DATA.SET_DATA(new_coins, `${player.userId}.coins`),
  134.                             set_score: player.score = new_coins,
  135.                             del: PLAYER_DATA.DELETE(`${player.userId}.inv.${item}`),
  136.                             noti: RPG.notification("Inv", `You sold the rest of your ${item}s!`, player, "#0000FF")
  137.                         };
  138.                     };
  139.                 };
  140.             };
  141.         }
  142.     });
  143.  
  144.     Game.on('invCmd', player => {
  145.         const data = PLAYER_DATA.GET_DATA(player.userId);
  146.         if (data) {
  147.             if (!data.inv.constructor === "object" || Object.keys(data.inv).length === 0) return RPG.notification("Inv", "Your inventory is empty, start begging!", player, "#0000FF")
  148.             for (let index of Object.keys(data.inv)) {
  149.                 RPG.notification("Inv", `${index} ${data.inv[index].quantity}x.`, player, "#0000FF")
  150.             }
  151.         }
  152.     });
  153.  
  154.     Game.on('equipCmd', (player, msg) => {
  155.         const data = PLAYER_DATA.GET_DATA(player.userId);
  156.         if (!data) return;
  157.         if (!msg) return RPG.notification("Inv", "You can't equip nothing!", player, "#0000FF");
  158.         const item = findItem(msg);
  159.         if (item) {
  160.             if (!data.inv[item]) return RPG.notification("Inv", "You can't equip something you don't own!", player, "#0000FF");
  161.             if (data.equip.equipped || data.equip.item !== undefined) {
  162.                 let OLD_ITEM = data.equip.item;
  163.                 return {
  164.                     set_item: PLAYER_DATA.SET_DATA(item, `${player.userId}.equip.item`),
  165.                     set_value: PLAYER_DATA.SET_DATA(true, `${player.userId}.equip.equipped`),
  166.                     noti: RPG.alert("inv", `You unequipped ${OLD_ITEM} and equipped ${PLAYER_DATA.GET_DATA(`${player.userId}.equip.item`)}!`, player)
  167.                 }
  168.             } else {
  169.                 return {
  170.                     set: PLAYER_DATA.SET_DATA(item, `${player.userId}.equip.item`),
  171.                     set_value: PLAYER_DATA.SET_DATA(true, `${player.userId}.equip.equipped`),
  172.                     noti: RPG.alert("inv", `You equipped ${item}!`, player)
  173.                 }
  174.             }
  175.         }
  176.     })
  177.  
  178.     Game.on('unequipCmd', player => {
  179.         const data = PLAYER_DATA.GET_DATA(player.userId);
  180.         if (!data) return Error(`Can't find data for user ${player.userId}`);
  181.         if (!data.equip.equipped || data.equip.item === undefined) return RPG.alert("inv", "You can't unequip something that isn't equipped!", player)
  182.         const item = data.equip.item;
  183.         return {
  184.             set_item: PLAYER_DATA.SET_DATA(undefined, `${player.userId}.equip.item`),
  185.             set_value: PLAYER_DATA.SET_DATA(false, `${player.userId}.equip.equipped`),
  186.             noti: RPG.notification("Inv", `You unequipped ${item}.`, player, "#0000FF")
  187.         }
  188.     })
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top