$(document).ready(function () { //fire functions before page load drawToPage(); moveItemsInv(); console.log("loading finished"); mp.trigger("CEF:BrowserLoaded"); }); function setItems(itemIdArr1, itemAmountArr1) { var itemIdArr = JSON.parse(itemIdArr1); var itemAmountArr = JSON.parse(itemAmountArr1); for (var i = 0; i < itemIdArr.length; i++) { for (x = 0; x < itemAmountArr[i]; x++) { commands.addToPlayerInv(itemIdArr[i]); console.log(i); } } } var holz = { name: "Holz", rarity: 'common', selected: 'false', usable: 'true', amount: 1, currentWeight: 0.65, stackable: 'true', object: 'true', itemId: 1, img: "package://assets/img/items/wood.svg" } var hamburger = { name: "Hamburger", rarity: 'common', selected: 'false', usable: 'true', amount: 1, currentWeight: 0.3, stackable: 'true', object: 'true', itemId: 2, img: "package://assets/img/items/burger.svg" } var cocaine = { name: "Koks", rarity: 'common', selected: 'false', usable: 'true', amount: 1, currentWeight: 0.05, stackable: 'true', object: 'true', itemId: 3, img: "package://assets/img/items/cocaine.svg" } var cannabis = { name: "Cannabis", rarity: 'common', selected: 'false', usable: 'true', amount: 1, currentWeight: 0.05, stackable: 'true', object: 'true', itemId: 4, img: "package://assets/img/items/cannabis.svg" } var flunder = { name: "Flunder", weight: 7.7, currentWeight: 7.7, rarity: 'fishes', statSlots: [], runes: [], amount: 1, usable: 'false', selected: 'false', stackable: 'false', object: 'true', itemId: 5, img: 'package://assets/img/items/flounder.svg' } var aal = { name: "Aal", weight: 3.6, currentWeight: 3.6, rarity: 'fishes', statSlots: [], runes: [], amount: 1, usable: 'false', selected: 'false', stackable: 'false', object: 'true', itemId: 6, img: 'package://assets/img/items/aal.svg' } var barsch = { name: "Barsch", weight: 2.6, currentWeight: 2.6, rarity: 'fishes', statSlots: [], runes: [], amount: 1, usable: 'false', selected: 'false', stackable: 'false', object: 'true', itemId: 7, img: 'package://assets/img/items/perch.svg' } var lachs = { name: "Lachs", weight: 4.2, currentWeight: 4.2, rarity: 'fishes', statSlots: [], runes: [], amount: 1, usable: 'false', selected: 'false', stackable: 'false', object: 'true', itemId: 8, img: 'package://assets/img/items/salmon.svg' } var thunfisch = { name: "Thunfisch", weight: 11, currentWeight: 11, rarity: 'fishes', statSlots: [], runes: [], amount: 1, usable: 'false', selected: 'false', stackable: 'false', object: 'true', itemId: 9, img: 'package://assets/img/items/salmon.svg' } var zander = { name: "Zander", weight: 5, currentWeight: 5, rarity: 'fishes', statSlots: [], runes: [], amount: 1, usable: 'false', selected: 'false', stackable: 'false', object: 'true', itemId: 10, img: 'package://assets/img/items/zander.svg' } var allItems = [holz, hamburger, cocaine, cannabis, flunder, aal, barsch, lachs, thunfisch, zander]; //////////////////////// // Player Invenotry // //////////////////////// var playerInventory = []; var EmptySlot = { name: 'blankSpace', rarity: '', object: 'false' }; function addToInvenotry(addItem) { var cloneItem = Object.assign({}, addItem); var getExsistingId = cloneItem.itemId; var unfininshedStack; //Checks to see if any items can be stacked, the location, and stack amount for (var i = 0; i < playerInventory.length; i++) { if (playerInventory[i].itemId === getExsistingId && cloneItem.stackable === 'true' && playerInventory[i].amount < 10) { unfininshedStack = i break; } } if (cloneItem.currentWeight * cloneItem.amount + weightInv >= 45) { return; } //Adds item to inventory for (var i = 0; i < playerInventory.length; i++) { if (unfininshedStack != undefined) { if (playerInventory[unfininshedStack].amount + cloneItem.amount <= 10) { playerInventory[unfininshedStack].amount += cloneItem.amount; unfininshedStack = undefined; drawToPage(); moveItemsInv(); break; } else if (playerInventory[unfininshedStack].amount + cloneItem.amount > 10) { var stackRemainder = 10 - playerInventory[unfininshedStack].amount; playerInventory[unfininshedStack].amount += stackRemainder; cloneItem.amount -= stackRemainder; var recycleCloned = cloneItem; addToInvenotry(recycleCloned); unfininshedStack = undefined; drawToPage(); moveItemsInv(); break; } } else if (cloneItem.amount > 10 && playerInventory[i].object === 'false') { var reduceCloneAmount = Object.assign({}, cloneItem); reduceCloneAmount.amount = 10; playerInventory[i] = reduceCloneAmount; cloneItem.amount -= 10; addToInvenotry(cloneItem); drawToPage(); moveItemsInv(); break; } else if (unfininshedStack == undefined && playerInventory[i].object === 'false') { playerInventory[i] = cloneItem; drawToPage(); moveItemsInv(); break; } } } var getItemSlotData; function getAllItemSlotData() { getItemSlotData = document.getElementsByClassName('itemSlot'); } var currentSelected; function moveItemsInv() { getAllItemSlotData(); for (var i = 0; i < getItemSlotData.length; i++) { $(getItemSlotData[i]).click(function () { if (this.getAttribute('inv-type') != 'p') { return; } if (this.classList.contains('selected')) { this.classList.remove('selected'); currentSelected = undefined; } else if (this.getAttribute('object') === 'false' && isNaN(currentSelected)) { return; } else if (currentSelected) { if (playerInventory[currentSelected].stackable === 'false' || playerInventory[currentSelected].itemId != playerInventory[this.getAttribute('data-value')].itemId) { if (playerInventory[this.getAttribute('data-value')] == EmptySlot && this.getAttribute('data-value') > 23) { var hItem = this.getAttribute('data-value'); var iItem = currentSelected; var Copy = Object.assign({}, playerInventory[iItem]); playerInventory.splice(hItem, 0, Copy); $(".Betrag").show(); $("#tf_submitZahl").click(function () { if ($('#tf_zahl').val() < playerInventory[iItem].amount && playerInventory[currentSelected].stackable) { console.log(playerInventory[hItem].amount + " " + playerInventory[iItem].amount + " " + hItem); var y = parseInt($('#tf_zahl').val(), 10); playerInventory[iItem].amount -= y; console.log(playerInventory[hItem].amount + " " + playerInventory[iItem] + " " + parseInt($('#tf_zahl').val(), 10) + " " + hItem); playerInventory[hItem].amount = y; console.log(playerInventory[hItem].amount + " " + playerInventory[iItem].amount + " " + parseInt($('#tf_zahl').val(), 10) + " " + hItem); } else { playerInventory[hItem].amount = playerInventory[iItem].amount; playerInventory[iItem] = EmptySlot; } drawToPage(); drawToHandel(); currentSelected = undefined; getItemSlotData = document.getElementsByClassName('itemSlot'); moveItemsInv(); $(".Betrag").hide(); }); return; } else { var swap = playerInventory[this.getAttribute('data-value')]; playerInventory[this.getAttribute('data-value')] = playerInventory[currentSelected]; playerInventory[currentSelected] = swap; drawToPage(); drawToHandel(); currentSelected = undefined; getItemSlotData = document.getElementsByClassName('itemSlot'); moveItemsInv(); } } else if ((playerInventory[currentSelected].itemId == playerInventory[this.getAttribute('data-value')].itemId && playerInventory[currentSelected].stackable) && this.getAttribute('inv-type') === 'p') { playerInventory[this.getAttribute('data-value')].amount += playerInventory[currentSelected].amount playerInventory[currentSelected] = EmptySlot; drawToPage(); drawToHandel(); currentSelected = undefined; getItemSlotData = document.getElementsByClassName('itemSlot'); moveItemsInv(); } } else { this.className += ' selected'; currentSelected = this.getAttribute('data-value'); } }); } } function refreshAllCurrentItems() { var remove = document.getElementById('invContainer'); while (remove.firstChild) remove.removeChild(remove.firstChild); } function fillOutEmptyInv() { for (var i = 0; i < 24; i++) { if (!playerInventory[i]) { playerInventory.push(EmptySlot); drawToPage(); } } } var weightInv = 0; function drawToPage() { refreshAllCurrentItems(); weightInv = 0; document.getElementById('gewicht').innerText = "0/45 kg"; for (var i = 0; i < playerInventory.length; i++) { if (playerInventory[i].selected == 'true') { var className = ' selected'; } else { var className = ''; } if (i >= 24) { //Keeps inventory set to 10 items max console.log('Inventory is full!') } else { //creates item element var item = document.createElement("div"); item.className = "itemSlot " + playerInventory[i].rarity + className; item.setAttribute("data-value", i); item.setAttribute("inv-type", 'p'); item.setAttribute("object", playerInventory[i].object); item.setAttribute('style', 'background: url(' + playerInventory[i].img + '); background-size: contain;'); //show element amounts var itemAmount = document.createElement("div"); itemAmount.className = "itemAmount"; var itemAmountDisplay = document.createElement("p"); if (playerInventory[i].amount) { var itemDisplayStatsName = document.createTextNode(playerInventory[i].amount); } else { var itemDisplayStatsName = document.createTextNode(''); } item.appendChild(itemAmount); itemAmount.appendChild(itemAmountDisplay); itemAmountDisplay.appendChild(itemDisplayStatsName); //adds item element or elements document.getElementById("invContainer").appendChild(item); //creates item display information if (playerInventory[i].object === 'true') { var itemDesc = document.createElement("div"); var itemDescTitle = document.createElement("h3"); var getItemTitle = document.createTextNode(playerInventory[i].name + " (" + Math.round(playerInventory[i].currentWeight * playerInventory[i].amount * 100) / 100 + " kg)"); itemDesc.className = "itemDesc"; item.appendChild(itemDesc); itemDesc.appendChild(itemDescTitle); itemDescTitle.appendChild(getItemTitle); weightInv += playerInventory[i].currentWeight * playerInventory[i].amount; document.getElementById('gewicht').innerText = Math.round(weightInv * 100) / 100 + "/45 kg"; } } } fillOutEmptyInv(); } function refreshAllCurrentHandelItems() { var remove = document.getElementById('handelContainer'); while (remove.firstChild) remove.removeChild(remove.firstChild); } function fillOutEmptyInvHandel() { for (var i = 24; i < 30; i++) { if (!playerInventory[i]) { playerInventory.push(EmptySlot); drawToHandel(); } } } function drawToHandel() { refreshAllCurrentHandelItems(); for (var i = 24; i < playerInventory.length; i++) { if (playerInventory[i].selected == 'true') { var className = ' selected'; } else { var className = ''; } if (i >= 30) { //Keeps inventory set to 10 items max console.log('Inventory is full!') return; } else { //creates item element var item = document.createElement("div"); item.className = "itemSlot " + playerInventory[i].rarity + className; item.setAttribute("data-value", i); item.setAttribute("inv-type", 'p'); item.setAttribute("object", playerInventory[i].object); item.setAttribute('style', 'background: url(' + playerInventory[i].img + '); background-size: contain;'); //show element amounts var itemAmount = document.createElement("div"); itemAmount.className = "itemAmount"; var itemAmountDisplay = document.createElement("p"); if (playerInventory[i].amount) { var itemDisplayStatsName = document.createTextNode(playerInventory[i].amount); } else { var itemDisplayStatsName = document.createTextNode(''); } item.appendChild(itemAmount); itemAmount.appendChild(itemAmountDisplay); itemAmountDisplay.appendChild(itemDisplayStatsName); //adds item element or elements document.getElementById("handelContainer").appendChild(item); if (playerInventory[i].object === 'true') { var itemDesc = document.createElement("div"); var itemDescTitle = document.createElement("h3"); var getItemTitle = document.createTextNode(playerInventory[i].name + " (" + Math.round(playerInventory[i].currentWeight * playerInventory[i].amount * 100) / 100 + " kg)"); itemDesc.className = "itemDesc"; item.appendChild(itemDesc); itemDesc.appendChild(itemDescTitle); itemDescTitle.appendChild(getItemTitle); } } } fillOutEmptyInvHandel(); } /////////////////// // Dev Commands // /////////////////// var commands = { addToPlayerInv: function (itemGiveId) { for (var i = 0; i < allItems.length; i++) { if (allItems[i].itemId === itemGiveId) { addToInvenotry(allItems[i]); } } }, clearPlayerInv: function () { playerInventory = []; drawToPage(); drawToHandel(); }, } // Button funktionen $("#buttonbenutzen").click(function () { if (currentSelected) { if (playerInventory[currentSelected].usable == 'true') { if (playerInventory[currentSelected].stackable == 'true') { playerInventory[currentSelected].amount -= 1; if (playerInventory[currentSelected].amount <= 0) { mp.trigger("CEF:UseItemInv", playerInventory[currentSelected].itemId); playerInventory[currentSelected] = EmptySlot; } else { if (getItemSlotData[currentSelected].classList.contains('selected')) { getItemSlotData[currentSelected].classList.remove('selected'); playerInventory[currentSelected].selected = 'false'; } } drawToPage(); drawToHandel(); moveItemsInv(); } else { mp.trigger("CEF:UseItemInv", playerInventory[currentSelected].itemId); playerInventory[currentSelected] = EmptySlot; drawToPage(); drawToHandel(); moveItemsInv(); } currentSelected = undefined; } } }); $("#buttonwegwerfen").click(function () { if (currentSelected) { if (playerInventory[currentSelected].stackable == 'false') { mp.trigger('CEF:invThrowItem', playerInventory[currentSelected].itemId, playerInventory[currentSelected].amount); weightInv -= playerInventory[currentSelected].weight; playerInventory[currentSelected] = EmptySlot; currentSelected = undefined; drawToPage(); drawToHandel(); moveItemsInv(); return; } $(".Betrag").show(); var iItem = currentSelected; $("#tf_submitZahl").click(function () { if ($('#tf_zahl').val() < playerInventory[iItem].amount && playerInventory[currentSelected].stackable) { var y = parseInt($('#tf_zahl').val(), 10); playerInventory[iItem].amount -= y; mp.trigger('CEF:invThrowItem', playerInventory[currentSelected].itemId, y); } else { mp.trigger('CEF:invThrowItem', playerInventory[currentSelected].itemId, playerInventory[currentSelected].amount); playerInventory[iItem] = EmptySlot; } $(".Betrag").hide(); currentSelected = undefined; drawToPage(); drawToHandel(); moveItemsInv(); }); } }); var trade = 1; $("#buttonhandeln").click(function () { if (trade == 1) { $(".phanWrapper").show(); drawToPage(); drawToHandel(); moveItemsInv(); trade = 0; } else { $(".phanWrapper").hide(); trade = 1; } currentSelected = undefined; }); $("#tf_submit").click(function () { var Money = document.getElementById("tf_betrag").value; var User = document.getElementById("tf_name").value; if (User == '') { return; } if (Money == '') { getTradeSlotItems(); playerInventory[currentSelected] = EmptySlot; currentSelected = undefined; drawToPage(); drawToHandel(); moveItemsInv(); mp.trigger("CEF:tradeItem", 0, User, JSON.stringify(tradeItems), JSON.stringify(tradeItemAmount)); return; } getTradeSlotItems(); playerInventory[currentSelected] = EmptySlot; currentSelected = undefined; drawToPage(); drawToHandel(); moveItemsInv(); mp.trigger("CEF:tradeItem", $('#tf_betrag').val(), User, JSON.stringify(tradeItems), JSON.stringify(tradeItemAmount)); return; }); var tradeItems = []; var tradeItemAmount = []; function getTradeSlotItems() { tradeItems = []; tradeItemAmount = []; for (var i = 24; i < playerInventory.length; i++) { if (playerInventory[i].object == 'true') { for (var x = 0; x < allItems.length; x++) { if (playerInventory[i].itemId == allItems[x].itemId) { tradeItems.push(playerInventory[i].itemId); tradeItemAmount.push(playerInventory[i].amount); } } } } }