Merge branch 'develop' into 'feature/atm-system'

# Conflicts:
#   ReallifeGamemode.Server/Migrations/DatabaseContextModelSnapshot.cs
This commit is contained in:
VegaZ
2019-04-02 18:50:17 +02:00
parent bed35f8f08
commit 63838e133a
20 changed files with 1226 additions and 42 deletions

View File

@@ -0,0 +1,75 @@
export default function handMoney() {
var currentMoney = null;
var showMoneyChange = null;
var difference;
var screen = mp.game.graphics.getScreenResolution(0, 0);
var res_X = screen.x;
mp.events.add("SERVER:SET_HANDMONEY", (amount) => {
difference = currentMoney - amount;
if (difference != 0 && currentMoney != null) {
showMoneyChange = 1000;
}
currentMoney += amount;
});
mp.events.add("render", () => {
if (currentMoney != null) {
var numberFormat = formatNumber(currentMoney.toFixed(0));
if (currentMoney >= 0) {
mp.game.graphics.drawText("+$" + numberFormat, [0.96, 0.1],
{
font: 7,
color: [115, 186, 131, 255],
scale: [0.65, 0.65],
outline: false,
centre: true,
})
}
else {
mp.game.graphics.drawText("-$" + numberFormat, [0.96, 0.1],
{
font: 7,
color: [255, 0, 45, 255],
scale: [0.65, 0.65],
outline: false,
centre: true,
})
}
if (showMoneyChange > 0) {
showMoneyChange--;
if (difference > 0) {
var alpha = 255;
if (showMoneyChange <= 70) {
alpha = (showMoneyChange * (255 / 70)) | 0;
}
mp.game.graphics.drawText("- $" + formatNumber(difference), [0.96, 0.145], {
font: 7,
color: [255, 0, 45, alpha],
scale: [0.65, 0.65],
outline: false,
centre: true
})
} else {
var nDef = difference * -1;
var alpha = 255;
if (showMoneyChange <= 70) {
alpha = (showMoneyChange * (255 / 70)) | 0;
}
mp.game.graphics.drawText("+ $" + formatNumber(nDef), [0.96, 0.145], {
font: 7,
color: [115, 186, 131, alpha],
scale: [0.65, 0.65],
outline: false,
centre: true
})
}
}
}
});
function formatNumber(num) {
return num.toLocaleString('de-DE', { minimumFractionDigits: 0 });
}
}

View File

@@ -1,7 +1,8 @@
export default function worldInteraction() { export default function worldInteraction() {
var atmBrowser: BrowserMp; var atmBrowser: BrowserMp;
mp.events.add("SERVER:ShowAtmUi", (atmId, atmBalance) => { //INTERACT: ATM
mp.events.add("SERVER:ShowAtmUi", (atmId) => {
mp.gui.cursor.show(true, true); mp.gui.cursor.show(true, true);
mp.gui.chat.show(false); mp.gui.chat.show(false);
mp.game.ui.displayHud(false); mp.game.ui.displayHud(false);
@@ -9,4 +10,36 @@
atmBrowser = mp.browsers.new("package://assets/html/atm/index.html"); atmBrowser = mp.browsers.new("package://assets/html/atm/index.html");
}); });
}
mp.events.add("CEF:closeATM", () => {
mp.gui.cursor.show(false, false);
mp.gui.chat.show(true);
mp.game.ui.displayHud(true);
mp.game.ui.displayRadar(true);
atmBrowser.destroy();
});
mp.events.add("CEF:atmAction", (site, inputField1, inputField2) => {
switch (site) {
//GELD EINZAHLEN in1
case 0:
mp.events.call("SERVER:SET_HANDMONEY", inputField1 * -1); //GEHT NACH HANDMONEY.TS
mp.events.callRemote("CLIENT:ATM_ACTION", site, inputField1, inputField2);
break;
//GELD AUSZAHLEN in1
case 1:
mp.events.call("SERVER:SET_HANDMONEY", inputField1); //GEHT NACH HANDMONEY.TS
mp.events.callRemote("CLIENT:ATM_ACTION", site, inputField1, inputField2)
break;
//GELD ÜBERWEISEN in1 = Kontonr // in2 = Betrag
case 2:
break;
}
});
}

View File

@@ -37,6 +37,7 @@
} }
mp.events.add('render', () => { mp.events.add('render', () => {
const controls = mp.game.controls; const controls = mp.game.controls;
const fly = global.fly; const fly = global.fly;
direction = global.gameplayCam.getDirection(); direction = global.gameplayCam.getDirection();
@@ -50,13 +51,13 @@
direction.y = direction.y.toFixed(2); direction.y = direction.y.toFixed(2);
direction.z = direction.z.toFixed(2); direction.z = direction.z.toFixed(2);
mp.game.graphics.drawText(`Coords: ${JSON.stringify(coords)}`, [0.5, 0.005], { //mp.game.graphics.drawText(`Coords: ${JSON.stringify(coords)}`, [0.5, 0.005], {
font: 0, // font: 0,
color: [255, 255, 255, 185], // color: [255, 255, 255, 185],
scale: [0.3, 0.3], // scale: [0.3, 0.3],
outline: true, // outline: true,
centre: false // centre: false
}); //});
if (controls.isControlJustPressed(0, controlsIds.F5)) { if (controls.isControlJustPressed(0, controlsIds.F5)) {
fly.flying = !fly.flying; fly.flying = !fly.flying;

View File

@@ -30,11 +30,11 @@ export default function keys(globalData: GlobalData) {
}); });
//UP ARROW (Interaktion mit Spielwelt) //UP ARROW (Interaktion mit Spielwelt)
//mp.keys.bind(0x26, false, function () { mp.keys.bind(0x26, false, function () {
// if (!globalData.InChat && !showInv && !globalData.Interaction) { if (!globalData.InChat && !showInv && !globalData.Interaction) {
// mp.events.callRemote("keyPress:UP_ARROW"); mp.events.callRemote("keyPress:UP_ARROW");
// } }
//}); });
//RIGHT ARROW (Fraktionsinteraktion) //RIGHT ARROW (Fraktionsinteraktion)
mp.keys.bind(0x27, false, function () { mp.keys.bind(0x27, false, function () {

View File

@@ -0,0 +1,577 @@
@font-face {
font-family: 'OSL';
src: url('package://assets/font/OSL.ttf') format('truetype');
}
@font-face {
font-family: 'OSB';
src: url('package://assets/font/OpenSans-Bold.ttf') format('truetype');
}
* {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.atm {
background:#6d6d6d;
position:absolute;
left:19.5vw;
top:1vw;
border-radius:1vw;
-webkit-box-shadow:0 0 25px -1px rgba(0,0,0,0.75);
-moz-box-shadow:0 0 25px -1px rgba(0,0,0,0.75);
box-shadow:0 0 25px -1px rgba(0,0,0,0.75);
z-index:3;
padding:33vw 30vw 10vw;
}
.content {
position:absolute;
left:4vw;
top:2vw;
border-radius:1vw;
padding:29vw 26vw 5vw;
}
.screen {
position:absolute;
left:5vw;
top:2vw;
-webkit-box-shadow:inset 0 0 19px -1px rgba(0,0,0,0.75);
-moz-box-shadow:inset 0 0 19px -1px rgba(0,0,0,0.75);
box-shadow:inset 0 0 19px -1px rgba(0,0,0,0.75);
background:#fff;
z-index:1;
padding:15vw 21vw;
}
.b-left {
position:absolute;
left:-1.5vw;
top:11vw;
border-radius:1vw;
}
.b-right {
position:absolute;
left:47.5vw;
top:11vw;
border-radius:1vw;
}
.b {
background:#a7a7a7;
border-radius:.1vw .3vw .3vw .1vw;
margin-bottom:3vw;
padding:2vw 3vw;
}
.b2 {
background:#a7a7a7;
border-radius:.3vw .1vw .1vw .3vw;
margin-bottom:3vw;
margin-left:.4vw;
padding:2vw 3vw;
}
.b,.b2,.b3 {
cursor:pointer;
background:#a7a7a7;
margin-bottom:1vw;
-webkit-box-shadow:2px 3px 9px 3px rgba(99,99,99,1);
-moz-box-shadow:2px 3px 9px 3px rgba(99,99,99,1);
box-shadow:2px 3px 9px 3px rgba(99,99,99,1);
font-size:3vw;
color:#000;
padding:2vw 2.8vw;
border: 2px solid rgba(0, 0, 0, 0.5);
}
.b:hover,.b2:hover,.b3:hover,.b3e:hover,.b4e:hover {
background:#949494;
}
.b3 {
cursor:pointer;
background:#a7a7a7;
border-radius:.3vw;
margin-bottom:.2vw;
font-family:OSL;
font-size:1vw;
-webkit-box-shadow:0 0 6px -1px rgba(0,0,0,0.75);
-moz-box-shadow:0 0 6px -1px rgba(0,0,0,0.75);
box-shadow:0 0 6px -1px rgba(0,0,0,0.75);
padding: .14vw 2vw;
}
.b3e {
cursor:pointer;
background:#a7a7a7;
border-radius:.3vw;
margin-bottom:.5vw;
font-family:OSL;
font-size:1vw;
-webkit-box-shadow:0 0 6px -1px rgba(0,0,0,0.75);
-moz-box-shadow:0 0 6px -1px rgba(0,0,0,0.75);
box-shadow:0 0 6px -1px rgba(0,0,0,0.75);
padding:1vw 4vw 1vw .5vw;
}
.b4e {
cursor:pointer;
background:#a7a7a7;
border-radius:.3vw;
margin-bottom:.5vw;
font-family:OSL;
font-size:1vw;
-webkit-box-shadow:0 0 6px -1px rgba(0,0,0,0.75);
-moz-box-shadow:0 0 6px -1px rgba(0,0,0,0.75);
box-shadow:0 0 6px -1px rgba(0,0,0,0.75);
position:relative;
top:.2vw;
left:0;
padding:1vw 4vw 1vw .5vw;
}
.numpad {
position:absolute;
top:0;
left:-4vw;
z-index:20;
}
.bz1 {
position:absolute;
top:34.3vw;
left:21vw;
}
.bz2 {
position:absolute;
top:34.3vw;
left:26vw;
}
.bz3 {
position:absolute;
top:34.3vw;
left:31vw;
}
.bz4 {
position:absolute;
top:35.3vw;
left:44.6vw;
}
.bz5 {
position:absolute;
top:34.8vw;
left:37vw;
font-family:OSB!important;
}
.bz6 {
position:absolute;
top:4.1vw;
}
.b4 {
cursor:pointer;
width:0;
background:#cc2d2d;
border-radius:.3vw;
margin-bottom:1.5vw;
-webkit-box-shadow:0 0 6px -1px rgba(0,0,0,0.75);
-moz-box-shadow:0 0 6px -1px rgba(0,0,0,0.75);
box-shadow:0 0 6px -1px rgba(0,0,0,0.75);
padding:1.2vw;
}
.b5 {
cursor:pointer;
width:0;
background:#ccb92e;
border-radius:.3vw;
margin-bottom:1.5vw;
-webkit-box-shadow:0 0 6px -1px rgba(0,0,0,0.75);
-moz-box-shadow:0 0 6px -1px rgba(0,0,0,0.75);
box-shadow:0 0 6px -1px rgba(0,0,0,0.75);
padding:1.2vw;
}
.b6 {
cursor:pointer;
width:0;
background:#fff;
border-radius:.3vw;
margin-bottom:1.5vw;
-webkit-box-shadow:0 0 6px -1px rgba(0,0,0,0.75);
-moz-box-shadow:0 0 6px -1px rgba(0,0,0,0.75);
box-shadow:0 0 6px -1px rgba(0,0,0,0.75);
padding:1.2vw;
}
.b7 {
cursor:pointer;
width:0;
background:#28bd26;
border-radius:.3vw;
margin-bottom:1.5vw;
-webkit-box-shadow:0 0 6px -1px rgba(0,0,0,0.75);
-moz-box-shadow:0 0 6px -1px rgba(0,0,0,0.75);
box-shadow:0 0 6px -1px rgba(0,0,0,0.75);
padding:1.2vw;
}
.header {
height:4vw;
width:42vw;
position:absolute;
top:0;
left:0;
background-image: linear-gradient(to right, #ff0d0d 80%, #ff1616e0 99%);
z-index: 2;
}
.title {
text-align:center;
line-height:2;
font-size:1.6vw;
font-family:OSB;
color:#fff;
}
.sub-title {
text-align:center;
line-height:3;
font-size:1.6vw;
font-family:OSB;
color:#000;
}
.text {
text-align:center;
font-size:2vw;
font-family:OSL;
color:#000;
margin-top:2vw;
font-weight:700;
}
.picture {
width:27vw;
margin-left:7.5vw;
margin-top:5.8vw;
}
.show {
display:show!important;
}
.hidden {
display:none!important;
}
.menus {
font-family:OSB;
font-size: 0.8vw;
}
.menu-list1 {
line-height:6.35;
margin-top:5.3vw;
margin-left:-1.4vw;
}
.menu-list2 {
line-height:6.35;
margin-left:33vw;
margin-top:-20.7vw;
text-align:left!important;
}
ul,menu,dir {
display:block;
list-style-type:disc;
-webkit-margin-before:1em;
-webkit-margin-after:1em;
-webkit-margin-start:0;
-webkit-margin-end:0;
-webkit-padding-start:40px;
}
li {
display:block;
text-align:none;
}
.circle {
background:#c9f0f55e;
position:absolute;
height:36vw;
top:0;
left:0;
z-index:-2;
width:10vw;
border-radius:0 380px 380px 0;
}
.circle2 {
background:#c9f0f55e;
position:absolute;
height:36vw;
top:0;
left:32vw;
z-index:-2;
width:10vw;
border-radius:380px 0 0 380px;
}
.randombox {
position:absolute;
z-index:0;
width:42vw;
height:9vw;
top:34vw;
left:13vw;
background:#6d6d6d;
}
.bg-box1 {
background:#FFF;
width:18vw;
/* height:3vw; */
padding-top: 1vw;
padding-bottom: 1vw;
position:absolute;
z-index:-1;
top: 9.6vw;
}
.bg-box2 {
background:#FFF;
width:18vw;
height:3vw;
position:absolute;
z-index:-1;
top:14.4vw;
}
.bg-box3 {
background:#FFF;
width:18vw;
height:3vw;
position:absolute;
z-index:-1;
top:19.4vw;
}
.bg-box4 {
background:#FFF;
width:18vw;
height:3vw;
position:absolute;
z-index:-1;
top: 24.5vw;
}
.bg-box5 {
background:#FFF;
width: 18vw;
height:3vw;
position:absolute;
z-index:-1;
top:9.4vw;
left:24vw;
}
.bg-box6 {
background:#FFF;
width:18vw;
height:3vw;
position:absolute;
z-index:-1;
top:14.4vw;
left:24vw;
}
.bg-box7 {
background:#FFF;
width:18vw;
height:3vw;
position:absolute;
z-index:-1;
top: 19.5vw;
left:24vw;
}
.bg-box8 {
background:#FFF;
width:18vw;
height:3vw;
position:absolute;
z-index:-1;
top:24.4vw;
left:24vw;
}
.input {
display:block;
width:30%;
height:1vw;
font-size:.7vw;
line-height:1.42857143;
color:#555;
background-color:#fff;
background-image:none;
margin-left:14vw;
border:1px solid #ccc;
border-radius:4px;
-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);
box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);
-webkit-transition:border-color ease-in-out .15s, 0 ease-in-out .15s;
-o-transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;
transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;
padding:.4vw .5vw;
}
.back {
font-size:1vw;
position:absolute;
font-family:OSB;
left:0;
top:9.5vw;
background:#fff;
padding:1vw 7vw 1vw 1vw;
}
.back2 {
font-size:1vw;
position:absolute;
font-family:OSB;
left:0;
top: 14.3vw;
background:#fff;
padding:1vw 7vw 1vw 1vw;
}
.back3 {
font-size:1vw;
position:absolute;
font-family:OSB;
left:0;
top: 19.5vw;
background:#fff;
padding:1vw 7vw 1vw 1vw;
}
.back4 {
font-size:1vw;
position:absolute;
font-family:OSB;
left:0;
top: 24.5vw;
background:#fff;
padding:1vw 7vw 1vw 1vw;
}
.back5 {
font-size:1vw;
position:absolute;
font-family:OSB;
left: 29.5vw;
top:9.5vw;
background:#fff;
padding: 1vw 2vw 1vw 7vw;
}
.back6 {
font-size:1vw;
position:absolute;
font-family:OSB;
left: 29.5vw;
top: 14.5vw;
background:#fff;
padding: 1vw 2vw 1vw 7vw;
}
.back7 {
font-size:1vw;
position:absolute;
font-family:OSB;
left: 29.5vw;
top: 19.5vw;
background:#fff;
padding: 1vw 2vw 1vw 7vw;
}
.helper {
position:absolute;
left:-5vw;
top:-2vw;
}
.input2 {
display:block;
width:30%;
height:1vw;
font-size:.7vw;
line-height:1.42857143;
color:#000;
background-color:#fff;
background-image:none;
margin-left:14vw;
border:1px solid #ccc;
border-radius:4px;
-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);
box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);
-webkit-transition:border-color ease-in-out .15s, 0 ease-in-out .15s;
-o-transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;
transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;
padding:.4vw .5vw;
font-family: 'OSL';
}
.input3 {
display:block;
width: 41%;
height: 17vw;
font-size:.7vw;
line-height:1.42857143;
color:#000;
background-color:#fff;
background-image:none;
margin-left: 12vw;
border:1px solid #ccc;
border-radius:4px;
-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);
box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);
-webkit-transition:border-color ease-in-out .15s, 0 ease-in-out .15s;
-o-transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;
transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;
padding:.4vw .5vw;
font-family: 'OSL';
}
.bg-box5, .bg-box6, .bg-box7, .bg-box8 {
height: 1vw !important;
padding-top: 1vw !important;
padding-bottom: 1vw !important;
text-align: right;
width: 17vw !important;
padding-right: 1vw;
}
.bg-box1, .bg-box2, .bg-box3, .bg-box4 {
height: 1vw !important;
padding-top: 1vw !important;
padding-bottom: 1vw !important;
padding-left: 1vw;
}

Binary file not shown.

Binary file not shown.

View File

@@ -1,12 +1,396 @@
<html> <!DOCTYPE html>
<html lang="de" >
<!-- Header -->
<head> <head>
<link rel="stylesheet" href="package://assets/css/atm/style.css" /> <meta charset="UTF-8">
<link rel="stylesheet" href="package://assets/css/jquery-ui.min.css" /> <link rel="stylesheet" href="package://assets/css/atm/atm.css">
<meta charset="utf-8" /> <audio id="click">
<source src="package://assets/sound/atm/click.ogg" type="audio/ogg">
</audio>
</head> </head>
<!-- Content -->
<body> <body>
<script type="text/javascript" src="package://assets/js/jquery-3.3.1.min.js"></script> <div class="atm">
<script type="text/javascript" src="package://assets/js/jquery-ui.min.js"></script> <div class="content">
<script type="text/javascript" src="package://assets/js/login/script.js"></script> <div class="button">
<div class="b-left">
<div class="b" onclick="tosite(2)"></div>
<div class="b" onclick="tosite(3)"></div>
<div class="b" onclick="tosite(4)"></div>
<div class="b" onclick="tosite(5)"></div>
</div>
<div class="b-right">
<div class="b2" onclick="tosite(6)"></div>
<div class="b2" onclick="tosite(7)"></div>
<div class="b2" onclick="ExitATM();"></div>
<div class="b2"></div>
</div>
</div>
<div class="screen">
<div class="site1 show">
<div class="header">
<div class="title">BANKAUTOMAT - SAN ANDREAS</div>
<div class="menus">
<div class="bg-box1">Einzahlen</div>
<div class="bg-box2">Auszahlen</div>
<div class="bg-box3">Überweisen</div>
<div class="bg-box4">Kontostand</div>
<div class="bg-box5">Informationen</div>
<div class="bg-box6">Verlauf</div>
<div class="bg-box7">Karte Auswerfen</div>
<div class="bg-box8"></div>
</div>
</div>
<div class="circle"></div>
<div class="circle2"></div>
</div>
<div class="site2 hidden">
<div class="header">
<div class="title">BANKAUTOMAT - SAN ANDREAS</div>
<div class="sub-title">
Geld Einzahlen
</div>
<input class="input" name="einzahlen" type="number" placeholder="Betrag">
</div>
<div class="back">Zur&uuml;ck</div>
<div class="circle"></div>
<div class="circle2"></div>
<div class="helper">
<div class="button">
<div class="b-left">
<div class="b" onclick="tosite(2)"></div>
<div class="b"></div>
<div class="b"></div>
<div class="b"></div>
</div>
<div class="b-right">
<div class="b2"></div>
<div class="b2"></div>
<div class="b2"></div>
<div class="b2"></div>
</div>
</div>
</div>
</div>
<div class="site3 hidden">
<div class="header">
<div class="title">BANKAUTOMAT - SAN ANDREAS</div>
<div class="sub-title">
Geld Auszahlen
</div>
<input class="input" name="auszahlen" type="number" placeholder="Betrag">
</div>
<div class="back2">Zur&uuml;ck</div>
<div class="circle"></div>
<div class="circle2"></div>
<div class="helper">
<div class="button">
<div class="b-left">
<div class="b"></div>
<div class="b" onclick="tosite(3)"></div>
<div class="b"></div>
<div class="b"></div>
</div>
<div class="b-right">
<div class="b2"></div>
<div class="b2"></div>
<div class="b2"></div>
<div class="b2"></div>
</div>
</div>
</div>
</div>
<div class="site4 hidden">
<div class="header">
<div class="title">BANKAUTOMAT - SAN ANDREAS</div>
<div class="sub-title">
Überweisen
</div>
<input class="input" name="ueberweisen_kontonummer" type="number" placeholder="Kontonummer" style="margin-bottom:1vw;">
<input class="input" name="ueberweisen_betrag" type="number" placeholder="Betrag">
</div>
<div class="back3">Zur&uuml;ck</div>
<div class="circle"></div>
<div class="circle2"></div>
<div class="helper">
<div class="button">
<div class="b-left">
<div class="b"></div>
<div class="b"></div>
<div class="b" onclick="tosite(4)"></div>
<div class="b"></div>
</div>
<div class="b-right">
<div class="b2"></div>
<div class="b2"></div>
<div class="b2"></div>
<div class="b2"></div>
</div>
</div>
</div>
</div>
<div class="site5 hidden">
<div class="header">
<div class="title">BANKAUTOMAT - SAN ANDREAS</div>
<div class="sub-title">
Kontostand
</div>
<div class="input2">Kontostand :
<span class="kstand">0</span>$
</div>
</div>
<div class="back4">Zur&uuml;ck</div>
<div class="circle"></div>
<div class="circle2"></div>
<div class="helper">
<div class="button">
<div class="b-left">
<div class="b"></div>
<div class="b"></div>
<div class="b"></div>
<div class="b" onclick="tosite(5)"></div>
</div>
<div class="b-right">
<div class="b2"></div>
<div class="b2"></div>
<div class="b2"></div>
<div class="b2"></div>
</div>
</div>
</div>
</div>
<div class="site6 hidden">
<div class="header">
<div class="title">BANKAUTOMAT - SAN ANDREAS</div>
<div class="sub-title">
Informationen
</div>
<div class="input3">Konto-Informationen : <br>
<span class="kinfo">Keine Informationen Vorhanden</span>
</div>
</div>
<div class="back5">Zur&uuml;ck</div>
<div class="circle"></div>
<div class="circle2"></div>
<div class="helper">
<div class="button">
<div class="b-left">
<div class="b"></div>
<div class="b"></div>
<div class="b"></div>
<div class="b"></div>
</div>
<div class="b-right">
<div class="b2" onclick="tosite(6)"></div>
<div class="b2"></div>
<div class="b2"></div>
<div class="b2"></div>
</div>
</div>
</div>
</div>
<div class="site7 hidden">
<div class="header">
<div class="title">BANKAUTOMAT - SAN ANDREAS</div>
<div class="sub-title">
Verlauf
</div>
<div class="input3">Konto-Verlauf : <br>
<span class="kverlauf">Keine Verläufe Vorhanden</span>
</div>
</div>
<div class="back6">Zur&uuml;ck</div>
<div class="circle"></div>
<div class="circle2"></div>
<div class="helper">
<div class="button">
<div class="b-left">
<div class="b"></div>
<div class="b"></div>
<div class="b"></div>
<div class="b"></div>
</div>
<div class="b-right">
<div class="b2"></div>
<div class="b2" onclick="tosite(7)"></div>
<div class="b2"></div>
<div class="b2"></div>
</div>
</div>
</div>
</div>
<div class="site8 hidden">
<div class="header">
<div class="title">BANKAUTOMAT - SAN ANDREAS</div>
<div class="sub-title">
Geld Auszahlen
</div>
<input class="input" type="number" placeholder="Betrag">
</div>
<div class="back7">Zur&uuml;ck</div>
<div class="circle"></div>
<div class="circle2"></div>
<div class="helper">
<div class="button">
<div class="b-left">
<div class="b"></div>
<div class="b"></div>
<div class="b"></div>
<div class="b"></div>
</div>
<div class="b-right">
<div class="b2"></div>
<div class="b2"></div>
<div class="b2" onclick="tosite(8)"></div>
<div class="b2" ></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="hidden" style="display:none"></div>
<div class="numpad">
<div class="randombox"></div>
<div class="bz1">
<div class="b3" onclick="addToCurrentInput(1);">1</div>
<div class="b3" onclick="addToCurrentInput(4);">4</div>
<div class="b3" onclick="addToCurrentInput(7);">7</div></div>
<div class="bz2">
<div class="b3" onclick="addToCurrentInput(2);">2</div>
<div class="b3" onclick="addToCurrentInput(5);">5</div>
<div class="b3" onclick="addToCurrentInput(8);">8</div>
<div class="b3" onclick="addToCurrentInput(0);">0</div></div>
<div class="bz3">
<div class="b3" onclick="addToCurrentInput(3);">3</div>
<div class="b3" onclick="addToCurrentInput(6);">6</div>
<div class="b3" onclick="addToCurrentInput(9);">9</div></div>
<div class="bz5">
<div class="b3e" onclick="cancel();">ABBRUCH</div>
<div class="b4e" onclick="submit();">BESTÄTIGUNG</div></div>
<div class="bz4">
<div class="b4"></div>
<div class="bz6">
<div class="b7"></div>
</div>
</div>
</div>
<!-- Footer -->
<div id="invisible" style="display:none"></div>
<script src="package://assets/js/jquery-3.1.1.min.js"></script>
<script src="package://assets/js/bootstrap.min.js"></script>
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script type="text/javascript">
var currentSite;
function tosite(site) {
if($('.hidden').is(":hidden")) {
$('.site1').toggleClass("hidden");
$('.site' + site).toggleClass("hidden");
$('.site' + site).toggleClass("show");
currentSite = site;
console.log(currentSite);
document.getElementsByClassName('input')[0].value = null;
document.getElementsByClassName('input')[1].value = null;
playClick();
}
}
function playClick() {
var audio = document.getElementById("click");
audio.play();
}
function receiveInformation(Kn, Ks, verlauf)
{
document.getElementsByClassName("kstand")[0].innerHTML = Ks;
document.getElementsByClassName("kinfo")[0].innerHTML = "Kontonummer: " + Kn;
document.getElementsByClassName("kverlauf")[0].innerHTML = verlauf;
}
function submit()
{
//Geld einzahlen
if (currentSite == 2) {
if (getCurrentInputValue() != undefined && getCurrentInputValue() != null && getCurrentInputValue() != "") {
console.log(getCurrentInputValue());
mp.trigger("CEF:atmAction", 0, getCurrentInputValue(), 0);
}
}
//Geld auszahlen
else if (currentSite == 3) {
if (getCurrentInputValue() != undefined && getCurrentInputValue() != null && getCurrentInputValue() != "") {
console.log(getCurrentInputValue());
mp.trigger("CEF:atmAction", 1, getCurrentInputValue(), 0);
}
}
//Geld überweisen
else if (currentSite == 4) {
var Value = getCurrentInputValue();
if (Value != undefined && Value != null && Value != "") {
console.log(Value[0] + " " + Value[1]);
mp.trigger("CEF:atmAction", 2, Value[0], Value[1]);
}
}
}
function cancel() {
document.getElementsByName('einzahlen')[0].value = null;
document.getElementsByName('auszahlen')[0].value = null;
}
function getCurrentInputValue() {
if (currentSite == 2) {
return document.getElementsByName('einzahlen')[0].value;
}
else if (currentSite == 3) {
return document.getElementsByName('auszahlen')[0].value;
}
else if (currentSite == 4) {
var kontonum = document.getElementsByName('ueberweisen_kontonummer')[0].value;
var betrag = document.getElementsByName('ueberweisen_betrag')[0].value;
if (betrag != undefined && betrag != null && betrag != "" && kontonum != "" && kontonum != undefined && kontonum != null) {
var array = [kontonum, betrag];
return array;
}
}
}
function addToCurrentInput(number) {
if (currentSite == 2) {
document.getElementsByName('einzahlen')[0].value = document.getElementsByName('einzahlen')[0].value + '' + number;
}
else if (currentSite == 3) {
document.getElementsByName('auszahlen')[0].value = document.getElementsByName('auszahlen')[0].value + '' + number;
}
}
function ExitATM() {
playClick();
mp.trigger("CEF:closeATM");
}
function action(ac)
{
mp.trigger("atmAction", ac);
}
</script>
</body> </body>
</html> </html>

Binary file not shown.

View File

@@ -11,6 +11,9 @@ let globalData: GlobalData = {
InChat: false, InChat: false,
}; };
import handMoney from './Gui/handmoney'
handMoney();
import business from './Business/main'; import business from './Business/main';
business(); business();
@@ -53,6 +56,9 @@ interiors(globalData);
import factionInteraction from './Interaction/factioninteraction'; import factionInteraction from './Interaction/factioninteraction';
factionInteraction(globalData); factionInteraction(globalData);
import worldInteraction from './Interaction/worldinteraction';
worldInteraction();
import playerInteraction from './Interaction/playerinteraction'; import playerInteraction from './Interaction/playerinteraction';
playerInteraction(globalData); playerInteraction(globalData);
@@ -68,8 +74,8 @@ keys(globalData);
import quitHandler from './Player/quit'; import quitHandler from './Player/quit';
quitHandler(); quitHandler();
import freecam from './Player/freecam'; import freeCam from './Player/freecam';
freecam(); freeCam();
import saveManager from './Save/main'; import saveManager from './Save/main';
saveManager(); saveManager();

View File

@@ -1565,11 +1565,13 @@
}, },
"balanced-match": { "balanced-match": {
"version": "1.0.0", "version": "1.0.0",
"bundled": true "bundled": true,
"optional": true
}, },
"brace-expansion": { "brace-expansion": {
"version": "1.1.11", "version": "1.1.11",
"bundled": true, "bundled": true,
"optional": true,
"requires": { "requires": {
"balanced-match": "^1.0.0", "balanced-match": "^1.0.0",
"concat-map": "0.0.1" "concat-map": "0.0.1"
@@ -1582,15 +1584,18 @@
}, },
"code-point-at": { "code-point-at": {
"version": "1.1.0", "version": "1.1.0",
"bundled": true "bundled": true,
"optional": true
}, },
"concat-map": { "concat-map": {
"version": "0.0.1", "version": "0.0.1",
"bundled": true "bundled": true,
"optional": true
}, },
"console-control-strings": { "console-control-strings": {
"version": "1.1.0", "version": "1.1.0",
"bundled": true "bundled": true,
"optional": true
}, },
"core-util-is": { "core-util-is": {
"version": "1.0.2", "version": "1.0.2",
@@ -1693,7 +1698,8 @@
}, },
"inherits": { "inherits": {
"version": "2.0.3", "version": "2.0.3",
"bundled": true "bundled": true,
"optional": true
}, },
"ini": { "ini": {
"version": "1.3.5", "version": "1.3.5",
@@ -1703,6 +1709,7 @@
"is-fullwidth-code-point": { "is-fullwidth-code-point": {
"version": "1.0.0", "version": "1.0.0",
"bundled": true, "bundled": true,
"optional": true,
"requires": { "requires": {
"number-is-nan": "^1.0.0" "number-is-nan": "^1.0.0"
} }
@@ -1715,17 +1722,20 @@
"minimatch": { "minimatch": {
"version": "3.0.4", "version": "3.0.4",
"bundled": true, "bundled": true,
"optional": true,
"requires": { "requires": {
"brace-expansion": "^1.1.7" "brace-expansion": "^1.1.7"
} }
}, },
"minimist": { "minimist": {
"version": "0.0.8", "version": "0.0.8",
"bundled": true "bundled": true,
"optional": true
}, },
"minipass": { "minipass": {
"version": "2.3.5", "version": "2.3.5",
"bundled": true, "bundled": true,
"optional": true,
"requires": { "requires": {
"safe-buffer": "^5.1.2", "safe-buffer": "^5.1.2",
"yallist": "^3.0.0" "yallist": "^3.0.0"
@@ -1742,6 +1752,7 @@
"mkdirp": { "mkdirp": {
"version": "0.5.1", "version": "0.5.1",
"bundled": true, "bundled": true,
"optional": true,
"requires": { "requires": {
"minimist": "0.0.8" "minimist": "0.0.8"
} }
@@ -1814,7 +1825,8 @@
}, },
"number-is-nan": { "number-is-nan": {
"version": "1.0.1", "version": "1.0.1",
"bundled": true "bundled": true,
"optional": true
}, },
"object-assign": { "object-assign": {
"version": "4.1.1", "version": "4.1.1",
@@ -1824,6 +1836,7 @@
"once": { "once": {
"version": "1.4.0", "version": "1.4.0",
"bundled": true, "bundled": true,
"optional": true,
"requires": { "requires": {
"wrappy": "1" "wrappy": "1"
} }
@@ -1929,6 +1942,7 @@
"string-width": { "string-width": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true,
"optional": true,
"requires": { "requires": {
"code-point-at": "^1.0.0", "code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0", "is-fullwidth-code-point": "^1.0.0",

View File

@@ -1074,6 +1074,53 @@ namespace ReallifeGamemode.Server.Commands
} }
#endregion #endregion
#region ALevel1337 #region ALevel1337
[Command("sethandmoney", "~m~Benutzung: ~s~/sethandmoney [Target] [Geld]")]
public void CmdAdminSetUserHandMoney(Client admin, string targetname, int amount)
{
if (!admin.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
ChatService.NotAuthorized(admin);
return;
}
Client target = ClientService.GetClientByNameOrId(targetname);
if (target == null || !target.IsLoggedIn())
{
ChatService.PlayerNotFound(target);
return;
}
using (var context = new DatabaseContext())
{
var user = target.GetUser(context);
user.Handmoney = amount;
context.SaveChanges();
}
target.TriggerEvent("SERVER:SET_HANDMONEY", amount);
}
[Command("givehandmoney", "~m~Benutzung: ~s~/givehandmoney [Target] [Geld]")]
public void CmdAdminGiveUserHandMoney(Client admin, string targetname, int amount)
{
if (!admin.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
ChatService.NotAuthorized(admin);
return;
}
Client target = ClientService.GetClientByNameOrId(targetname);
if (target == null || !target.IsLoggedIn())
{
ChatService.PlayerNotFound(target);
return;
}
using (var context = new DatabaseContext())
{
var user = target.GetUser(context);
user.Handmoney += amount;
context.SaveChanges();
target.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney);
}
}
[Command("quicksavemode", "~m~Benutzung: ~s~/quicksavemode [Modus]\nModi (klein schreiben): ~g~blip, ~r~atm")] [Command("quicksavemode", "~m~Benutzung: ~s~/quicksavemode [Modus]\nModi (klein schreiben): ~g~blip, ~r~atm")]
public void CmdAdminSetQuickSaveMode(Client player, string mode) public void CmdAdminSetQuickSaveMode(Client player, string mode)
@@ -1089,7 +1136,7 @@ namespace ReallifeGamemode.Server.Commands
[Command("giveitem", "~m~Benutzung: ~s~/giveitem [Target] [Item ID] [Anzahl]")] [Command("giveitem", "~m~Benutzung: ~s~/giveitem [Target] [Item ID] [Anzahl]")]
public void CmdAdminGiveItem(Client player, string targetname, int itemId, int amount) public void CmdAdminGiveItem(Client player, string targetname, int itemId, int amount)
{ {
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true) if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{ {
ChatService.NotAuthorized(player); ChatService.NotAuthorized(player);
return; return;
@@ -1127,7 +1174,7 @@ namespace ReallifeGamemode.Server.Commands
[Command("inventory", "~m~Benutzung: ~s~/inventory [Spieler]")] [Command("inventory", "~m~Benutzung: ~s~/inventory [Spieler]")]
public void CmdAdminGiveItem(Client player, string targetname) public void CmdAdminGiveItem(Client player, string targetname)
{ {
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true) if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{ {
ChatService.NotAuthorized(player); ChatService.NotAuthorized(player);
return; return;

View File

@@ -36,6 +36,7 @@ namespace ReallifeGamemode.Server.Entities
public AdminLevel AdminLevel { get; set; } public AdminLevel AdminLevel { get; set; }
public bool Dead { get; set; } public bool Dead { get; set; }
public int Handmoney { get; set; }
public float PositionX { get; set; } public float PositionX { get; set; }
public float PositionY { get; set; } public float PositionY { get; set; }

View File

@@ -44,6 +44,7 @@ namespace ReallifeGamemode.Server.Events
player.SetData("isLoggedIn", true); player.SetData("isLoggedIn", true);
player.SetData("spec", true); player.SetData("spec", true);
player.SetData("duty", false); player.SetData("duty", false);
player.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney, 0);
if (user.IsAdmin(AdminLevel.HEADADMIN) == true) if (user.IsAdmin(AdminLevel.HEADADMIN) == true)
{ {

View File

@@ -4,6 +4,7 @@ using System.Linq;
using System.Text; using System.Text;
using GTANetworkAPI; using GTANetworkAPI;
using ReallifeGamemode.Server.Entities; using ReallifeGamemode.Server.Entities;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Models; using ReallifeGamemode.Server.Models;
/** /**
@@ -20,21 +21,24 @@ namespace ReallifeGamemode.Server.Managers
public static void InitATMs() public static void InitATMs()
{ {
var addedATMs = 0;
using (var dbContext = new DatabaseContext()) using (var dbContext = new DatabaseContext())
{ {
foreach (var currentATM in dbContext.Blips) foreach (var currentATM in dbContext.Blips)
{ {
if (currentATM.Sprite == 500) if (currentATM.Sprite == 500)
{ {
if(dbContext.ATMs.FirstOrDefault(a => a.X == currentATM.PositionX && a.Y == currentATM.PositionY && a.Z == currentATM.PositionZ) == null) if(dbContext.ATMs.FirstOrDefault(a => a.Id == currentATM.Id) == null)
{ {
var dataSet = new ATM var dataSet = new ATM
{ {
Id = currentATM.Id,
X = currentATM.PositionX, X = currentATM.PositionX,
Y = currentATM.PositionY, Y = currentATM.PositionY,
Z = currentATM.PositionZ Z = currentATM.PositionZ
}; };
dbContext.Add(dataSet); dbContext.Add(dataSet);
addedATMs++;
} }
else else
{ {
@@ -42,6 +46,15 @@ namespace ReallifeGamemode.Server.Managers
} }
} }
} }
if(addedATMs > 0)
{
NAPI.Util.ConsoleOutput(addedATMs + " Geldautomaten hinzugefügt");
}
else
{
NAPI.Util.ConsoleOutput("Keine Geldautomaten hinzugefügt");
}
dbContext.SaveChanges(); dbContext.SaveChanges();
LoadATMs(); LoadATMs();
} }
@@ -56,16 +69,13 @@ namespace ReallifeGamemode.Server.Managers
currentColShape.OnEntityEnterColShape += EnterATMRange; currentColShape.OnEntityEnterColShape += EnterATMRange;
currentColShape.OnEntityExitColShape += ExitATMRange; currentColShape.OnEntityExitColShape += ExitATMRange;
ATMColShapes.Add(currentColShape); ATMColShapes.Add(currentColShape);
currentColShape.SetData("id", currentATM.Id);
} }
} }
} }
public static void EnterATMRange(ColShape colShape, Client client) public static void EnterATMRange(ColShape colShape, Client client)
{ {
using (var dbContext = new DatabaseContext()) client.SetData("nearATM", colShape.GetData("id"));
{
var nearATM = dbContext.ATMs.FirstOrDefault(a => a.X == colShape.Position.X && a.Y == colShape.Position.Y && a.Z == colShape.Position.Z);
client.SetData("nearATM", nearATM.Id);
}
} }
public static void ExitATMRange(ColShape colShape, Client client) public static void ExitATMRange(ColShape colShape, Client client)
{ {
@@ -73,11 +83,41 @@ namespace ReallifeGamemode.Server.Managers
} }
public static void ShowAtmUi(Client player, int atmId) public static void ShowAtmUi(Client player, int atmId)
{ {
player.TriggerEvent("SERVER:ShowAtmUi", atmId);
}
[RemoteEvent("CLIENT:ATM_ACTION")]
public void AtmAction(Client client, int site, int inputField1, int inputField2)
{
var user = client.GetUser();
using (var dbContext = new DatabaseContext()) using (var dbContext = new DatabaseContext())
{ {
var atmBalance = dbContext.ATMs.FirstOrDefault(a => a.Id == atmId); //SITE //0 Geld einzahlen //1 Geld auszahlen //2 Geld überweisen
player.TriggerEvent("SERVER:ShowAtmUi", atmId, atmBalance.Balance); switch (site)
{
//GELD EINZAHLEN in1
case 0:
var updateHandMoneyIn = dbContext.Users.FirstOrDefault(u => u.Id == user.Id);
var updateBankMoneyIn = dbContext.UserBankAccounts.FirstOrDefault(b => b.UserId == user.Id);
updateHandMoneyIn.Handmoney -= inputField1;
updateBankMoneyIn.Balance += inputField1;
break;
//GELD AUSZAHLEN in1
case 1:
var updateHandMoneyOut = dbContext.Users.FirstOrDefault(u => u.Id == user.Id);
var updateBankMoneyOut = dbContext.UserBankAccounts.FirstOrDefault(b => b.UserId == user.Id);
updateHandMoneyOut.Handmoney += inputField1;
updateBankMoneyOut.Balance -= inputField1;
break;
//GELD ÜBERWEISEN in1 = Kontonr // in2 = Betrag
case 2:
break;
}
dbContext.SaveChanges();
} }
} }
} }
} }

View File

@@ -728,6 +728,8 @@ namespace ReallifeGamemode.Migrations
b.Property<int?>("FactionRankId"); b.Property<int?>("FactionRankId");
b.Property<int>("Handmoney");
b.Property<int>("LogUserId"); b.Property<int>("LogUserId");
b.Property<string>("Name") b.Property<string>("Name")

3
package-lock.json generated Normal file
View File

@@ -0,0 +1,3 @@
{
"lockfileVersion": 1
}