added some admin commands
This commit is contained in:
|
Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 106 KiB |
119
Client/Gui/infobox.js
Normal file
119
Client/Gui/infobox.js
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
/**
|
||||||
|
* @overview Life of German Reallife - Gui Infobox infobox.js
|
||||||
|
* @author VegaZ
|
||||||
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
|
*/
|
||||||
|
|
||||||
|
var currentdate;
|
||||||
|
var timeString;
|
||||||
|
|
||||||
|
var draw = false;
|
||||||
|
|
||||||
|
var draw = false;
|
||||||
|
let posX = 0.92;
|
||||||
|
let posY = 0.45;
|
||||||
|
let width = 0.1;
|
||||||
|
let height = 0.2;
|
||||||
|
let colorR = 0;
|
||||||
|
let colorG = 0;
|
||||||
|
let colorB = 0;
|
||||||
|
let colorA = 72;
|
||||||
|
|
||||||
|
var day;
|
||||||
|
var month;
|
||||||
|
var year;
|
||||||
|
var hour;
|
||||||
|
var minute;
|
||||||
|
var second;
|
||||||
|
|
||||||
|
var nDay;
|
||||||
|
var nMonth;
|
||||||
|
var nHour;
|
||||||
|
var nMinute;
|
||||||
|
var nSecond;
|
||||||
|
|
||||||
|
mp.events.add("draw", () => {
|
||||||
|
draw = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
mp.events.add("render", () => {
|
||||||
|
|
||||||
|
if (draw === true) {
|
||||||
|
currentdate = new Date();
|
||||||
|
|
||||||
|
day = currentdate.getDate();
|
||||||
|
month = currentdate.getMonth();
|
||||||
|
year = currentdate.getFullYear();
|
||||||
|
|
||||||
|
hour = currentdate.getHours();
|
||||||
|
minute = currentdate.getMinutes();
|
||||||
|
second = currentdate.getSeconds();
|
||||||
|
|
||||||
|
if (day < 10) {
|
||||||
|
nDay = "0" + day;
|
||||||
|
} else nDay = day;
|
||||||
|
|
||||||
|
if (hour < 10) {
|
||||||
|
nHour = "0" + hour;
|
||||||
|
} else nHour = hour;
|
||||||
|
|
||||||
|
if (minute < 10) {
|
||||||
|
nMinute = "0" + minute;
|
||||||
|
} else nMinute = minute;
|
||||||
|
|
||||||
|
if (second < 10) {
|
||||||
|
nSecond = "0" + second;
|
||||||
|
} else nSecond = second;
|
||||||
|
|
||||||
|
switch (month) {
|
||||||
|
case 0:
|
||||||
|
nMonth = "Jan.";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
nMonth = "Feb.";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
nMonth = "Mär.";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
nMonth = "Apr.";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
nMonth = "Mai";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
nMonth = "Jun.";
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
nMonth = "Jul.";
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
nMonth = "Aug.";
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
nMonth = "Sep.";
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
nMonth = "Okt.";
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
nMonth = "Nov.";
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
nMonth = "Dez.";
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
timeString = "~r~Datum: ~s~" + nDay + ". " + nMonth + " " + year + "\n~r~Uhrzeit: ~s~" + nHour + ":" + nMinute + ":" + nSecond + " Uhr";
|
||||||
|
|
||||||
|
mp.game.graphics.drawRect(posX, posY, width, height, colorR, colorG, colorB, colorA);
|
||||||
|
mp.game.graphics.drawText(timeString, [0.92, 0.35],
|
||||||
|
{
|
||||||
|
font: 4,
|
||||||
|
color: [255, 255, 255, 255],
|
||||||
|
scale: [0.5, 0.5],
|
||||||
|
outline: true
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
@@ -1,15 +1,14 @@
|
|||||||
<!--
|
<!--
|
||||||
* @overview Life of German Reallife - Login Login login.html
|
* @overview Life of German Reallife - Client Login login.html
|
||||||
* @author Orangebox, VegaZ
|
* @author Orangebox, hydrant, VegaZ
|
||||||
* @copyright (c) 2008 - 2018 Life of German
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
*-->
|
*-->
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
|
<script src="../Dependences/jquery-3.3.1.min.js"></script>
|
||||||
<link rel="stylesheet" href="style.css" />
|
<link rel="stylesheet" href="style.css" />
|
||||||
<script src="Dependences/jquery-3.3.1.min.js"></script>
|
|
||||||
<script src="Dependences/bootstrap-3.3.7/js/bootstrap.min.js"></script>
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
@@ -20,73 +19,32 @@
|
|||||||
ERROR TEXT
|
ERROR TEXT
|
||||||
</div>
|
</div>
|
||||||
<div class="register-form form-l">
|
<div class="register-form form-l">
|
||||||
<input type="text" placeholder="Benutzername" id="usernameInputRegister" />
|
|
||||||
<input type="password" placeholder="Passwort" id="passwordInputRegister" />
|
<input type="password" placeholder="Passwort" id="passwordInputRegister" />
|
||||||
<input type="password" placeholder="Passwort wiederholen" id="passwordRepeatInputRegister" />
|
<input type="password" placeholder="Passwort wiederholen" id="passwordRepeatInputRegister" />
|
||||||
<button id="registerBtn">Erstellen</button><br /><br />
|
<button id="registerBtn" onclick="registerPlayer()";>Registrieren</button><br /><br />
|
||||||
<button class="quitBtn">Server verlassen</button>
|
<button class="quitBtn">Server verlassen</button>
|
||||||
<p class="message">Bereits registriert? <a href="#">Logg dich ein</a></p>
|
<p class="message">Bereits registriert? <a href="#">Logg dich ein</a></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="login-form form-l">
|
<div class="login-form form-l">
|
||||||
<input type="text" placeholder="Benutzername" id="usernameInputLogin" />
|
|
||||||
<input type="password" placeholder="Passwort" id="passwordInputLogin" />
|
<input type="password" placeholder="Passwort" id="passwordInputLogin" />
|
||||||
<button id="loginBtn">Einloggen</button><br /><br />
|
<button id="loginBtn" onclick="loginPlayer()">Einloggen</button><br /><br />
|
||||||
<button class="quitBtn">Server verlassen</button>
|
<button class="quitBtn">Server verlassen</button>
|
||||||
<p class="message">Nicht registriert? <a href="#">Erstelle einen Account</a></p>
|
<p class="message">Nicht registriert? <a href="#">Erstelle einen Account</a></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
$(".message a").click(function () {
|
||||||
$(document).ready(function () {
|
$(".form-l").animate({ height: "toggle", opacity: "toggle" }, "slow");
|
||||||
resourceCall("RequestDisplayname");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$('.message a').click(function () {
|
$(".quitBtn").click(() => {
|
||||||
$('.form-l').animate({ height: "toggle", opacity: "toggle" }, "slow");
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#registerBtn').click(function () {
|
|
||||||
var password = $('#passwordInputRegister').val();
|
|
||||||
var passwordRepeat = $('#passwordRepeatInputRegister').val();
|
|
||||||
|
|
||||||
if (password === "" || passwordRepeat === "") {
|
|
||||||
showError("Mindestens ein Passwort Feld ist leer!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (password !== passwordRepeat) {
|
|
||||||
showError("Die beiden Passwörter stimmen nicht überein!")
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (password.length < 8) {
|
|
||||||
showError("Das Passwort muss mindestens 8 Zeichen lang sein");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
resourceCall("Register", password, passwordRepeat);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#loginBtn').click(function () {
|
|
||||||
var password = $('#passwordInputLogin').val();
|
|
||||||
|
|
||||||
if (password === "") {
|
|
||||||
showError("Du musst ein Passwort angeben!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
resourceCall("Login", password);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.quitBtn').click(function () {
|
|
||||||
resourceCall("Quit");
|
resourceCall("Quit");
|
||||||
});
|
});
|
||||||
|
|
||||||
function showError(error) {
|
function showError(error) {
|
||||||
$('.isa_error').html(error);
|
$(".isa_error").html(error);
|
||||||
$('.isa_error').slideDown();
|
$(".isa_error").slideDown();
|
||||||
}
|
}
|
||||||
|
|
||||||
function SendDisplayname(name) {
|
function SendDisplayname(name) {
|
||||||
|
|||||||
@@ -4,12 +4,37 @@
|
|||||||
* @copyright (c) 2008 - 2018 Life of German
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$('#loginBtn').click(() => {
|
function registerPlayer() {
|
||||||
$('.alert').remove(); //Remove any alerts when we attempt to login/register
|
|
||||||
mp.trigger('loginInformationToServer', $('#usernameInputLogin').val(), $('#passwordInputLogin').val());
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#registerBtn').click(() => {
|
var password = document.getElementById("passwordInputRegister").value;
|
||||||
$('.alert').remove(); //Remove any alerts when we attempt to login/register
|
var passwordRepeat = document.getElementById("passwordRepeatInputRegister").value;
|
||||||
mp.trigger('registerInformationToServer', $('#usernameInputRegister').val(), $('#passwordInputRegister').val());
|
|
||||||
});
|
if(password === "" || passwordRepeat === "") {
|
||||||
|
showError("Mindestens ein Passwort Feld ist leer!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (password !== passwordRepeat) {
|
||||||
|
showError("Die beiden Passwörter stimmen nicht überein!")
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (password.length < 8) {
|
||||||
|
showError("Das Passwort muss mindestens 8 Zeichen lang sein");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$('.isa_error').hide();
|
||||||
|
mp.trigger("registerInformationToServer", password);
|
||||||
|
}
|
||||||
|
|
||||||
|
function loginPlayer() {
|
||||||
|
|
||||||
|
let password = document.getElementById("passwordInputLogin").value;
|
||||||
|
|
||||||
|
if (password === "") {
|
||||||
|
showError("Du musst ein Passwort angeben!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$('.isa_error').hide();
|
||||||
|
mp.trigger("loginInformationToServer", password);
|
||||||
|
}
|
||||||
@@ -1,19 +1,78 @@
|
|||||||
/**
|
/**
|
||||||
* @overview Life of German Reallife - Login Main main.js
|
* @overview Life of German Reallife - Login Main main.js
|
||||||
* @author VegaZ
|
* @author VegaZ, hydrant
|
||||||
* @copyright (c) 2008 - 2018 Life of German
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
*/
|
*/
|
||||||
var loginBrowser = mp.browsers.new('package://Login/login.html');
|
|
||||||
|
var loginBrowser;
|
||||||
|
loginBrowser = mp.browsers.new('package://Login/login.html');
|
||||||
|
mp.gui.chat.activate(false);
|
||||||
mp.gui.cursor.show(true, true);
|
mp.gui.cursor.show(true, true);
|
||||||
|
mp.game.ui.displayHud(false);
|
||||||
|
mp.game.ui.displayRadar(false);
|
||||||
|
|
||||||
mp.events.add('loginInformationToServer', (username, password) => {
|
var loginCam = mp.cameras.new('login', new mp.Vector3(-1883.736, -781.4911, 78.27616), new mp.Vector3(3.185999, 0, -79.59519), 40);
|
||||||
|
loginCam.setActive(true);
|
||||||
|
mp.game.cam.renderScriptCams(true, false, 0, true, false);
|
||||||
|
|
||||||
mp.events.callRemote('OnPlayerLogin', username, password);
|
mp.events.add('loginInformationToServer', (password) => {
|
||||||
|
|
||||||
|
mp.events.callRemote('OnPlayerLogin', password);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
mp.events.add('registerInformationToServer', (username, password) => {
|
mp.events.add('registerInformationToServer', (password) => {
|
||||||
|
mp.events.callRemote('OnPlayerRegister', password);
|
||||||
mp.events.callRemote('OnPlayerRegister', username, password);
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
mp.events.add('registerSuccess', () => {
|
||||||
|
|
||||||
|
if (loginBrowser)
|
||||||
|
{
|
||||||
|
loginBrowser.destroy();
|
||||||
|
}
|
||||||
|
mp.gui.cursor.show(false, false);
|
||||||
|
mp.gui.chat.activate(true);
|
||||||
|
loginCam.setActive(false);
|
||||||
|
mp.game.cam.renderScriptCams(false, false, 0, true, false);
|
||||||
|
mp.game.ui.displayRadar(true);
|
||||||
|
mp.game.ui.displayHud(true);
|
||||||
|
});
|
||||||
|
mp.events.add('loginSuccess', () => {
|
||||||
|
mp.gui.chat.push("Erfolgreich eingeloggt!")
|
||||||
|
if (loginBrowser)
|
||||||
|
{
|
||||||
|
loginBrowser.destroy();
|
||||||
|
}
|
||||||
|
mp.gui.cursor.show(false, false);
|
||||||
|
mp.gui.chat.activate(true);
|
||||||
|
loginCam.setActive(false);
|
||||||
|
mp.game.cam.renderScriptCams(false, false, 0, true, false);
|
||||||
|
mp.game.ui.displayRadar(true);
|
||||||
|
mp.game.ui.displayHud(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
mp.events.add('loginFail', (reason) => {
|
||||||
|
|
||||||
|
showCefError(reason);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
mp.events.add('loginDeny', (reason) => {
|
||||||
|
if (loginBrowser) {
|
||||||
|
loginBrowser.destroy();
|
||||||
|
}
|
||||||
|
mp.gui.cursor.show(false, false);
|
||||||
|
mp.gui.chat.activate(true);
|
||||||
|
showCefError(reason);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
mp.events.add('registerFail', (reason) => {
|
||||||
|
showCefError(reason);
|
||||||
|
});
|
||||||
|
|
||||||
|
function showCefError(error) {
|
||||||
|
loginBrowser.execute(`showError(\`` + error + `\`)`);
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* @overview Life of German Reallife - Login CSS style.css
|
* @overview Life of German Reallife - Login CSS style.css
|
||||||
* @author Orangebox
|
* @author Orangebox, hydrant
|
||||||
* @copyright (c) 2008 - 2018 Life of German
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -35,11 +35,11 @@
|
|||||||
background-color: #FFBABA;
|
background-color: #FFBABA;
|
||||||
}
|
}
|
||||||
|
|
||||||
.isa_info i, .isa_success i, .isa_warning i, .isa_error i {
|
.isa_info i, .isa_success i, .isa_warning i, .isa_error i {
|
||||||
margin: 10px 22px;
|
margin: 10px 22px;
|
||||||
font-size: 2em;
|
font-size: 2em;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form {
|
.form {
|
||||||
position: relative;
|
position: relative;
|
||||||
@@ -78,27 +78,27 @@ button {
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
button:hover, .form button:active, .form button:focus {
|
button:hover, .form button:active, .form button:focus {
|
||||||
background: #002574;
|
background: #002574;
|
||||||
}
|
}
|
||||||
|
|
||||||
.quitBtn {
|
.quitBtn {
|
||||||
background-color: orangered;
|
background-color: orangered;
|
||||||
}
|
}
|
||||||
|
|
||||||
.quitBtn:hover, .quitBtn:focus, .quitBtn:active {
|
.quitBtn:hover, .quitBtn:focus, .quitBtn:active {
|
||||||
background-color: #cc3700 !important;
|
background-color: #cc3700 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.message {
|
.message {
|
||||||
margin: 15px 0 0;
|
margin: 15px 0 0;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.message a {
|
.message a {
|
||||||
color: #0035A5;
|
color: #0035A5;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.register-form {
|
.register-form {
|
||||||
display: none;
|
display: none;
|
||||||
@@ -111,16 +111,16 @@ button {
|
|||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.container:before, .container:after {
|
.container:before, .container:after {
|
||||||
content: "";
|
content: "";
|
||||||
display: block;
|
display: block;
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
.container .info {
|
.container .info {
|
||||||
margin: 50px auto;
|
margin: 50px auto;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.info h1 {
|
.info h1 {
|
||||||
margin: 0 0 15px;
|
margin: 0 0 15px;
|
||||||
@@ -135,17 +135,16 @@ button {
|
|||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.info span a {
|
.info span a {
|
||||||
color: #000000;
|
color: #000000;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.info span .fa {
|
.info span .fa {
|
||||||
color: #EF3B3A;
|
color: #EF3B3A;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
background: url(bg_gta_cnr.png);
|
|
||||||
font-family: "Roboto", sans-serif;
|
font-family: "Roboto", sans-serif;
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
}
|
}
|
||||||
|
|||||||
33
Client/Save/main.js
Normal file
33
Client/Save/main.js
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/**
|
||||||
|
* @overview Life of German Reallife - Save Main main.js
|
||||||
|
* @author VegaZ
|
||||||
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
|
*/
|
||||||
|
var saveBrowser;
|
||||||
|
|
||||||
|
mp.events.add('saveBlip', () => {
|
||||||
|
|
||||||
|
saveBrowser = mp.browsers.new('package://Save/save.html');
|
||||||
|
mp.gui.chat.activate(false);
|
||||||
|
mp.gui.cursor.show(true, true);
|
||||||
|
});
|
||||||
|
|
||||||
|
mp.events.add('saveData', (blipSprite, blipName, blipScale, blipColor, blipAlpha, blipDrawDistance, blipShortRange, blipRotation, blipDimension) => {
|
||||||
|
if (saveBrowser) {
|
||||||
|
saveBrowser.destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
mp.events.callRemote('OnSaveBlipData', blipSprite, blipName, blipScale, blipColor, blipAlpha,
|
||||||
|
blipDrawDistance, blipShortRange, blipRotation, blipDimension);
|
||||||
|
mp.gui.chat.push(blipShortRange);
|
||||||
|
mp.gui.cursor.show(false, false);
|
||||||
|
mp.gui.chat.activate(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
mp.events.add('cancelData', () => {
|
||||||
|
if (saveBrowser) {
|
||||||
|
saveBrowser.destroy();
|
||||||
|
}
|
||||||
|
mp.gui.cursor.show(false, false);
|
||||||
|
mp.gui.chat.activate(true);
|
||||||
|
});
|
||||||
72
Client/Save/save.html
Normal file
72
Client/Save/save.html
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
<!--
|
||||||
|
* @overview Life of German Reallife - Client Save.html
|
||||||
|
* @author Orangebox, hydrant, VegaZ
|
||||||
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
|
*-->
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<script src="../Dependences/jquery-3.3.1.min.js"></script>
|
||||||
|
<link rel="stylesheet" href="style.css" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="save-page" style="padding: 5% 0 0;">
|
||||||
|
<div class="form">
|
||||||
|
<div class="blip-form">
|
||||||
|
<p><b>Blip speichern, bitte fülle die Tabelle aus:</b></p>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td align="right"><b>Model ID:</b></td>
|
||||||
|
<td><input type="text" placeholder="[INT]-Wert" id="blipSprite" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="right"><b>Name:</b></td>
|
||||||
|
<td><input type="text" placeholder="Wird angezeigt beim hovern" id="blipName" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="right"><b>Skalierung:</b></td>
|
||||||
|
<td><input type="text" placeholder="[FLOAT]-Wert | Standard: 1" id="blipScale" /></td>
|
||||||
|
</tr>
|
||||||
|
<!--<tr>
|
||||||
|
<td align="right"><b>Farbe:</b></td>
|
||||||
|
<td>
|
||||||
|
<input class="colorPicker" type="color" id="blipColor" name="blipColor" value="#000000" />
|
||||||
|
</td>
|
||||||
|
</tr>-->
|
||||||
|
<tr>
|
||||||
|
<td align="right"><b>Farbe:</b></td>
|
||||||
|
<td><input type="text" placeholder="Siehe Wiki" id="blipColor" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="right"><b>Transparenz:</b></td>
|
||||||
|
<td><input type="text" placeholder="(0-255)" id="blipAlpha" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="right"><b>Draw Distance:</b></td>
|
||||||
|
<td><input type="text" placeholder="[FLOAT]-Wert" id="blipDrawDistance" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="right"><b>Short Range:</b></td>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" id="blipShortRange" name="blipShortRange" value="shortRange" />Zeigt das Blip nur innerhalb der Minimap
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="right"><b>Rotation:</b></td>
|
||||||
|
<td><input type="text" placeholder="[FLOAT]-Wert" id="blipRotation" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="right"><b>Dimension:</b></td>
|
||||||
|
<td><input type="text" placeholder="(0-255)" id="blipDimension" /></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<button id="saveBtn" onclick="saveData()">Speichern</button><br /><br />
|
||||||
|
<button class="cancelBtn" onclick="cancelData()">Abbrechen</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script src="save.js" type="text/javascript"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
28
Client/Save/save.js
Normal file
28
Client/Save/save.js
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/**
|
||||||
|
* @overview Life of German Reallife - Login Login login.js
|
||||||
|
* @author VegaZ
|
||||||
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
|
*/
|
||||||
|
|
||||||
|
function saveData() {
|
||||||
|
let blipSprite = document.getElementById("blipSprite").value;
|
||||||
|
let blipName = document.getElementById("blipName").value;
|
||||||
|
let blipScale = document.getElementById("blipScale").value;
|
||||||
|
let blipColor = document.getElementById("blipColor").value;
|
||||||
|
let blipAlpha = document.getElementById("blipAlpha").value;
|
||||||
|
let blipDrawDistance = document.getElementById("blipSprite").value;
|
||||||
|
let blipShortRange = document.getElementById("blipShortRange").checked;
|
||||||
|
let blipRotation = document.getElementById("blipRotation").value;
|
||||||
|
let blipDimension = document.getElementById("blipDimension").value;
|
||||||
|
|
||||||
|
mp.trigger("saveData", blipSprite, blipName, blipScale, blipColor, blipAlpha, blipDrawDistance, blipShortRange, blipRotation, blipDimension);
|
||||||
|
}
|
||||||
|
|
||||||
|
function cancelData() {
|
||||||
|
mp.trigger("cancelData");
|
||||||
|
}
|
||||||
|
|
||||||
|
function getType() {
|
||||||
|
mp.gui.chat.push("getType");
|
||||||
|
return typ;
|
||||||
|
}
|
||||||
184
Client/Save/style.css
Normal file
184
Client/Save/style.css
Normal file
@@ -0,0 +1,184 @@
|
|||||||
|
/**
|
||||||
|
* @overview Life of German Reallife - Save CSS style.css
|
||||||
|
* @author Orangebox, hydrant, VegaZ
|
||||||
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
|
*/
|
||||||
|
|
||||||
|
.save-page {
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.isa_info, .isa_success, .isa_warning, .isa_error {
|
||||||
|
margin: 10px 0px;
|
||||||
|
padding: 12px;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.isa_info {
|
||||||
|
color: #00529B;
|
||||||
|
background-color: #BDE5F8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.isa_success {
|
||||||
|
color: #4F8A10;
|
||||||
|
background-color: #DFF2BF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.isa_warning {
|
||||||
|
color: #9F6000;
|
||||||
|
background-color: #FEEFB3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.isa_error {
|
||||||
|
color: #D8000C;
|
||||||
|
background-color: #FFBABA;
|
||||||
|
}
|
||||||
|
|
||||||
|
.isa_info i, .isa_success i, .isa_warning i, .isa_error i {
|
||||||
|
margin: 10px 22px;
|
||||||
|
font-size: 2em;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form {
|
||||||
|
margin-left: 36%;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1;
|
||||||
|
background: rgba(255, 255, 255, .85);
|
||||||
|
padding: 20px;
|
||||||
|
text-align: center;
|
||||||
|
box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
|
||||||
|
}
|
||||||
|
|
||||||
|
input {
|
||||||
|
font-family: "Roboto", sans-serif;
|
||||||
|
outline: 0;
|
||||||
|
background: #f2f2f2;
|
||||||
|
width: 100%;
|
||||||
|
border: 0;
|
||||||
|
margin: 5px 0 5px 0;
|
||||||
|
padding: 12px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
input.colorPicker {
|
||||||
|
font-family: "Roboto", sans-serif;
|
||||||
|
outline: 0;
|
||||||
|
background: #f2f2f2;
|
||||||
|
width: 100%;
|
||||||
|
border: 0;
|
||||||
|
margin: 5px 0 5px 0;
|
||||||
|
padding: 0px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
input#blipShortRange {
|
||||||
|
margin: 10px 0 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
font-family: "Roboto", sans-serif;
|
||||||
|
text-transform: uppercase;
|
||||||
|
outline: 0;
|
||||||
|
background: #31c474;
|
||||||
|
width: 40%;
|
||||||
|
border: 0;
|
||||||
|
padding: 15px;
|
||||||
|
color: #FFFFFF;
|
||||||
|
font-size: 14px;
|
||||||
|
-webkit-transition: all 0.3s ease;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
button:hover, .form button:active, .form button:focus {
|
||||||
|
background: #31bd40;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cancelBtn {
|
||||||
|
background-color: orangered;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cancelBtn:hover, .cancelBtn:focus, .cancelBtn:active {
|
||||||
|
background-color: #ff0223 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
align-self: center;
|
||||||
|
}
|
||||||
|
.message {
|
||||||
|
margin: 15px 0 0;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.message a {
|
||||||
|
color: #0035A5;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.register-form {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.container {
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
max-width: 300px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container:before, .container:after {
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container .info {
|
||||||
|
margin: 50px auto;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info h1 {
|
||||||
|
margin: 0 0 15px;
|
||||||
|
padding: 0;
|
||||||
|
font-size: 36px;
|
||||||
|
font-weight: 300;
|
||||||
|
color: #1a1a1a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info span {
|
||||||
|
color: #4d4d4d;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info span a {
|
||||||
|
color: #000000;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info span .fa {
|
||||||
|
color: #EF3B3A;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: "Roboto", sans-serif;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
tr{
|
||||||
|
|
||||||
|
}
|
||||||
|
td {
|
||||||
|
align-content: stretch;
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-right: 10px;
|
||||||
|
box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 0 0 0 rgba(0, 0, 0, 0.24);
|
||||||
|
border-top: 2px double gray;
|
||||||
|
border-bottom: 2px double gray;
|
||||||
|
border-width: 0.5px;
|
||||||
|
}
|
||||||
|
table{
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
@@ -4,4 +4,7 @@
|
|||||||
* @copyright (c) 2008 - 2018 Life of German
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
require('./Gui/infobox.js');
|
||||||
require('./Login/main.js');
|
require('./Login/main.js');
|
||||||
|
require('./Save/main.js');
|
||||||
|
require('./Save/save.js');
|
||||||
|
|||||||
14
Main.cs
14
Main.cs
@@ -1,5 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
using GTANetworkAPI;
|
using GTANetworkAPI;
|
||||||
|
using reallife_gamemode.Model;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @overview Life of German Reallife - Main Class (Main.cs)
|
* @overview Life of German Reallife - Main Class (Main.cs)
|
||||||
@@ -11,11 +13,21 @@ namespace reallife_gamemode
|
|||||||
{
|
{
|
||||||
public class Main : Script
|
public class Main : Script
|
||||||
{
|
{
|
||||||
|
public static readonly Vector3 DEFAULT_SPAWN_POSITION = new Vector3(-427.5189, 1116.453, 326.7829);
|
||||||
|
public static readonly float DEFAULT_SPAWN_HEADING = 340.8f;
|
||||||
|
|
||||||
[ServerEvent(Event.ResourceStart)]
|
[ServerEvent(Event.ResourceStart)]
|
||||||
public void OnResourceStart()
|
public void OnResourceStart()
|
||||||
{
|
{
|
||||||
NAPI.Server.SetCommandErrorMessage("~r~[FEHLER]~s~ Dieser Command existiert nicht.");
|
NAPI.Server.SetCommandErrorMessage("~r~[FEHLER]~s~ Dieser Command existiert nicht.");
|
||||||
NAPI.Util.ConsoleOutput("reallife-gamemode resource loaded!");
|
NAPI.Server.SetDefaultSpawnLocation(DEFAULT_SPAWN_POSITION, DEFAULT_SPAWN_HEADING);
|
||||||
|
NAPI.Server.SetAutoSpawnOnConnect(false);
|
||||||
|
|
||||||
|
using (var context = new DatabaseContext())
|
||||||
|
{
|
||||||
|
context.Users.FirstOrDefault();
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using System.Configuration;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore.Metadata;
|
using Microsoft.EntityFrameworkCore.Metadata;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @overview Life of German Reallife - DatabaseContext.cs
|
* @overview Life of German Reallife - DatabaseContext.cs
|
||||||
@@ -35,5 +37,12 @@ namespace reallife_gamemode.Model
|
|||||||
}
|
}
|
||||||
|
|
||||||
public DbSet<Server.Entities.User> Users { get; set; }
|
public DbSet<Server.Entities.User> Users { get; set; }
|
||||||
|
|
||||||
|
public DbSet<Server.Saves.SavedBlip> Blips { get; set; }
|
||||||
|
public DbSet<Server.Saves.SavedMarker> Markers { get; set; }
|
||||||
|
public DbSet<Server.Saves.SavedPed> Peds { get; set; }
|
||||||
|
public DbSet<Server.Saves.SavedPickup> Pickups { get; set; }
|
||||||
|
public DbSet<Server.Saves.SavedTextLabel> TextLabels { get; set; }
|
||||||
|
public DbSet<Server.Saves.SavedVehicle> Vehicles { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,13 +2,18 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using GTANetworkAPI;
|
using GTANetworkAPI;
|
||||||
|
using reallife_gamemode.Server.Events;
|
||||||
using reallife_gamemode.Server.Extensions;
|
using reallife_gamemode.Server.Extensions;
|
||||||
using reallife_gamemode.Server.Services;
|
using reallife_gamemode.Server.Services;
|
||||||
using reallife_gamemode.Server.Util;
|
using reallife_gamemode.Server.Util;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @overview Life of German Reallife - Admin Commands (Admin.cs)
|
* @overview Life of German Reallife - Admin Commands (Admin.cs)
|
||||||
|
<<<<<<< HEAD
|
||||||
* @author VegaZ, hydrant, balbo
|
* @author VegaZ, hydrant, balbo
|
||||||
|
=======
|
||||||
|
* @author VegaZ, hydrant, xSprite
|
||||||
|
>>>>>>> 5e0e0d82f2d05dda2954836a69347d4433839f85
|
||||||
* @copyright (c) 2008 - 2018 Life of German
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -19,6 +24,11 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
[Command("o", "~m~Benutzung: ~s~/o [Nachricht]", GreedyArg = true)]
|
[Command("o", "~m~Benutzung: ~s~/o [Nachricht]", GreedyArg = true)]
|
||||||
public void CmdAdminO(Client player, string message)
|
public void CmdAdminO(Client player, string message)
|
||||||
{
|
{
|
||||||
|
if (ClientExtension.IsLoggedIn(player) == false)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotLoggedIn(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)
|
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)
|
||||||
{
|
{
|
||||||
ChatService.NotAuthorized(player);
|
ChatService.NotAuthorized(player);
|
||||||
@@ -32,6 +42,11 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
[Command("veh", "~m~Benutzung: ~s~/veh [Fahrzeug] (Farbe 1) (Farbe 2)")]
|
[Command("veh", "~m~Benutzung: ~s~/veh [Fahrzeug] (Farbe 1) (Farbe 2)")]
|
||||||
public void CmdAdminVeh(Client player, VehicleHash hash, int color1 = 111, int color2 = 111)
|
public void CmdAdminVeh(Client player, VehicleHash hash, int color1 = 111, int color2 = 111)
|
||||||
{
|
{
|
||||||
|
if (ClientExtension.IsLoggedIn(player) == false)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotLoggedIn(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||||
{
|
{
|
||||||
ChatService.NotAuthorized(player);
|
ChatService.NotAuthorized(player);
|
||||||
@@ -47,18 +62,24 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
Vehicle v = NAPI.Vehicle.CreateVehicle(hash, player.Position, player.Rotation.Z, color1, color2);
|
Vehicle v = NAPI.Vehicle.CreateVehicle(hash, player.Position, player.Rotation.Z, color1, color2);
|
||||||
|
|
||||||
player.SetIntoVehicle(v.Handle, -1);
|
player.SetIntoVehicle(v.Handle, -1);
|
||||||
|
player.SendChatMessage("Maxspeed: + " +player.Vehicle.MaxSpeed + "");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("fixveh")]
|
[Command("fv")]
|
||||||
public void CmdAdminFixveh(Client player)
|
public void CmdAdminFixveh(Client player)
|
||||||
{
|
{
|
||||||
|
if (ClientExtension.IsLoggedIn(player) == false)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotLoggedIn(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||||
{
|
{
|
||||||
ChatService.NotAuthorized(player);
|
ChatService.NotAuthorized(player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!player.IsInVehicle) // Man darf keine Autos erstellen, wenn man selbst in einem sitzt (verhindert Bugs)
|
if (!player.IsInVehicle)
|
||||||
{
|
{
|
||||||
player.SendChatMessage("~r~[FEHLER]~s~ Du sitzt momentan nicht in einem Fahrzeug.");
|
player.SendChatMessage("~r~[FEHLER]~s~ Du sitzt momentan nicht in einem Fahrzeug.");
|
||||||
return;
|
return;
|
||||||
@@ -67,9 +88,14 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
player.Vehicle.Repair();
|
player.Vehicle.Repair();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("delveh")]
|
[Command("vdestroy")]
|
||||||
public void CmdAdminDelveh(Client player)
|
public void CmdAdminDelveh(Client player)
|
||||||
{
|
{
|
||||||
|
if (ClientExtension.IsLoggedIn(player) == false)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotLoggedIn(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||||
{
|
{
|
||||||
ChatService.NotAuthorized(player);
|
ChatService.NotAuthorized(player);
|
||||||
@@ -88,9 +114,14 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
player.Vehicle.Delete();
|
player.Vehicle.Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("goto", "~m~Benutzung: ~s~/goto [Name]")]
|
[Command("to", "~m~Benutzung: ~s~/to [Name]")]
|
||||||
public void CmdAdminGoto(Client player, string name)
|
public void CmdAdminGoto(Client player, string name)
|
||||||
{
|
{
|
||||||
|
if (ClientExtension.IsLoggedIn(player) == false)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotLoggedIn(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)
|
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)
|
||||||
{
|
{
|
||||||
ChatService.NotAuthorized(player);
|
ChatService.NotAuthorized(player);
|
||||||
@@ -108,9 +139,31 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
player.Position = target.Position;
|
player.Position = target.Position;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("gotoxyz", "~m~Benutzung: ~s~/gotoxyz [X] [Y] [Z]")]
|
[Command("position")]
|
||||||
|
public void CmdAdminShowPos(Client player)
|
||||||
|
{
|
||||||
|
if (ClientExtension.IsLoggedIn(player) == false)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotLoggedIn(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
player.SendChatMessage("Position: X Y Z: " + player.Position + "");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Command("gotox", "~m~Benutzung: ~s~/gotox [X] [Y] [Z]")]
|
||||||
public void CmdAdminGotoxyz(Client player, float x, float y, float z)
|
public void CmdAdminGotoxyz(Client player, float x, float y, float z)
|
||||||
{
|
{
|
||||||
|
if (ClientExtension.IsLoggedIn(player) == false)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotLoggedIn(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||||
{
|
{
|
||||||
ChatService.NotAuthorized(player);
|
ChatService.NotAuthorized(player);
|
||||||
@@ -120,9 +173,14 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
player.Position = new Vector3(x, y, z);
|
player.Position = new Vector3(x, y, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("gethere", "~m~Benutzung: ~s~/goto [Name]")]
|
[Command("gh", "~m~Benutzung: ~s~/gh [Name]")]
|
||||||
public void CmdAdminGethere(Client player, string name)
|
public void CmdAdminGethere(Client player, string name)
|
||||||
{
|
{
|
||||||
|
if (ClientExtension.IsLoggedIn(player) == false)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotLoggedIn(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)
|
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)
|
||||||
{
|
{
|
||||||
ChatService.NotAuthorized(player);
|
ChatService.NotAuthorized(player);
|
||||||
@@ -138,11 +196,17 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
}
|
}
|
||||||
|
|
||||||
target.Position = player.Position;
|
target.Position = player.Position;
|
||||||
|
target.SendChatMessage("Du wurdest von " + player.Name + " teleportiert.");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("ipl", "~m~Benutzung: ~s~/ipl [Load / Remove] [Name]")]
|
[Command("ipl", "~m~Benutzung: ~s~/ipl [Load / Remove] [Name]")]
|
||||||
public void CmdAdminIpl(Client player, string option, string name)
|
public void CmdAdminIpl(Client player, string option, string name)
|
||||||
{
|
{
|
||||||
|
if (ClientExtension.IsLoggedIn(player) == false)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotLoggedIn(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||||
{
|
{
|
||||||
ChatService.NotAuthorized(player);
|
ChatService.NotAuthorized(player);
|
||||||
@@ -170,6 +234,11 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
[Command("giveweapon", "~m~Benutzung: ~s~/giveweapon [Spieler] [Waffe] [Munition]")]
|
[Command("giveweapon", "~m~Benutzung: ~s~/giveweapon [Spieler] [Waffe] [Munition]")]
|
||||||
public void CmdAdminGiveweapon(Client player, string name, string weapon, int ammo)
|
public void CmdAdminGiveweapon(Client player, string name, string weapon, int ammo)
|
||||||
{
|
{
|
||||||
|
if (ClientExtension.IsLoggedIn(player) == false)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotLoggedIn(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||||
{
|
{
|
||||||
ChatService.NotAuthorized(player);
|
ChatService.NotAuthorized(player);
|
||||||
@@ -185,7 +254,7 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
Client target = ClientService.GetClientByName(name);
|
Client target = ClientService.GetClientByName(name);
|
||||||
if (target == null)
|
if (target == null)
|
||||||
{
|
{
|
||||||
ChatService.PlayerNotFound(target);
|
ChatService.PlayerNotFound(player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -198,6 +267,296 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
}
|
}
|
||||||
|
|
||||||
target.GiveWeapon(wHash, ammo);
|
target.GiveWeapon(wHash, ammo);
|
||||||
|
target.SendChatMessage("~b~Du hast von " +player.Name +" eine/n " + wHash + " mit einer Munition von " +ammo + " erhalten.");
|
||||||
|
player.SendChatMessage("~b~Du hast " + target.Name + " eine/n " + wHash + " mit einer Munition von " + ammo + " gegeben.");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Command("sethp", "~m~Benutzung: ~s~/sethp [Spieler] (Leben)")]
|
||||||
|
public void CmdAdminSetHp(Client player, string name, int hp = 100)
|
||||||
|
{
|
||||||
|
if (ClientExtension.IsLoggedIn(player) == false)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotLoggedIn(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Client target = ClientService.GetClientByName(name);
|
||||||
|
if (target == null)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotFound(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
target.Health = hp;
|
||||||
|
target.SendChatMessage("~b~Dein Leben wurde von " + player.Name + " auf " + hp + " gesetzt.");
|
||||||
|
player.SendChatMessage("~b~Du hast das Leben von " + target.Name + " auf " + hp + " gesetzt.");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Command("setarmor", "~m~Benutzung: ~s~/setarmor [Spieler] (Armor)")]
|
||||||
|
public void CmdAdminSetArmor(Client player, string name, int armor = 100)
|
||||||
|
{
|
||||||
|
if (ClientExtension.IsLoggedIn(player) == false)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotLoggedIn(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Client target = ClientService.GetClientByName(name);
|
||||||
|
if (target == null)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotFound(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
target.Armor = armor;
|
||||||
|
target.SendChatMessage("~b~Deine Rüstung wurde von " + player.Name + " auf " + armor + " gesetzt.");
|
||||||
|
player.SendChatMessage("~b~Du hast die Rüstung von " + target.Name + " auf " + armor + " gesetzt.");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Command("setskin", "~m~Benutzung: ~s~/setskin [Spieler] [Skin]")]
|
||||||
|
public void CmdAdminSetSkin(Client player, string name, string Skin)
|
||||||
|
{
|
||||||
|
if (ClientExtension.IsLoggedIn(player) == false)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotLoggedIn(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Client target = ClientService.GetClientByName(name);
|
||||||
|
if (target == null)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotFound(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var skin = NAPI.Util.PedNameToModel(Skin);
|
||||||
|
target.SendChatMessage("~b~Dein Skin wurde von " + player.Name + " zu " + skin + " gesetzt.");
|
||||||
|
player.SendChatMessage("~b~Du hast den Skin von " + target.Name + " zu " + skin + " gesetzt.");
|
||||||
|
target.SetSkin(NAPI.Util.PedNameToModel(Skin));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Command("vcolor", "~m~Benutzung: ~s~/vcolor [Farb-ID1] [Farb-ID2]")]
|
||||||
|
public void CmdAdminColor(Client player, int color1, int color2)
|
||||||
|
{
|
||||||
|
if (ClientExtension.IsLoggedIn(player) == false)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotLoggedIn(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!player.IsInVehicle)
|
||||||
|
{
|
||||||
|
player.SendChatMessage("~r~[FEHLER]~s~ Du sitzt momentan in keinem Fahrzeug!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
player.Vehicle.PrimaryColor = color1;
|
||||||
|
player.Vehicle.SecondaryColor = color2;
|
||||||
|
player.SendChatMessage("Farb-ID1 " + color1 + ", Farb-ID2 " + color2 + "");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Command("aw", "~m~Benutzung: ~s~/aw [Spieler] [Nachricht]")]
|
||||||
|
public void CmdAdminMsg(Client player, string name, string msg)
|
||||||
|
{
|
||||||
|
if (ClientExtension.IsLoggedIn(player) == false)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotLoggedIn(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Client target = ClientService.GetClientByName(name);
|
||||||
|
if (target == null)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotFound(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (target == player)
|
||||||
|
{
|
||||||
|
ChatService.ErrorMsg(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
target.SendChatMessage("~y~PM von "+ player.Name + ": " + msg +" ");
|
||||||
|
player.SendChatMessage("~y~PM an "+ target.Name + ": " + msg + " ");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Command("takeweapon", "~m~Benutzung: ~s~/takeweapon [Spieler]")]
|
||||||
|
public void CmdAdminTakeWeapon(Client player, string name)
|
||||||
|
{
|
||||||
|
if (ClientExtension.IsLoggedIn(player) == false)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotLoggedIn(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Client target = ClientService.GetClientByName(name);
|
||||||
|
if (target == null)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotFound(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
player.RemoveAllWeapons();
|
||||||
|
target.SendChatMessage("~b~Deine Waffen wurden dir von " + player.Name + "(Admin) abgenommen");
|
||||||
|
player.SendChatMessage("~b~Dem Spieler " + target.Name + " wurden erfolgreich alle Waffen abgenommen ");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Command("rsethp", "~m~Benutzung: ~s~/rsethp [Radius] (Leben)")]
|
||||||
|
public void CmdAdminRangeSetHP(Client player, float radius, int hp = 100)
|
||||||
|
{
|
||||||
|
if (ClientExtension.IsLoggedIn(player) == false)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotLoggedIn(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var peopleInRange = NAPI.Player.GetPlayersInRadiusOfPlayer(radius, player);
|
||||||
|
|
||||||
|
foreach (var managedClient in peopleInRange)
|
||||||
|
{
|
||||||
|
managedClient.Health = hp;
|
||||||
|
managedClient.SendChatMessage("~b~Admin "+ player.Name + " hat im Radius von " + radius + " die HP auf " + hp + " gesetzt.");
|
||||||
|
}
|
||||||
|
player.SendChatMessage("~b~Das Leben von " + peopleInRange.Count + " Spielern wurde auf "+ hp + " gesetzt.");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Command("rsetarmor", "~m~Benutzung: ~s~/rsetarmor [Radius] (Armor)")]
|
||||||
|
public void CmdAdminRangeSetArmor(Client player, float radius, int Armor = 100)
|
||||||
|
{
|
||||||
|
if (ClientExtension.IsLoggedIn(player) == false)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotLoggedIn(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var peopleInRange = NAPI.Player.GetPlayersInRadiusOfPlayer(radius, player);
|
||||||
|
|
||||||
|
foreach (var managedClient in peopleInRange)
|
||||||
|
{
|
||||||
|
managedClient.Health = Armor;
|
||||||
|
managedClient.SendChatMessage("~b~Admin " + player.Name + " hat im Radius von " + radius + " die Rüstung auf " + Armor + " gesetzt.");
|
||||||
|
}
|
||||||
|
player.SendChatMessage("~b~Die Rüstung von " + peopleInRange.Count + " Spielern wurde auf " + Armor + " gesetzt.");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Command("time", "~m~Benutzung: ~s~/time [Stunde] (Minuten) (Sekunden)")]
|
||||||
|
public void CmdAdminSetTime(Client player, int hour, int min = 0, int sec = 0)
|
||||||
|
{
|
||||||
|
if (ClientExtension.IsLoggedIn(player) == false)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotLoggedIn(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
NAPI.World.SetTime(hour, min, sec);
|
||||||
|
NAPI.Chat.SendChatMessageToAll("Serverzeit auf " + hour + ":" + min + ":" + sec + " gestellt");
|
||||||
|
|
||||||
|
}
|
||||||
|
[Command("val")]
|
||||||
|
public void Val(Client player)
|
||||||
|
{
|
||||||
|
NAPI.Chat.SendChatMessageToAll("Value of " + player.Name + ": " + player.Handle.Value);
|
||||||
|
}
|
||||||
|
[Command("rgiveweapon", "~m~Benutzung: ~s~/rgiveweapon [Radius] [Waffe] [Munition]")]
|
||||||
|
public void CmdAdminRangeGiveWeapon(Client player, float radius, string weapon, int munition)
|
||||||
|
{
|
||||||
|
if (ClientExtension.IsLoggedIn(player) == false)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotLoggedIn(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
WeaponHash wHash = NAPI.Util.WeaponNameToModel(weapon);
|
||||||
|
|
||||||
|
if (wHash == default(WeaponHash))
|
||||||
|
{
|
||||||
|
player.SendChatMessage("~r~[FEHLER]~s~ Diese Waffe existiert nicht.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var peopleInRange = NAPI.Player.GetPlayersInRadiusOfPlayer(radius, player);
|
||||||
|
|
||||||
|
foreach (var managedClient in peopleInRange)
|
||||||
|
{
|
||||||
|
managedClient.GiveWeapon(wHash, munition);
|
||||||
|
managedClient.SendChatMessage("~b~Admin " +player.Name + " hat im Radius von " + radius + " eine/n " + weapon +" mit " + munition +" Munition vergeben.");
|
||||||
|
}
|
||||||
|
player.SendChatMessage("~b~Du hast " + peopleInRange.Count +" Spielern eine " + weapon + " mit " + munition + " Munition gegeben");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Command("save", "~m~Benutzung: ~s~/save [Typ = ~g~Blip, ~r~Marker, Ped, Pickup, TextLabel, ~g~Vehicle")]
|
||||||
|
public void CmdAdminSave(Client player, string typ)
|
||||||
|
{
|
||||||
|
if (ClientExtension.IsLoggedIn(player) == false)
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotLoggedIn(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (typ)
|
||||||
|
{
|
||||||
|
case "Blip":
|
||||||
|
player.TriggerEvent("saveBlip");
|
||||||
|
break;
|
||||||
|
case "Vehicle":
|
||||||
|
if (player.IsInVehicle)
|
||||||
|
{
|
||||||
|
Vehicle vehicle = player.Vehicle;
|
||||||
|
SaveData.SaveVehicleData((VehicleHash) vehicle.Model, vehicle.Position, vehicle.Heading, vehicle.NumberPlate,
|
||||||
|
Convert.ToByte(vehicle.PrimaryColor), Convert.ToByte(vehicle.SecondaryColor), vehicle.Locked, vehicle.EngineStatus, Convert.ToByte(vehicle.Dimension));
|
||||||
|
}
|
||||||
|
else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!");
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("a", "~m~Benutzung: ~s~/a [Nachricht]")]
|
[Command("a", "~m~Benutzung: ~s~/a [Nachricht]")]
|
||||||
|
|||||||
@@ -25,7 +25,8 @@ namespace reallife_gamemode.Server.Entities
|
|||||||
[StringLength(64)]
|
[StringLength(64)]
|
||||||
public string Password { get; set; }
|
public string Password { get; set; }
|
||||||
public int LogUserId { get; set; }
|
public int LogUserId { get; set; }
|
||||||
public DateTime RegistrationDate { get; set; }
|
[Timestamp]
|
||||||
|
public byte[] RegistrationDate { get; set; }
|
||||||
[EmailAddress]
|
[EmailAddress]
|
||||||
[StringLength(64)]
|
[StringLength(64)]
|
||||||
public string Email { get; set; }
|
public string Email { get; set; }
|
||||||
|
|||||||
@@ -20,7 +20,9 @@ namespace reallife_gamemode.Server.Events
|
|||||||
[ServerEvent(Event.PlayerConnected)]
|
[ServerEvent(Event.PlayerConnected)]
|
||||||
public void OnPlayerConnected(Client player)
|
public void OnPlayerConnected(Client player)
|
||||||
{
|
{
|
||||||
|
player.SetData("isLoggedIn", false);
|
||||||
|
player.Position = new Vector3(-1883.736, -781.4911, -10);
|
||||||
|
player.FreezePosition = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
23
Server/Events/Disconnect.cs
Normal file
23
Server/Events/Disconnect.cs
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using GTANetworkAPI;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @overview Life of German Reallife - Event Login (Login.cs)
|
||||||
|
* @author VegaZ
|
||||||
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace reallife_gamemode.Server.Events
|
||||||
|
{
|
||||||
|
class Disconnect : Script
|
||||||
|
{
|
||||||
|
[ServerEvent(Event.PlayerDisconnected)]
|
||||||
|
public void OnPlayerDisconnected(Client player)
|
||||||
|
{
|
||||||
|
player.SetData("isLoggedIn", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using GTANetworkAPI;
|
using GTANetworkAPI;
|
||||||
|
|
||||||
@@ -14,15 +15,38 @@ namespace reallife_gamemode.Server.Events
|
|||||||
public class Login : Script
|
public class Login : Script
|
||||||
{
|
{
|
||||||
[RemoteEvent("OnPlayerLogin")]
|
[RemoteEvent("OnPlayerLogin")]
|
||||||
public void OnPlayerLogin(Client player, string username, string password)
|
public void OnPlayerLogin(Client player, string password)
|
||||||
{
|
{
|
||||||
|
using (var loginUser = new Model.DatabaseContext())
|
||||||
|
{
|
||||||
|
var user = loginUser.Users.SingleOrDefault(b => b.Name == player.Name);
|
||||||
|
|
||||||
|
if(user == null)
|
||||||
|
{
|
||||||
|
player.TriggerEvent("loginFail", "Benutzer existiert nicht! Registriere dich zuerst!");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
[RemoteEvent("OnPlayerRegister")]
|
|
||||||
public void OnPlayerRegister(Client player, string username, string password)
|
|
||||||
{
|
{
|
||||||
|
if (user.SocialClubName != player.SocialClubName && user.Password == NAPI.Util.GetHashSha256(password))
|
||||||
|
{
|
||||||
|
player.TriggerEvent("loginDeny", "Dieser Benutzer gehört dir nicht!");
|
||||||
|
//Log einbauen für den bösen Bub.
|
||||||
|
player.Kick();
|
||||||
|
}
|
||||||
|
if (user.Password != NAPI.Util.GetHashSha256(password))
|
||||||
|
{
|
||||||
|
player.TriggerEvent("loginFail", "Passwort inkorrekt!");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
player.TriggerEvent("loginSuccess");
|
||||||
|
NAPI.Player.SpawnPlayer(player, Main.DEFAULT_SPAWN_POSITION, Main.DEFAULT_SPAWN_HEADING);
|
||||||
|
|
||||||
|
player.SetData("isLoggedIn", true);
|
||||||
|
player.TriggerEvent("draw");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
45
Server/Events/Register.cs
Normal file
45
Server/Events/Register.cs
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using GTANetworkAPI;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @overview Life of German Reallife - Event Register (Register.cs)
|
||||||
|
* @author VegaZ
|
||||||
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace reallife_gamemode.Server.Events
|
||||||
|
{
|
||||||
|
class Register : Script
|
||||||
|
{
|
||||||
|
[RemoteEvent("OnPlayerRegister")]
|
||||||
|
public void OnPlayerRegister(Client player, string password)
|
||||||
|
{
|
||||||
|
using (var checkUser = new Model.DatabaseContext())
|
||||||
|
{
|
||||||
|
var checkedUser = checkUser.Users.SingleOrDefault(b => b.Name == player.Name);
|
||||||
|
if (checkedUser == null)
|
||||||
|
{
|
||||||
|
using (var registerUser = new Model.DatabaseContext())
|
||||||
|
{
|
||||||
|
var user = new Entities.User { Name = player.Name, SocialClubName = player.SocialClubName, Password = NAPI.Util.GetHashSha256(password) };
|
||||||
|
registerUser.Users.Add(user);
|
||||||
|
registerUser.SaveChanges();
|
||||||
|
}
|
||||||
|
player.TriggerEvent("registerSuccess");
|
||||||
|
NAPI.Player.SpawnPlayer(player, Main.DEFAULT_SPAWN_POSITION, Main.DEFAULT_SPAWN_HEADING);
|
||||||
|
}
|
||||||
|
else if (player.SocialClubName == checkedUser.SocialClubName)
|
||||||
|
{
|
||||||
|
player.TriggerEvent("registerFail", "Dieser SocialClubAccount ist schon registriert!");
|
||||||
|
}
|
||||||
|
else if (checkedUser.Name == player.Name)
|
||||||
|
{
|
||||||
|
player.TriggerEvent("registerFail", "Benutzername existiert schon!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
78
Server/Events/SaveData.cs
Normal file
78
Server/Events/SaveData.cs
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
using GTANetworkAPI;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace reallife_gamemode.Server.Events
|
||||||
|
{
|
||||||
|
public class SaveData : Script
|
||||||
|
{
|
||||||
|
[RemoteEvent("OnSaveBlipData")]
|
||||||
|
public void OnSaveBlipData(Client player, string blipSprite, string blipName, string blipScale, string blipColor,
|
||||||
|
string blipAlpha, string blipDrawDistance, string blipShortRange, string blipRotation, string blipDimension)
|
||||||
|
{
|
||||||
|
float x = player.Position.X;
|
||||||
|
float y = player.Position.Y;
|
||||||
|
float z = player.Position.Z;
|
||||||
|
short sprite = short.Parse(blipSprite);
|
||||||
|
string name = blipName;
|
||||||
|
float scale = float.Parse(blipScale);
|
||||||
|
byte color = Convert.ToByte(blipColor);
|
||||||
|
byte alpha = Convert.ToByte(blipAlpha);
|
||||||
|
float drawDistance = float.Parse(blipDrawDistance);
|
||||||
|
bool shortRange = bool.Parse(blipShortRange);
|
||||||
|
float rotation = float.Parse(blipRotation);
|
||||||
|
byte dimension = Convert.ToByte(blipDimension);
|
||||||
|
|
||||||
|
NAPI.Blip.CreateBlip(uint.Parse(blipSprite), new Vector3(x,y,z), scale, color, name, alpha, drawDistance, shortRange, short.Parse(blipRotation), dimension);
|
||||||
|
|
||||||
|
using (var saveData = new Model.DatabaseContext())
|
||||||
|
{
|
||||||
|
var dataSet = new Server.Saves.SavedBlip
|
||||||
|
{
|
||||||
|
Sprite = sprite,
|
||||||
|
PositionX = x,
|
||||||
|
PositionY = y,
|
||||||
|
PositionZ = z,
|
||||||
|
Name = blipName,
|
||||||
|
Scale = scale,
|
||||||
|
Color = color,
|
||||||
|
Alpha = alpha,
|
||||||
|
DrawDistance = drawDistance,
|
||||||
|
ShortRange = shortRange,
|
||||||
|
Rotation = rotation,
|
||||||
|
Dimension = dimension,
|
||||||
|
Active = true
|
||||||
|
};
|
||||||
|
saveData.Blips.Add(dataSet);
|
||||||
|
saveData.SaveChanges();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void SaveVehicleData(VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading,
|
||||||
|
string vehicleNumberPlate, byte vehiclePrimaryColor, byte vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, byte vehicleDimension)
|
||||||
|
{
|
||||||
|
using (var saveData = new Model.DatabaseContext())
|
||||||
|
{
|
||||||
|
var dataSet = new Server.Saves.SavedVehicle
|
||||||
|
{
|
||||||
|
Model = vehicleModel,
|
||||||
|
PositionX = vehiclePosition.X,
|
||||||
|
PositionY = vehiclePosition.Y,
|
||||||
|
PositionZ = vehiclePosition.Z,
|
||||||
|
Heading = vehicleHeading,
|
||||||
|
NumberPlate = vehicleNumberPlate,
|
||||||
|
PrimaryColor = vehiclePrimaryColor,
|
||||||
|
SecondaryColor = vehicleSecondaryColor,
|
||||||
|
Locked = vehicleLocked,
|
||||||
|
Engine = vehicleEngine,
|
||||||
|
Dimension = vehicleDimension,
|
||||||
|
Active = true
|
||||||
|
};
|
||||||
|
saveData.Vehicles.Add(dataSet);
|
||||||
|
saveData.SaveChanges();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -20,7 +20,6 @@ namespace reallife_gamemode.Server.Events
|
|||||||
[ServerEvent(Event.PlayerSpawn)]
|
[ServerEvent(Event.PlayerSpawn)]
|
||||||
public void OnPlayerSpawn(Client player)
|
public void OnPlayerSpawn(Client player)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,5 +23,10 @@ namespace reallife_gamemode.Server.Extensions
|
|||||||
return dbContext.Users.FirstOrDefault(u => u.Name == client.Name);
|
return dbContext.Users.FirstOrDefault(u => u.Name == client.Name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool IsLoggedIn(Client player)
|
||||||
|
{
|
||||||
|
return player.GetData("isLoggedIn");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
44
Server/Managers/LoadManager.cs
Normal file
44
Server/Managers/LoadManager.cs
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using GTANetworkAPI;
|
||||||
|
using reallife_gamemode.Model;
|
||||||
|
using reallife_gamemode.Server.Entities;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @overview Life of German Reallife - Managers LoadManager (LoadManager.cs)
|
||||||
|
* @author VegaZ
|
||||||
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace reallife_gamemode.Server.Managers
|
||||||
|
{
|
||||||
|
public class LoadManager : Script
|
||||||
|
{
|
||||||
|
[ServerEvent(Event.ResourceStart)]
|
||||||
|
public void OnResourceStart()
|
||||||
|
{
|
||||||
|
using (var loadData = new DatabaseContext())
|
||||||
|
{
|
||||||
|
//LOAD ALL BLIPS
|
||||||
|
foreach (Saves.SavedBlip b in loadData.Blips)
|
||||||
|
{
|
||||||
|
if(b.Active == true)
|
||||||
|
{
|
||||||
|
NAPI.Blip.CreateBlip((uint) b.Sprite, new Vector3(b.PositionX, b.PositionY, b.PositionZ), b.Scale,
|
||||||
|
b.Color, b.Name, b.Alpha, b.DrawDistance, b.ShortRange, (short) b.Rotation, b.Dimension);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//LOAD ALL VEHICLES
|
||||||
|
foreach (Saves.SavedVehicle v in loadData.Vehicles)
|
||||||
|
{
|
||||||
|
if (v.Active == true)
|
||||||
|
{
|
||||||
|
NAPI.Vehicle.CreateVehicle((uint)v.Model, new Vector3(v.PositionX, v.PositionY, v.PositionZ), v.Heading, (int)(v.PrimaryColor),
|
||||||
|
v.SecondaryColor, v.NumberPlate, v.Alpha, v.Locked, v.Engine = false, v.Dimension);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
38
Server/Saves/SavedBlip.cs
Normal file
38
Server/Saves/SavedBlip.cs
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @overview Life of German Reallife - Saves SavedBlip.cs
|
||||||
|
* @author VegaZ
|
||||||
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace reallife_gamemode.Server.Saves
|
||||||
|
{
|
||||||
|
public class SavedBlip
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
|
public int Id { get; set; }
|
||||||
|
[Required]
|
||||||
|
public short Sprite { get; set; }
|
||||||
|
[Required]
|
||||||
|
public float PositionX { get; set; }
|
||||||
|
[Required]
|
||||||
|
public float PositionY { get; set; }
|
||||||
|
[Required]
|
||||||
|
public float PositionZ { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
public float Scale { get; set; }
|
||||||
|
public byte Color { get; set; }
|
||||||
|
public byte Alpha { get; set; }
|
||||||
|
public float DrawDistance { get; set; }
|
||||||
|
public bool ShortRange { get; set; }
|
||||||
|
public float Rotation { get; set; }
|
||||||
|
public byte Dimension { get; set; }
|
||||||
|
public bool Active { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
39
Server/Saves/SavedMarker.cs
Normal file
39
Server/Saves/SavedMarker.cs
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @overview Life of German Reallife - Saves SavedMarker.cs
|
||||||
|
* @author VegaZ
|
||||||
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace reallife_gamemode.Server.Saves
|
||||||
|
{
|
||||||
|
public class SavedMarker
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
|
public int Id { get; set; }
|
||||||
|
public byte Type { get; set; }
|
||||||
|
public float PositionX { get; set; }
|
||||||
|
public float PositionY { get; set; }
|
||||||
|
public float PositionZ { get; set; }
|
||||||
|
public float Scale { get; set; }
|
||||||
|
public float DirectionX { get; set; }
|
||||||
|
public float DirectionY { get; set; }
|
||||||
|
public float DirectionZ { get; set; }
|
||||||
|
public float RotationX { get; set; }
|
||||||
|
public float RotationY { get; set; }
|
||||||
|
public float RotationZ { get; set; }
|
||||||
|
public byte ColorR { get; set; }
|
||||||
|
public byte ColorG { get; set; }
|
||||||
|
public byte ColorB { get; set; }
|
||||||
|
public byte ColorA { get; set; }
|
||||||
|
public bool Visible { get; set; }
|
||||||
|
public byte Dimension { get; set; }
|
||||||
|
public bool Active { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
28
Server/Saves/SavedPed.cs
Normal file
28
Server/Saves/SavedPed.cs
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @overview Life of German Reallife - Saves SavedPed.cs
|
||||||
|
* @author VegaZ
|
||||||
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace reallife_gamemode.Server.Saves
|
||||||
|
{
|
||||||
|
public class SavedPed
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
|
public int Id { get; set; }
|
||||||
|
public string HashModel { get; set; }
|
||||||
|
public float PositionX { get; set; }
|
||||||
|
public float PositionY { get; set; }
|
||||||
|
public float PositionZ { get; set; }
|
||||||
|
public float Heading { get; set; }
|
||||||
|
public byte Dimension { get; set; }
|
||||||
|
public bool Active { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
32
Server/Saves/SavedPickup.cs
Normal file
32
Server/Saves/SavedPickup.cs
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @overview Life of German Reallife - Saves SavedPickup.cs
|
||||||
|
* @author VegaZ
|
||||||
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace reallife_gamemode.Server.Saves
|
||||||
|
{
|
||||||
|
public class SavedPickup
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
|
public int Id { get; set; }
|
||||||
|
[StringLength(128)]
|
||||||
|
public float PositionX { get; set; }
|
||||||
|
public float PositionY { get; set; }
|
||||||
|
public float PositionZ { get; set; }
|
||||||
|
public float RotationX { get; set; }
|
||||||
|
public float RotationY { get; set; }
|
||||||
|
public float RotationZ { get; set; }
|
||||||
|
public bool Vehicle { get; set; }
|
||||||
|
public int RespawnTime { get; set; }
|
||||||
|
public byte Dimension { get; set; }
|
||||||
|
public bool Active { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
38
Server/Saves/SavedTextLabel.cs
Normal file
38
Server/Saves/SavedTextLabel.cs
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @overview Life of German Reallife - Saves SavedTextLabel.cs
|
||||||
|
* @author VegaZ
|
||||||
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace reallife_gamemode.Server.Saves
|
||||||
|
{
|
||||||
|
public class SavedTextLabel
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
|
public int Id { get; set; }
|
||||||
|
[Required]
|
||||||
|
public string Text { get; set; }
|
||||||
|
[Required]
|
||||||
|
public float PositionX { get; set; }
|
||||||
|
[Required]
|
||||||
|
public float PositionY { get; set; }
|
||||||
|
[Required]
|
||||||
|
public float PositionZ { get; set; }
|
||||||
|
public bool LOS { get; set; }
|
||||||
|
public byte Font { get; set; }
|
||||||
|
public float DrawDistance { get; set; }
|
||||||
|
public byte ColorR { get; set; }
|
||||||
|
public byte ColorG { get; set; }
|
||||||
|
public byte ColorB { get; set; }
|
||||||
|
public byte ColorA { get; set; }
|
||||||
|
public byte Dimension { get; set; }
|
||||||
|
public bool Active { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
36
Server/Saves/SavedVehicle.cs
Normal file
36
Server/Saves/SavedVehicle.cs
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using GTANetworkAPI;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @overview Life of German Reallife - Saves SavedVehicle.cs
|
||||||
|
* @author VegaZ
|
||||||
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace reallife_gamemode.Server.Saves
|
||||||
|
{
|
||||||
|
public class SavedVehicle
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
|
public int Id { get; set; }
|
||||||
|
public VehicleHash Model { get; set; }
|
||||||
|
public float PositionX { get; set; }
|
||||||
|
public float PositionY { get; set; }
|
||||||
|
public float PositionZ { get; set; }
|
||||||
|
public float Heading { get; set; }
|
||||||
|
[StringLength(8)]
|
||||||
|
public string NumberPlate { get; set; }
|
||||||
|
public byte Alpha { get; set; }
|
||||||
|
public byte PrimaryColor { get; set; }
|
||||||
|
public byte SecondaryColor { get; set; }
|
||||||
|
public bool Locked { get; set; }
|
||||||
|
public bool Engine { get; set; }
|
||||||
|
public byte Dimension { get; set; }
|
||||||
|
public bool Active { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,7 +5,7 @@ using System.Text;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @overview Life of German Reallife - Chat Service (ChatService.cs)
|
* @overview Life of German Reallife - Chat Service (ChatService.cs)
|
||||||
* @author hydrant
|
* @author hydrant, xSprite
|
||||||
* @copyright (c) 2008 - 2018 Life of German
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -22,5 +22,14 @@ namespace reallife_gamemode.Server.Services
|
|||||||
{
|
{
|
||||||
player.SendChatMessage("~r~[FEHLER]~s~ Der Spieler wurde nicht gefunden.");
|
player.SendChatMessage("~r~[FEHLER]~s~ Der Spieler wurde nicht gefunden.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void PlayerNotLoggedIn(Client player)
|
||||||
|
{
|
||||||
|
player.SendChatMessage("~r~[FEHLER]~s~ Du bist nicht eingeloggt.");
|
||||||
|
}
|
||||||
|
public static void ErrorMsg(Client player)
|
||||||
|
{
|
||||||
|
player.SendChatMessage("~r~[FEHLER]~s~ Die Aktion wurde nicht ausgeführt.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,8 +12,6 @@ namespace reallife_gamemode.Server.Util
|
|||||||
{
|
{
|
||||||
public enum AdminLevel : int
|
public enum AdminLevel : int
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
PLAYER,
|
PLAYER,
|
||||||
SUPPORTER,
|
SUPPORTER,
|
||||||
ADMIN
|
ADMIN
|
||||||
|
|||||||
42
meta.xml
42
meta.xml
@@ -2,4 +2,46 @@
|
|||||||
<meta>
|
<meta>
|
||||||
<info name="reallife-gamemode" type="script" />
|
<info name="reallife-gamemode" type="script" />
|
||||||
<script src="reallife-gamemode.dll" />
|
<script src="reallife-gamemode.dll" />
|
||||||
|
|
||||||
|
<!--CS-->
|
||||||
|
|
||||||
|
<!--Model-->
|
||||||
|
<script src="/Model/DatabaseContext.cs" type="server" lang="chsarp" />
|
||||||
|
|
||||||
|
<!--Server-->
|
||||||
|
|
||||||
|
<!--Commands-->
|
||||||
|
<script src="/Server/Commands/Admin.cs" type="server" lang="csharp" />
|
||||||
|
|
||||||
|
<!--Entities-->
|
||||||
|
<script src="/Server/Entities/User.cs" type="server" lang="csharp" />
|
||||||
|
|
||||||
|
<!--Events-->
|
||||||
|
<script src="/Server/Events/Connect.cs" type="server" lang="csharp" />
|
||||||
|
<script src="/Server/Events/Death.cs" type="server" lang="csharp" />
|
||||||
|
<script src="/Server/Events/Login.cs" type="server" lang="csharp" />
|
||||||
|
<script src="/Server/Events/Register.cs" type="server" lang="csharp" />
|
||||||
|
<script src="/Server/Events/SaveData.cs" type="server" lang="csharp" />
|
||||||
|
<script src="/Server/Events/Spawn.cs" type="server" lang="csharp" />
|
||||||
|
|
||||||
|
<!--Extensions-->
|
||||||
|
<script src="/Server/Extensions/ClientExtension.cs" type="server" lang="csharp" />
|
||||||
|
|
||||||
|
<!--Managers-->
|
||||||
|
<script src="/Server/Managers/LoadManager.cs" type="server" lang="csharp" />
|
||||||
|
|
||||||
|
<!--Saves-->
|
||||||
|
<script src="/Server/Saves/SavedBlip.cs" type="server" lang="csharp" />
|
||||||
|
<script src="/Server/Saves/SavedMarker.cs" type="server" lang="csharp" />
|
||||||
|
<script src="/Server/Saves/SavedPed.cs" type="server" lang="csharp" />
|
||||||
|
<script src="/Server/Saves/SavedPickup.cs" type="server" lang="csharp" />
|
||||||
|
<script src="/Server/Saves/SavedTextLabel.cs" type="server" lang="csharp" />
|
||||||
|
<script src="/Server/Saves/SavedVehicle.cs" type="server" lang="csharp" />
|
||||||
|
|
||||||
|
<!--Services-->
|
||||||
|
<script src="/Server/Services/ChatService.cs" type="server" lang = "csharp" />
|
||||||
|
<script src="/Server/Services/ClientService.cs" type="server" lang="csharp" />
|
||||||
|
|
||||||
|
<!--Util-->
|
||||||
|
<script src="/Server/Util/AdminLevel.cs" type="server" lang="csharp" />
|
||||||
</meta>
|
</meta>
|
||||||
Reference in New Issue
Block a user