Refactored inventory.ts / theoretically improve of performance

This commit is contained in:
VegaZ
2019-05-11 20:59:18 +02:00
parent ecae6fb7ba
commit 7b19a83e12

View File

@@ -2,42 +2,47 @@ import InputHelper from '../../inputhelper';
export default function inventory(globalData: GlobalData) { export default function inventory(globalData: GlobalData) {
var show = false; var show = false; //ob das Inventar dem Spieler gezeigt wird.
var showAdmin = false; var showAdmin = false; //ob das Inventar eines Spielers dem Admin gezeigt wird
const { x: screenX, y: screenY } = mp.game.graphics.getScreenActiveResolution(0, 0); const { x: screenX, y: screenY } = mp.game.graphics.getScreenActiveResolution(0, 0);
let rxC = 0.5; let rxC = 0.5; //Breitenpositionierung des Inventars auf Screen-(C)enter
let ryC = 0.4; let ryC = 0.4; //Höhenpositionierung des Inventars auf Screen-(C)enter
let rWidth = 0.4; let rWidth = 0.4;
let sX = (screenX * 0.1 / 1000); let sX = (screenX * 0.1 / 1000);
let sY = (screenY * 0.1 / 1000); let sY = (screenY * 0.1 / 1000);
let eX = sX - 0.1; let eX = sX - 0.1;
let eY = sY - 0.1; let eY = sY - 0.1;
let sizeMul = 0.08; let aspectRatioFactor = screenX / screenY; //Höhenmultiplikator (damit Quadrate anstatt Rechtecke der einzelnen Slots entstehen)
let yMul = 1.8; let sizeMulx = 0.08; //Größenmultiplikator (GUI Skalierung)
var targetPlayerName; let sizeMuly = sizeMulx * aspectRatioFactor; //Größenmultiplikator (GUI Skalierung)
let closePos = [0.7125, 0.17] let sizeMulxHalf = sizeMulx / 2;
let tradeBoxPos = [0.7125, 0.82] let sizeMulyHalf = sizeMuly / 2;
var clickTime; var targetPlayerName; //Der Spieler der den Handel anfragt
var itemRadial = false; let closePos = [0.7125, 0.17] //Position des X für Adminansicht
var hoverGrid; let tradeBoxPos = [0.7125, 0.82] //Center der Handelsbox
var radialSelect = "none"; var clickTime; //Für Berechnung wie lange der Mausklick-Handler zwischen Aktionen benötigt
var clickedItem; var itemRadial = false; //Ob das Item-Radialmenü gezeigt wird
let aspectRatioFactor = screenX / screenY; var hoverGrid; //Ob man über einem Gridfeld hovert
var upRColor = 222; var radialSelect = "none"; //Auswahl des Radialmenüs
var downRColor = 222; var clickedItem; //Das angeklickte Item für das Radialmenü
var leftRColor = 222; //let aspectRatioFactor = ; //Seitenverhältnis des Bildschirms (Entspricht yMul aufgerundet)
var rightRColor = 222; var upRColor = 222; //Standard Transparenzen für das Hovern über der Radialauswahl
var radialDescription; var downRColor = 222; //Standard Transparenzen für das Hovern über der Radialauswahl
var tradePartner = "Keinem"; var leftRColor = 222; //Standard Transparenzen für das Hovern über der Radialauswahl
var tradePrize = 0; var rightRColor = 222; //Standard Transparenzen für das Hovern über der Radialauswahl
var tradeConfirm = false; var radialDescription; //Radialbeschreibung die über dem Mauszeiger angezeigt wird wenn man hovert.
var isTrading = false; var tradePartner = "Keinem"; //Der Spieler mit dem man Handeln möchte
var tradePrize = 0; //Der Preis welcher dem Handelempfänger angezeigt wird
var tradeConfirm = false; //Ob der Handelspartner den Handel akzeptiert
var isTrading = false; //Bestimmt ob das Handelsfenster unten angezeigt wird
var isTradingResult = false; var isTradingResult = false;
var dragTradeItem = null; var dragTradeItem = null; //Ob aktuell ein Item aus dem Handelfenster gezogen wird
var spriteScaleX = rWidth / 8;
var spriteScaleY = rWidth / 8 * aspectRatioFactor;
var inventoryWeight; var inventoryWeight; //Das aktuelle Inventargewicht, berechnet aus allen Metainfos des items[[]] Array
var items = [[]]; var items = [[]]; //Items aus der Datenbank
var tradeItems = []; var tradeItems = []; //Handelsitems aus der aktuellen Handelssession
var tradeResultItems = [[]]; var tradeResultItems = [[]];
var grid = []; var grid = [];
@@ -69,16 +74,16 @@ export default function inventory(globalData: GlobalData) {
tradeGrid[3] = [0.5835, 0.925] tradeGrid[3] = [0.5835, 0.925]
tradeGrid[4] = [0.6655, 0.925] tradeGrid[4] = [0.6655, 0.925]
var mouseLDown = false; var mouseLDown = false; //Ob die Linke Maustaste gedrückt wird (while)
var mouseRDown = false; var mouseRDown = false; //Ob die Rechte Maustaste gedrückt wird (while)
var hoverItem; var hoverItem; //Das Item über welches der Mauszeiger schwebt
var dragItem = null; var dragItem = null; //Das Item das aktuell gezogen wird
var oldDragSlot; var oldDragSlot; //Ursprungsslot des gezogenen Items
var actFreeSlot; var actFreeSlot; //Ob der aktuelle Hover-Slot während des Item-ziehens frei ist
var actFreeTradeSlot; var actFreeTradeSlot; //Ob der aktuelle TradeInventar-Hover-Slot während des Item-ziehens frei ist
var bufferItem = []; var bufferItem = [];
var stackToItem; var stackToItem; //Der Slot zu dem das aktuelle Item gestackt würde, wenn man die Maustaste loslässt
var stackToTradeItem; var stackToTradeItem; //Der Handels-Slot zu dem das aktuelle Item gestackt würde, wenn man die Maustaste loslässt
mp.events.add("showInventory", (invWeight, itemArr) => { mp.events.add("showInventory", (invWeight, itemArr) => {
if (show === false) { if (show === false) {
@@ -104,13 +109,18 @@ export default function inventory(globalData: GlobalData) {
} }
}); });
//Zeigt dem Handelsanfragenden das Handelsinventar
mp.events.add("openTradeMenu", (tradePartnerName) => { mp.events.add("openTradeMenu", (tradePartnerName) => {
tradePartner = tradePartnerName; tradePartner = tradePartnerName;
isTrading = true; isTrading = true;
}); });
//Zeigt dem Handelspartner das Fenster zur Annahme oder Verweigerung des Handels
mp.events.add("showTradeRequest", () => { mp.events.add("showTradeRequest", () => {
show = false; show = false;
}); });
//Zeigt dem Admin das Inventar eines Spielers
mp.events.add("showInventoryToAdmin", (pName, invWeight, itemArr) => { mp.events.add("showInventoryToAdmin", (pName, invWeight, itemArr) => {
if (showAdmin === false) { if (showAdmin === false) {
targetPlayerName = pName; targetPlayerName = pName;
@@ -123,13 +133,14 @@ export default function inventory(globalData: GlobalData) {
} }
}); });
//Falls das Inventar aktuell offen ist und ein neues hinzugefügt wird, wird dieses Live angezeigt.
mp.events.add("addItem", (item) => { mp.events.add("addItem", (item) => {
if (show) { if (show) {
items.push(JSON.parse(item)); items.push(JSON.parse(item));
} }
}); });
//HANDEL akzeptiert. //Löscht die Handelsitems beim Handelsanfragenden
mp.events.add("clearTradeItems", () => { mp.events.add("clearTradeItems", () => {
tradeConfirm = false; tradeConfirm = false;
tradeItems.splice(0, tradeItems.length); tradeItems.splice(0, tradeItems.length);
@@ -138,7 +149,7 @@ export default function inventory(globalData: GlobalData) {
}); });
//HANDEL akzeptiert. //Zeigt dem Handelspartner die zu handelnden Items unter seinem Inventar an.
mp.events.add("showTradeItems", (tradeResultItemArray) => { mp.events.add("showTradeItems", (tradeResultItemArray) => {
//for (var i = 0; i < tradeResultItemArray.length; i++) { //for (var i = 0; i < tradeResultItemArray.length; i++) {
@@ -146,16 +157,16 @@ export default function inventory(globalData: GlobalData) {
//} //}
tradeItems = JSON.parse(tradeResultItemArray); tradeItems = JSON.parse(tradeResultItemArray);
isTrading = true; isTrading = true;
}); });
//HANDEL Abgebrochen //Entsperrt beim Handelsanfragenden die Items aus dem Handelsfenster
mp.events.add("unlockTradeItems", () => { mp.events.add("unlockTradeItems", () => {
tradeConfirm = false; tradeConfirm = false;
tradePartner = "Keinem"; tradePartner = "Keinem";
tradePrize = 0; tradePrize = 0;
}); });
//Falls ein Item administrativ entfernt wird, würde auch dies Live angezeigt.
mp.events.add("removeItem", (userItemId, amount) => { mp.events.add("removeItem", (userItemId, amount) => {
if (show) { if (show) {
var arrIndex; var arrIndex;
@@ -177,10 +188,10 @@ export default function inventory(globalData: GlobalData) {
if (show === true) { if (show === true) {
pos = mp.gui.cursor.position; pos = mp.gui.cursor.position;
mp.game.graphics.set2dLayer(1); mp.game.graphics.set2dLayer(1); //#
//INVENTARHINTERGRUND mp.game.graphics.drawRect(rxC, ryC, 0.45, 0.7, 255, 255, 255, 200); //INVENTARHINTERGRUND
mp.game.graphics.drawRect(rxC, ryC, 0.45, 0.7, 255, 255, 255, 200); //inventar
mp.game.graphics.set2dLayer(2); mp.game.graphics.set2dLayer(2); //##
//INVENTARÜBERSCHRIFT //INVENTARÜBERSCHRIFT
mp.game.graphics.drawText("Inventar ~g~" + inventoryWeight + "/40000g", [rxC, ryC - (rWidth / 1.20)], { mp.game.graphics.drawText("Inventar ~g~" + inventoryWeight + "/40000g", [rxC, ryC - (rWidth / 1.20)], {
@@ -194,11 +205,10 @@ export default function inventory(globalData: GlobalData) {
//SLOTS [RECHTECKE] [SLOTZAHLEN] //SLOTS [RECHTECKE] [SLOTZAHLEN]
var slots; var slots;
var tempSlot; var tempSlot;
for (slots = 0; slots < grid.length; slots++) { for (slots = 0; slots < grid.length; slots++) {
mp.game.graphics.drawRect(grid[slots][0], grid[slots][1], sizeMul, sizeMul * yMul, 112, 128, 144, 254); mp.game.graphics.drawRect(grid[slots][0], grid[slots][1], sizeMulx, sizeMuly, 112, 128, 144, 254);
mp.game.graphics.drawText(tempSlot = slots + 1, [grid[slots][0] - (sizeMul / 2) + 0.006, grid[slots][1] - (sizeMul / 2 * yMul)], { mp.game.graphics.drawText(tempSlot = slots + 1, [grid[slots][0] - sizeMulxHalf + 0.006, grid[slots][1] - (sizeMulxHalf * aspectRatioFactor)], {
font: 7, font: 7,
color: [255, 69, 0, 254], color: [255, 69, 0, 254],
scale: [0.3, 0.3], scale: [0.3, 0.3],
@@ -207,15 +217,15 @@ export default function inventory(globalData: GlobalData) {
}); });
} }
mp.game.graphics.set2dLayer(3); mp.game.graphics.set2dLayer(3); //###
var currentItem; var currentItem;
//SPRITES + ITEMANZAHL //SPRITES + ITEMANZAHL
for (currentItem = 0; currentItem < items.length; currentItem++) { for (currentItem = 0; currentItem < items.length; currentItem++) {
if (items[currentItem][4] !== "-1") { if (items[currentItem][4] !== "-1") {
mp.game.graphics.drawSprite("itemimages", items[currentItem][0].toLowerCase(), grid[items[currentItem][4] - 1][0], grid[items[currentItem][4] - 1][1], rWidth / 8, rWidth / 5, 0, 255, 255, 255, 255); mp.game.graphics.drawSprite("itemimages", items[currentItem][0].toLowerCase(), grid[items[currentItem][4] - 1][0], grid[items[currentItem][4] - 1][1], spriteScaleX, spriteScaleY, 0, 255, 255, 255, 255);
mp.game.graphics.drawText("(~y~" + items[currentItem][3] + "~s~)", [grid[items[currentItem][4] - 1][0] + (sizeMul / 2) - 0.008, grid[items[currentItem][4] - 1][1] + 0.05], { mp.game.graphics.drawText("(~y~" + items[currentItem][3] + "~s~)", [grid[items[currentItem][4] - 1][0] + sizeMulxHalf - 0.008, grid[items[currentItem][4] - 1][1] + 0.05], {
font: 0, font: 0,
color: [255, 255, 255, 255], color: [255, 255, 255, 255],
scale: [0.25, 0.25], scale: [0.25, 0.25],
@@ -227,7 +237,7 @@ export default function inventory(globalData: GlobalData) {
var hoverItemP; var hoverItemP;
mp.game.graphics.set2dLayer(4); mp.game.graphics.set2dLayer(4); //####
//WENN MAUS ÜBER ITEM //WENN MAUS ÜBER ITEM
if (isMouseOverItem(pos[0], pos[1]) && dragItem === null && itemRadial === false) { if (isMouseOverItem(pos[0], pos[1]) && dragItem === null && itemRadial === false) {
mp.game.graphics.drawRect(pos[0] / screenX, pos[1] / screenY + 0.055, 0.14, 0.08, 0, 0, 0, 220); mp.game.graphics.drawRect(pos[0] / screenX, pos[1] / screenY + 0.055, 0.14, 0.08, 0, 0, 0, 220);
@@ -267,30 +277,31 @@ export default function inventory(globalData: GlobalData) {
if (isMouseOverFreeSlot(pos[0], pos[1]) || isMouseOverFreeTradeSlot(pos[0], pos[1]) || isItemOverSameItem(pos[0], pos[1]) || isItemOverSameTradeItem(pos[0], pos[1])) { if (isMouseOverFreeSlot(pos[0], pos[1]) || isMouseOverFreeTradeSlot(pos[0], pos[1]) || isItemOverSameItem(pos[0], pos[1]) || isItemOverSameTradeItem(pos[0], pos[1])) {
if (dragTradeItem === false) { if (dragTradeItem === false) {
mp.game.graphics.drawSprite("itemimages", items[dragItem][0].toLowerCase(), pos[0] / screenX, pos[1] / screenY, rWidth / 8, rWidth / 5, 0, 100, 255, 100, 255); mp.game.graphics.drawSprite("itemimages", items[dragItem][0].toLowerCase(), pos[0] / screenX, pos[1] / screenY, spriteScaleX, spriteScaleY, 0, 100, 255, 100, 255);
} else { } else {
mp.game.graphics.drawSprite("itemimages", tradeItems[dragItem][0].toLowerCase(), pos[0] / screenX, pos[1] / screenY, rWidth / 8, rWidth / 5, 0, 100, 255, 100, 255); mp.game.graphics.drawSprite("itemimages", tradeItems[dragItem][0].toLowerCase(), pos[0] / screenX, pos[1] / screenY, spriteScaleX, spriteScaleY, 0, 100, 255, 100, 255);
} }
} else { } else {
if (dragTradeItem === false) { if (dragTradeItem === false) {
mp.game.graphics.drawSprite("itemimages", items[dragItem][0].toLowerCase(), pos[0] / screenX, pos[1] / screenY, rWidth / 8, rWidth / 5, 0, 255, 100, 100, 255); mp.game.graphics.drawSprite("itemimages", items[dragItem][0].toLowerCase(), pos[0] / screenX, pos[1] / screenY, spriteScaleX, spriteScaleY, 0, 255, 100, 100, 255);
} else { } else {
mp.game.graphics.drawSprite("itemimages", tradeItems[dragItem][0].toLowerCase(), pos[0] / screenX, pos[1] / screenY, rWidth / 8, rWidth / 5, 0, 255, 100, 100, 255); mp.game.graphics.drawSprite("itemimages", tradeItems[dragItem][0].toLowerCase(), pos[0] / screenX, pos[1] / screenY, spriteScaleX, spriteScaleY, 0, 255, 100, 100, 255);
} }
} }
} }
mp.game.graphics.set2dLayer(5); mp.game.graphics.set2dLayer(5); //#####
if (itemRadial === true) { if (itemRadial === true) {
mp.game.graphics.drawSprite("itemimages", "radialsplit", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 0, 0, 0, 255); mp.game.graphics.drawSprite("itemimages", "radialsplit", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 0, 0, 0, 255);
mp.game.graphics.drawSprite("itemimages", "radialup", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 222, upRColor, 222, upRColor); mp.game.graphics.drawSprite("itemimages", "radialup", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 222, upRColor, 222, upRColor);
mp.game.graphics.drawSprite("itemimages", "radialdown", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 222, downRColor, 222, downRColor); mp.game.graphics.drawSprite("itemimages", "radialdown", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 222, downRColor, 222, downRColor);
//mp.game.graphics.drawSprite("itemimages", "radialleft", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 222, leftRColor, 222, leftRColor); //mp.game.graphics.drawSprite("itemimages", "radialleft", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 222, leftRColor, 222, leftRColor);
//mp.game.graphics.drawSprite("itemimages", "radialright", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 222, rightRColor, 222, rightRColor); //mp.game.graphics.drawSprite("itemimages", "radialright", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 222, rightRColor, 222, rightRColor);
mp.game.graphics.set2dLayer(6);
mp.game.graphics.set2dLayer(6); //######
mp.game.graphics.drawSprite("itemimages", "radialdrop", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 255, 255, 255, 255); mp.game.graphics.drawSprite("itemimages", "radialdrop", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 255, 255, 255, 255);
mp.game.graphics.drawSprite("itemimages", "radialuse", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 255, 255, 255, 255); mp.game.graphics.drawSprite("itemimages", "radialuse", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 255, 255, 255, 255);
} }
mp.game.graphics.set2dLayer(7); mp.game.graphics.set2dLayer(7); //#######
if (ifMouseSelectRadial(pos[0], pos[1])) { if (ifMouseSelectRadial(pos[0], pos[1])) {
//mp.game.graphics.drawRect(pos[0] / screenX, pos[1] / screenY - 0.02, 0.08, 0.03, 0, 0, 0, 255); //mp.game.graphics.drawRect(pos[0] / screenX, pos[1] / screenY - 0.02, 0.08, 0.03, 0, 0, 0, 255);
@@ -308,8 +319,8 @@ export default function inventory(globalData: GlobalData) {
mp.game.graphics.set2dLayer(2); mp.game.graphics.set2dLayer(2);
var tempSlot2; var tempSlot2;
for (slots = 0; slots < tradeGrid.length; slots++) { for (slots = 0; slots < tradeGrid.length; slots++) {
mp.game.graphics.drawRect(tradeGrid[slots][0], tradeGrid[slots][1], sizeMul, sizeMul * yMul, 112, 128, 144, 254); mp.game.graphics.drawRect(tradeGrid[slots][0], tradeGrid[slots][1], sizeMulx, sizeMuly, 112, 128, 144, 254);
mp.game.graphics.drawText(tempSlot2 = slots + 1, [tradeGrid[slots][0] - (sizeMul / 2) + 0.006, tradeGrid[slots][1] - (sizeMul / 2 * yMul)], { mp.game.graphics.drawText(tempSlot2 = slots + 1, [tradeGrid[slots][0] - sizeMulxHalf + 0.006, tradeGrid[slots][1] - (sizeMulxHalf * aspectRatioFactor)], {
font: 7, font: 7,
color: [69, 255, 0, 254], color: [69, 255, 0, 254],
scale: [0.3, 0.3], scale: [0.3, 0.3],
@@ -324,8 +335,8 @@ export default function inventory(globalData: GlobalData) {
if (tradeItems.length !== 0) { if (tradeItems.length !== 0) {
for (currentItem = 0; currentItem < tradeItems.length; currentItem++) { for (currentItem = 0; currentItem < tradeItems.length; currentItem++) {
if (tradeItems[currentItem][4] !== "-1") { if (tradeItems[currentItem][4] !== "-1") {
mp.game.graphics.drawSprite("itemimages", tradeItems[currentItem][0].toLowerCase(), tradeGrid[tradeItems[currentItem][4] - 1][0], tradeGrid[tradeItems[currentItem][4] - 1][1], rWidth / 8, rWidth / 5, 0, 255, 255, 255, 255); mp.game.graphics.drawSprite("itemimages", tradeItems[currentItem][0].toLowerCase(), tradeGrid[tradeItems[currentItem][4] - 1][0], tradeGrid[tradeItems[currentItem][4] - 1][1], spriteScaleX, spriteScaleY, 0, 255, 255, 255, 255);
mp.game.graphics.drawText("(~y~" + tradeItems[currentItem][3] + "~s~)", [tradeGrid[tradeItems[currentItem][4] - 1][0] + (sizeMul / 2) - 0.008, tradeGrid[tradeItems[currentItem][4] - 1][1] + 0.05], { mp.game.graphics.drawText("(~y~" + tradeItems[currentItem][3] + "~s~)", [tradeGrid[tradeItems[currentItem][4] - 1][0] + sizeMulxHalf - 0.008, tradeGrid[tradeItems[currentItem][4] - 1][1] + 0.05], {
font: 0, font: 0,
color: [255, 255, 255, 255], color: [255, 255, 255, 255],
scale: [0.25, 0.25], scale: [0.25, 0.25],
@@ -333,7 +344,7 @@ export default function inventory(globalData: GlobalData) {
centre: false centre: false
}); });
if (tradeConfirm === true) { if (tradeConfirm === true) {
mp.game.graphics.drawSprite("itemimages", "lock", tradeGrid[tradeItems[currentItem][4] - 1][0], tradeGrid[tradeItems[currentItem][4] - 1][1], rWidth / 8 / 2, rWidth / 5 / 2, 0, 255, 255, 255, 255); mp.game.graphics.drawSprite("itemimages", "lock", tradeGrid[tradeItems[currentItem][4] - 1][0], tradeGrid[tradeItems[currentItem][4] - 1][1], spriteScaleX / 2, spriteScaleY / 2, 0, 255, 255, 255, 255);
} }
} }
} }
@@ -341,7 +352,7 @@ export default function inventory(globalData: GlobalData) {
//} else { //} else {
// if (tradeResultItems.length !== 0) { // if (tradeResultItems.length !== 0) {
// for (var currentItem = 0; currentItem < tradeResultItems.length; currentItem++) { // for (var currentItem = 0; currentItem < tradeResultItems.length; currentItem++) {
// mp.game.graphics.drawSprite("itemimages", tradeResultItems[currentItem][0].toLowerCase(), tradeGrid[parseInt(tradeResultItems[currentItem][4] - 1)][0], tradeGrid[parseInt(tradeResultItems[currentItem][4] - 1)][1], rWidth / 8, rWidth / 5, 0, 255, 255, 255, 255); // mp.game.graphics.drawSprite("itemimages", tradeResultItems[currentItem][0].toLowerCase(), tradeGrid[parseInt(tradeResultItems[currentItem][4] - 1)][0], tradeGrid[parseInt(tradeResultItems[currentItem][4] - 1)][1], spriteScaleX, spriteScaleY, 0, 255, 255, 255, 255);
// mp.game.graphics.drawText("(~y~" + tradeResultItems[currentItem][3] + "~s~)", [tradeGrid[parseInt(tradeResultItems[currentItem][4] - 1)][0] + (sizeMul / 2) - 0.008, tradeGrid[parseInt(tradeResultItems[currentItem][4] - 1)][1] + 0.05], { // mp.game.graphics.drawText("(~y~" + tradeResultItems[currentItem][3] + "~s~)", [tradeGrid[parseInt(tradeResultItems[currentItem][4] - 1)][0] + (sizeMul / 2) - 0.008, tradeGrid[parseInt(tradeResultItems[currentItem][4] - 1)][1] + 0.05], {
// font: 0, // font: 0,
// color: [255, 255, 255, 255], // color: [255, 255, 255, 255],
@@ -458,8 +469,8 @@ export default function inventory(globalData: GlobalData) {
//SLOTS [RECHTECKE] [SLOTZAHLEN] //SLOTS [RECHTECKE] [SLOTZAHLEN]
for (slots = 0; slots < grid.length; slots++) { for (slots = 0; slots < grid.length; slots++) {
mp.game.graphics.drawRect(grid[slots][0], grid[slots][1], sizeMul, sizeMul * yMul, 112, 128, 144, 254); mp.game.graphics.drawRect(grid[slots][0], grid[slots][1], sizeMulx, sizeMuly, 112, 128, 144, 254);
mp.game.graphics.drawText(tempSlot = slots + 1, [grid[slots][0] - (sizeMul / 2) + 0.006, grid[slots][1] - (sizeMul / 2 * yMul)], { mp.game.graphics.drawText(tempSlot = slots + 1, [grid[slots][0] - sizeMulxHalf + 0.006, grid[slots][1] - (sizeMulxHalf * aspectRatioFactor)], {
font: 7, font: 7,
color: [255, 69, 0, 254], color: [255, 69, 0, 254],
scale: [0.3, 0.3], scale: [0.3, 0.3],
@@ -472,8 +483,8 @@ export default function inventory(globalData: GlobalData) {
//SPRITES + ITEMANZAHL //SPRITES + ITEMANZAHL
for (currentItem = 0; currentItem < items.length; currentItem++) { for (currentItem = 0; currentItem < items.length; currentItem++) {
if (items[currentItem][4] !== "-1") { if (items[currentItem][4] !== "-1") {
mp.game.graphics.drawSprite("itemimages", items[currentItem][0].toLowerCase(), grid[items[currentItem][4] - 1][0], grid[items[currentItem][4] - 1][1], rWidth / 8, rWidth / 5, 0, 255, 255, 255, 255); mp.game.graphics.drawSprite("itemimages", items[currentItem][0].toLowerCase(), grid[items[currentItem][4] - 1][0], grid[items[currentItem][4] - 1][1], spriteScaleX, spriteScaleY, 0, 255, 255, 255, 255);
mp.game.graphics.drawText("(~y~" + items[currentItem][3] + "~s~)", [grid[items[currentItem][4] - 1][0] + (sizeMul / 2) - 0.008, grid[items[currentItem][4] - 1][1] + 0.05], { mp.game.graphics.drawText("(~y~" + items[currentItem][3] + "~s~)", [grid[items[currentItem][4] - 1][0] + sizeMulxHalf - 0.008, grid[items[currentItem][4] - 1][1] + 0.05], {
font: 0, font: 0,
color: [255, 255, 255, 255], color: [255, 255, 255, 255],
scale: [0.25, 0.25], scale: [0.25, 0.25],
@@ -530,23 +541,16 @@ export default function inventory(globalData: GlobalData) {
function isMouseOverItem(cX, cY) { function isMouseOverItem(cX, cY) {
var x, y, a, b, c, s, invSlot; var x, y, a, b, c, s, invSlot;
x = cX / screenX;
y = cY / screenY;
if (dragItem === null) { if (dragItem === null) {
x = cX / screenX;
y = cY / screenY;
a;
b;
c;
for (s = 0; s < 20; s++) { for (s = 0; s < 20; s++) {
a = grid[s][0] - x; a = grid[s][0] - x;
b = grid[s][1] - y; b = grid[s][1] - y;
c = Math.sqrt(a * a + b * b); c = Math.sqrt(a * a + b * b);
invSlot = (s + 1); invSlot = (s + 1);
if (c < sizeMulxHalf) {
if (c < sizeMul / 2) {
for (var i = 0; i < items.length; i++) { for (var i = 0; i < items.length; i++) {
if (parseInt(items[i][4]) === invSlot) { if (parseInt(items[i][4]) === invSlot) {
hoverItem = i; hoverItem = i;
@@ -557,20 +561,12 @@ export default function inventory(globalData: GlobalData) {
} }
} else { } else {
if (itemRadial === false) { if (itemRadial === false) {
x = cX / screenX;
y = cY / screenY;
a;
b;
c;
for (s = 0; s < 20; s++) { for (s = 0; s < 20; s++) {
a = grid[s][0] - x; a = grid[s][0] - x;
b = grid[s][1] - y; b = grid[s][1] - y;
c = Math.sqrt(a * a + b * b); c = Math.sqrt(a * a + b * b);
invSlot = (s + 1); invSlot = (s + 1);
if (c < sizeMulxHalf) {
if (c < sizeMul / 2) {
for (i = 0; i < items.length; i++) { for (i = 0; i < items.length; i++) {
if (parseInt(items[i][4]) === invSlot) { if (parseInt(items[i][4]) === invSlot) {
hoverGrid = s; hoverGrid = s;
@@ -599,7 +595,7 @@ export default function inventory(globalData: GlobalData) {
var invSlot = (s + 1); var invSlot = (s + 1);
if (c < sizeMul / 2) { if (c < sizeMulxHalf) {
for (var i = 0; i < tradeItems.length; i++) { for (var i = 0; i < tradeItems.length; i++) {
if (parseInt(tradeItems[i][4]) === invSlot) { if (parseInt(tradeItems[i][4]) === invSlot) {
hoverItem = i; hoverItem = i;
@@ -620,7 +616,7 @@ export default function inventory(globalData: GlobalData) {
for (var s = 0; s < 20; s++) { for (var s = 0; s < 20; s++) {
var invSlot = (s + 1); var invSlot = (s + 1);
if (x > grid[s][0] - sizeMul / 2 && x < grid[s][0] + sizeMul / 2 && y > grid[s][1] - sizeMul / 2 * aspectRatioFactor && y < grid[s][1] + sizeMul / 2 * aspectRatioFactor) { if (x > grid[s][0] - sizeMulxHalf && x < grid[s][0] + sizeMulxHalf && y > grid[s][1] - sizeMulxHalf * aspectRatioFactor && y < grid[s][1] + sizeMulxHalf * aspectRatioFactor) {
for (var i = 0; i < items.length; i++) { for (var i = 0; i < items.length; i++) {
if (parseInt(items[i][4]) === invSlot) { if (parseInt(items[i][4]) === invSlot) {
isItemOnSlot++; isItemOnSlot++;
@@ -644,7 +640,7 @@ export default function inventory(globalData: GlobalData) {
for (var s = 0; s < 5; s++) { for (var s = 0; s < 5; s++) {
var invSlot = (s + 1); var invSlot = (s + 1);
if (x > tradeGrid[s][0] - sizeMul / 2 && x < tradeGrid[s][0] + sizeMul / 2 && y > tradeGrid[s][1] - sizeMul / 2 * aspectRatioFactor && y < tradeGrid[s][1] + sizeMul / 2 * aspectRatioFactor) { if (x > tradeGrid[s][0] - sizeMulxHalf && x < tradeGrid[s][0] + sizeMulxHalf && y > tradeGrid[s][1] - sizeMulxHalf * aspectRatioFactor && y < tradeGrid[s][1] + sizeMulxHalf * aspectRatioFactor) {
for (var i = 0; i < tradeItems.length; i++) { for (var i = 0; i < tradeItems.length; i++) {
if (parseInt(tradeItems[i][4]) === invSlot) { if (parseInt(tradeItems[i][4]) === invSlot) {
isItemOnSlot++; isItemOnSlot++;
@@ -668,7 +664,7 @@ export default function inventory(globalData: GlobalData) {
for (var s = 0; s < 20; s++) { for (var s = 0; s < 20; s++) {
var invSlot = (s + 1); var invSlot = (s + 1);
if (x > grid[s][0] - sizeMul / 2 && x < grid[s][0] + sizeMul / 2 && y > grid[s][1] - sizeMul / 2 * aspectRatioFactor && y < grid[s][1] + sizeMul / 2 * aspectRatioFactor) { if (x > grid[s][0] - sizeMulxHalf && x < grid[s][0] + sizeMulxHalf && y > grid[s][1] - sizeMulxHalf * aspectRatioFactor && y < grid[s][1] + sizeMulxHalf * aspectRatioFactor) {
for (var i = 0; i < items.length; i++) { for (var i = 0; i < items.length; i++) {
if (dragTradeItem === false) { if (dragTradeItem === false) {
@@ -696,7 +692,7 @@ export default function inventory(globalData: GlobalData) {
for (var s = 0; s < 5; s++) { for (var s = 0; s < 5; s++) {
var invSlot = (s + 1); var invSlot = (s + 1);
if (x > tradeGrid[s][0] - sizeMul / 2 && x < tradeGrid[s][0] + sizeMul / 2 && y > tradeGrid[s][1] - sizeMul / 2 * aspectRatioFactor && y < tradeGrid[s][1] + sizeMul / 2 * aspectRatioFactor) { if (x > tradeGrid[s][0] - sizeMulxHalf && x < tradeGrid[s][0] + sizeMulxHalf && y > tradeGrid[s][1] - sizeMulxHalf * aspectRatioFactor && y < tradeGrid[s][1] + sizeMulxHalf * aspectRatioFactor) {
for (var i = 0; i < tradeItems.length; i++) { for (var i = 0; i < tradeItems.length; i++) {
if (dragTradeItem === false) { if (dragTradeItem === false) {
@@ -791,20 +787,24 @@ export default function inventory(globalData: GlobalData) {
} }
} }
mp.events.add('click', (x, y, upOrDown, leftOrRight, relativeX, relativeY, worldPosition, hitEntity) => {
var cX = x / screenX; //Mausklick Events
var cY = y / screenY; mp.events.add('click', (x, y, upOrDown, leftOrRight, relativeX, relativeY, worldPosition, hitEntity) => {
if (show) { if (show) {
//LINKE MAUSTASTE //LINKE MAUSTASTE
//RUNTER //RUNTER
if (upOrDown === "down" && leftOrRight === "left" && mouseLDown === false && mouseRDown === false) { if (upOrDown === "down" && leftOrRight === "left" && mouseLDown === false && mouseRDown === false) {
mouseLDown = true;
//Wenn Maus über grünen Haken
if (isTrading && isMouseOverTradeBox(x, y) && tradePrize > 0) { if (isTrading && isMouseOverTradeBox(x, y) && tradePrize > 0) {
tradeConfirm = true; tradeConfirm = true;
mp.events.callRemote('sendTradeItemsToPartner', JSON.stringify(tradeItems), tradePrize, tradePartner); mp.events.callRemote('sendTradeItemsToPartner', JSON.stringify(tradeItems), tradePrize, tradePartner);
} }
//Wenn Maus über Dollar Zeichen
if (isTrading && isMouseOverTradeDollar(x, y)) { if (isTrading && isMouseOverTradeDollar(x, y)) {
var tradeMoney = new InputHelper("Wie viel $ möchtest du für deine Items haben?", globalData); var tradeMoney = new InputHelper("Wie viel $ möchtest du für deine Items haben?", globalData);
tradeMoney.show(); tradeMoney.show();
@@ -817,14 +817,16 @@ export default function inventory(globalData: GlobalData) {
tradePrize = amount; tradePrize = amount;
}); });
} }
mouseLDown = true;
//Wenn Maus über Item
if (isMouseOverItem(x, y) && dragItem === null && itemRadial === false) { if (isMouseOverItem(x, y) && dragItem === null && itemRadial === false) {
dragItem = hoverItem; dragItem = hoverItem;
oldDragSlot = items[dragItem][4]; oldDragSlot = items[dragItem][4];
items[dragItem][4] = "-1"; items[dragItem][4] = "-1";
dragTradeItem = false; dragTradeItem = false;
} else if (ifMouseSelectRadial(x, y)) { }
//wenn Maus über Radialmenü
if (ifMouseSelectRadial(x, y)) {
switch (radialSelect) { switch (radialSelect) {
case "up": case "up":
var dropInput = new InputHelper("Wie viel Items möchtest du wegwerfen?", globalData); var dropInput = new InputHelper("Wie viel Items möchtest du wegwerfen?", globalData);
@@ -854,7 +856,9 @@ export default function inventory(globalData: GlobalData) {
itemRadial = false; itemRadial = false;
break; break;
} }
} else if (isMouseOverTradeItem(x, y) && dragItem === null && itemRadial === false && tradeConfirm === false) { }
//Wenn Maus über Tradeitem
if (isMouseOverTradeItem(x, y) && dragItem === null && itemRadial === false && tradeConfirm === false) {
dragItem = hoverItem; dragItem = hoverItem;
oldDragSlot = tradeItems[dragItem][4]; oldDragSlot = tradeItems[dragItem][4];
tradeItems[dragItem][4] = "-1"; tradeItems[dragItem][4] = "-1";
@@ -869,6 +873,8 @@ export default function inventory(globalData: GlobalData) {
if (dragItem !== null) { if (dragItem !== null) {
var newAmount; var newAmount;
//wenn Maus über freien Slot
if (isMouseOverFreeSlot(x, y)) { if (isMouseOverFreeSlot(x, y)) {
if (dragTradeItem === false) { if (dragTradeItem === false) {
items[dragItem][4] = actFreeSlot; items[dragItem][4] = actFreeSlot;
@@ -876,6 +882,7 @@ export default function inventory(globalData: GlobalData) {
items.push([tradeItems[dragItem][0], tradeItems[dragItem][1], tradeItems[dragItem][2], tradeItems[dragItem][3], actFreeSlot.toString(), tradeItems[dragItem][5]]); items.push([tradeItems[dragItem][0], tradeItems[dragItem][1], tradeItems[dragItem][2], tradeItems[dragItem][3], actFreeSlot.toString(), tradeItems[dragItem][5]]);
tradeItems.splice(dragItem, 1); tradeItems.splice(dragItem, 1);
} }
mp.events.callRemote('saveInventory', JSON.stringify(items));
oldDragSlot = null; oldDragSlot = null;
dragItem = null; dragItem = null;
hoverItem = null; hoverItem = null;
@@ -889,6 +896,8 @@ export default function inventory(globalData: GlobalData) {
items[stackToItem][3] = newAmount.toString(); items[stackToItem][3] = newAmount.toString();
tradeItems.splice(dragItem, 1); tradeItems.splice(dragItem, 1);
} }
mp.events.callRemote('saveInventory', JSON.stringify(items));
oldDragSlot = null;
dragItem = null; dragItem = null;
hoverItem = null; hoverItem = null;
} else if (isItemOverSameTradeItem(x, y)) { } else if (isItemOverSameTradeItem(x, y)) {
@@ -901,6 +910,8 @@ export default function inventory(globalData: GlobalData) {
tradeItems[stackToTradeItem][3] = newAmount.toString(); tradeItems[stackToTradeItem][3] = newAmount.toString();
tradeItems[dragItem][4] = "-1"; tradeItems[dragItem][4] = "-1";
} }
mp.events.callRemote('saveInventory', JSON.stringify(items));
oldDragSlot = null;
dragItem = null; dragItem = null;
hoverItem = null; hoverItem = null;
} else if (isMouseOverFreeTradeSlot(x, y)) { } else if (isMouseOverFreeTradeSlot(x, y)) {
@@ -910,6 +921,7 @@ export default function inventory(globalData: GlobalData) {
} else { } else {
tradeItems[dragItem][4] = actFreeTradeSlot; tradeItems[dragItem][4] = actFreeTradeSlot;
} }
mp.events.callRemote('saveInventory', JSON.stringify(items));
oldDragSlot = null; oldDragSlot = null;
dragItem = null; dragItem = null;
hoverItem = null; hoverItem = null;
@@ -919,6 +931,7 @@ export default function inventory(globalData: GlobalData) {
} else { } else {
tradeItems[dragItem][4] = oldDragSlot; tradeItems[dragItem][4] = oldDragSlot;
} }
oldDragSlot = null;
dragItem = null; dragItem = null;
hoverItem = null; hoverItem = null;
} }
@@ -970,6 +983,8 @@ export default function inventory(globalData: GlobalData) {
tradeItems.splice(hoverItem, 1); tradeItems.splice(hoverItem, 1);
} }
} }
mp.events.callRemote('saveInventory', JSON.stringify(items));
oldDragSlot = null;
dragItem = null; dragItem = null;
hoverItem = null; hoverItem = null;
} else if (isItemOverSameItem(x, y)) { } else if (isItemOverSameItem(x, y)) {
@@ -983,9 +998,11 @@ export default function inventory(globalData: GlobalData) {
tradeItems.splice(hoverItem, 1); tradeItems.splice(hoverItem, 1);
} }
} }
mp.events.callRemote('saveInventory', JSON.stringify(items));
bufferItem = null; bufferItem = null;
dragItem = null; dragItem = null;
hoverItem = null; hoverItem = null;
oldDragSlot = null;
} else if (isItemOverSameTradeItem(x, y)) { } else if (isItemOverSameTradeItem(x, y)) {
tradeItems[stackToTradeItem][3]++; tradeItems[stackToTradeItem][3]++;
if (dragTradeItem === false) { if (dragTradeItem === false) {
@@ -997,6 +1014,8 @@ export default function inventory(globalData: GlobalData) {
tradeItems[hoverItem][4] = "-1"; tradeItems[hoverItem][4] = "-1";
} }
} }
mp.events.callRemote('saveInventory', JSON.stringify(items));
oldDragSlot = null;
bufferItem = null; bufferItem = null;
dragItem = null; dragItem = null;
hoverItem = null; hoverItem = null;
@@ -1012,6 +1031,8 @@ export default function inventory(globalData: GlobalData) {
tradeItems[hoverItem][4] = "-1"; tradeItems[hoverItem][4] = "-1";
} }
} }
mp.events.callRemote('saveInventory', JSON.stringify(items));
oldDragSlot = null;
dragItem = null; dragItem = null;
hoverItem = null; hoverItem = null;
} else { } else {
@@ -1020,6 +1041,7 @@ export default function inventory(globalData: GlobalData) {
} else { } else {
tradeItems[hoverItem][3]++; tradeItems[hoverItem][3]++;
} }
oldDragSlot = null;
bufferItem = null; bufferItem = null;
dragItem = null; dragItem = null;
hoverItem = null; hoverItem = null;
@@ -1037,6 +1059,13 @@ export default function inventory(globalData: GlobalData) {
items[hoverItem][4] = "-1"; items[hoverItem][4] = "-1";
inventoryWeight -= parseInt(items[hoverItem][2]) * parseInt(items[hoverItem][3]); inventoryWeight -= parseInt(items[hoverItem][2]) * parseInt(items[hoverItem][3]);
mp.events.callRemote('removeItemAsAdmin', "stack", items[hoverItem][5], targetPlayerName); mp.events.callRemote('removeItemAsAdmin', "stack", items[hoverItem][5], targetPlayerName);
} else if (isMouseOverX(x, y)) {
mp.gui.chat.activate(true);
mp.gui.cursor.show(false, false);
showAdmin = false;
mp.game.graphics.setStreamedTextureDictAsNoLongerNeeded("itemimages");
inventoryWeight = 0;
items = null;
} }
} }
@@ -1053,17 +1082,6 @@ export default function inventory(globalData: GlobalData) {
inventoryWeight -= items[hoverItem][2]; inventoryWeight -= items[hoverItem][2];
} }
} }
if (upOrDown === "down" && leftOrRight === "left" && mouseLDown === false && mouseRDown === false) {
if (isMouseOverX(x, y)) {
mp.gui.chat.activate(true);
mp.gui.cursor.show(false, false);
showAdmin = false;
mp.game.graphics.setStreamedTextureDictAsNoLongerNeeded("itemimages");
inventoryWeight = 0;
items = null;
}
}
} }
}); });
} }