diff --git a/ReallifeGamemode.Client/ReallifeGamemode.Client.csproj b/ReallifeGamemode.Client/ReallifeGamemode.Client.csproj index 215a975b..2f3b35c7 100644 --- a/ReallifeGamemode.Client/ReallifeGamemode.Client.csproj +++ b/ReallifeGamemode.Client/ReallifeGamemode.Client.csproj @@ -27,6 +27,7 @@ + diff --git a/ReallifeGamemode.Client/assets/html/inventory/css/inventory.css b/ReallifeGamemode.Client/assets/html/inventory/css/inventory.css new file mode 100644 index 00000000..f5321b7e --- /dev/null +++ b/ReallifeGamemode.Client/assets/html/inventory/css/inventory.css @@ -0,0 +1,895 @@ +@font-face { + font-family: OSL; + src: url(../font/OSL.ttf); +} + +* { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +body { + width: 100%; + height: 100%; + margin: 0px auto; + background-color: transparent; +} + + + +.main2 { + z-index: 2; + background: #0c0c0cc4; + position: absolute; + padding-left: 100%; + padding-top: 100%; +} + +.main { + z-index: 1; + background: #272727; + position: absolute; + left: 19vw; + padding-left: 53vw; + padding-top: 33vw; + top: 5vw; + transition: 0.2s; +} + +.title { + font-size: 2vw; + position: absolute; + color: #fff; + font-family: 'OSL'; + left: 1vw; + top: 0.2vw; + background: #1b1b1b; +} + +.titletext { + position: absolute; + left: 21vw; + background: #1b1b1b; + padding-right: 22.7vw; +} + +.sidebar { + z-index: 1; + position: absolute; + right: 72.5vw; + cursor: pointer; + z-index: 200; + top: 9.5vw; +} + +.sidebaritem1 { + z-index: 1; + margin-bottom: 0.2vw; + color: #fff; + font-family: OSL; + width: 6vw; + background: #1b1b1b; + height: 4vw; + text-align: center; + line-height: 6.1vw; + transition: 0.2s; +} + +.sidebaritem2 { + z-index: 1; + margin-bottom: 0.2vw; + color: #fff; + font-family: OSL; + width: 6vw; + background: #1b1b1b; + height: 4vw; + text-align: center; + line-height: 6.1vw; + transition: 0.2s; +} + +.sidebaritem3 { + z-index: 1; + margin-bottom: 0.2vw; + color: #fff; + font-family: OSL; + width: 6vw; + background: #1b1b1b; + height: 4vw; + text-align: center; + line-height: 6.1vw; + transition: 0.2s; +} + +.sidebaritem4 { + z-index: 1; + margin-bottom: 0.2vw; + color: #fff; + font-family: OSL; + width: 6vw; + background: #1b1b1b; + height: 4vw; + text-align: center; + line-height: 6.1vw; + transition: 0.2s; +} + +.sidebaritem5 { + z-index: 1; + margin-bottom: 0.2vw; + color: #fff; + font-family: OSL; + width: 6vw; + background: #1b1b1b; + height: 4vw; + text-align: center; + line-height: 6.1vw; + transition: 0.2s; +} + +.sidebaritem6 { + z-index: 1; + margin-bottom: 0.2vw; + color: #fff; + font-family: OSL; + width: 6vw; + background: #1b1b1b; + height: 4vw; + text-align: center; + line-height: 6.1vw; + transition: 0.2s; +} + +.sidebaritem { + z-index: 1; + margin-bottom: 0.2vw; + color: #fff; + font-family: OSL; + width: 6vw; + background: #1b1b1b; + height: 4vw; + text-align: center; + line-height: 6.1vw; + transition: 0.2s; +} + +.items { + position: absolute; + left: 5.5vw; + top: 2.5vw; + cursor: default; + width: 6vw; +} + +.item { +} + +ul { + float: left; +} + +li { + display: block; +} + +.titlecount { + position: absolute; + font-size: 0.7vw; + width: 16.3vw; + top: 0vw; + background: #1b1b1b; + padding-top: 1.8vw; + left: -1vw; + padding-right: 10vw; + padding-left: 0.2vw; +} + +.sideicon1 { + padding-top: 0.2vw; +} + +.sideicon2 { + padding-top: 0.2vw; +} + +.sideicon3 { + padding-top: 0.2vw !important; +} + +.sideicon4 { + padding-top: 0.2vw; +} + +.sideicon5 { +} + +.sideicon6 { +} + +.sideicon7 { + width: 5vw; +} + +.sideicon8 { + width: 5vw; +} + +.sideicon9 { + width: 5vw; +} + +.sideicon10 { + width: 5vw; +} + +.sideicon11 { + width: 5vw; +} + +.sideicon12 { + width: 5vw; +} + +.sideicon13 { + width: 5vw; +} + +.sideicon14 { + width: 5vw; +} + +.sideicon15 { + width: 2vw; +} + +.sideicon16 { + width: 5vw; +} + +.sideicon17 { + width: 5vw; +} + +.sideicon18 { + width: 5vw; +} + +.sideicon7, .sideicon8, .sideicon9, .sideicon10, .sideicon11, .sideicon12, .sideicon13, .sideicon14, .sideicon15, .sideicon16, .sideicon17, .sideicon18 { + position: absolute; + left: 2.1vw; + top: 0.6vw; +} + +.sideicon1, .sideicon2, .sideicon3, .sideicon4, .sideicon5, .sideicon6 { + width: 2vw; + padding-bottom: 1.8vw; +} + +.bartext { + margin-top: -6.5vw; + font-size: 0.8vw; +} + +.sidebaritem1:hover { + background: #131313; +} + +.sidebaritem2:hover { + background: #131313; +} + +.sidebaritem3:hover { + background: #131313; +} + +.sidebaritem4:hover { + background: #131313; +} + +.sidebaritem5:hover { + background: #131313; +} + +.sidebaritem6:hover { + background: #131313; +} + +li.item1 { +} + +li.item2 { + top: -22vw; + left: 9vw; +} + +li.item3 { + top: -46vw; + left: 16vw; +} + +li.item4 { + top: -70vw; + left: 23vw; +} + +li.item5 { + top: -94vw; + left: 30vw; +} + +li.item6 { + top: -118vw; + left: 37vw; +} + +.item1, .item2, .item3, .item4, .item5, .item6 { + color: #fff; + font-family: 'OSL'; + position: relative; + margin-bottom: 2vw; + color: #fff; + font-family: OSL; + width: 6vw; + background: #1b1b1b; + height: 4vw; + text-align: center; + line-height: 6.5vw; + transition: 0.2s; + font-size: 0.5vw; + left: 2vw; + top: 2vw; +} + +.show { + display: show !important; +} + +.hidden { + display: none !important; +} + +.green { + z-index: 1; + position: relative; + width: 6vw; + background: #55ff0096; + height: 4vw; + line-height: 1; + top: -8vw; + cursor: pointer; + opacity: 0.0; + transition: 0.3s; +} + + .green:hover { + opacity: 1 + } + +.red { + z-index: 1; + position: relative; + width: 2.5vw; + left: 3.5vw; + background: #6d2525; + height: 1.5vw; + line-height: 1; + top: -2.4vw; + cursor: pointer; + opacity: 0.5; + transition: 0.3s; +} + + .red:hover { + opacity: 1 + } + +.blue { + z-index: 1; + position: relative; + width: 2.5vw; + left: 0vw; + background: #0d91af8c; + height: 1.5vw; + line-height: 1; + top: -7.9vw; + cursor: pointer; + opacity: 0.5; + transition: 0.3s; +} + + .blue:hover { + opacity: 1 + } + +.blue2 { + z-index: 1; + position: relative; + width: 2.5vw; + left: 0vw; + background: #0d91af8c; + height: 1.5vw; + line-height: 1; + top: -3.9vw; + cursor: pointer; + opacity: 0.5; + transition: 0.3s; +} + + .blue2:hover { + opacity: 1 + } + +.redImg { + width: 1.3vw; + margin-top: 0.1vw; +} + +.blueImg { + width: 1.3vw; + margin-top: 0.1vw; +} + +.greenImg { + width: 1.3vw; + margin-top: 1.2vw; +} + +body select { + display: block; + padding: 10px 70px 11px 13px !important; + margin-top: -29.9vw; + margin-left: -30.6vw; + height: auto !important; + border: 1px solid #000000; + border-radius: 3px; + background: url(https://i.ibb.co/b7xjLrB/selectbox-arrow.png) right center no-repeat; + background-color: #404040; + color: #fffbfb; + font-size: 12px; + line-height: 12px !important; + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; +} + /* body select.select_box option */ + body select option { + padding: 0 4px; + } +/* for IE and Edge */ +select::-ms-expand { + display: none; +} + +select:disabled::-ms-expand { + background: #f60; +} + +.Betrag { + z-index: 2; + background: rgba(0,0,0,0.6); + height: 100%; + width: 100%; + display: block; + transform: translate(-50%, -50%); + position: absolute; + left: 50%; + top: 50%; +} + +.Betrag4 { + z-index: 2; + background: rgba(0,0,0,0.6); + height: 100%; + width: 100%; + display: block; + transform: translate(-50%, -50%); + position: absolute; + left: 50%; + top: 50%; +} + +.Betrag3 { + z-index: 2; + background: rgba(0,0,0,0.6); + height: 100%; + width: 100%; + display: block; + transform: translate(-50%, -50%); + position: absolute; + left: 50%; + top: 50%; +} + +.Betrag2 { + z-index: 2; + background: rgba(0,0,0,0.6); + height: 100%; + width: 100%; + display: block; + transform: translate(-50%, -50%); + position: absolute; + left: 50%; + top: 50%; +} + +t#tf_nameorid { + background-color: #313131; + border: none; + height: 1.2vw; + width: 6vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 12px; + position: relative; + left: -30.1vw; + top: -29.9vw; + color: #ffffff; +} + +#tf_submitTrade { + background-color: #267d00; + border: none; + height: 1.2vw; + width: 4vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 16px; + font-color: white; + position: relative; + left: -30vw; + top: -29.9vw; + color: #ffffff; + opacity: 0.5; + transition: 0.3s; +} + +#tf_submitTrade { + opacity: 1; +} + +#tf_zahl { + background-color: #313131; /* blau */ + border: none; + height: 30px; + width: 124px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 12px; + position: relative; + left: 42%; + top: 40%; + color: #ffffff; +} + +#tf_cancle { + background-color: #ff0000; + border: none; + height: 32px; + width: 124px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 16px; + font-color: white; + position: relative; + left: 33.7%; + top: 44%; + color: #ffffff; + opacity: 0.5; + transition: 0.3s; +} + +#tf_submitZahl { + background-color: #008CBA; /* blau */ + border: none; + height: 32px; + width: 124px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 16px; + font-color: white; + position: relative; + left: 42%; + top: 40%; + color: #ffffff; + opacity: 0.5; + transition: 0.3s; +} + +#tf_submitZahl { + opacity: 1; +} + +#tf_zahl4 { + background-color: #313131; + border: none; + height: 1.5vw; + width: 5vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.5vw; + position: relative; + left: 19vw; + top: 13vw; + color: #ffffff; +} + +#tf_cancle4 { + background-color: #ff0000; + border: none; + height: 0.9vw; + width: 3vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 16px; + font-color: white; + position: relative; + left: 17.8vw; + top: 9.4vw; + color: #ffffff; + opacity: 0.5; + transition: 0.3s; +} + +#tf_cancle4 { + opacity: 1; +} + +#tf_submitZahl4 { + background-color: #008CBA; + border: none; + height: 1.5vw; + width: 8vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.5vw; + font-color: white; + position: relative; + left: 21vw; + top: 13vw; + color: #ffffff; + opacity: 0.5; + transition: 0.3s; +} + +#tf_submitZahl4 { + opacity: 1; +} + +#tf_submitTrade { + background-color: #009b03; + border: none; + height: 1.6vw; + width: 4vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.5vw; + font-color: white; + position: absolute; + color: #ffffff; + top: 3vw; + left: 29.3vw; + opacity: 0.5; + transition: 0.3s; +} + + #tf_submitTrade:hover { + opacity: 1; + } + +#tf_cancle3 { + background-color: #ff0000; + border: none; + height: 0.9vw; + width: 3vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 16px; + font-color: white; + position: relative; + left: 17.8vw; + top: 9.4vw; + color: #ffffff; + opacity: 0.5; + transition: 0.3s; +} + + #tf_cancle3:hover { + opacity: 1 + } + +#tf_cancle:hover { + opacity: 1 +} + +#tf_cancle2:hover { + opacity: 1 +} + +#tf_zahl3 { + background-color: #313131; + border: none; + height: 1.5vw; + width: 5vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.5vw; + position: relative; + left: 19vw; + top: 13vw; + color: #ffffff; +} + +#tf_submitZahl3 { + background-color: #008CBA; + border: none; + height: 1.5vw; + width: 8vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.5vw; + font-color: white; + position: relative; + left: 21vw; + top: 13vw; + color: #ffffff; + opacity: 0.5; + transition: 0.3s; +} + +#tf_submitZahl3 { + opacity: 1; +} + +.BoxBlue { + background-color: #1b1b1b; + height: 10vw; + width: 20vw; + position: relative; + margin-top: 11vw; + margin-left: 16vw; +} + +#tf_cancle2 { + background-color: #ff0000; + border: none; + height: 1vw; + width: 3vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.5vw; + position: relative; + left: 5.45vw; + top: 0vw; + color: #ffffff; +} + +#tf_submitZahlToHandel { + background-color: #008CBA; + border: none; + height: 1vw; + width: 7vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.4vw; + position: relative; + left: -3vw; + top: 7vw; + color: #ffffff; + opacity: 0.5; + transition: 0.3s; +} + + #tf_submitZahlToHandel:hover { + opacity: 1; + } + +#tf_submitZahlToVehicle { + background-color: #008CBA; + border: none; + height: 1vw; + width: 8vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.5vw; + position: relative; + left: 10.8vw; + top: 5.95vw; + color: #ffffff; + opacity: 0.5; + transition: 0.3s; +} + + #tf_submitZahlToVehicle:hover { + opacity: 1 + } + +#tf_zahl2 { + background-color: #313131; + border: none; + height: 1vw; + width: 4.3vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.5vw; + position: relative; + left: 7.5vw; + top: 4.4vw; + color: #ffffff; +} + +select.select_box2 { + margin-top: -1vw; + margin-left: 11.3vw; +} + +.blueIcon1 { + position: relative; + height: 3vw; + margin-bottom: -4vw; + margin-left: 13.4vw; +} + +.blueIcon2 { + position: relative; + height: 3vw; + margin-bottom: -3.1vw; + margin-left: 3.4vw; +} + +.blue3 { + z-index: 1; + position: relative; + width: 2.5vw; + left: 0vw; + background: #0d91af8c; + height: 1.5vw; + line-height: 1; + top: -2.45vw; + z-index: 10000; + cursor: pointer; + opacity: 0.5; + transition: 0.3s; +} + + .blue3:hover { + opacity: 1 + } + + +#tf_nameorid { + background-color: #313131; + border: none; + height: 1.5vw; + width: 6vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 12px; + position: absolute; + left: 23vw; + top: 3vw; + color: #ffffff; +} diff --git a/ReallifeGamemode.Client/assets/html/inventory/font/OSL.ttf b/ReallifeGamemode.Client/assets/html/inventory/font/OSL.ttf new file mode 100644 index 00000000..563872c7 Binary files /dev/null and b/ReallifeGamemode.Client/assets/html/inventory/font/OSL.ttf differ diff --git a/ReallifeGamemode.Client/assets/html/inventory/font/OpenSans-Bold.ttf b/ReallifeGamemode.Client/assets/html/inventory/font/OpenSans-Bold.ttf new file mode 100644 index 00000000..fd79d43b Binary files /dev/null and b/ReallifeGamemode.Client/assets/html/inventory/font/OpenSans-Bold.ttf differ diff --git a/ReallifeGamemode.Client/assets/html/inventory/font/OpenSans-ExtraBold.ttf b/ReallifeGamemode.Client/assets/html/inventory/font/OpenSans-ExtraBold.ttf new file mode 100644 index 00000000..21f6f84a Binary files /dev/null and b/ReallifeGamemode.Client/assets/html/inventory/font/OpenSans-ExtraBold.ttf differ diff --git a/ReallifeGamemode.Client/assets/html/inventory/font/OpenSans-Light.ttf b/ReallifeGamemode.Client/assets/html/inventory/font/OpenSans-Light.ttf new file mode 100644 index 00000000..0d381897 Binary files /dev/null and b/ReallifeGamemode.Client/assets/html/inventory/font/OpenSans-Light.ttf differ diff --git a/ReallifeGamemode.Client/assets/html/inventory/font/OpenSans-Regular.ttf b/ReallifeGamemode.Client/assets/html/inventory/font/OpenSans-Regular.ttf new file mode 100644 index 00000000..db433349 Binary files /dev/null and b/ReallifeGamemode.Client/assets/html/inventory/font/OpenSans-Regular.ttf differ diff --git a/ReallifeGamemode.Client/assets/html/inventory/font/OpenSans-Semibold.ttf b/ReallifeGamemode.Client/assets/html/inventory/font/OpenSans-Semibold.ttf new file mode 100644 index 00000000..1a7679e3 Binary files /dev/null and b/ReallifeGamemode.Client/assets/html/inventory/font/OpenSans-Semibold.ttf differ diff --git a/ReallifeGamemode.Client/assets/html/inventory/handel/handelakzeptieren.html b/ReallifeGamemode.Client/assets/html/inventory/handel/handelakzeptieren.html deleted file mode 100644 index 9c08d4e8..00000000 --- a/ReallifeGamemode.Client/assets/html/inventory/handel/handelakzeptieren.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Inventory - - - - - - - Handel Akzeptieren - Preis: 0$ - - - - - Akzeptieren - Ablehnen - - - - - \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/html/inventory/handel/script.js b/ReallifeGamemode.Client/assets/html/inventory/handel/script.js deleted file mode 100644 index 61ab079c..00000000 --- a/ReallifeGamemode.Client/assets/html/inventory/handel/script.js +++ /dev/null @@ -1,336 +0,0 @@ - -$(document).ready(function () { - //fire functions before page load - drawToPage(); - console.log("loading finished"); - mp.trigger("CEF:BrowserLoadedTrade"); -}); - -function setItems(itemIdArr1, itemAmountArr1, money1) { - var itemIdArr = JSON.parse(itemIdArr1); - var money = JSON.parse(money1); - var itemAmountArr = JSON.parse(itemAmountArr1); - document.getElementById('gewicht').innerText = 'Preis: '+money+'$'; - 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: 1, - 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: 1, - 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: 1, - 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: 1, - 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: 1, - 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: 1, - 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 >= 25) { - 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(); - 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(); - 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(); - break; - } - else if (unfininshedStack == undefined && playerInventory[i].object === 'false') { - playerInventory[i] = cloneItem; - drawToPage(); - break; - } - } -} - -var getItemSlotData; -function getAllItemSlotData() { - getItemSlotData = document.getElementsByClassName('itemSlot'); -} - - -var currentSelected; - -function refreshAllCurrentItems() { - var remove = document.getElementById('invContainer'); - while (remove.firstChild) remove.removeChild(remove.firstChild); -} - - -function fillOutEmptyInv() { - for (var i = 0; i < 6; i++) { - if (!playerInventory[i]) { - playerInventory.push(EmptySlot); - drawToPage(); - } - } -} -var weightInv = 0; -function drawToPage() { - refreshAllCurrentItems(); - weightInv = 0; - for (var i = 0; i < playerInventory.length; i++) { - if (playerInventory[i].selected == 'true') { - var className = ' selected'; - } - else { - var className = ''; - } - - if (i >= 6) { - //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("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); - } - } - } - fillOutEmptyInv(); -} - - -/////////////////// -// 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(); - }, -} - - -//Handel Akzeptierenfenster - -$("#buttonakzeptieren").click(function () { - mp.trigger('CEF:acceptTrade'); -}); - -$("#buttonablehnen").click(function () { - mp.trigger('CEF:declineTrade'); -}); diff --git a/ReallifeGamemode.Client/assets/html/inventory/handel/style.css b/ReallifeGamemode.Client/assets/html/inventory/handel/style.css deleted file mode 100644 index 3beb72fe..00000000 --- a/ReallifeGamemode.Client/assets/html/inventory/handel/style.css +++ /dev/null @@ -1,284 +0,0 @@ -/* *** FOR TESTING ONLY *** */ -.greyFont { - color: gray; - font-size: 14px; - width: 250px; -} - -body { - overflow: hidden; - font-family: 'Roboto', sans-serif; - font-weight: 500; - color: #222; - margin: 0; - padding: 0; -} -#buttonbenutzen { - background-color: #4CAF50; /* gruen */ - border: none; - color: white; - padding: 12px 24px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - position: relative; - left: 1.5%; -} -#buttonwegwerfen { - background-color: #f44336; /* rot */ - border: none; - color: white; - padding: 12px 24px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - position: relative; - left: 1.5%; -} -#buttonhandeln { - background-color: #008CBA; /* blau */ - border: none; - color: white; - padding: 12px 24px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - position: relative; - left: 1.5%; -} -#buttonablehnen { - background-color: #f44336; /* rot */ - border: none; - color: white; - padding: 12px 24px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - position: relative; - left: 18%; -} -#buttonakzeptieren { - background-color: #008CBA; /* blau */ - border: none; - color: white; - padding: 12px 24px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - position: relative; - left: 18%; -} - -button { - width: 125px; - background-color: lightGrey; - padding: 5px; - margin: 2px 0px; - border: none; - cursor: pointer; -} - -button:hover { - background-color: grey; -} - -h2 { - font-family: 'Roboto', sans-serif; - font-weight: 700; - font-size: 18px; - color: white; - margin:5px; - padding: 5px; - border: 1px solid #808080; - width: 20.75em; -} -.box1 { - float: left; - width: 50%; -} -.box2 { - - padding: 2px; - - } - -h4 { - font-family: 'Roboto', sans-serif; - font-weight: 700; - font-size: 18px; - color: white; - margin:5px; - padding: 5px; - text-align:right; - border: none; -} - -.pakWrapper { - background: rgba(0,0,0,0.4); - height: 170px; - width: 394px; - display: block; - padding: 5px; - position: absolute; - left: 38%; - top: 35%; -} - -#invContainer{ - width: 110%; - height: auto; -} - -#invContainer h3 { - padding: 0px 10px; -} - -.itemSlot { - width: 54px; - height: 54px; - margin: 5px; - float: left; - border: 1px solid #808080; - border-radius: 5px; - position: relative; - cursor: pointer; -} - -.itemSlot:hover { - border: 1px solid #999999; -} - -.itemAmount p { - color: white; - font-family: 'Roboto', sans-serif; - font-weight: 700; - text-shadow: 0px 0px 2px black; - position: absolute; - top: 16px; - left: 4px; -} - - -.selected { - box-shadow: 0px 0px 6px white; - border: 1px solid yellow; -} - -.common { - box-shadow: 0 0 2px 1px white inset; -} - -.common h3 { - color: white; - text-shadow: 0 0 0 1px black; -} - -.uncommon { - box-shadow: 0 0 2px 1px #3333ff inset; -} - -.uncommon h3 { - color: #3333ff; - text-shadow: 0 0 0 1px black; -} - -.rare { - box-shadow: 0 0 2px 1px #66ff33 inset; -} - -.rare h3 { - color: #66ff33; - text-shadow: 0 0 0 1px black; -} - -.superior { - box-shadow: 0 0 3px 1px #990099 inset; -} - -.superior h3 { - color: #990099; - text-shadow: 0px 0px 1px black; -} - -.mythic { - box-shadow: 0 0 3px 1px #ffa333 inset; -} - -.mythic h3 { - color: #ffa333; - text-shadow: 0px 0px 1px black; -} - -.pForgeWrapper { - background: #222; - height: 176px; - width: 330px; - display: block; - padding: 5px; - position: absolute; - left: 0; - top: 0; -} - -/*item description */ -.itemSlot:hover > .itemDesc { - display: block; -} - -.itemDesc { - width: 250px; - height: auto; - top: 60px; - border: 1px solid #808080; - border-radius: 5px; - background: #1a1a1a; - position: absolute; - display: none; - z-index: 9999; -} - -.itemDesc p{ - color: white; -} -/*Handelfenster */ -#tf_betrag { - background-color: #008CBA; /* blau */ - border: none; - height: 30px; - width: 124px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - font-color: white; - position: relative; - left: 1.5%; - color:#ffffff; -} -::placeholder { - color: white; - opacity: 1; -} -#tf_submit { - background-color: #008CBA; /* blau */ - border: none; - height: 32px; - width: 124px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - font-color: white; - position: relative; - left: 1.5%; - color:#ffffff; -} - - - -/* tasks */ \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/backpack/1.png b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/1.png new file mode 100644 index 00000000..02e8d2f7 Binary files /dev/null and b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/1.png differ diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/backpack/2.png b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/2.png new file mode 100644 index 00000000..70fb7a75 Binary files /dev/null and b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/2.png differ diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/backpack/3.png b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/3.png new file mode 100644 index 00000000..7b8362e7 Binary files /dev/null and b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/3.png differ diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/backpack/4.png b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/4.png new file mode 100644 index 00000000..01eb6ae7 Binary files /dev/null and b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/4.png differ diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/backpack/5.png b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/5.png new file mode 100644 index 00000000..27e291a0 Binary files /dev/null and b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/5.png differ diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/backpack/6.png b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/6.png new file mode 100644 index 00000000..9770da07 Binary files /dev/null and b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/6.png differ diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/backpack/Cloth.7z b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/Cloth.7z new file mode 100644 index 00000000..d7b81b65 Binary files /dev/null and b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/Cloth.7z differ diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/backpack/apple.png b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/apple.png new file mode 100644 index 00000000..50d93b72 Binary files /dev/null and b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/apple.png differ diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/backpack/back.svg b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/back.svg new file mode 100644 index 00000000..aea77d7a --- /dev/null +++ b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/back.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/backpack/backpack.svg b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/backpack.svg new file mode 100644 index 00000000..7752ed6b --- /dev/null +++ b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/backpack.svg @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/backpack/car.svg b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/car.svg new file mode 100644 index 00000000..bf422045 --- /dev/null +++ b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/car.svg @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/backpack/notes.svg b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/notes.svg new file mode 100644 index 00000000..d98c7c33 --- /dev/null +++ b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/notes.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/backpack/paper-plane.svg b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/paper-plane.svg new file mode 100644 index 00000000..d3518a9d --- /dev/null +++ b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/paper-plane.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/backpack/save-money.svg b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/save-money.svg new file mode 100644 index 00000000..00eddf72 --- /dev/null +++ b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/save-money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/backpack/trading.svg b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/trading.svg new file mode 100644 index 00000000..1f599e9c --- /dev/null +++ b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/trading.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/backpack/transparent.png b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/transparent.png new file mode 100644 index 00000000..7a110449 Binary files /dev/null and b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/transparent.png differ diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/backpack/trash.svg b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/trash.svg new file mode 100644 index 00000000..bcb057ab --- /dev/null +++ b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/trash.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/backpack/use.png b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/use.png new file mode 100644 index 00000000..8783b925 Binary files /dev/null and b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/use.png differ diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/backpack/use.svg b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/use.svg new file mode 100644 index 00000000..3454fa59 --- /dev/null +++ b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/use.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ReallifeGamemode.Client/assets/img/items/wood.svg b/ReallifeGamemode.Client/assets/html/inventory/img/inventory/1.svg similarity index 100% rename from ReallifeGamemode.Client/assets/img/items/wood.svg rename to ReallifeGamemode.Client/assets/html/inventory/img/inventory/1.svg diff --git a/ReallifeGamemode.Client/assets/img/items/zander.svg b/ReallifeGamemode.Client/assets/html/inventory/img/inventory/10.svg similarity index 100% rename from ReallifeGamemode.Client/assets/img/items/zander.svg rename to ReallifeGamemode.Client/assets/html/inventory/img/inventory/10.svg diff --git a/ReallifeGamemode.Client/assets/img/items/burger.svg b/ReallifeGamemode.Client/assets/html/inventory/img/inventory/2.svg similarity index 100% rename from ReallifeGamemode.Client/assets/img/items/burger.svg rename to ReallifeGamemode.Client/assets/html/inventory/img/inventory/2.svg diff --git a/ReallifeGamemode.Client/assets/img/items/cocaine.svg b/ReallifeGamemode.Client/assets/html/inventory/img/inventory/3.svg similarity index 100% rename from ReallifeGamemode.Client/assets/img/items/cocaine.svg rename to ReallifeGamemode.Client/assets/html/inventory/img/inventory/3.svg diff --git a/ReallifeGamemode.Client/assets/img/items/cannabis.svg b/ReallifeGamemode.Client/assets/html/inventory/img/inventory/4.svg similarity index 100% rename from ReallifeGamemode.Client/assets/img/items/cannabis.svg rename to ReallifeGamemode.Client/assets/html/inventory/img/inventory/4.svg diff --git a/ReallifeGamemode.Client/assets/img/items/flounder.svg b/ReallifeGamemode.Client/assets/html/inventory/img/inventory/5.svg similarity index 100% rename from ReallifeGamemode.Client/assets/img/items/flounder.svg rename to ReallifeGamemode.Client/assets/html/inventory/img/inventory/5.svg diff --git a/ReallifeGamemode.Client/assets/img/items/aal.svg b/ReallifeGamemode.Client/assets/html/inventory/img/inventory/6.svg similarity index 100% rename from ReallifeGamemode.Client/assets/img/items/aal.svg rename to ReallifeGamemode.Client/assets/html/inventory/img/inventory/6.svg diff --git a/ReallifeGamemode.Client/assets/img/items/perch.svg b/ReallifeGamemode.Client/assets/html/inventory/img/inventory/7.svg similarity index 100% rename from ReallifeGamemode.Client/assets/img/items/perch.svg rename to ReallifeGamemode.Client/assets/html/inventory/img/inventory/7.svg diff --git a/ReallifeGamemode.Client/assets/img/items/salmon.svg b/ReallifeGamemode.Client/assets/html/inventory/img/inventory/8.svg similarity index 100% rename from ReallifeGamemode.Client/assets/img/items/salmon.svg rename to ReallifeGamemode.Client/assets/html/inventory/img/inventory/8.svg diff --git a/ReallifeGamemode.Client/assets/img/items/tuna.svg b/ReallifeGamemode.Client/assets/html/inventory/img/inventory/9.svg similarity index 100% rename from ReallifeGamemode.Client/assets/img/items/tuna.svg rename to ReallifeGamemode.Client/assets/html/inventory/img/inventory/9.svg diff --git a/ReallifeGamemode.Client/assets/html/inventory/index.html b/ReallifeGamemode.Client/assets/html/inventory/index.html deleted file mode 100644 index 0e89e41f..00000000 --- a/ReallifeGamemode.Client/assets/html/inventory/index.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - Inventory - - - - - - - Inventar - 0/25 kg - - - - - - - Benutzen - Wegwerfen - Handeln - - - Handel - - - - - - Handeln - - - - - - Bestätigen - - - - - - - - - - - - - - - - - - - - diff --git a/ReallifeGamemode.Client/assets/html/inventory/inventory.html b/ReallifeGamemode.Client/assets/html/inventory/inventory.html new file mode 100644 index 00000000..bd4d2a7b --- /dev/null +++ b/ReallifeGamemode.Client/assets/html/inventory/inventory.html @@ -0,0 +1,874 @@ + + + + + + + Inventar + + + + + + + + + Rucksack + Fahrzeug + Handel + Handeln + Anfrage + Zurück + + + + + + + + + Bestätigen + Schließen + + + + + Zum handeln transferieren + Schließen + Zum Fahrzeug transferieren + + + + + 0 / 40 KilogrammRucksack + + + + + + + + + 0 / 250 KilogrammFahrzeug + + + Zum Rucksack transferieren + Schließen + + + + + + + + + + + + Bestätigen + Schließen + + + + Senden + + 0 KilogrammHandeln + + + + + + + + + 0 KilogrammAnfrage + + + + + + + + + + + + + + + diff --git a/ReallifeGamemode.Client/assets/html/inventory/vehicle/index.html b/ReallifeGamemode.Client/assets/html/inventory/vehicle/index.html deleted file mode 100644 index 87015609..00000000 --- a/ReallifeGamemode.Client/assets/html/inventory/vehicle/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - Inventory - - - - - - - - - - - - - Inventar - 0/45kg - - - - - Benutzen - Wegwerfen - Fahrzeug - - - - - Kofferraum - 0/250kg - - - - - - - - Bestätigen - - - - - - - \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/html/inventory/vehicle/script.js b/ReallifeGamemode.Client/assets/html/inventory/vehicle/script.js deleted file mode 100644 index f46ec630..00000000 --- a/ReallifeGamemode.Client/assets/html/inventory/vehicle/script.js +++ /dev/null @@ -1,608 +0,0 @@ - -$(document).ready(function () { - - //fire functions before page load - drawToKofferraum(); - drawToPage(); - moveItemsInv(); - mp.trigger("CEF:BrowserLoadedVehicle"); - console.log("loading finished"); - -}); -var vehID; - -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]); - } - } -} - -function setVehItems(itemIdArr1, itemAmountArr1, vehID1) { - vehID = vehID1; - 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.addToVehInv(itemIdArr[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 addToVehInvenotry(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 = 24; 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 >= 250) { - return; - } - - //Adds item to inventory - for (var i = 24; i < playerInventory.length; i++) { - if (unfininshedStack != undefined) { - if (playerInventory[unfininshedStack].amount + cloneItem.amount <= 30) { - playerInventory[unfininshedStack].amount += cloneItem.amount; - unfininshedStack = undefined; - drawToKofferraum(); - moveItemsInv(); - break; - } - else if (playerInventory[unfininshedStack].amount + cloneItem.amount > 30) { - var stackRemainder = 30 - playerInventory[unfininshedStack].amount; - playerInventory[unfininshedStack].amount += stackRemainder; - cloneItem.amount -= stackRemainder; - var recycleCloned = cloneItem; - addToInvenotry(recycleCloned); - unfininshedStack = undefined; - drawToKofferraum(); - moveItemsInv(); - break; - } - } - else if (cloneItem.amount > 30 && playerInventory[i].object === 'false') { - var reduceCloneAmount = Object.assign({}, cloneItem); - reduceCloneAmount.amount = 30; - playerInventory[i] = reduceCloneAmount; - cloneItem.amount -= 30; - addToInvenotry(cloneItem); - drawToKofferraum(); - moveItemsInv(); - break; - } - else if (unfininshedStack == undefined && playerInventory[i].object === 'false') { - playerInventory[i] = cloneItem; - drawToKofferraum(); - moveItemsInv(); - break; - } - } -} - -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 && currentSelected < 24) { - - var hItem = this.getAttribute('data-value'); - var iItem = currentSelected; - var Copy = Object.assign({}, playerInventory[iItem]); - playerInventory.splice(hItem, 0, Copy); - - if (playerInventory[currentSelected].stackable === 'false') { - playerInventory[hItem].amount = playerInventory[iItem].amount; - playerInventory[iItem] = EmptySlot; - } else { - $(".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(); - drawToKofferraum(); - currentSelected = undefined; - getItemSlotData = document.getElementsByClassName('itemSlot'); - moveItemsInv(); - $(".Betrag").hide(); - saveAllItems(); - }); - } - return; - } else { - var swap = playerInventory[this.getAttribute('data-value')]; - playerInventory[this.getAttribute('data-value')] = playerInventory[currentSelected]; - playerInventory[currentSelected] = swap; - drawToPage(); - drawToKofferraum(); - 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') { - $(".Betrag").show(); - $("#tf_submitZahl").click(function () { - playerInventory[this.getAttribute('data-value')].amount += playerInventory[currentSelected].amount - playerInventory[currentSelected] = EmptySlot; - drawToPage(); - drawToKofferraum(); - currentSelected = undefined; - getItemSlotData = document.getElementsByClassName('itemSlot'); - moveItemsInv(); - $(".Betrag").hide(); - saveAllItems(); - }); - } - } - else { - this.className += ' selected'; - currentSelected = this.getAttribute('data-value'); - } - }); - } -} -//Inventar - -function saveAllItems() { - mp.trigger("CEF:saveItemsHelper", JSON.stringify(vehId)); - for (var i = 0; i < playerInventory.length; i++) { - if (playerInventory[i].object === 'true') { - mp.trigger("CEF:saveItems", JSON.stringify(playerInventory[i].itemId), JSON.stringify(playerInventory[i].amount), JSON.stringify(i)); - } - } - -} - - -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; - 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!') - 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("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(); -} -//Kofferraum - -function refreshAllCurrentKofItems() { - var remove = document.getElementById('kofContainer'); - while (remove.firstChild) remove.removeChild(remove.firstChild); -} - - -function fillOutEmptyInvKofferraum() { - for (var i = 24; i < 54; i++) { - if (!playerInventory[i]) { - playerInventory.push(EmptySlot); - drawToKofferraum(); - } - } -} -var vehWeightInv = 0; -function drawToKofferraum() { - refreshAllCurrentKofItems(); - vehWeightInv = 0; - for (var i = 24; i < playerInventory.length; i++) { - if (playerInventory[i].selected == 'true') { - var className = ' selected'; - } - else { - var className = ''; - } - - if (i >= 54) { - //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("kofContainer").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); - - vehWeightInv += playerInventory[i].currentWeight * playerInventory[i].amount; - document.getElementById('vehGewicht').innerText = Math.round(weightInv * 100) / 100 + "/250 kg"; - } - } - } - fillOutEmptyInvKofferraum(); -} - -/////////////////// -// Dev Commands // -/////////////////// - -var commands = { - addToPlayerInv: function (itemGiveId) { - for (var i = 0; i < allItems.length; i++) { - if (allItems[i].itemId === itemGiveId) { - addToInvenotry(allItems[i]); - } - } - }, - addToVehInv: function(itemGiveId) { - for (var i = 0; i < allItems.length; i++) { - if (allItems[i].itemId === itemGiveId) { - addToVehInvenotry(allItems[i]); - } - } - }, - clearPlayerInv: function () { - playerInventory = []; - drawToPage(); - drawToKofferraum(); - }, -} - -//Handel Akzeptierenfenster - - -var trade = 1; -$("#Fahrzeug").click(function () { - if (trade == 1) { - $(".fahrzeugWrapper").show(); - drawToKofferraum(); - drawToPage(); - - moveItemsInv(); - trade = 0; - } else { - $(".fahrzeugWrapper").hide(); - trade = 1; - } - currentSelected = undefined; -}); diff --git a/ReallifeGamemode.Client/assets/html/inventory/vehicle/style.css b/ReallifeGamemode.Client/assets/html/inventory/vehicle/style.css deleted file mode 100644 index 5121bfd8..00000000 --- a/ReallifeGamemode.Client/assets/html/inventory/vehicle/style.css +++ /dev/null @@ -1,360 +0,0 @@ -/* *** FOR TESTING ONLY *** */ -.greyFont { - color: gray; - font-size: 14px; - width: 250px; -} - -body { - overflow: hidden; - font-family: 'Roboto', sans-serif; - font-weight: 500; - color: #222; - margin: 0; - padding: 0; -} - -/* buttons */ -#buttonbenutzen { - background-color: #4CAF50; /* gruen */ - border: none; - color: white; - padding: 12px 24px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - position: relative; - left: 1.5%; -} -#buttonwegwerfen { - background-color: #f44336; /* rot */ - border: none; - color: white; - padding: 12px 24px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - position: relative; - left: 1.5%; -} -#buttonhandeln { - background-color: #008CBA; /* blau */ - border: none; - color: white; - padding: 12px 24px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - position: relative; - left: 1.5%; -} -#buttonablehnen { - background-color: #f44336; /* rot */ - border: none; - color: white; - padding: 12px 24px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - position: relative; - left: 18%; -} -#buttonakzeptieren { - background-color: #008CBA; /* blau */ - border: none; - color: white; - padding: 12px 24px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - position: relative; - left: 18%; -} -#Fahrzeug { - background-color: #008CBA; /* blau */ - border: none; - color: white; - padding: 12px 24px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - position: relative; - left: 1.5%; -} - -button { - width: 125px; - background-color: lightGrey; - padding: 5px; - margin: 2px 0px; - border: none; - cursor: pointer; -} - -button:hover { - background-color: grey; -} - -h2 { - font-family: 'Roboto', sans-serif; - font-weight: 700; - font-size: 18px; - color: white; - margin:5px; - padding: 5px; - border: 1px solid #808080; - width: 20.75em; -} -.box1 { - float: left; - width: 50%; -} -.box2 { - - padding: 2px; - padding-bottom:30px; - - } - -h4 { - font-family: 'Roboto', sans-serif; - font-weight: 700; - font-size: 18px; - color: white; - margin:5px; - padding: 5px; - text-align:right; - border: none; -} - -.pakWrapper { - background: rgba(0,0,0,0.4); - height: 170px; - width: 394px; - display: block; - padding: 5px; - position: absolute; - left: 38%; - top: 35%; -} - -.pInvWrapper { - background: rgba(0,0,0,0.6); - height: 395px; - width: 394px; - display: block; - padding: 5px; - position: absolute; - left: 10%; -} - -.pKofWrapper { - background: rgba(0,0,0,0.6); - height: 395px; - width: 394px; - display: block; - padding: 5px; - position: absolute; - left: 40%; - -} - -.fahrzeugWrapper { - background: rgba(0,0,0,0.6); - height: 395px; - width: 394px; - display: block; - padding: 5px; - position: absolute; - left: 40%; - top: 50%; -} - -#invContainer{ - width: 110%; - height: auto; -} - -#invContainer h3 { - padding: 0px 10px; -} - -#kofContainer{ - width: 110%; - height: auto; -} - -#kofContainer h3 { - padding: 0px 10px; -} - -#fahrzeugContainer{ - width: 110%; - height: auto; -} - -#fahrzeugContainer h3 { - padding: 0px 10px; -} - -.itemSlot { - width: 54px; - height: 54px; - margin: 5px; - float: left; - border: 1px solid #808080; - border-radius: 5px; - position: relative; - cursor: pointer; -} - -.itemSlot:hover { - border: 1px solid #999999; -} - -.itemAmount p { - color: white; - font-family: 'Roboto', sans-serif; - font-weight: 700; - text-shadow: 0px 0px 2px black; - position: absolute; - top: 16px; - left: 4px; -} - - -.selected { - box-shadow: 0px 0px 6px white; - border: 1px solid yellow; -} - -.common { - box-shadow: 0 0 2px 1px white inset; -} - -.common h3 { - color: white; - text-shadow: 0 0 0 1px black; -} - -.uncommon { - box-shadow: 0 0 2px 1px #3333ff inset; -} - -.uncommon h3 { - color: #3333ff; - text-shadow: 0 0 0 1px black; -} - -.rare { - box-shadow: 0 0 2px 1px #66ff33 inset; -} - -.rare h3 { - color: #66ff33; - text-shadow: 0 0 0 1px black; -} - -.superior { - box-shadow: 0 0 3px 1px #990099 inset; -} - -.superior h3 { - color: #990099; - text-shadow: 0px 0px 1px black; -} - -.mythic { - box-shadow: 0 0 3px 1px #ffa333 inset; -} - -.mythic h3 { - color: #ffa333; - text-shadow: 0px 0px 1px black; -} - -.pForgeWrapper { - background: #222; - height: 176px; - width: 330px; - display: block; - padding: 5px; - position: absolute; - left: 0; - top: 0; -} - -/*item description */ -.itemSlot:hover > .itemDesc { - display: block; -} - -.itemDesc { - width: 250px; - height: auto; - top: 60px; - border: 1px solid #808080; - border-radius: 5px; - background: #1a1a1a; - position: absolute; - display: none; - z-index: 9999; -} - -.itemDesc p{ - color: white; -} -/*Handelfenster */ -.Betrag { - background: rgba(0,0,0,0.6); - height: 100%; - width: 100%; - display: block; - transform: translate(-50%, -50%); - position: absolute; - left: 50%; - top: 50%; -} - -#tf_betrag { - background-color: #008CBA; /* blau */ - border: none; - height: 30px; - width: 124px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - font-color: white; - position: relative; - left: 1.5%; - color:#ffffff; -} -::placeholder { - color: white; - opacity: 1; -} -#tf_submit { - background-color: #008CBA; /* blau */ - border: none; - height: 32px; - width: 124px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - font-color: white; - position: relative; - left: 1.5%; - color:#ffffff; -} - - - -/* tasks */ \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/js/inventory/script.js b/ReallifeGamemode.Client/assets/js/inventory/script.js deleted file mode 100644 index 5ce4699a..00000000 --- a/ReallifeGamemode.Client/assets/js/inventory/script.js +++ /dev/null @@ -1,619 +0,0 @@ - - -$(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); - } - } - } - } -} - diff --git a/ReallifeGamemode.Client/inventory/inventory.ts b/ReallifeGamemode.Client/inventory/inventory.ts index 004186c7..c7877470 100644 --- a/ReallifeGamemode.Client/inventory/inventory.ts +++ b/ReallifeGamemode.Client/inventory/inventory.ts @@ -5,34 +5,24 @@ export default function inventory(globalData: GlobalData): void { var invBrowser: BrowserMp = null; var itemIdArr; var itemAmountArr; - var vehItemIdArr; - var vehItemAmountArr; - var money; - var vehId; + var invWeight; + var itemNameArr; - mp.events.add("openTradeWindow", (money1, itemIdArr1, itemAmountArr1) => { - if (!globalData.InMenu) { - if (invBrowser !== null) { - try { - invBrowser.destroy() - invBrowser = null; - } finally { - mp.gui.cursor.show(false, false); - } - return; - } - mp.gui.cursor.show(true, true); - invBrowser = mp.browsers.new("package://assets/html/inventory/handel/handelakzeptieren.html"); + var ivehArr; - itemIdArr = itemIdArr1; - itemAmountArr = itemAmountArr1; - money = money1; - - } - }); + var Players; - mp.events.add('vehInventoryShow', (itemIdArr1, itemAmountArr1, vehItemIdArr1, vehItemAmountArr1, vehId1) => { + mp.events.add('setVehiclesInventory', (vehInvArr) => { + ivehArr = vehInvArr; + invBrowser.execute(`setVehiclesInv('${JSON.stringify(ivehArr)}');`); + }); + + mp.events.add('showVehInventory', () => { + invBrowser.execute(`execVehInv();`); + }); + + mp.events.add('inventoryShow', (iWeight, iNameArr, iAmountArr, iIdArr, playersArr) => { if (!globalData.InMenu) { if (invBrowser !== null) { try { @@ -46,53 +36,53 @@ export default function inventory(globalData: GlobalData): void { } mp.gui.cursor.show(true, true); - invBrowser = mp.browsers.new("package://assets/html/inventory/vehicle/index.html"); - itemIdArr = itemIdArr1; - itemAmountArr = itemAmountArr1; - vehItemIdArr = vehItemIdArr1; - vehItemAmountArr = vehItemAmountArr1; - vehId = vehId1; + Players = playersArr; + itemIdArr = iIdArr; + itemAmountArr = iAmountArr; + itemNameArr = iNameArr; + invWeight = iWeight; + invBrowser = mp.browsers.new("package://assets/html/inventory/inventory.html"); } }); - mp.events.add('inventoryShow', (itemIdArr1, itemAmountArr1) => { - if (!globalData.InMenu) { - if (invBrowser !== null) { - try { - invBrowser.destroy() - invBrowser = null; - } - finally { - mp.gui.cursor.show(false, false); - } - return; - } - - mp.gui.cursor.show(true, true); - invBrowser = mp.browsers.new("package://assets/html/inventory/index.html"); - - itemIdArr = itemIdArr1; - itemAmountArr = itemAmountArr1; + mp.events.addDataHandler("tradeOffer", (entity, value) => { + if (entity.type === "player") { + let offer = parseInt(value); + invBrowser.execute(`changeTradeStatus('${JSON.stringify(offer)}')`); } }); + + mp.events.add("addTradeItems", (itemId, itemAmount, itemName, weight) => { + invBrowser.execute(`setAnfrage('${JSON.stringify(itemId)}','${JSON.stringify(itemAmount)}','${JSON.stringify(itemName)}','${JSON.stringify(weight)}');`); + }); + + mp.events.add("CEF:saveVehicleTransfer", (val, jsonOrigin, jsonInvID, jsonInvAmount, jsonVehAmount) => { + if (val == 0) { + mp.events.callRemote('saveInventory', jsonInvID, jsonInvAmount, jsonOrigin, jsonVehAmount); + } else if(val == 1){ + mp.events.callRemote('saveVehicleInventory', jsonInvID, jsonInvAmount, jsonOrigin, jsonVehAmount); + } + + }); + mp.events.add("CEF:invThrowItem", (itemId, amount) => { mp.events.callRemote('invThrowItem', itemId, amount); }); - - mp.events.add("CEF:BrowserLoaded", () => { - invBrowser.execute(`setItems("${JSON.stringify(itemIdArr)}","${JSON.stringify(itemAmountArr)}");`); - }); - mp.events.add("CEF:BrowserLoadedTrade", () => { - invBrowser.execute(`setItems("${JSON.stringify(itemIdArr)}","${JSON.stringify(itemAmountArr)}","${JSON.stringify(money)}");`); - }); - mp.events.add("CEF:BrowserLoadedVehicle", () => { - invBrowser.execute(`setItems("${JSON.stringify(itemIdArr)}","${JSON.stringify(itemAmountArr)}");`); - invBrowser.execute(`setVehItems("${JSON.stringify(vehItemIdArr)}","${JSON.stringify(vehItemAmountArr)}","${JSON.stringify(vehId)}");`); + mp.events.add("CEF:throwItem", (type, amount, id) => { + mp.events.callRemote("itemInteract", type, amount, id); }); - + mp.events.add("CEF:InventoryLoaded", () => { + invBrowser.execute(`setItems('${JSON.stringify(itemNameArr)}','${JSON.stringify(itemIdArr)}','${JSON.stringify(itemAmountArr)}','${JSON.stringify(Players)}');`); + invBrowser.execute(`setWeight('${JSON.stringify(invWeight)}');`); + }); + + + mp.events.add("CEF:getNearVehicles", () => { + mp.events.callRemote('getNearVehicles'); + }); mp.events.add("CEF:acceptTrade", () => { if (invBrowser !== null) { diff --git a/ReallifeGamemode.Server/Entities/VehicleInventory.cs b/ReallifeGamemode.Server/Entities/VehicleInventory.cs new file mode 100644 index 00000000..b06e3543 --- /dev/null +++ b/ReallifeGamemode.Server/Entities/VehicleInventory.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace ReallifeGamemode.Server.Entities +{ + public class VehicleInventory + { + public int ID; + public int currentWeight; + public int totalWeight; + public string[] ivehName; + public int[] ivehAmount; + public int[] ivehId; + + + } +} diff --git a/ReallifeGamemode.Server/Events/Inventory.cs b/ReallifeGamemode.Server/Events/Inventory.cs new file mode 100644 index 00000000..9a859d07 --- /dev/null +++ b/ReallifeGamemode.Server/Events/Inventory.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using GTANetworkAPI; +using ReallifeGamemode.Server.Entities; +using ReallifeGamemode.Server.Extensions; +using ReallifeGamemode.Server.Inventory.Interfaces; +using ReallifeGamemode.Server.Managers; +using ReallifeGamemode.Server.Models; +using ReallifeGamemode.Server.Util; + +namespace ReallifeGamemode.Server.Events +{ + public class Inventory : Script + { + [RemoteEvent("getNearVehicles")] + public void SrvEvent_GetNearVehicles(Client client) + { + var user = client.GetUser(); + var inventoryWeight = 0; + List vehicleInventory = new List(); + if (!client.IsInVehicle) + { + using (var context = new DatabaseContext()) + { + foreach (Vehicle veh in NAPI.Pools.GetAllVehicles()) + { + List iName = new List(); + List iAmount = new List(); + List iId = new List(); + inventoryWeight = 0; + int vehID = 0; + + if (veh.Position.DistanceTo(client.Position) < 2) + { + if (VehicleStreaming.GetDoorState(veh, DoorID.DoorTrunk) == DoorState.DoorOpen) + { + ServerVehicle serverVehicle = VehicleManager.GetServerVehicleFromVehicle(veh, context); + List vehicleItems = context.VehicleItems.ToList().FindAll(i => i.VehicleId == serverVehicle.Id); + foreach (var vehItem in vehicleItems) + { + IItem iItem = InventoryManager.GetItemById(vehItem.ItemId); + var currentItemWeight = iItem.Gewicht * vehItem.Amount; + inventoryWeight += currentItemWeight; + + iName.Add(iItem.Name); + iAmount.Add(vehItem.Amount); + iId.Add(iItem.Id); + vehID = vehItem.VehicleId; + } + var vehInv = new VehicleInventory + { + ID = vehID, + currentWeight = inventoryWeight, + totalWeight = 250, + ivehName = iName.ToArray(), + ivehAmount = iAmount.ToArray(), + ivehId = iId.ToArray() + }; + vehicleInventory.Add(vehInv); + } + } + } + } + client.TriggerEvent("setVehiclesInventory", vehicleInventory.ToArray()); + } + } + } +} diff --git a/ReallifeGamemode.Server/Events/Key.cs b/ReallifeGamemode.Server/Events/Key.cs index 11dd5777..59a83104 100644 --- a/ReallifeGamemode.Server/Events/Key.cs +++ b/ReallifeGamemode.Server/Events/Key.cs @@ -134,6 +134,8 @@ namespace ReallifeGamemode.Server.Events { if (!player.IsLoggedIn()) return; var user = player.GetUser(); + + if (user?.FactionId != null) { DutyPoint nearestDuty = PositionManager.DutyPoints.Find(d => d.Position.DistanceTo(player.Position) <= 1.5 && d.FactionId == user.FactionId); @@ -294,7 +296,7 @@ namespace ReallifeGamemode.Server.Events public void KeyPressI(Client player) { if (!player.IsLoggedIn()) return; - ManagerOfInventory.GetUserItems(player); + InventoryManager.GetUserItems(player); } [RemoteEvent("keyPress:O")] @@ -384,10 +386,9 @@ namespace ReallifeGamemode.Server.Events { if (!player.IsLoggedIn()) return; - if (player.HasData("inTrade") && player.GetData("inTrade") == true) + if (!player.IsInVehicle) { - ManagerOfInventory.OpenTradeAccept(player); - return; + GroundItem.PickUpGroundItem(player); } if (player.IsInVehicle && player.VehicleSeat == -1) diff --git a/ReallifeGamemode.Server/Inventory/GroundItem.cs b/ReallifeGamemode.Server/Inventory/GroundItem.cs index 9737783a..84949ec6 100644 --- a/ReallifeGamemode.Server/Inventory/GroundItem.cs +++ b/ReallifeGamemode.Server/Inventory/GroundItem.cs @@ -108,3 +108,4 @@ namespace ReallifeGamemode.Server.Inventory } } } + diff --git a/ReallifeGamemode.Server/Inventory/Items/Aal.cs b/ReallifeGamemode.Server/Inventory/Items/Aal.cs index bb2bc96d..9c5c4fd4 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Aal.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Aal.cs @@ -14,8 +14,8 @@ namespace ReallifeGamemode.Server.Inventory.Items public class Aal : DropItem { public override int Id => 6; - public override string Name => "Kraftstoff"; - public override string Description => "Der Stoff gibt dir Kraft."; + public override string Name => "Aal"; + public override string Description => "Ein Fisch"; public override int Gewicht => 3600; public override string Einheit => "g"; public override int HpAmount => 20; diff --git a/ReallifeGamemode.Server/Inventory/Items/Barsch.cs b/ReallifeGamemode.Server/Inventory/Items/Barsch.cs index 84335ba7..a4566abc 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Barsch.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Barsch.cs @@ -14,8 +14,8 @@ namespace ReallifeGamemode.Server.Inventory.Items public class Barsch : DropItem { public override int Id => 7; - public override string Name => "Kraftstoff"; - public override string Description => "Der Stoff gibt dir Kraft."; + public override string Name => "Barsch"; + public override string Description => "Ein Fisch"; public override int Gewicht => 2600; public override string Einheit => "g"; public override int HpAmount => 20; diff --git a/ReallifeGamemode.Server/Inventory/Items/Cannabis.cs b/ReallifeGamemode.Server/Inventory/Items/Cannabis.cs index 1cfcb2ee..62e1ed3c 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Cannabis.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Cannabis.cs @@ -18,6 +18,6 @@ namespace ReallifeGamemode.Server.Inventory.Items public string Description => "puff puff and pass"; public int Gewicht => 50; public string Einheit => "g"; - public uint Object => 1805779401; + public uint Object => 3076948544; } } diff --git a/ReallifeGamemode.Server/Inventory/Items/Kraftstoff.cs b/ReallifeGamemode.Server/Inventory/Items/Flunder.cs similarity index 86% rename from ReallifeGamemode.Server/Inventory/Items/Kraftstoff.cs rename to ReallifeGamemode.Server/Inventory/Items/Flunder.cs index 466f3892..1d81254c 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Kraftstoff.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Flunder.cs @@ -11,11 +11,11 @@ using System.Text; namespace ReallifeGamemode.Server.Inventory.Items { - public class Kraftstoff : DropItem + public class Flunder : DropItem { public override int Id => 5; public override string Name => "Flunder"; - public override string Description => "ja"; + public override string Description => "Ein Fisch"; public override int Gewicht => 7700; public override string Einheit => "g"; public override int HpAmount => 20; diff --git a/ReallifeGamemode.Server/Inventory/Items/Lachs.cs b/ReallifeGamemode.Server/Inventory/Items/Lachs.cs index 35ee3b2e..b66ffc22 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Lachs.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Lachs.cs @@ -14,8 +14,8 @@ namespace ReallifeGamemode.Server.Inventory.Items public class Lachs : DropItem { public override int Id => 8; - public override string Name => "Kraftstoff"; - public override string Description => "Der Stoff gibt dir Kraft."; + public override string Name => "Lachs"; + public override string Description => "Du Lachs"; public override int Gewicht => 4200; public override string Einheit => "g"; public override int HpAmount => 20; diff --git a/ReallifeGamemode.Server/Inventory/Items/Thunfisch.cs b/ReallifeGamemode.Server/Inventory/Items/Thunfisch.cs index 390ffa87..4a365dde 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Thunfisch.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Thunfisch.cs @@ -14,8 +14,8 @@ namespace ReallifeGamemode.Server.Inventory.Items public class Thunfisch : DropItem { public override int Id => 9; - public override string Name => "Kraftstoff"; - public override string Description => "Der Stoff gibt dir Kraft."; + public override string Name => "Thunfisch"; + public override string Description => "Ein Fisch"; public override int Gewicht => 11000; public override string Einheit => "g"; public override int HpAmount => 20; diff --git a/ReallifeGamemode.Server/Inventory/Items/Zander.cs b/ReallifeGamemode.Server/Inventory/Items/Zander.cs index 99771c33..13ee6ce4 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Zander.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Zander.cs @@ -14,8 +14,8 @@ namespace ReallifeGamemode.Server.Inventory.Items public class Zander : DropItem { public override int Id => 10; - public override string Name => "Kraftstoff"; - public override string Description => "Der Stoff gibt dir Kraft."; + public override string Name => "Zander"; + public override string Description => "Ein Fisch"; public override int Gewicht => 5000; public override string Einheit => "g"; public override int HpAmount => 20; diff --git a/ReallifeGamemode.Server/Managers/InventoryManager.cs b/ReallifeGamemode.Server/Managers/InventoryManager.cs index 4e0e44d3..dd5417a6 100644 --- a/ReallifeGamemode.Server/Managers/InventoryManager.cs +++ b/ReallifeGamemode.Server/Managers/InventoryManager.cs @@ -6,7 +6,9 @@ using ReallifeGamemode.Server.Inventory; using ReallifeGamemode.Server.Inventory.Interfaces; using ReallifeGamemode.Server.Models; using ReallifeGamemode.Server.Services; +using ReallifeGamemode.Server.Util; using System; +using System.Timers; using System.Collections.Generic; using System.Linq; using System.Reflection; @@ -23,6 +25,11 @@ namespace ReallifeGamemode.Server.Managers { public static List itemList; + private static Dictionary TradeItems { get; set; } = new Dictionary(); + private static Dictionary TradeTimer { get; set; } = new Dictionary(); + private static Dictionary TradeValue { get; set; } = new Dictionary(); + + public static void LoadItems() { itemList = new List(); @@ -77,26 +84,36 @@ namespace ReallifeGamemode.Server.Managers { var user = player.GetUser(); var inventoryWeight = 0; + List iName = new List(); + List iAmount = new List(); + List iId = new List(); + List iWeight = new List(); using (var context = new DatabaseContext()) { List userItems = context.UserItems.ToList().FindAll(i => i.UserId == user.Id); - string[][] items = new string[userItems.Count][]; + + foreach (var item in userItems) { IItem iItem = GetItemById(item.ItemId); var currentItemWeight = iItem.Gewicht * item.Amount; inventoryWeight += currentItemWeight; - items[userItems.IndexOf(item)] = new string[6]; - items[userItems.IndexOf(item)][0] = iItem.Name; - items[userItems.IndexOf(item)][1] = iItem.Description; - items[userItems.IndexOf(item)][2] = iItem.Gewicht.ToString(); - items[userItems.IndexOf(item)][3] = item.Amount.ToString(); - items[userItems.IndexOf(item)][4] = item.Slot.ToString(); - items[userItems.IndexOf(item)][5] = item.Id.ToString(); + iName.Add(iItem.Name); + iAmount.Add(item.Amount); + iId.Add(iItem.Id); + } - player.TriggerEvent("showInventory", inventoryWeight, items); + List targetList = NAPI.Player.GetPlayersInRadiusOfPlayer(2, player); + List username = new List(); + foreach (var target in targetList) + { + User cl = target.GetUser(); + username.Add(cl.Name); + } + + player.TriggerEvent("inventoryShow", inventoryWeight, iName.ToArray(), iAmount.ToArray(), iId.ToArray(), username.ToArray()); } } @@ -155,43 +172,199 @@ namespace ReallifeGamemode.Server.Managers } } - [RemoteEvent("saveInventory")] - public void SavePlayerInventory(Client player, string itemArray) + public bool CheckOriginOfItem(Client client, string jsonItemID, string jsonItemAmount, string jsonOrigin, string jsonVehAmount) { + var origin = JsonConvert.DeserializeObject(jsonOrigin); + var itemID = JsonConvert.DeserializeObject(jsonItemID); + var itemAmount = JsonConvert.DeserializeObject(jsonItemAmount); + var vehAmount = JsonConvert.DeserializeObject(jsonVehAmount); + var user = client.GetUser(); + using (var context = new DatabaseContext()) + { + if (origin[0] == 1) + { + foreach (Vehicle veh in NAPI.Pools.GetAllVehicles()) + { + if (veh.Position.DistanceTo(client.Position) < 2) + { + if (VehicleStreaming.GetDoorState(veh, DoorID.DoorTrunk) == DoorState.DoorOpen) + { - var user = player.GetUser(); - var items = JsonConvert.DeserializeObject(itemArray); + UserItem vItem = new UserItem + { + Amount = vehAmount, + ItemId = itemID, + UserId = user.Id, + Slot = -1 + }; + + ServerVehicle serverVehicle = VehicleManager.GetServerVehicleFromVehicle(veh, context); + VehicleItem vehItem = context.VehicleItems.Where(v => v.VehicleId == origin[1] && v.ItemId == vItem.ItemId).FirstOrDefault(); + if (vehItem != null) + { + if (itemAmount < vehItem.Amount) + { + UserItem uItem = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == vItem.ItemId).FirstOrDefault(); + if (uItem == null) + { + context.Add(vItem); + } + else + { + uItem.Amount += vItem.Amount; + } + context.SaveChanges(); + return true; + } + else if (itemAmount == vehItem.Amount) + { + UserItem uItem = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == vItem.ItemId).FirstOrDefault(); + if (uItem == null) + { + context.Add(vItem); + } + else + { + uItem.Amount += vItem.Amount; + } + context.SaveChanges(); + return true; + } + return false; + } + } + } + } + } + else if (origin[0] == 0) + { + + VehicleItem cItem = new VehicleItem + { + Amount = vehAmount, + ItemId = itemID, + VehicleId = origin[1], + Slot = -1, + }; + + UserItem uItem = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == cItem.ItemId).FirstOrDefault(); + if (uItem != null) + { + if (vehAmount < uItem.Amount) + { + + VehicleItem vehItem = context.VehicleItems.Where(v => v.VehicleId == cItem.VehicleId && v.ItemId == cItem.ItemId).FirstOrDefault(); + if (vehItem == null) + { + context.Add(cItem); + } + else + { + vehItem.Amount += cItem.Amount; + } + context.SaveChanges(); + return true; + + + } + else if (vehAmount == uItem.Amount) + { + VehicleItem vehItem = context.VehicleItems.Where(v => v.VehicleId == cItem.VehicleId && v.ItemId == cItem.ItemId).FirstOrDefault(); + if (vehItem == null) + { + context.Add(cItem); + } + else + { + vehItem.Amount += cItem.Amount; + } + context.SaveChanges(); + return true; + } + return false; + } + } + return false; + } + } + + [RemoteEvent("saveVehicleInventory")] + public void SaveVehicleInventory(Client player, string jsonItemID, string jsonItemAmount, string jsonGotFrom, string vehAmount) + { + var itemID = JsonConvert.DeserializeObject(jsonItemID); + var itemAmount = JsonConvert.DeserializeObject(jsonItemAmount); + var origin = JsonConvert.DeserializeObject(jsonGotFrom); + + if (!CheckOriginOfItem(player, jsonItemID, jsonItemAmount, jsonGotFrom, vehAmount)) + return; using (var context = new DatabaseContext()) { - for (var i = 0; i < items.Length; i++) + + + VehicleItem vItem = new VehicleItem { + Amount = itemAmount, + ItemId = itemID, + VehicleId = origin[1], + Slot = -1 + }; + + VehicleItem vehItem = context.VehicleItems.Where(v => v.VehicleId == vItem.VehicleId && v.ItemId == vItem.ItemId).FirstOrDefault(); + if (vehItem == null) + { + context.VehicleItems.Add(vItem); + } + else if (vItem.Amount <= 0) + { + context.VehicleItems.Remove(vehItem); + } + else + { + vehItem.Amount = vItem.Amount; + } + context.SaveChanges(); + + } + } + + + [RemoteEvent("saveInventory")] + public void SavePlayerInventory(Client player, string jsonItemID,string jsonItemAmount, string jsonGotFrom, string vehAmount) + { + + var user = player.GetUser(); + var itemID = JsonConvert.DeserializeObject(jsonItemID); + var itemAmount = JsonConvert.DeserializeObject(jsonItemAmount); + + if (!CheckOriginOfItem(player,jsonItemID, jsonItemAmount,jsonGotFrom, vehAmount)) + return; + + using (var context = new DatabaseContext()) + { + UserItem cItem = new UserItem { - Amount = int.Parse(items[i][3]), - ItemId = GetItemByName(items[i][0]).Id, + Amount = itemAmount, + ItemId = itemID, UserId = user.Id, - Slot = int.Parse(items[i][4]), + Slot = -1, }; - - if (int.Parse(items[i][5]) == -1) + UserItem item = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == cItem.ItemId).FirstOrDefault(); + if (item == null) { context.UserItems.Add(cItem); } - else if (cItem.Slot == -1) - { - UserItem fItem = context.UserItems.FirstOrDefault(j => j.Id == int.Parse(items[i][5])); - context.UserItems.Remove(fItem); + else if (cItem.Amount <= 0) + { + context.UserItems.Remove(item); } else { - UserItem fItem = context.UserItems.FirstOrDefault(j => j.Id == int.Parse(items[i][5])); - fItem.Amount = cItem.Amount; - fItem.Slot = cItem.Slot; + item.Amount = cItem.Amount; } - } + context.SaveChanges(); - player.TriggerEvent("SERVER:INVENTORY_SYNC"); } } @@ -230,7 +403,7 @@ namespace ReallifeGamemode.Server.Managers } [RemoteEvent("removeItemAsAdmin")] - public void SavePlayerInventory(Client player, string amount, string userItemId, string targetPlayerName) + public void RemoveAsAdminInventory(Client player, string amount, string userItemId, string targetPlayerName) { using (var context = new DatabaseContext()) { @@ -253,12 +426,20 @@ namespace ReallifeGamemode.Server.Managers context.SaveChanges(); } } + + [RemoteEvent("itemInteract")] - public void ItemInteract(Client player, string type, string itemId, int amount) + public void ItemInteract(Client player, string jsonType, string jsonItemId, string jsonAmount) { + int amount = JsonConvert.DeserializeObject(jsonAmount); + int itemId = JsonConvert.DeserializeObject(jsonItemId); + string type = JsonConvert.DeserializeObject(jsonType); + + User user = player.GetUser(); + using (var context = new DatabaseContext()) { - UserItem fItem = context.UserItems.FirstOrDefault(j => j.Id == int.Parse(itemId)); + UserItem fItem = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == itemId).FirstOrDefault(); IItem iItem = GetItemById(fItem.ItemId); switch (type) @@ -282,7 +463,7 @@ namespace ReallifeGamemode.Server.Managers usableItemObj.Use(fItem); player.TriggerEvent("removeItem", itemId, amount); } - else ChatService.SendMessage(player, "not useable"); + else ChatService.SendMessage(player, "Du kannst dieses Item nicht benutzen."); break; case "drop": @@ -308,13 +489,246 @@ namespace ReallifeGamemode.Server.Managers GroundItem grndItem = new GroundItem { ItemId = iItem.Id, Amount = amount, Position = dropPosition }; TextLabel grndTxtLbl = NAPI.TextLabel.CreateTextLabel(iItem.Name + " ~s~(~y~" + amount + "~s~)", dropPosition, 5, 0.5f, 4, new Color(255, 255, 255), false, 0); GroundItem.AddGroundItem(grndItem, grndObject, grndTxtLbl); - fItem.Amount -= amount; - player.TriggerEvent("removeItem", itemId, amount); + if(fItem.Amount > amount) + { + fItem.Amount -= amount; + }else if(fItem.Amount == amount) + { + context.UserItems.Remove(fItem); + } + } break; } context.SaveChanges(); } } + + + [RemoteEvent("tradeItem")] + public void ServerEvent_tradeItem(Client client, int value, string nameOrId, string itemIdArrStr, string itemAmountArrStr) + { + User user = client.GetUser(); + Client target = ClientService.GetClientByNameOrId(nameOrId); + if (target == null || !target.IsLoggedIn() || target == client) + { + ChatService.PlayerNotFound(client); + return; + } + if (client.Position.DistanceTo(target.Position) >= 5) + { + ChatService.ErrorMessage(client, "Spieler ist zu weit entfernt."); + return; + } + int[] itemIdArr = JsonConvert.DeserializeObject(itemIdArrStr); + int[] itemAmountArr = JsonConvert.DeserializeObject(itemAmountArrStr); + List itemNameList = new List(); + + + if (target.HasData("inTrade") && target.GetData("inTrade") == true) + { + ChatService.SendMessage(client, $"~r~[FEHLER] ~w~{target.Name} befindet sich bereits in einem Handel."); + return; + } + int inventoryWeight = 0; + using (var context = new DatabaseContext()) + { + int targetInvWeight = GetUserInventoryWeight(target); + + for (int i = 0; i < itemIdArr.Length; i++) + { + int itemId = itemIdArr[i]; + int itemAmount = itemAmountArr[i]; + UserItem uitem = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == itemId).FirstOrDefault(); + IItem iItem = GetItemById(uitem.ItemId); + var currentItemWeight = iItem.Gewicht * itemAmount; + inventoryWeight += currentItemWeight; + } + if (((targetInvWeight + inventoryWeight) / 1000) > 40) + { + ChatService.ErrorMessage(client, "Handel kann nicht getätigt werden."); + return; + } + + for (int x = 0; x < itemIdArr.Length; x++) + { + int itemId = itemIdArr[x]; + int itemAmount = itemAmountArr[x]; + UserItem item = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == itemId).FirstOrDefault(); + if (item.Amount - itemAmount > 0) + { + item.Amount -= itemAmount; + } + else + { + context.UserItems.Remove(item); + } + IItem iItem = GetItemById(itemId); + itemNameList.Add(iItem.Name); + context.SaveChanges(); + } + } + ChatService.SendMessage(client, $"~b~Du hast eine Handelsanfrage an {target.Name} gesendet."); + TradeItems[user.Id] = (itemIdArr, itemAmountArr); + TradeValue[user.Id] = value; + target.SetData("tradePartner", user.Id); + target.SetData("trade", client.Name); + SendTradeOffer(target, client); + target.TriggerEvent("addTradeItems", itemIdArr, itemAmountArr, itemNameList.ToArray(), inventoryWeight); + } + + public void SendTradeOffer(Client client, Client sender) + { + client.SetData("inTrade", true); + sender.SetData("inTrade", true); + ChatService.SendMessage(client, $"~b~ Du hast eine Handelsanfrage von {sender.Name} bekommen."); + client.SetSharedData("tradeOffer", 1); + User user = sender.GetUser(); + Timer tradeTimer = new Timer(30000); + TradeTimer[user.Id] = tradeTimer; + tradeTimer.Start(); + tradeTimer.Elapsed += (s, e) => { SendBackToSender(sender); client.SetData("inTrade", false); sender.SetData("inTrade", false); client.SetSharedData("tradeOffer", 0); }; + } + + public void SendBackToSender(Client client) + { + User user = client.GetUser(); + ChatService.SendMessage(client, "Dein Handelspartner hat die Anfrage nicht angenommen."); + (int[] itemIdArr, int[] itemAmountArr) = TradeItems[user.Id]; + Timer timer = TradeTimer[user.Id]; + timer.Stop(); + using (var context = new DatabaseContext()) + { + for (int x = 0; x < itemIdArr.Length; x++) + { + int itemId = itemIdArr[x]; + int itemAmount = itemAmountArr[x]; + UserItem item = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == itemId).FirstOrDefault(); + if (item != null) + { + item.Amount += itemAmount; + } + else + { + var newItem = new UserItem + { + ItemId = itemId, + UserId = user.Id, + Amount = itemAmount, + Slot = -1 + }; + + context.UserItems.Add(newItem); + } + context.SaveChanges(); + } + } + } + + [RemoteEvent("declineTrade")] + public void ServerEvent_declineTrade(Client client) + { + client.SetSharedData("tradeOffer", 0); + if (!client.GetData("inTrade")) + { + ChatService.ErrorMessage(client, "Das Handelsangebot ist abgelaufen."); + return; + } + string name = client.GetData("trade"); + Client target = ClientService.GetClientByNameOrId(name); + if (target == null || !target.IsLoggedIn()) + { + ChatService.PlayerNotFound(client); + return; + } + + client.SetData("inTrade", false); + target.SetData("inTrade", false); + SendBackToSender(target); + } + + public static void OpenTradeAccept(Client client) + { + User user = client.GetUser(); + int id = client.GetData("tradePartner"); + (int[] itemIdArr, int[] itemAmountArr) = TradeItems[id]; + Timer tradeTimer = TradeTimer[id]; + tradeTimer.Stop(); + tradeTimer.Start(); + client.TriggerEvent("openTradeWindow", TradeValue[id], itemIdArr, itemAmountArr); + } + + [RemoteEvent("acceptTrade")] + public void ServerEvent_AcceptTrade(Client client) + { + if (!client.GetData("inTrade")) + { + ChatService.ErrorMessage(client, "Das Handelsangebot ist abgelaufen."); + return; + } + client.SetSharedData("tradeOffer", 0); + client.SetData("inTrade", false); + + User user = client.GetUser(); + int id = client.GetData("tradePartner"); + (int[] itemIdArr, int[] itemAmountArr) = TradeItems[id]; + Timer tradeTimer = TradeTimer[id]; + tradeTimer.Stop(); + string name = client.GetData("trade"); + Client target = ClientService.GetClientByNameOrId(name); + if (target == null || !target.IsLoggedIn()) + { + ChatService.PlayerNotFound(client); + return; + } + target.SetData("inTrade", false); + + using (var context = new DatabaseContext()) + { + + int targetInvWeight = GetUserInventoryWeight(client); + int inventoryWeight = 0; + for (int i = 0; i < itemIdArr.Length; i++) + { + int itemId = itemIdArr[i]; + int itemAmount = itemAmountArr[i]; + UserItem uitem = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == itemId).FirstOrDefault(); + IItem iItem = GetItemById(uitem.ItemId); + var currentItemWeight = iItem.Gewicht * itemAmount; + inventoryWeight += currentItemWeight; + } + if (((targetInvWeight + inventoryWeight) / 1000) > 40) + { + ChatService.ErrorMessage(client, "Handel kann nicht getätigt werden."); + return; + } + + for (int x = 0; x < itemIdArr.Length; x++) + { + int itemId = itemIdArr[x]; + int itemAmount = itemAmountArr[x]; + UserItem item = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == itemId).FirstOrDefault(); + if (item != null) + { + item.Amount += itemAmount; + } + else + { + var newItem = new UserItem + { + ItemId = itemId, + UserId = user.Id, + Amount = itemAmount, + Slot = -1 + }; + + context.UserItems.Add(newItem); + } + context.SaveChanges(); + } + } + ChatService.SendMessage(target, $"{client.Name} hat deine Anfrage angenommen."); + + } } } diff --git a/ReallifeGamemode.Server/Managers/ManagerOfInventory.cs b/ReallifeGamemode.Server/Managers/ManagerOfInventory.cs deleted file mode 100644 index 841dd2bb..00000000 --- a/ReallifeGamemode.Server/Managers/ManagerOfInventory.cs +++ /dev/null @@ -1,368 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Timers; -using GTANetworkAPI; -using Newtonsoft.Json; -using ReallifeGamemode.Server.Entities; -using ReallifeGamemode.Server.Extensions; -using ReallifeGamemode.Server.Models; -using ReallifeGamemode.Server.Services; -using ReallifeGamemode.Server.Util; - -namespace ReallifeGamemode.Server.Managers -{ - class ManagerOfInventory : Script - { - private static Dictionary TradeItems { get; set; } = new Dictionary(); - private static Dictionary TradeTimer { get; set; } = new Dictionary(); - private static Dictionary TradeValue { get; set; } = new Dictionary(); - - public static void GetUserItems(Client client) - { - User user = client.GetUser(); - - List ItemId = new List(); - List amount = new List(); - List vehItemId = new List(); - List vehAmount = new List(); - using (var context = new DatabaseContext()) - { - List userItems = context.UserItems.ToList().FindAll(i => i.UserId == user.Id); - foreach (var item in userItems) - { - ItemId.Add(item.ItemId); - amount.Add(item.Amount); - } - foreach(Vehicle veh in NAPI.Pools.GetAllVehicles()) - { - if(veh.Position.DistanceTo(client.Position) < 1) - { - if (VehicleStreaming.GetDoorState(veh, DoorID.DoorTrunk) == DoorState.DoorOpen) - { - ServerVehicle serverVehicle = VehicleManager.GetServerVehicleFromVehicle(veh, context); - List vehicleItems = context.VehicleItems.ToList().FindAll(i => i.VehicleId == serverVehicle.Id); - foreach (var vehItem in vehicleItems) - { - vehItemId.Add(vehItem.ItemId); - vehAmount.Add(vehItem.Amount); - } - client.TriggerEvent("vehInventoryShow", ItemId.ToArray(), amount.ToArray(), vehItemId.ToArray(), vehAmount.ToArray(), serverVehicle.Id); - return; - } - ChatService.SendMessage(client, "Kofferraum ist zu nigger!"); - break; - } - } - client.TriggerEvent("inventoryShow", ItemId.ToArray(), amount.ToArray()); - } - } - - [RemoteEvent("invUseItem")] - public void ServerEvent_invUseItem(Client client, int itemId) - { - User user = client.GetUser(); - - using (var context = new DatabaseContext()) - { - UserItem item = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == itemId).FirstOrDefault(); - if (item.Amount > 1) - { - item.Amount -= 1; - } - else - { - context.UserItems.Remove(item); - } - client.SendNotification("Du hast ~g~" + item.Amount + " ~y~" + InventoryManager.GetItemById(itemId).Name + " ~s~ benutzt.", false); - - context.SaveChanges(); - return; - } - } - [RemoteEvent("saveHelper")] - public void ServerEvent_invSaveHelper(Client client, string vehID) - { - User user = client.GetUser(); - int serVehID = JsonConvert.DeserializeObject(vehID); - - - } - - - [RemoteEvent("saveItems")] - public void ServerEvent_invSaveItems(Client client, string itemIdArr, string itemAmountArr, string SlotArr) - { - User user = client.GetUser(); - - int itemId = JsonConvert.DeserializeObject(itemIdArr); - int itemAmount = JsonConvert.DeserializeObject(itemAmountArr); - int Slot = JsonConvert.DeserializeObject(SlotArr); - - using (var context = new DatabaseContext()) - { - if (Slot < 24) - { - UserItem item = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == itemId).FirstOrDefault(); - if (item != null) - { - item.Amount += itemAmount; - } - else - { - var newItem = new UserItem - { - ItemId = itemId, - UserId = user.Id, - Amount = itemAmount, - Slot = -1 - }; - - context.UserItems.Add(newItem); - } - - context.SaveChanges(); - } - else - { - foreach (Vehicle veh in NAPI.Pools.GetAllVehicles()) - { - if (veh.Position.DistanceTo(client.Position) < 1) - { - if (VehicleStreaming.GetDoorState(veh, DoorID.DoorTrunk) == DoorState.DoorOpen) - { - ServerVehicle serverVehicle = VehicleManager.GetServerVehicleFromVehicle(veh, context); - VehicleItem vehItem = context.VehicleItems.Where(v => v.VehicleId == serverVehicle.Id && v.ItemId == itemId).FirstOrDefault(); - if (vehItem != null) - { - vehItem.Amount = itemAmount; - } - else - { - var newItem = new VehicleItem - { - ItemId = itemId, - VehicleId = serverVehicle.Id, - Amount = itemAmount, - Slot = -1 - }; - - context.VehicleItems.Add(newItem); - } - context.SaveChanges(); - } - } - } - } - } - } - - - - [RemoteEvent("invThrowItem")] - public void ServerEvent_invThrowItem(Client client, int itemId, int amount) - { - User user = client.GetUser(); - - using (var context = new DatabaseContext()) - { - UserItem item = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == itemId).FirstOrDefault(); - if (item.Amount > amount) - { - item.Amount -= amount; - client.SendNotification("Du hast ~g~" + amount + " ~y~" + InventoryManager.GetItemById(itemId).Name + " ~s~weggeworfen.", false); - } - else - { - client.SendNotification("Du hast ~g~" + item.Amount + " ~y~" + InventoryManager.GetItemById(itemId).Name + " ~s~weggeworfen.", false); - context.UserItems.Remove(item); - } - context.SaveChanges(); - return; - } - } - - [RemoteEvent("tradeItem")] - public void ServerEvent_tradeItem(Client client, int value, string nameOrId, string itemIdArrStr, string itemAmountArrStr) - { - User user = client.GetUser(); - Client target = ClientService.GetClientByNameOrId(nameOrId); - if (target == null || !target.IsLoggedIn() || target == client) - { - ChatService.PlayerNotFound(client); - return; - } - if(client.Position.DistanceTo(target.Position) >= 5) - { - ChatService.ErrorMessage(client, "Spieler ist zu weit entfernt."); - return; - } - int[] itemIdArr = JsonConvert.DeserializeObject(itemIdArrStr); - int[] itemAmountArr = JsonConvert.DeserializeObject(itemAmountArrStr); - - if (target.HasData("inTrade") && target.GetData("inTrade") == true) - { - ChatService.SendMessage(client, $"~r~[FEHLER] ~w~{target.Name} befindet sich bereits in einem Handel."); - return; - } - using (var context = new DatabaseContext()) - { - for (int x = 0; x < itemIdArr.Length; x++) - { - int itemId = itemIdArr[x]; - int itemAmount = itemAmountArr[x]; - UserItem item = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == itemId).FirstOrDefault(); - if (item.Amount - itemAmount > 0) - { - item.Amount -= itemAmount; - } - else - { - context.UserItems.Remove(item); - } - context.SaveChanges(); - } - } - ChatService.SendMessage(client, $"~b~Du hast eine Handelsanfrage an {target.Name} gesendet."); - TradeItems[user.Id] = (itemIdArr, itemAmountArr); - TradeValue[user.Id] = value; - target.SetData("tradePartner", user.Id); - target.SetData("trade", client.Name); - SendTradeOffer(target,client); - } - - public void SendTradeOffer(Client client, Client sender) - { - client.SetData("inTrade", true); - sender.SetData("inTrade", true); - ChatService.SendMessage(client, $"~b~ Du hast eine Handelsanfrage von {sender.Name} bekommen."); - ChatService.SendMessage(client, $"~b~ Drücke '~w~X~b~' um die Handelsanfrage zu akzeptieren."); - User user = sender.GetUser(); - Timer tradeTimer = new Timer(30000); - TradeTimer[user.Id] = tradeTimer; - tradeTimer.Start(); - tradeTimer.Elapsed += (s, e) => { SendBackToSender(sender); client.SetData("inTrade", false); sender.SetData("inTrade", false); }; - } - - - public void SendBackToSender(Client client) - { - User user = client.GetUser(); - ChatService.SendMessage(client, "Dein Handelspartner hat die Anfrage nicht angenommen."); - (int[] itemIdArr, int[] itemAmountArr) = TradeItems[user.Id]; - Timer timer = TradeTimer[user.Id]; - timer.Stop(); - using (var context = new DatabaseContext()) - { - for (int x = 0; x < itemIdArr.Length; x++) - { - int itemId = itemIdArr[x]; - int itemAmount = itemAmountArr[x]; - UserItem item = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == itemId).FirstOrDefault(); - if (item != null) - { - item.Amount += itemAmount; - } - else - { - var newItem = new UserItem - { - ItemId = itemId, - UserId = user.Id, - Amount = itemAmount, - Slot = -1 - }; - - context.UserItems.Add(newItem); - } - context.SaveChanges(); - } - } - } - - [RemoteEvent("declineTrade")] - public void ServerEvent_declineTrade(Client client) - { - if (!client.GetData("inTrade")) - { - ChatService.ErrorMessage(client, "Das Handelsangebot ist abgelaufen."); - return; - } - string name = client.GetData("trade"); - Client target = ClientService.GetClientByNameOrId(name); - if (target == null || !target.IsLoggedIn()) - { - ChatService.PlayerNotFound(client); - return; - } - client.SetData("inTrade", false); - target.SetData("inTrade", false); - SendBackToSender(target); - } - - public static void OpenTradeAccept(Client client) - { - User user = client.GetUser(); - int id = client.GetData("tradePartner"); - (int[] itemIdArr, int[] itemAmountArr) = TradeItems[id]; - Timer tradeTimer = TradeTimer[id]; - tradeTimer.Stop(); - tradeTimer.Start(); - client.TriggerEvent("openTradeWindow", TradeValue[id], itemIdArr, itemAmountArr); - } - - [RemoteEvent("acceptTrade")] - public void ServerEvent_AcceptTrade(Client client) - { - if (!client.GetData("inTrade")) - { - ChatService.ErrorMessage(client, "Das Handelsangebot ist abgelaufen."); - return; - } - - client.SetData("inTrade", false); - - User user = client.GetUser(); - int id = client.GetData("tradePartner"); - (int[] itemIdArr, int[] itemAmountArr) = TradeItems[id]; - Timer tradeTimer = TradeTimer[id]; - tradeTimer.Stop(); - string name = client.GetData("trade"); - Client target = ClientService.GetClientByNameOrId(name); - if (target == null || !target.IsLoggedIn()) - { - ChatService.PlayerNotFound(client); - return; - } - target.SetData("inTrade", false); - ChatService.SendMessage(target, $"{client.Name} hat deine Anfrage angenommen."); - using (var context = new DatabaseContext()) - { - for (int x = 0; x < itemIdArr.Length; x++) - { - int itemId = itemIdArr[x]; - int itemAmount = itemAmountArr[x]; - UserItem item = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == itemId).FirstOrDefault(); - if (item != null) - { - item.Amount += itemAmount; - } - else - { - var newItem = new UserItem - { - ItemId = itemId, - UserId = user.Id, - Amount = itemAmount, - Slot = -1 - }; - - context.UserItems.Add(newItem); - } - context.SaveChanges(); - } - } - } - } -}
-
Rucksack
Fahrzeug
Handel
Handeln
Anfrage
Zurück