Merge branch 'develop' into 'master'
[Update] v0.0.2 See merge request log-gtav/reallife-gamemode!35
This commit is contained in:
@@ -1,51 +1,57 @@
|
|||||||
const Natives = {
|
|
||||||
SET_BLIP_CATEGORY: RageEnums.Natives.Ui.SET_BLIP_CATEGORY,
|
|
||||||
SHOW_HEADING_INDICATOR_ON_BLIP: RageEnums.Natives.Ui.SHOW_HEADING_INDICATOR_ON_BLIP,
|
|
||||||
SET_BLIP_AS_SHORT_RANGE: RageEnums.Natives.Ui.SET_BLIP_AS_SHORT_RANGE,
|
|
||||||
SET_BLIP_DISPLAY: RageEnums.Natives.Ui.SET_BLIP_DISPLAY
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function playerBlips() {
|
export default function playerBlips() {
|
||||||
|
|
||||||
/* mp.events.add("entityStreamIn", (entity) => {
|
|
||||||
if (entity.type === "player") {
|
|
||||||
|
|
||||||
var entityMp = <EntityMp>entity;
|
var playerBlipMap: Map<PlayerMp, BlipMp>;
|
||||||
|
var ready = false;
|
||||||
|
|
||||||
mp.gui.chat.push("Player recieved: Yes");
|
setInterval(() => {
|
||||||
|
if (!ready) return;
|
||||||
|
if (!playerBlipMap) playerBlipMap = new Map<PlayerMp, BlipMp>();
|
||||||
|
|
||||||
let color = parseInt(entity.getVariable("blipColor"));
|
mp.players.forEachInStreamRange(
|
||||||
|
(player) => {
|
||||||
|
if (mp.players.local == player)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!playerBlipMap.has(player)) {
|
||||||
|
let pBlip = mp.blips.new(1, player.position, {
|
||||||
|
shortRange: true,
|
||||||
|
dimension: mp.players.local.dimension,
|
||||||
|
drawDistance: 300
|
||||||
|
});
|
||||||
|
|
||||||
mp.gui.chat.push("Color : " + color);
|
pBlip.setCategory(7);
|
||||||
|
pBlip.setDisplay(8);
|
||||||
|
playerBlipMap.set(player, pBlip);
|
||||||
|
}
|
||||||
|
let pBlip = playerBlipMap.get(player);
|
||||||
|
let color = player.getVariable("blipColor");
|
||||||
|
pBlip.setColour(isNaN(color) ? 0 : color);
|
||||||
|
pBlip.setPosition(player.position.x, player.position.y, player.position.z);
|
||||||
|
});
|
||||||
|
}, 50);
|
||||||
|
|
||||||
entity.createBlip(1);
|
mp.events.add("playerReady", () => {
|
||||||
|
ready = true;
|
||||||
mp.gui.chat.push(parseInt(entity.blip) == 0 ? "Blip was not created" : "Blip was created");
|
});
|
||||||
|
|
||||||
mp.gui.chat.push("entity.blip is actually " + entity.blip);
|
|
||||||
var blip = entity.blip;
|
|
||||||
|
|
||||||
mp.gui.chat.push("1 -" + blip.getAlpha() + " 2- " + blip.doesExist() + " 3-" + blip.dimension + " 4-" + entityMp.dimension);
|
|
||||||
|
|
||||||
entity.setBlipColor(isNaN(color) ? 0 : color);
|
|
||||||
|
|
||||||
mp.game.invoke(Natives.SET_BLIP_CATEGORY, entity.blip, 7);
|
|
||||||
mp.game.invoke(Natives.SHOW_HEADING_INDICATOR_ON_BLIP, entity.blip, true);
|
|
||||||
mp.game.invoke(Natives.SET_BLIP_AS_SHORT_RANGE, entity.blip, true);
|
|
||||||
mp.game.invoke(Natives.SET_BLIP_DISPLAY, entity.blip, 8);
|
|
||||||
|
|
||||||
|
mp.events.add("entityStreamOut", (entity) => {
|
||||||
|
if (playerBlipMap && entity.type === "player") {
|
||||||
|
if (playerBlipMap.has(entity)) {
|
||||||
|
var pBlip = playerBlipMap.get(entity);
|
||||||
|
pBlip.destroy();
|
||||||
|
playerBlipMap.delete(entity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
mp.events.addDataHandler("blipColor", (entity, value) => {
|
mp.events.addDataHandler("blipColor", (entity, value) => {
|
||||||
if (entity.type === "player") {
|
if (entity.type === "player") {
|
||||||
//mp.gui.chat.push("Setting Blip color...");
|
|
||||||
let color = parseInt(value);
|
let color = parseInt(value);
|
||||||
entity.setBlipColor(isNaN(color) ? 0 : color);
|
entity.setBlipColor(isNaN(color) ? 0 : color);
|
||||||
// mp.gui.chat.push("Player blip color was set.");
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -20,7 +20,7 @@ export default function licenses(globalData: IGlobalData): void {
|
|||||||
mp.events.add("CEF:LicenseLoaded", () => {
|
mp.events.add("CEF:LicenseLoaded", () => {
|
||||||
licenseBrowser.execute(`add_licenses('${JSON.stringify(globalInfo)}');`);
|
licenseBrowser.execute(`add_licenses('${JSON.stringify(globalInfo)}');`);
|
||||||
licenseBrowser.execute(`add_licensesholder('${JSON.stringify(globalName)}');`);
|
licenseBrowser.execute(`add_licensesholder('${JSON.stringify(globalName)}');`);
|
||||||
licenseTimer = setInterval(DestroyLicenses, 7000);
|
licenseTimer = setInterval(DestroyLicenses, 15000);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,27 +1,36 @@
|
|||||||
const maxDistance = 25 * 25;
|
import { IGame, IEntity } from "../game";
|
||||||
|
import game from "..";
|
||||||
|
|
||||||
|
|
||||||
|
const maxDistance = 40 * 40;
|
||||||
const width = 0.03;
|
const width = 0.03;
|
||||||
const height = 0.0065;
|
const height = 0.0065;
|
||||||
const border = 0.001;
|
const border = 0.001;
|
||||||
const color = [73, 137, 0, 255];
|
|
||||||
var faction;
|
const alpha = 250;
|
||||||
var playerColors = [];
|
|
||||||
|
const colors = [
|
||||||
|
{ id: -2, color: [0, 255, 255, alpha] }, //support
|
||||||
|
{ id: -1, color: [255, 100, 0, alpha] }, //wanted
|
||||||
|
|
||||||
|
{ id: 0, color: [255, 255, 255, alpha] }, //civil
|
||||||
|
|
||||||
|
//1 to n
|
||||||
|
{ id: 1, color: [0, 95, 190, alpha] }, //pd
|
||||||
|
{ id: 2, color: [200, 0, 0, alpha] }, //lsed
|
||||||
|
{ id: 3, color: [0, 0, 170, alpha] }, //fib
|
||||||
|
{ id: 4, color: [255, 180, 0, alpha] }, //trucker
|
||||||
|
{ id: 5, color: [255, 255, 255, alpha] }, //terroristen
|
||||||
|
{ id: 6, color: [255, 255, 255, alpha] }, //hitman
|
||||||
|
{ id: 7, color: [0, 64, 0, alpha] }, //grove
|
||||||
|
{ id: 8, color: [171, 0, 150, alpha] }, //ballas
|
||||||
|
{ id: 9, color: [0, 166, 133, alpha] }, //news
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
export default function customNametags() {
|
export default function customNametags() {
|
||||||
|
|
||||||
mp.nametags.enabled = false;
|
mp.nametags.enabled = false;
|
||||||
/*
|
|
||||||
mp.events.addDataHandler("nameTagColor", (entity, value) => {
|
|
||||||
if (entity.type === "player") {
|
|
||||||
var color = JSON.parse(value);
|
|
||||||
entity.setVariable('nametagColor',color)
|
|
||||||
//mp.gui.chat.push(color);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
mp.events.add('setNameTag', (value) => {
|
|
||||||
var color = JSON.parse(value);
|
|
||||||
mp.gui.chat.push(color);
|
|
||||||
});*/
|
|
||||||
|
|
||||||
mp.events.add('render', (nametags) => {
|
mp.events.add('render', (nametags) => {
|
||||||
const graphics = mp.game.graphics;
|
const graphics = mp.game.graphics;
|
||||||
@@ -40,11 +49,15 @@ export default function customNametags() {
|
|||||||
var armour = player.getArmour() / 100;
|
var armour = player.getArmour() / 100;
|
||||||
|
|
||||||
y -= scale * (0.005 * (screenRes.y / 1080));
|
y -= scale * (0.005 * (screenRes.y / 1080));
|
||||||
|
|
||||||
|
let colorId = game.players.at(player.remoteId).nametagColor;
|
||||||
|
|
||||||
|
let color = colors.find(c => c.id === colorId).color;
|
||||||
|
|
||||||
mp.game.graphics.drawText(player.name + " (" + player.remoteId + ")", [x, y],
|
mp.game.graphics.drawText(player.name + " (" + player.remoteId + ")", [x, y],
|
||||||
{
|
{
|
||||||
font: 4,
|
font: 4,
|
||||||
//color: [player.data.nametagColor[0], player.data.nametagColor[1], player.data.nametagColor[2], 200], //Grove //Ballas 171 0 207 //PD 0 95 190 //FIB 0 0 170 LSED 147 0 0 NR 0 166 133 Trucker 255 162 Support 0 255 255 Zivilist 255 255 255
|
color: [color[0], color[1], color[2], color[3]],
|
||||||
color: [255, 255, 255, 255],
|
|
||||||
scale: [0.4, 0.4],
|
scale: [0.4, 0.4],
|
||||||
outline: true,
|
outline: true,
|
||||||
centre: false
|
centre: false
|
||||||
|
|||||||
@@ -26,25 +26,25 @@ const Color = NativeUI.Color;
|
|||||||
export default function clotheShopList(globalData: IGlobalData) {
|
export default function clotheShopList(globalData: IGlobalData) {
|
||||||
const categoryTitles = {
|
const categoryTitles = {
|
||||||
clothes: {
|
clothes: {
|
||||||
1: "Masks",
|
1: "Masken",
|
||||||
2: "Hair Styles",
|
2: "Haar Stil",
|
||||||
3: "Torsos",
|
3: "Oberkörper",
|
||||||
4: "Legs",
|
4: "Hosen",
|
||||||
5: "Bags and Parachutes",
|
5: "Taschen und Fallschirme",
|
||||||
6: "Shoes",
|
6: "Schuhe",
|
||||||
7: "Accessories",
|
7: "Accessories",
|
||||||
8: "Undershirts",
|
8: "Undershirts",
|
||||||
9: "Body Armors",
|
9: "Schutzwesten",
|
||||||
10: "Decals",
|
10: "Decals",
|
||||||
11: "Tops"
|
11: "Oberteile"
|
||||||
},
|
},
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
0: "Hats",
|
0: "Kopfbedeckungen",
|
||||||
1: "Glasses",
|
1: "Brillen",
|
||||||
2: "Ears",
|
2: "Ohrringe",
|
||||||
6: "Watches",
|
6: "Uhren",
|
||||||
7: "Bracelets"
|
7: "Armbänder"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -53,7 +53,12 @@ export default function clotheShopList(globalData: IGlobalData) {
|
|||||||
var myVar;
|
var myVar;
|
||||||
|
|
||||||
let mainMenu = null;
|
let mainMenu = null;
|
||||||
let categoryMenus = [];
|
let categoryMenu = null;
|
||||||
|
|
||||||
|
let clotheMenus = [];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
let clothingData = [];
|
let clothingData = [];
|
||||||
let currentMenuIdx = -1;
|
let currentMenuIdx = -1;
|
||||||
let menuTransition = false; // workaround for ItemSelect event being called twice between menu transitions
|
let menuTransition = false; // workaround for ItemSelect event being called twice between menu transitions
|
||||||
@@ -148,22 +153,21 @@ export default function clotheShopList(globalData: IGlobalData) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function addClothingItems(type, bannerSprite, key, value, gender) {
|
function addClothingItems(type, bannerSprite, key, value, gender) {
|
||||||
var categoryMenu;
|
|
||||||
var cloth = [];
|
var cloth = [];
|
||||||
var tx = [];
|
var tx = [];
|
||||||
|
|
||||||
if (Object.keys(categoryMenus).length > 0) {
|
if (Object.keys(clotheMenus).length > 0) {
|
||||||
for (var i = 0; i < categoryMenus.length; i++) {
|
for (var i = 0; i < clotheMenus.length; i++) {
|
||||||
if (categoryMenus[i].slotIdx == key) {
|
if (clotheMenus[i].slotIdx == key) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mainMenu.AddItem(new UIMenuItem(categoryTitles[type][key], `${type === "props" ? "Prop category." : "Clothing category."}`));
|
mainMenu.AddItem(new UIMenuItem(categoryTitles[type][key], `${type === "props" ? " " : " "}`));
|
||||||
// Create category menu
|
// Create category menu
|
||||||
categoryMenu = new UIMenu("", categoryTitles[type][key].toUpperCase(), new Point(0, 0), bannerSprite.library, bannerSprite.texture);
|
categoryMenu = new UIMenu("", categoryTitles[type][key].toUpperCase(), new Point(0, 0), bannerSprite.library, bannerSprite.texture);
|
||||||
categoryMenu.Visible = false;
|
categoryMenu.Visible = false;
|
||||||
} else {
|
} else {
|
||||||
mainMenu.AddItem(new UIMenuItem(categoryTitles[type][key], `${type === "props" ? "Prop category." : "Clothing category."}`));
|
mainMenu.AddItem(new UIMenuItem(categoryTitles[type][key], `${type === "props" ? " " : " "}`));
|
||||||
// Create category menu
|
// Create category menu
|
||||||
categoryMenu = new UIMenu("", categoryTitles[type][key].toUpperCase(), new Point(0, 0), bannerSprite.library, bannerSprite.texture);
|
categoryMenu = new UIMenu("", categoryTitles[type][key].toUpperCase(), new Point(0, 0), bannerSprite.library, bannerSprite.texture);
|
||||||
categoryMenu.Visible = false;
|
categoryMenu.Visible = false;
|
||||||
@@ -172,21 +176,21 @@ export default function clotheShopList(globalData: IGlobalData) {
|
|||||||
mainMenu.Item
|
mainMenu.Item
|
||||||
|
|
||||||
// Fill it
|
// Fill it
|
||||||
|
|
||||||
for (const item of value) {
|
for (const item of value) {
|
||||||
if (item.ComponentId == key) {
|
if (item.ComponentId == key) {
|
||||||
|
|
||||||
var txData = getClothingName(key, item.ClotheId, gender);
|
var txData = getClothingName(key, item.ClotheId, gender);
|
||||||
|
|
||||||
for (const x of txData) {
|
for (const x of txData) {
|
||||||
var itemDescription = (key === 11 ? mp.game.ui.getLabelText(x.undershirt[1].GXT) : "Clothing item.");
|
var itemDescription = (key === 11 ? mp.game.ui.getLabelText(x.undershirt[1].GXT) : " ");
|
||||||
//var itemDescription = (key === 11 ? x.undershirt[1].GXT + " - " + x.id: "Clothing item.");
|
//var itemDescription = (key === 11 ? x.undershirt[1].GXT + " - " + x.id: "Clothing item.");
|
||||||
if (itemDescription == "NULL") {
|
if (itemDescription == "NULL") {
|
||||||
itemDescription = "Clothing item.";
|
itemDescription = "";
|
||||||
}
|
}
|
||||||
const tempItem = new UIMenuItem(mp.game.ui.getLabelText(x.data[0].GXT), itemDescription);
|
const tempItem = new UIMenuItem(mp.game.ui.getLabelText(x.data[0].GXT), itemDescription);
|
||||||
//const tempItem = new UIMenuItem(x.data[0].GXT + " - " + x.id , itemDescription);
|
//const tempItem = new UIMenuItem(x.data[0].GXT + " - " + x.id , itemDescription);
|
||||||
|
|
||||||
tempItem.SetRightLabel(`${item.Price > 0 ? `$${item.Price}` : "FREE"}`);
|
tempItem.SetRightLabel(`${item.Price > 0 ? `$${item.Price}` : "KOSTENLOS"}`);
|
||||||
|
|
||||||
categoryMenu.AddItem(tempItem);
|
categoryMenu.AddItem(tempItem);
|
||||||
|
|
||||||
@@ -195,18 +199,19 @@ export default function clotheShopList(globalData: IGlobalData) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
clotheMenus.push({
|
||||||
categoryMenus.push({
|
|
||||||
menu: categoryMenu,
|
menu: categoryMenu,
|
||||||
type: type,
|
type: type,
|
||||||
slotIdx: Number(key),
|
slotIdx: Number(key),
|
||||||
item: cloth,
|
item: cloth,
|
||||||
texture: tx
|
texture: tx
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function submenuItemChangeHandler(newIndex) {
|
function submenuItemChangeHandler(newIndex) {
|
||||||
const currentMenu = categoryMenus[currentMenuIdx];
|
const currentMenu = clotheMenus[currentMenuIdx];
|
||||||
const currentItem = currentMenu.item[newIndex];
|
const currentItem = currentMenu.item[newIndex];
|
||||||
const currentTexture = currentMenu.texture[newIndex].id;
|
const currentTexture = currentMenu.texture[newIndex].id;
|
||||||
//const currentItem = clothingData[currentMenu.type][currentMenu.slotIdx][newIndex];
|
//const currentItem = clothingData[currentMenu.type][currentMenu.slotIdx][newIndex];
|
||||||
@@ -263,7 +268,7 @@ export default function clotheShopList(globalData: IGlobalData) {
|
|||||||
if (dist > 3) {
|
if (dist > 3) {
|
||||||
clearInterval(myVar);
|
clearInterval(myVar);
|
||||||
resetPreview();
|
resetPreview();
|
||||||
if (currentMenuIdx !== -1) categoryMenus[currentMenuIdx].menu.Close();
|
if (currentMenuIdx !== -1) clotheMenus[currentMenuIdx].menu.Close();
|
||||||
if (mainMenu && mainMenu.Visible) mainMenu.Close();
|
if (mainMenu && mainMenu.Visible) mainMenu.Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -302,13 +307,13 @@ export default function clotheShopList(globalData: IGlobalData) {
|
|||||||
mp.gui.chat.show(false);
|
mp.gui.chat.show(false);
|
||||||
|
|
||||||
// Reset some variables
|
// Reset some variables
|
||||||
categoryMenus = [];
|
clotheMenus = [];
|
||||||
currentMenuIdx = -1;
|
currentMenuIdx = -1;
|
||||||
menuTransition = false;
|
menuTransition = false;
|
||||||
lastClothing = null;
|
lastClothing = null;
|
||||||
|
|
||||||
// Create a new main menu
|
// Create a new main menu
|
||||||
mainMenu = new UIMenu("", "SELECT A CATEGORY", new Point(0, 0), bannerSprite.library, bannerSprite.texture);
|
mainMenu = new UIMenu("", "Wählen Sie eine Kategorie", new Point(0, 0), bannerSprite.library, bannerSprite.texture);
|
||||||
mainMenu.Visible = true;
|
mainMenu.Visible = true;
|
||||||
|
|
||||||
// Update clothingData
|
// Update clothingData
|
||||||
@@ -325,7 +330,7 @@ export default function clotheShopList(globalData: IGlobalData) {
|
|||||||
// for (const [key, value] of Object.entries(clothingData.props)) addClothingItems("props", bannerSprite, key, value);
|
// for (const [key, value] of Object.entries(clothingData.props)) addClothingItems("props", bannerSprite, key, value);
|
||||||
|
|
||||||
// Submenu events
|
// Submenu events
|
||||||
for (const item of categoryMenus) {
|
for (const item of clotheMenus) {
|
||||||
// Preview hovering item
|
// Preview hovering item
|
||||||
item.menu.IndexChange.on(submenuItemChangeHandler);
|
item.menu.IndexChange.on(submenuItemChangeHandler);
|
||||||
|
|
||||||
@@ -336,7 +341,7 @@ export default function clotheShopList(globalData: IGlobalData) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const currentMenu = categoryMenus[currentMenuIdx];
|
const currentMenu = clotheMenus[currentMenuIdx];
|
||||||
const currentItem = currentMenu.item[itemIndex];
|
const currentItem = currentMenu.item[itemIndex];
|
||||||
const currentTexture = currentMenu.texture[itemIndex].id;
|
const currentTexture = currentMenu.texture[itemIndex].id;
|
||||||
if (currentMenu.slotIdx == 11) {
|
if (currentMenu.slotIdx == 11) {
|
||||||
@@ -367,9 +372,10 @@ export default function clotheShopList(globalData: IGlobalData) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Main menu events
|
// Main menu events
|
||||||
mainMenu.ItemSelect.on((selectedItem, itemIndex) => {
|
mainMenu.ItemSelect.on((selectedItem, itemIndex) => {
|
||||||
const nextMenu = categoryMenus[itemIndex];
|
const nextMenu = clotheMenus[itemIndex];
|
||||||
const slot = Number(nextMenu.slotIdx);
|
const slot = Number(nextMenu.slotIdx);
|
||||||
|
|
||||||
lastClothing = {
|
lastClothing = {
|
||||||
@@ -386,7 +392,8 @@ export default function clotheShopList(globalData: IGlobalData) {
|
|||||||
nextMenu.menu.Visible = true;
|
nextMenu.menu.Visible = true;
|
||||||
menuTransition = true;
|
menuTransition = true;
|
||||||
|
|
||||||
submenuItemChangeHandler(nextMenu.menu.CurrentSelection);
|
submenuItemChangeHandler(nextMenu.menu.CurrentSelection);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
mainMenu.MenuClose.on(() => {
|
mainMenu.MenuClose.on(() => {
|
||||||
@@ -396,6 +403,7 @@ export default function clotheShopList(globalData: IGlobalData) {
|
|||||||
currentMenuIdx = -1;
|
currentMenuIdx = -1;
|
||||||
lastClothing = null;
|
lastClothing = null;
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -410,7 +418,7 @@ export default function clotheShopList(globalData: IGlobalData) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
mp.events.add("clothesMenu:close", () => {
|
mp.events.add("clothesMenu:close", () => {
|
||||||
if (currentMenuIdx !== -1) categoryMenus[currentMenuIdx].menu.Close();
|
if (currentMenuIdx !== -1) clotheMenus[currentMenuIdx].menu.Close();
|
||||||
if (mainMenu && mainMenu.Visible) mainMenu.Close();
|
if (mainMenu && mainMenu.Visible) mainMenu.Close();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ export default function factionInteraction(globalData: IGlobalData) {
|
|||||||
var screenRes = mp.game.graphics.getScreenResolution(0, 0);
|
var screenRes = mp.game.graphics.getScreenResolution(0, 0);
|
||||||
var player = mp.players.local;
|
var player = mp.players.local;
|
||||||
var tasks;
|
var tasks;
|
||||||
var deathSeconds;
|
|
||||||
var initTasks;
|
|
||||||
var newTasks;
|
var newTasks;
|
||||||
var sorting = 0;
|
var sorting = 0;
|
||||||
var firstSorting = true;
|
var firstSorting = true;
|
||||||
@@ -27,8 +25,7 @@ export default function factionInteraction(globalData: IGlobalData) {
|
|||||||
var rangeLeft;
|
var rangeLeft;
|
||||||
var sortText;
|
var sortText;
|
||||||
var deadRespawned = false;
|
var deadRespawned = false;
|
||||||
var timeLeft = 0;
|
var timeLeft = null;
|
||||||
var deathTime;
|
|
||||||
|
|
||||||
var ticketName: string;
|
var ticketName: string;
|
||||||
var pointsName: string;
|
var pointsName: string;
|
||||||
@@ -40,6 +37,7 @@ export default function factionInteraction(globalData: IGlobalData) {
|
|||||||
/*mp.events.add("updateFactionBlips", (type, taskList) => {
|
/*mp.events.add("updateFactionBlips", (type, taskList) => {
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});*/
|
});*/
|
||||||
mp.events.add("showFactionInteractionLSPD", (userFactionId, isDuty, userFactionName, isFactionLeader) => {
|
mp.events.add("showFactionInteractionLSPD", (userFactionId, isDuty, userFactionName, isFactionLeader) => {
|
||||||
//LSPD
|
//LSPD
|
||||||
@@ -280,15 +278,11 @@ export default function factionInteraction(globalData: IGlobalData) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
mp.events.add("showMedicTasks", (type, taskList, deathTimes) => {
|
mp.events.add("showMedicTasks", (type, taskList) => {
|
||||||
|
|
||||||
tasks = JSON.parse(taskList);
|
tasks = JSON.parse(taskList);
|
||||||
deathSeconds = JSON.parse(deathTimes);
|
|
||||||
if (sorting === 0) {
|
|
||||||
initTasks = tasks;
|
|
||||||
}
|
|
||||||
|
|
||||||
mp.events.call("sortFactionTasks", false);
|
//mp.events.call("sortFactionTasks", false);
|
||||||
|
|
||||||
mp.gui.chat.activate(false);
|
mp.gui.chat.activate(false);
|
||||||
globalData.InMenu = true;
|
globalData.InMenu = true;
|
||||||
@@ -329,7 +323,6 @@ export default function factionInteraction(globalData: IGlobalData) {
|
|||||||
dimension: 0
|
dimension: 0
|
||||||
});
|
});
|
||||||
reviveTaskMenuMedic.Close();
|
reviveTaskMenuMedic.Close();
|
||||||
deathTime = deathSeconds[index];
|
|
||||||
mp.gui.chat.activate(true);
|
mp.gui.chat.activate(true);
|
||||||
globalData.InMenu = false;
|
globalData.InMenu = false;
|
||||||
ambulanceImagePos = 0.325
|
ambulanceImagePos = 0.325
|
||||||
@@ -337,7 +330,6 @@ export default function factionInteraction(globalData: IGlobalData) {
|
|||||||
taskFinish = tasks[index].Position;
|
taskFinish = tasks[index].Position;
|
||||||
taskRange = mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z, true);
|
taskRange = mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z, true);
|
||||||
activeTask = tasks[index];
|
activeTask = tasks[index];
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -407,6 +399,7 @@ export default function factionInteraction(globalData: IGlobalData) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/*
|
||||||
mp.events.add("sortFactionTasks", (sortByKey) => {
|
mp.events.add("sortFactionTasks", (sortByKey) => {
|
||||||
if (firstSorting) {
|
if (firstSorting) {
|
||||||
sortText = "Nach Uhrzeit";
|
sortText = "Nach Uhrzeit";
|
||||||
@@ -462,7 +455,7 @@ export default function factionInteraction(globalData: IGlobalData) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});*/
|
||||||
|
|
||||||
function getDistance1(index) {
|
function getDistance1(index) {
|
||||||
return mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, newTasks[index].Position.x, newTasks[index].Position.y, newTasks[index].Position.z, true).toFixed(2);
|
return mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, newTasks[index].Position.x, newTasks[index].Position.y, newTasks[index].Position.z, true).toFixed(2);
|
||||||
@@ -476,27 +469,40 @@ export default function factionInteraction(globalData: IGlobalData) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
mp.events.add("destroyMedicTaskCheckpoint", () => {
|
mp.events.add("destroyMedicTaskCheckpoint", () => {
|
||||||
activeCheckpoint.destroy();
|
if (activeCheckpoint) {
|
||||||
activeTask = null;
|
activeCheckpoint.destroy();
|
||||||
timeLeft = 0;
|
activeCheckpoint = null;
|
||||||
mp.events.callRemote("MedicTaskTimeout");
|
activeTask = null;
|
||||||
|
timeLeft = null;
|
||||||
|
mp.events.callRemote("MedicTaskTimeout");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
mp.events.add('playerEnterCheckpoint', (activeCheckpoint) => {
|
mp.events.add('playerEnterCheckpoint', (activeCheckpoint) => {
|
||||||
if (deadRespawned == true) {
|
if (deadRespawned == true) {
|
||||||
activeCheckpoint.destroy();
|
activeCheckpoint.destroy();
|
||||||
|
activeCheckpoint = null;
|
||||||
mp.events.callRemote("PayCutMedicEarnings");
|
mp.events.callRemote("PayCutMedicEarnings");
|
||||||
activeTask = null;
|
activeTask = null;
|
||||||
deadRespawned = false;
|
deadRespawned = false;
|
||||||
timeLeft = 0;
|
timeLeft = null;
|
||||||
} else if (activeTask.Type == 1){
|
} else if (activeTask.Type == 1){
|
||||||
activeCheckpoint.destroy();
|
activeCheckpoint.destroy();
|
||||||
|
activeCheckpoint = null;
|
||||||
mp.events.callRemote("delHealTaskAsMedic", activeTask.Victim);
|
mp.events.callRemote("delHealTaskAsMedic", activeTask.Victim);
|
||||||
activeTask = null;
|
activeTask = null;
|
||||||
|
timeLeft = null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
mp.events.add('setTaskTimeLeft', (taskTimeLeft) => {
|
||||||
|
if (activeTask) {
|
||||||
|
timeLeft = taskTimeLeft;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
mp.events.add('render', () => {
|
mp.events.add('render', () => {
|
||||||
|
|
||||||
if (activeTask) {
|
if (activeTask) {
|
||||||
rangeLeft = mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, taskFinish.x, taskFinish.y, taskFinish.z, true).toFixed(2);
|
rangeLeft = mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, taskFinish.x, taskFinish.y, taskFinish.z, true).toFixed(2);
|
||||||
if (rangeLeft > 1.9) {
|
if (rangeLeft > 1.9) {
|
||||||
@@ -520,34 +526,35 @@ export default function factionInteraction(globalData: IGlobalData) {
|
|||||||
|
|
||||||
var currentDate = new Date();
|
var currentDate = new Date();
|
||||||
|
|
||||||
if (deadRespawned == false) {
|
if (timeLeft != null) {
|
||||||
timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - deathTime - 30));
|
if (deadRespawned == false) {
|
||||||
if (timeLeft < 1) mp.events.call("cutMedicEarnings");
|
//timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - activeTask.TimeLeft - 60));
|
||||||
} else {
|
if (timeLeft < 120) mp.events.call("cutMedicEarnings");
|
||||||
timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - deathTime - 60));
|
} else {
|
||||||
if (timeLeft < 1) mp.events.call("destroyMedicTaskCheckpoint");
|
//timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - activeTask.TimeLeft - 120));
|
||||||
}
|
if (timeLeft < 1) mp.events.call("destroyMedicTaskCheckpoint");
|
||||||
|
}
|
||||||
|
|
||||||
/*DEBUG TIMER für die Zeit die man noch hat zur Wiederbelebung
|
if (deadRespawned == false) {
|
||||||
if (deadRespawned == false) {
|
mp.game.graphics.drawText(timeLeft + "s", [0.5, 0.85], {
|
||||||
mp.game.graphics.drawText(timeLeft.toString() + "s ", [0.5, 0.88], {
|
|
||||||
font: 7,
|
|
||||||
color: [60, 179, 113, 255],
|
|
||||||
scale: [0.3, 0.3],
|
|
||||||
outline: true,
|
|
||||||
centre: true
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
{
|
|
||||||
mp.game.graphics.drawText(timeLeft.toString() + "s", [0.5, 0.88], {
|
|
||||||
font: 7,
|
font: 7,
|
||||||
color: [255, 203, 145, 255],
|
color: [60, 179, 113, 255],
|
||||||
scale: [0.3, 0.3],
|
scale: [0.5, 0.5],
|
||||||
outline: true,
|
outline: true,
|
||||||
centre: true
|
centre: true
|
||||||
});
|
});
|
||||||
}
|
} else {
|
||||||
} */
|
{
|
||||||
|
mp.game.graphics.drawText(timeLeft + "s", [0.5, 0.85], {
|
||||||
|
font: 7,
|
||||||
|
color: [255, 203, 145, 255],
|
||||||
|
scale: [0.5, 0.5],
|
||||||
|
outline: true,
|
||||||
|
centre: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -169,7 +169,6 @@ export default function (globalData: IGlobalData) {
|
|||||||
} else if (item === payItem) {
|
} else if (item === payItem) {
|
||||||
mp.gui.chat.activate(true);
|
mp.gui.chat.activate(true);
|
||||||
mp.gui.cursor.show(true, true);
|
mp.gui.cursor.show(true, true);
|
||||||
globalData.InMenu = true;
|
|
||||||
var input = new InputHelper("Welchem Spieler möchtest du Geld geben (Name / ID)?", globalData);
|
var input = new InputHelper("Welchem Spieler möchtest du Geld geben (Name / ID)?", globalData);
|
||||||
input.show();
|
input.show();
|
||||||
input.getValue(name => {
|
input.getValue(name => {
|
||||||
@@ -226,6 +225,14 @@ export default function (globalData: IGlobalData) {
|
|||||||
menuItem.SetRightLabel(data.regDate);
|
menuItem.SetRightLabel(data.regDate);
|
||||||
accountMenu.AddItem(menuItem);
|
accountMenu.AddItem(menuItem);
|
||||||
|
|
||||||
|
menuItem = new UIMenuItem("Spielzeit");
|
||||||
|
menuItem.SetRightLabel(data.playTime + "h");
|
||||||
|
accountMenu.AddItem(menuItem);
|
||||||
|
|
||||||
|
menuItem = new UIMenuItem("Verwarnungen");
|
||||||
|
menuItem.SetRightLabel("~r~" + data.userWarn);
|
||||||
|
accountMenu.AddItem(menuItem);
|
||||||
|
|
||||||
menuItem = new UIMenuItem("Adminrang");
|
menuItem = new UIMenuItem("Adminrang");
|
||||||
menuItem.SetRightLabel(data.adminLevel);
|
menuItem.SetRightLabel(data.adminLevel);
|
||||||
accountMenu.AddItem(menuItem);
|
accountMenu.AddItem(menuItem);
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ let description = document.getElementById('description');
|
|||||||
let input = document.getElementById('input');
|
let input = document.getElementById('input');
|
||||||
let close = document.getElementById('close');
|
let close = document.getElementById('close');
|
||||||
|
|
||||||
function setInputFieldType(value) {
|
fzunction setInputFieldType(value) {
|
||||||
if (input.type == value) return;
|
if (input.type == value) return;
|
||||||
|
|
||||||
var field = document.createElement('input');
|
var field = document.createElement('input');
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { IEntity, IPlayer, IEntityAttachments, IEntityAttachmentPool, IPlayerPool, IVehicle, IVehiclePool, VehicleSeat, EntityType, IObjectPool, IObject } from "../../game";
|
import { IEntity, IPlayer, IEntityAttachments, IEntityAttachmentPool, IPlayerPool, IVehicle, IVehiclePool, VehicleSeat, EntityType } from "../../game";
|
||||||
import { parseJson } from "../../util";
|
import { parseJson } from "../../util";
|
||||||
import game from "../..";
|
import game from "../..";
|
||||||
|
|
||||||
@@ -15,6 +15,13 @@ class RageEntity implements IEntity {
|
|||||||
return this.entity.id;
|
return this.entity.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get attachments(): number {
|
||||||
|
var color = this.entity.getVariable("nametagColor");
|
||||||
|
if (!color)
|
||||||
|
return 0;
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
|
||||||
get handle() {
|
get handle() {
|
||||||
return this.entity.handle;
|
return this.entity.handle;
|
||||||
}
|
}
|
||||||
@@ -64,6 +71,13 @@ class RagePlayer extends RageEntity implements IPlayer {
|
|||||||
return this.player.name;
|
return this.player.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get nametagColor(): number {
|
||||||
|
var color = this.player.getVariable("nameTagColor");
|
||||||
|
if (!color)
|
||||||
|
return 0;
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
|
||||||
get vehicle(): IVehicle {
|
get vehicle(): IVehicle {
|
||||||
if (!this.player) {
|
if (!this.player) {
|
||||||
return null;
|
return null;
|
||||||
@@ -176,19 +190,6 @@ class RagePlayerPool implements IPlayerPool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class RageObject extends RageEntity implements IObject {
|
|
||||||
public object: ObjectMp;
|
|
||||||
public __attachmentData: object;
|
|
||||||
|
|
||||||
constructor(object: ObjectMp, attachmentData: object) {
|
|
||||||
if (!object) {
|
|
||||||
throw "Object is undefined"
|
|
||||||
}
|
|
||||||
super(object);
|
|
||||||
this.object = object;
|
|
||||||
this.__attachmentData = attachmentData;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class RageVehicle extends RageEntity implements IVehicle {
|
class RageVehicle extends RageEntity implements IVehicle {
|
||||||
private vehicle: VehicleMp;
|
private vehicle: VehicleMp;
|
||||||
@@ -227,36 +228,6 @@ class RageVehicle extends RageEntity implements IVehicle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class RageObjectPool implements IObjectPool {
|
|
||||||
public attachmentDataMap: Map<ObjectMp, object>;
|
|
||||||
|
|
||||||
|
|
||||||
setData(entity: ObjectMp, attachmentData: object): void {
|
|
||||||
if (!this.attachmentDataMap)
|
|
||||||
this.attachmentDataMap = new Map<ObjectMp, object>();
|
|
||||||
|
|
||||||
this.attachmentDataMap.set(entity, attachmentData);
|
|
||||||
}
|
|
||||||
|
|
||||||
at(id: number): IObject {
|
|
||||||
var object = mp.objects.atRemoteId(Number(id));
|
|
||||||
|
|
||||||
if (!object)
|
|
||||||
return null;
|
|
||||||
|
|
||||||
return new RageObject(object, this.attachmentDataMap.get(object));
|
|
||||||
}
|
|
||||||
|
|
||||||
forEach(fn: (entity: IObject) => void): void {
|
|
||||||
mp.objects.forEach(e => {
|
|
||||||
if (!e) {
|
|
||||||
game.ui.sendChatMessage("forEach - e is null");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
fn(new RageObject(e, this.attachmentDataMap.get(e)));
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class RageVehiclePool implements IVehiclePool {
|
class RageVehiclePool implements IVehiclePool {
|
||||||
at(id: number): IVehicle {
|
at(id: number): IVehicle {
|
||||||
@@ -288,6 +259,5 @@ export {
|
|||||||
RageEntityAttachmentPool,
|
RageEntityAttachmentPool,
|
||||||
RageVehicle,
|
RageVehicle,
|
||||||
RageVehiclePool,
|
RageVehiclePool,
|
||||||
RageObject,
|
|
||||||
RageObjectPool,
|
|
||||||
}
|
}
|
||||||
@@ -1,18 +1,17 @@
|
|||||||
import { IGame, IUi, IEvents, IPlayerPool, IVehiclePool, IEntityAttachmentPool, IObjectPool } from "../../game";
|
import { IGame, IUi, IEvents, IPlayerPool, IVehiclePool, IEntityAttachmentPool } from "../../game";
|
||||||
import RageEvents from "./events";
|
import RageEvents from "./events";
|
||||||
import RageUi from "./ui";
|
import RageUi from "./ui";
|
||||||
import { RagePlayerPool, RageVehiclePool, RageEntityAttachmentPool, RageObjectPool } from "./entities";
|
import { RagePlayerPool, RageVehiclePool, RageEntityAttachmentPool } from "./entities";
|
||||||
|
|
||||||
export default class RageGame implements IGame {
|
export default class RageGame implements IGame {
|
||||||
players: IPlayerPool = new RagePlayerPool();
|
players: IPlayerPool = new RagePlayerPool();
|
||||||
vehicles: IVehiclePool = new RageVehiclePool();
|
vehicles: IVehiclePool = new RageVehiclePool();
|
||||||
attachments: IEntityAttachmentPool = new RageEntityAttachmentPool();
|
attachments: IEntityAttachmentPool = new RageEntityAttachmentPool();
|
||||||
objects: IObjectPool = new RageObjectPool();
|
|
||||||
events: IEvents = new RageEvents;
|
events: IEvents = new RageEvents;
|
||||||
ui: IUi = new RageUi;
|
ui: IUi = new RageUi;
|
||||||
|
|
||||||
wait(ms: number): void {
|
async wait(ms: number): Promise<void> {
|
||||||
mp.game.wait(ms);
|
await mp.game.waitAsync(ms);
|
||||||
}
|
}
|
||||||
|
|
||||||
disableDefaultEngineBehaviour(): void {
|
disableDefaultEngineBehaviour(): void {
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
interface IGame {
|
interface IGame {
|
||||||
wait(ms: number);
|
wait(ms: number): Promise<void>;
|
||||||
events: IEvents;
|
events: IEvents;
|
||||||
ui: IUi;
|
ui: IUi;
|
||||||
|
|
||||||
players: IPlayerPool;
|
players: IPlayerPool;
|
||||||
vehicles: IVehiclePool;
|
vehicles: IVehiclePool;
|
||||||
attachments: IEntityAttachmentPool;
|
attachments: IEntityAttachmentPool;
|
||||||
objects: IObjectPool;
|
|
||||||
|
|
||||||
disableDefaultEngineBehaviour(): void;
|
disableDefaultEngineBehaviour(): void;
|
||||||
}
|
}
|
||||||
@@ -53,11 +52,9 @@ interface IPlayer extends IEntity {
|
|||||||
inVehicle: boolean;
|
inVehicle: boolean;
|
||||||
name: string;
|
name: string;
|
||||||
vehicle: IVehicle;
|
vehicle: IVehicle;
|
||||||
|
nametagColor: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IObject extends IEntity {
|
|
||||||
__attachmentData: object;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface IEntityAttachments {
|
interface IEntityAttachments {
|
||||||
remoteId: any;
|
remoteId: any;
|
||||||
@@ -79,9 +76,6 @@ interface IEntityPool<TEntity> {
|
|||||||
forEach(fn: (entity: TEntity) => void): void;
|
forEach(fn: (entity: TEntity) => void): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IObjectPool extends IEntityPool<IObject> {
|
|
||||||
setData(entity: ObjectMp, attachmentData: object): void;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface IPlayerPool extends IEntityPool<IPlayer> {
|
interface IPlayerPool extends IEntityPool<IPlayer> {
|
||||||
local: IPlayer;
|
local: IPlayer;
|
||||||
@@ -158,7 +152,6 @@ export {
|
|||||||
IBrowser,
|
IBrowser,
|
||||||
|
|
||||||
IPlayer,
|
IPlayer,
|
||||||
IObject,
|
|
||||||
IEntityAttachments,
|
IEntityAttachments,
|
||||||
IEntityAttachmentPool,
|
IEntityAttachmentPool,
|
||||||
IVehicle,
|
IVehicle,
|
||||||
@@ -166,7 +159,6 @@ export {
|
|||||||
IEntityPool,
|
IEntityPool,
|
||||||
IPlayerPool,
|
IPlayerPool,
|
||||||
IVehiclePool,
|
IVehiclePool,
|
||||||
IObjectPool,
|
|
||||||
|
|
||||||
EventName,
|
EventName,
|
||||||
Key,
|
Key,
|
||||||
|
|||||||
2
ReallifeGamemode.Client/global.d.ts
vendored
2
ReallifeGamemode.Client/global.d.ts
vendored
@@ -21,6 +21,8 @@ declare type AccountData = {
|
|||||||
factionVehicles: VehicleData[];
|
factionVehicles: VehicleData[];
|
||||||
nextPayday: number;
|
nextPayday: number;
|
||||||
stateFaction: boolean;
|
stateFaction: boolean;
|
||||||
|
playTime: number;
|
||||||
|
userWarn: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
declare type VehicleData = {
|
declare type VehicleData = {
|
||||||
|
|||||||
@@ -224,10 +224,9 @@ refuseCollector();
|
|||||||
import PedCreator from './Ped/PedCreator';
|
import PedCreator from './Ped/PedCreator';
|
||||||
PedCreator();
|
PedCreator();
|
||||||
|
|
||||||
/*
|
|
||||||
import attachmentManager from './util/attachmentMngr';
|
import attachmentManager from './util/attachmentMngr';
|
||||||
attachmentManager(game);
|
attachmentManager(game);
|
||||||
*/
|
|
||||||
|
|
||||||
import relativeVector from './util/relativevector';
|
import relativeVector from './util/relativevector';
|
||||||
relativeVector();
|
relativeVector();
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import game, { GlobalData } from "..";
|
import game, { GlobalData } from "..";
|
||||||
import { INSPECT_MAX_BYTES } from "buffer";
|
|
||||||
let disableInputTimer;
|
let disableInputTimer;
|
||||||
|
|
||||||
export default class InputHelper {
|
export default class InputHelper {
|
||||||
@@ -27,10 +26,6 @@ export default class InputHelper {
|
|||||||
this.value = undefined;
|
this.value = undefined;
|
||||||
|
|
||||||
mp.events.add('closeinputhelper', this.finish);
|
mp.events.add('closeinputhelper', this.finish);
|
||||||
|
|
||||||
mp.events.add("render", () => {
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
show() {
|
show() {
|
||||||
|
|||||||
558
ReallifeGamemode.Client/package-lock.json
generated
558
ReallifeGamemode.Client/package-lock.json
generated
@@ -151,8 +151,8 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/ragemp-c": {
|
"@types/ragemp-c": {
|
||||||
"version": "github:CocaColaBear/types-ragemp-c#6a118e6399b77a347ac67e07f6b15f842109b0ff",
|
"version": "github:kookroach/types-ragemp-c#849cf51f85066c786ad3c563872ae74d9af2dd7c",
|
||||||
"from": "github:CocaColaBear/types-ragemp-c#master",
|
"from": "github:kookroach/types-ragemp-c#v1.0",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@webassemblyjs/ast": {
|
"@webassemblyjs/ast": {
|
||||||
@@ -1681,554 +1681,14 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"fsevents": {
|
"fsevents": {
|
||||||
"version": "1.2.12",
|
"version": "1.2.13",
|
||||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz",
|
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
|
||||||
"integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==",
|
"integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"bindings": "^1.5.0",
|
"bindings": "^1.5.0",
|
||||||
"nan": "^2.12.1",
|
"nan": "^2.12.1"
|
||||||
"node-pre-gyp": "*"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"abbrev": {
|
|
||||||
"version": "1.1.1",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"ansi-regex": {
|
|
||||||
"version": "2.1.1",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"aproba": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"are-we-there-yet": {
|
|
||||||
"version": "1.1.5",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"delegates": "^1.0.0",
|
|
||||||
"readable-stream": "^2.0.6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"balanced-match": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"brace-expansion": {
|
|
||||||
"version": "1.1.11",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"balanced-match": "^1.0.0",
|
|
||||||
"concat-map": "0.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"chownr": {
|
|
||||||
"version": "1.1.4",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"code-point-at": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"concat-map": {
|
|
||||||
"version": "0.0.1",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"console-control-strings": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"core-util-is": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"debug": {
|
|
||||||
"version": "3.2.6",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"ms": "^2.1.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"deep-extend": {
|
|
||||||
"version": "0.6.0",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"delegates": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"detect-libc": {
|
|
||||||
"version": "1.0.3",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"fs-minipass": {
|
|
||||||
"version": "1.2.7",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"minipass": "^2.6.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"fs.realpath": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"gauge": {
|
|
||||||
"version": "2.7.4",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"aproba": "^1.0.3",
|
|
||||||
"console-control-strings": "^1.0.0",
|
|
||||||
"has-unicode": "^2.0.0",
|
|
||||||
"object-assign": "^4.1.0",
|
|
||||||
"signal-exit": "^3.0.0",
|
|
||||||
"string-width": "^1.0.1",
|
|
||||||
"strip-ansi": "^3.0.1",
|
|
||||||
"wide-align": "^1.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"glob": {
|
|
||||||
"version": "7.1.6",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"fs.realpath": "^1.0.0",
|
|
||||||
"inflight": "^1.0.4",
|
|
||||||
"inherits": "2",
|
|
||||||
"minimatch": "^3.0.4",
|
|
||||||
"once": "^1.3.0",
|
|
||||||
"path-is-absolute": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"has-unicode": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"iconv-lite": {
|
|
||||||
"version": "0.4.24",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"safer-buffer": ">= 2.1.2 < 3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ignore-walk": {
|
|
||||||
"version": "3.0.3",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"minimatch": "^3.0.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"inflight": {
|
|
||||||
"version": "1.0.6",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"once": "^1.3.0",
|
|
||||||
"wrappy": "1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"inherits": {
|
|
||||||
"version": "2.0.4",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"ini": {
|
|
||||||
"version": "1.3.5",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"is-fullwidth-code-point": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"number-is-nan": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"isarray": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"minimatch": {
|
|
||||||
"version": "3.0.4",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"brace-expansion": "^1.1.7"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"minimist": {
|
|
||||||
"version": "1.2.5",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"minipass": {
|
|
||||||
"version": "2.9.0",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"safe-buffer": "^5.1.2",
|
|
||||||
"yallist": "^3.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"minizlib": {
|
|
||||||
"version": "1.3.3",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"minipass": "^2.9.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mkdirp": {
|
|
||||||
"version": "0.5.3",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"minimist": "^1.2.5"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ms": {
|
|
||||||
"version": "2.1.2",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"needle": {
|
|
||||||
"version": "2.3.3",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"debug": "^3.2.6",
|
|
||||||
"iconv-lite": "^0.4.4",
|
|
||||||
"sax": "^1.2.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node-pre-gyp": {
|
|
||||||
"version": "0.14.0",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"detect-libc": "^1.0.2",
|
|
||||||
"mkdirp": "^0.5.1",
|
|
||||||
"needle": "^2.2.1",
|
|
||||||
"nopt": "^4.0.1",
|
|
||||||
"npm-packlist": "^1.1.6",
|
|
||||||
"npmlog": "^4.0.2",
|
|
||||||
"rc": "^1.2.7",
|
|
||||||
"rimraf": "^2.6.1",
|
|
||||||
"semver": "^5.3.0",
|
|
||||||
"tar": "^4.4.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nopt": {
|
|
||||||
"version": "4.0.3",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"abbrev": "1",
|
|
||||||
"osenv": "^0.1.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"npm-bundled": {
|
|
||||||
"version": "1.1.1",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"npm-normalize-package-bin": "^1.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"npm-normalize-package-bin": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"npm-packlist": {
|
|
||||||
"version": "1.4.8",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"ignore-walk": "^3.0.1",
|
|
||||||
"npm-bundled": "^1.0.1",
|
|
||||||
"npm-normalize-package-bin": "^1.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"npmlog": {
|
|
||||||
"version": "4.1.2",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"are-we-there-yet": "~1.1.2",
|
|
||||||
"console-control-strings": "~1.1.0",
|
|
||||||
"gauge": "~2.7.3",
|
|
||||||
"set-blocking": "~2.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"number-is-nan": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"object-assign": {
|
|
||||||
"version": "4.1.1",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"once": {
|
|
||||||
"version": "1.4.0",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"wrappy": "1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"os-homedir": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"os-tmpdir": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"osenv": {
|
|
||||||
"version": "0.1.5",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"os-homedir": "^1.0.0",
|
|
||||||
"os-tmpdir": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"path-is-absolute": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"process-nextick-args": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"rc": {
|
|
||||||
"version": "1.2.8",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"deep-extend": "^0.6.0",
|
|
||||||
"ini": "~1.3.0",
|
|
||||||
"minimist": "^1.2.0",
|
|
||||||
"strip-json-comments": "~2.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"readable-stream": {
|
|
||||||
"version": "2.3.7",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"core-util-is": "~1.0.0",
|
|
||||||
"inherits": "~2.0.3",
|
|
||||||
"isarray": "~1.0.0",
|
|
||||||
"process-nextick-args": "~2.0.0",
|
|
||||||
"safe-buffer": "~5.1.1",
|
|
||||||
"string_decoder": "~1.1.1",
|
|
||||||
"util-deprecate": "~1.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"rimraf": {
|
|
||||||
"version": "2.7.1",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"glob": "^7.1.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"safe-buffer": {
|
|
||||||
"version": "5.1.2",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"safer-buffer": {
|
|
||||||
"version": "2.1.2",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"sax": {
|
|
||||||
"version": "1.2.4",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"semver": {
|
|
||||||
"version": "5.7.1",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"set-blocking": {
|
|
||||||
"version": "2.0.0",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"signal-exit": {
|
|
||||||
"version": "3.0.2",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"string-width": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"code-point-at": "^1.0.0",
|
|
||||||
"is-fullwidth-code-point": "^1.0.0",
|
|
||||||
"strip-ansi": "^3.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"string_decoder": {
|
|
||||||
"version": "1.1.1",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"safe-buffer": "~5.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"strip-ansi": {
|
|
||||||
"version": "3.0.1",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"ansi-regex": "^2.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"strip-json-comments": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"tar": {
|
|
||||||
"version": "4.4.13",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"chownr": "^1.1.1",
|
|
||||||
"fs-minipass": "^1.2.5",
|
|
||||||
"minipass": "^2.8.6",
|
|
||||||
"minizlib": "^1.2.1",
|
|
||||||
"mkdirp": "^0.5.0",
|
|
||||||
"safe-buffer": "^5.1.2",
|
|
||||||
"yallist": "^3.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"util-deprecate": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"wide-align": {
|
|
||||||
"version": "1.1.3",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"string-width": "^1.0.2 || 2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"wrappy": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"yallist": {
|
|
||||||
"version": "3.1.1",
|
|
||||||
"bundled": true,
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"get-caller-file": {
|
"get-caller-file": {
|
||||||
@@ -2986,9 +2446,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"nan": {
|
"nan": {
|
||||||
"version": "2.14.0",
|
"version": "2.14.2",
|
||||||
"resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
|
"resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz",
|
||||||
"integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
|
"integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.5.5",
|
"@babel/core": "^7.5.5",
|
||||||
"@types/node": "^11.13.18",
|
"@types/node": "^11.13.18",
|
||||||
"@types/ragemp-c": "github:CocaColaBear/types-ragemp-c#master",
|
"@types/ragemp-c": "github:kookroach/types-ragemp-c#v1.0",
|
||||||
"babel-loader": "^8.0.6",
|
"babel-loader": "^8.0.6",
|
||||||
"copy-webpack-plugin": "^5.1.1",
|
"copy-webpack-plugin": "^5.1.1",
|
||||||
"serialize-javascript": "^3.0.0",
|
"serialize-javascript": "^3.0.0",
|
||||||
@@ -22,6 +22,5 @@
|
|||||||
"ProjectOpened": [
|
"ProjectOpened": [
|
||||||
"watch"
|
"watch"
|
||||||
]
|
]
|
||||||
},
|
}
|
||||||
"dependencies": {}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,137 +1,68 @@
|
|||||||
import { IGame, EntityType, IEntity } from "../game";
|
import { IGame, IEntity } from "../game";
|
||||||
import relativeVector from "./relativevector";
|
|
||||||
|
|
||||||
var attachId = 0;
|
|
||||||
|
|
||||||
export default function attachmentManager(game: IGame) {
|
export default function attachmentManager(game: IGame) {
|
||||||
mp.events.add("SERVER:LoadAttachments", () => {
|
mp.events.add("SERVER:LoadAttachments", () => {
|
||||||
attachmentMngr.register("char_creator_1", "prop_beggers_sign_04", 28422, new mp.Vector3(0, 0, 0), new mp.Vector3(0, 0, 0));
|
attachmentMngr.register("char_creator_1", "prop_beggers_sign_04", 28422, new mp.Vector3(0, 0, 0), new mp.Vector3(0, 0, 0));
|
||||||
attachmentMngr.register("ammobox", "gr_prop_gr_crate_mag_01a", "PH_L_Hand", new mp.Vector3(0, -0.18, -0.18), new mp.Vector3(0, 0, 0));
|
attachmentMngr.register("ammobox", "gr_prop_gr_crate_mag_01a", 28422, new mp.Vector3(0, -0.1, -0.18), new mp.Vector3(0, 0, 90));
|
||||||
attachmentMngr.register("binbag", "prop_cs_rub_binbag_01", 28422, new mp.Vector3(0.08, 0.0, -0.03), new mp.Vector3(270.0, 0.0, 25.0));
|
attachmentMngr.register("binbag", "prop_cs_rub_binbag_01", 28422, new mp.Vector3(0.08, 0.0, -0.03), new mp.Vector3(270.0, 0.0, 25.0));
|
||||||
attachmentMngr.register("weapondeal", "ex_prop_crate_ammo_bc", "chassis_dummy", new mp.Vector3(0.08, -0.9, -0.2), new mp.Vector3(0, 0, 0));
|
attachmentMngr.register("weapondeal", "ex_prop_crate_ammo_bc", "chassis_dummy", new mp.Vector3(0.08, -0.9, -0.2), new mp.Vector3(0, 0, 0));
|
||||||
attachmentMngr.register("weapondeal1", "ex_office_swag_guns02", "chassis_dummy", new mp.Vector3(0, 0.8, 0), new mp.Vector3(0, 0, 0));
|
attachmentMngr.register("weapondeal1", "ex_office_swag_guns02", "chassis_dummy", new mp.Vector3(0, 0.8, 0), new mp.Vector3(0, 0, 0));
|
||||||
attachmentMngr.register("weapondeal2", "w_sg_pumpshotgun", "weapondeal2w_sg_pumpshotgun", new mp.Vector3(0.4, 1.6, 0.62), new mp.Vector3(90, 0, 180));
|
attachmentMngr.register("weapondeal2", "w_sg_pumpshotgun", "chassis_dummy", new mp.Vector3(0.4, 1.6, 0.62), new mp.Vector3(90, 0, 180));
|
||||||
});
|
});
|
||||||
|
|
||||||
const attachmentMngr =
|
|
||||||
|
|
||||||
|
const attachmentMngr =
|
||||||
{
|
{
|
||||||
attachments: {},
|
attachments: {},
|
||||||
|
|
||||||
addFor: function (entityRage, id) {
|
addFor: async function (entity, id) {
|
||||||
|
|
||||||
if (!entityRage) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
let entity: IEntity;
|
|
||||||
if (entityRage.type === "player") {
|
|
||||||
var player = game.players.at(entityRage.remoteId);
|
|
||||||
entity = player;
|
|
||||||
|
|
||||||
} else if (entityRage.type === "vehicle") {
|
|
||||||
var vehicle = game.vehicles.at(entityRage.remoteId);
|
|
||||||
entity = vehicle;
|
|
||||||
var realName = mp.game.ui.getLabelText(mp.game.vehicle.getDisplayNameFromVehicleModel(entityRage.model));
|
|
||||||
} else if (entityRage.type === "object") {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
let e = game.attachments.get(entity);
|
|
||||||
|
|
||||||
if (this.attachments.hasOwnProperty(id)) {
|
if (this.attachments.hasOwnProperty(id)) {
|
||||||
|
if (!entity.__attachmentObjects) {
|
||||||
|
entity.__attachmentObjects = {};
|
||||||
if (!e.__attachmentObjects) { e.__attachmentObjects = []; }
|
}
|
||||||
|
if (!entity.__attachmentObjects.hasOwnProperty(id)) {
|
||||||
|
|
||||||
if (!e.__attachmentObjects.hasOwnProperty(id)) {
|
|
||||||
|
|
||||||
|
|
||||||
let attInfo = this.attachments[id];
|
let attInfo = this.attachments[id];
|
||||||
let rageObject = mp.objects.new(attInfo.model, entityRage.position);
|
|
||||||
|
|
||||||
|
|
||||||
var bone = (typeof (attInfo.boneName) === 'string') ? entityRage.getBoneIndexByName(attInfo.boneName) : entityRage.getBoneIndex(attInfo.boneName)
|
let object = mp.objects.new(attInfo.model, entity.position);
|
||||||
|
|
||||||
let attachmentData = {
|
object.__attMgrData = {
|
||||||
targetEntity: entity.id,
|
targetEntity: entity.handle,
|
||||||
bone: bone,
|
bone: (typeof (attInfo.boneName) === 'string') ? entity.getBoneIndexByName(attInfo.boneName) : entity.getBoneIndex(attInfo.boneName),
|
||||||
offset: attInfo.offset,
|
offset: attInfo.offset,
|
||||||
rotation: attInfo.rotation
|
rotation: attInfo.rotation
|
||||||
};
|
};
|
||||||
|
|
||||||
game.objects.setData(rageObject, attachmentData); // hier hakt es mein freund
|
object.notifyStreaming = true;
|
||||||
|
entity.__attachmentObjects[id] = object;
|
||||||
let object = game.objects.at(rageObject.remoteId);
|
|
||||||
|
|
||||||
//DEBUG MSG
|
|
||||||
mp.gui.chat.push(`ATTACH: ${attachId} - bone = ${bone}`)
|
|
||||||
|
|
||||||
//rageObject.notifyStreaming = true;
|
|
||||||
mp.gui.chat.push("Notified Stream.");
|
|
||||||
game.wait(200);
|
|
||||||
|
|
||||||
//DEBUG MSG
|
|
||||||
mp.gui.chat.push(`ATTACH: ${attachId} - Attaching ${JSON.stringify(attInfo)}`);
|
|
||||||
e.__attachmentObjects[id] = rageObject;;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* else {
|
else {
|
||||||
mp.game.graphics.notify(`Static Attachments Error: ~r~Unknown Attachment Used: ~w~0x${id.toString(16)}`);
|
mp.game.graphics.notify(`Static Attachments Error: ~r~Unknown Attachment Used: ~w~0x${id.toString(16)}`);
|
||||||
} */
|
|
||||||
},
|
|
||||||
|
|
||||||
removeFor: function (entityRage, id) {
|
|
||||||
let entity;
|
|
||||||
if (entityRage.type === "player") {
|
|
||||||
entity = game.players.at(entityRage.remoteId);
|
|
||||||
} else if (entityRage.type === "vehicle") {
|
|
||||||
entity = game.vehicles.at(entityRage.remoteId);
|
|
||||||
}
|
|
||||||
let e = game.attachments.get(entity);
|
|
||||||
|
|
||||||
if (e.__attachmentObjects.hasOwnProperty(id)) {
|
|
||||||
let obj = e.__attachmentObjects[id];
|
|
||||||
|
|
||||||
obj.destroy();
|
|
||||||
delete e.__attachmentObjects[id];
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
initFor: function (entityRage) {
|
removeFor: function (entity, id) {
|
||||||
let entity;
|
if (entity.__attachmentObjects.hasOwnProperty(id)) {
|
||||||
if (entityRage.type === "player") {
|
let obj = entity.__attachmentObjects[id];
|
||||||
entity = game.players.at(entityRage.remoteId);
|
delete entity.__attachmentObjects[id];
|
||||||
} else if (entityRage.type === "vehicle") {
|
|
||||||
entity = game.vehicles.at(entityRage.remoteId);
|
|
||||||
}
|
|
||||||
|
|
||||||
let e = game.attachments.get(entity);
|
if (mp.objects.exists(obj)) {
|
||||||
if (e != null) {
|
obj.destroy();
|
||||||
for (let attachment of e.__attachments) {
|
|
||||||
attachmentMngr.addFor(entityRage, attachment);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
shutdownFor: function (entityRage) {
|
initFor: function (entity) {
|
||||||
let entity;
|
for (let attachment of entity.__attachments) {
|
||||||
if (entityRage.type === "player") {
|
attachmentMngr.addFor(entity, attachment);
|
||||||
entity = game.players.at(entityRage.remoteId);
|
|
||||||
} else if (entityRage.type === "vehicle") {
|
|
||||||
entity = game.vehicles.at(entityRage.remoteId);
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
let e = game.attachments.get(entity);
|
shutdownFor: function (entity) {
|
||||||
if (e != null) {
|
for (let attachment in entity.__attachmentObjects) {
|
||||||
for (let attachment of e.__attachments) {
|
attachmentMngr.removeFor(entity, attachment);
|
||||||
attachmentMngr.removeFor(entityRage, attachment);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -147,7 +78,6 @@ export default function attachmentManager(game: IGame) {
|
|||||||
if (!this.attachments.hasOwnProperty(id)) {
|
if (!this.attachments.hasOwnProperty(id)) {
|
||||||
if (mp.game.streaming.isModelInCdimage(model)) {
|
if (mp.game.streaming.isModelInCdimage(model)) {
|
||||||
this.attachments[id] =
|
this.attachments[id] =
|
||||||
|
|
||||||
{
|
{
|
||||||
id: id,
|
id: id,
|
||||||
model: model,
|
model: model,
|
||||||
@@ -157,7 +87,7 @@ export default function attachmentManager(game: IGame) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
mp.game.graphics.notify(`Static Attachments Error: ~r~Invalid Model(0x${model.toString(16)})`);
|
mp.game.graphics.notify(`Static Attachments Error: ~r~Invalid Model (0x${model.toString(16)})`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -180,10 +110,9 @@ export default function attachmentManager(game: IGame) {
|
|||||||
attachmentName = mp.game.joaat(attachmentName);
|
attachmentName = mp.game.joaat(attachmentName);
|
||||||
}
|
}
|
||||||
|
|
||||||
let entity = game.players.local;
|
let entity = mp.players.local;
|
||||||
let e = game.attachments.get(entity);
|
|
||||||
|
|
||||||
if (!e.__attachments || e.__attachments.indexOf(attachmentName) === -1) {
|
if (!entity.__attachments || entity.__attachments.indexOf(attachmentName) === -1) {
|
||||||
mp.events.callRemote("staticAttachments.Add", attachmentName.toString(36));
|
mp.events.callRemote("staticAttachments.Add", attachmentName.toString(36));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -193,10 +122,9 @@ export default function attachmentManager(game: IGame) {
|
|||||||
attachmentName = mp.game.joaat(attachmentName);
|
attachmentName = mp.game.joaat(attachmentName);
|
||||||
}
|
}
|
||||||
|
|
||||||
let entity = game.players.local;
|
let entity = mp.players.local;
|
||||||
let e = game.attachments.get(entity);
|
|
||||||
|
|
||||||
if (e.__attachments && e.__attachments.indexOf(attachmentName) !== -1) {
|
if (entity.__attachments && entity.__attachments.indexOf(attachmentName) !== -1) {
|
||||||
mp.events.callRemote("staticAttachments.Remove", attachmentName.toString(36));
|
mp.events.callRemote("staticAttachments.Remove", attachmentName.toString(36));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -206,160 +134,71 @@ export default function attachmentManager(game: IGame) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
mp.events.add("entityStreamIn", (entityRage) => {
|
mp.events.add("entityStreamIn", (entity) => {
|
||||||
if (entityRage.type === "player" || entityRage.type === "vehicle") {
|
if (entity.__attMgrData) {
|
||||||
let entity;
|
const { targetEntity, bone, offset, rotation } = entity.__attMgrData;
|
||||||
|
|
||||||
if (entityRage.type === "player") {
|
entity.attachTo(
|
||||||
entity = game.players.at(entityRage.remoteId);
|
targetEntity, bone,
|
||||||
} else if (entityRage.type === "vehicle") {
|
offset.x, offset.y, offset.z,
|
||||||
entity = game.vehicles.at(entityRage.remoteId);
|
rotation.x, rotation.y, rotation.z,
|
||||||
}
|
false, false, false, false, 2, true
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if (entityRage.tye === "object") { //if is object
|
if (entity.__attachments) {
|
||||||
game.wait(200);
|
attachmentMngr.initFor(entity);
|
||||||
|
|
||||||
mp.gui.chat.push("object streamed");
|
|
||||||
entity = game.objects.at(entityRage.remoteId);
|
|
||||||
|
|
||||||
game.wait(200);
|
|
||||||
mp.gui.chat.push("object try get data");
|
|
||||||
game.wait(200);
|
|
||||||
|
|
||||||
|
|
||||||
const { targetEntity, bone, offset, rotation } = entity.__attachmentData;
|
|
||||||
game.wait(200);
|
|
||||||
|
|
||||||
+
|
|
||||||
mp.gui.chat.push(targetEntity + "," + bone + "," + offset + "," + rotation);
|
|
||||||
game.wait(200);
|
|
||||||
|
|
||||||
|
|
||||||
entity.attachTo(
|
|
||||||
targetEntity, bone,
|
|
||||||
offset.x, offset.y, offset.z,
|
|
||||||
rotation.x, rotation.y, rotation.z,
|
|
||||||
false, false, false, false, 2, true
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let e = game.attachments.get(entity); //if player or vehicle
|
|
||||||
if (e != null) {
|
|
||||||
if (e.__attachments) {
|
|
||||||
attachmentMngr.initFor(entityRage);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
mp.events.add("entityStreamOut", (entityRage) => {
|
mp.events.add("entityStreamOut", (entity) => {
|
||||||
if (entityRage == mp.players.local.vehicle) {
|
if (entity.__attachmentObjects) {
|
||||||
return;
|
attachmentMngr.shutdownFor(entity);
|
||||||
}
|
|
||||||
if (entityRage.type === "player" || entityRage.type === "vehicle") {
|
|
||||||
let e = game.attachments.at(entityRage.remoteId);
|
|
||||||
|
|
||||||
if (e != null) {
|
|
||||||
if (e.__attachmentObjects) {
|
|
||||||
//game.wait(2500);
|
|
||||||
attachmentMngr.shutdownFor(entityRage);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
mp.events.addDataHandler("attachmentsData", (entityRage, data) => {
|
mp.events.addDataHandler("attachmentsData", (entity, data) => {
|
||||||
let newAttachments = (data != null) ? data.split('|').map(att => parseInt(att, 36)) : [];
|
let newAttachments = (data.length > 0) ? data.split('|').map(att => parseInt(att, 36)) : [];
|
||||||
|
|
||||||
if (entityRage.handle !== 0) {
|
if (entity.handle !== 0) {
|
||||||
let entity;
|
let oldAttachments = entity.__attachments;
|
||||||
if (entityRage.type === "player") {
|
|
||||||
entity = game.players.at(entityRage.remoteId);
|
|
||||||
} else if (entityRage.type === "vehicle") {
|
|
||||||
entity = game.vehicles.at(entityRage.remoteId);
|
|
||||||
}
|
|
||||||
let e = game.attachments.get(entity);
|
|
||||||
if (e == null) {
|
|
||||||
let __attachments = [];
|
|
||||||
let __attachmentObjects = [];
|
|
||||||
e = game.attachments.set(entity, __attachments, __attachmentObjects);
|
|
||||||
}
|
|
||||||
|
|
||||||
let oldAttachments = e.__attachments;
|
|
||||||
|
|
||||||
if (!oldAttachments) {
|
if (!oldAttachments) {
|
||||||
oldAttachments = [];
|
oldAttachments = [];
|
||||||
e.__attachmentObjects = [];
|
entity.__attachmentObjects = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
// process outdated first
|
// process outdated first
|
||||||
for (let attachment of oldAttachments.keys()) {
|
for (let attachment of oldAttachments) {
|
||||||
var obj = oldAttachments[attachment];
|
if (newAttachments.indexOf(attachment) === -1) {
|
||||||
if (newAttachments.indexOf(obj) === -1) {
|
attachmentMngr.removeFor(entity, attachment);
|
||||||
attachmentMngr.removeFor(entityRage, obj);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// then new attachments
|
// then new attachments
|
||||||
for (let attachment of newAttachments) {
|
for (let attachment of newAttachments) {
|
||||||
if (oldAttachments.indexOf(attachment) === -1) {
|
if (oldAttachments.indexOf(attachment) === -1) {
|
||||||
attachmentMngr.addFor(entityRage, attachment);
|
attachmentMngr.addFor(entity, attachment);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
e.__attachments = newAttachments;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
entity.__attachments = newAttachments;
|
||||||
});
|
});
|
||||||
|
|
||||||
function InitAttachmentsOnJoin() {
|
function InitAttachmentsOnJoin() {
|
||||||
game.players.forEach(_player => {
|
mp.players.forEach(_player => {
|
||||||
let player = mp.players.at(_player.remoteId);
|
let data = _player.getVariable("attachmentsData");
|
||||||
|
|
||||||
if (!player) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let e = game.attachments.get(_player);
|
|
||||||
if (e == null) {
|
|
||||||
let __attachments = [];
|
|
||||||
let __attachmentObjects = [];
|
|
||||||
e = game.attachments.set(_player, __attachments, __attachmentObjects);
|
|
||||||
}
|
|
||||||
let data = player.getVariable("attachmentsData");
|
|
||||||
|
|
||||||
if (data && data.length > 0) {
|
if (data && data.length > 0) {
|
||||||
let atts = data.split('|').map(att => parseInt(att, 36));
|
let atts = data.split('|').map(att => parseInt(att, 36));
|
||||||
e.__attachments = atts;
|
_player.__attachments = atts;
|
||||||
e.__attachmentObjects = [];
|
_player.__attachmentObjects = {};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
/*
|
|
||||||
game.vehicles.forEach(_veh => {
|
|
||||||
let vehicle = mp.vehicles.at(_veh.remoteId);
|
|
||||||
|
|
||||||
if (!vehicle) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let e = game.attachments.get(_veh);
|
|
||||||
if (e == null) {
|
|
||||||
let __attachments = [];
|
|
||||||
let __attachmentObjects = [];
|
|
||||||
e = game.attachments.set(_veh, __attachments, __attachmentObjects);
|
|
||||||
}
|
|
||||||
let data = vehicle.getVariable("attachmentsData");
|
|
||||||
|
|
||||||
if (data && data.length > 0) {
|
|
||||||
let atts = data.split('|').map(att => parseInt(att, 36));
|
|
||||||
e.__attachments = atts;
|
|
||||||
e.__attachmentObjects = [];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
mp.events.add("playerReady", () => { //player finished doenloading assets from server.
|
|
||||||
|
mp.events.add("playerReady", () => {
|
||||||
InitAttachmentsOnJoin();
|
InitAttachmentsOnJoin();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -10,9 +10,9 @@ game.events.add('SERVER:Vehicle:UpdateData', (vehId, dataStr) => {
|
|||||||
setVehicleData(vehicle, data);
|
setVehicleData(vehicle, data);
|
||||||
});
|
});
|
||||||
|
|
||||||
game.events.onPlayerEnterVehicle((vehicle, seat) => {
|
game.events.onPlayerEnterVehicle(async (vehicle, seat) => {
|
||||||
while (!game.players.local.inVehicle) {
|
while (!game.players.local.inVehicle) {
|
||||||
game.wait(0);
|
await game.wait(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vehicle) {
|
if (vehicle) {
|
||||||
@@ -22,11 +22,11 @@ game.events.onPlayerEnterVehicle((vehicle, seat) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
game.events.onPlayerExitVehicle(() => {
|
game.events.onPlayerExitVehicle(async () => {
|
||||||
var veh = game.players.local.vehicle;
|
var veh = game.players.local.vehicle;
|
||||||
|
|
||||||
while (game.players.local.inVehicle) {
|
while (game.players.local.inVehicle) {
|
||||||
game.wait(0);
|
await game.wait(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (veh) {
|
if (veh) {
|
||||||
|
|||||||
@@ -120,7 +120,6 @@ namespace ReallifeGamemode.Database.Entities
|
|||||||
|
|
||||||
public bool WeaponLicense { get; set; } = false;
|
public bool WeaponLicense { get; set; } = false;
|
||||||
|
|
||||||
public bool IsAdmin(AdminLevel level) => AdminLevel >= level;
|
|
||||||
public int Points { get; set; }
|
public int Points { get; set; }
|
||||||
|
|
||||||
public int otheramount { get; set; } = 0;
|
public int otheramount { get; set; } = 0;
|
||||||
|
|||||||
@@ -23,6 +23,6 @@ namespace ReallifeGamemode.Server.Core.Commands
|
|||||||
Log = LogManager.GetLogger(this.GetType());
|
Log = LogManager.GetLogger(this.GetType());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected DatabaseContext GetDbContext(bool useLoggerFactory = true) => Main.GetDbContext(useLoggerFactory);
|
protected DatabaseContext GetDbContext(bool useLoggerFactory = false) => Main.GetDbContext(useLoggerFactory);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ namespace ReallifeGamemode.Server.Core
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DatabaseContext GetDbContext(bool useLoggerFactory = true)
|
public static DatabaseContext GetDbContext(bool useLoggerFactory = false)
|
||||||
{
|
{
|
||||||
return new DatabaseContext(useLoggerFactory);
|
return new DatabaseContext(useLoggerFactory);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ using System.Text;
|
|||||||
using ReallifeGamemode.Server.Core.API;
|
using ReallifeGamemode.Server.Core.API;
|
||||||
using ReallifeGamemode.Server.Types;
|
using ReallifeGamemode.Server.Types;
|
||||||
using ReallifeGamemode.Server.Core.Extensions;
|
using ReallifeGamemode.Server.Core.Extensions;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace ReallifeGamemode.Server.Core.Menus
|
namespace ReallifeGamemode.Server.Core.Menus
|
||||||
{
|
{
|
||||||
@@ -49,6 +50,9 @@ namespace ReallifeGamemode.Server.Core.Menus
|
|||||||
|
|
||||||
player.SendMessage("Du hast den Waffenschein erfolgreich erworben.", ChatPrefix.Info);
|
player.SendMessage("Du hast den Waffenschein erfolgreich erworben.", ChatPrefix.Info);
|
||||||
|
|
||||||
|
dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 1).First().BankAccount.Balance += 1000;
|
||||||
|
dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 3).First().BankAccount.Balance += 1000;
|
||||||
|
|
||||||
user.WeaponLicense = true;
|
user.WeaponLicense = true;
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,6 @@ namespace ReallifeGamemode.Server.Core
|
|||||||
Log = LogManager.GetLogger(GetType());
|
Log = LogManager.GetLogger(GetType());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected DatabaseContext GetDbContext(bool useLoggerFactory = true) => Main.GetDbContext(useLoggerFactory);
|
protected DatabaseContext GetDbContext(bool useLoggerFactory = false) => Main.GetDbContext(useLoggerFactory);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -290,6 +290,7 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
{
|
{
|
||||||
player.SetData("SAdminduty", true);
|
player.SetData("SAdminduty", true);
|
||||||
player.SetSharedData("blipColor", 30);
|
player.SetSharedData("blipColor", 30);
|
||||||
|
player.SetSharedData("nameTagColor", -2);
|
||||||
ChatService.SendMessage(player, "~g~ ** " + "Du befindest dich im T-Support");
|
ChatService.SendMessage(player, "~g~ ** " + "Du befindest dich im T-Support");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -304,23 +305,32 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
{
|
{
|
||||||
case null:
|
case null:
|
||||||
player.SetSharedData("blipColor", 0);
|
player.SetSharedData("blipColor", 0);
|
||||||
|
player.SetSharedData("nameTagColor", 0);
|
||||||
|
break;
|
||||||
|
case 0:
|
||||||
|
player.SetSharedData("blipColor", 0);
|
||||||
|
player.SetSharedData("nameTagColor", 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 8:
|
case 8:
|
||||||
player.SetSharedData("blipColor", 83);
|
player.SetSharedData("blipColor", 83);
|
||||||
|
player.SetSharedData("nameTagColor", 8);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 7:
|
case 7:
|
||||||
player.SetSharedData("blipColor", 52);
|
player.SetSharedData("blipColor", 52);
|
||||||
|
player.SetSharedData("nameTagColor", 7);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
player.SetSharedData("blipColor", 5);
|
player.SetSharedData("blipColor", 5);
|
||||||
|
player.SetSharedData("nameTagColor", 4);
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
player.SetSharedData("blipColor", 25);
|
player.SetSharedData("blipColor", 25);
|
||||||
|
player.SetSharedData("nameTagColor", 9);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
player.SetSharedData("nameTagColor", targetUser.FactionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1487,25 +1497,32 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
{
|
{
|
||||||
case null:
|
case null:
|
||||||
target.SetSharedData("blipColor", 0);
|
target.SetSharedData("blipColor", 0);
|
||||||
|
target.SetSharedData("nameTagColor", 0);
|
||||||
|
break;
|
||||||
|
case 0:
|
||||||
|
target.SetSharedData("blipColor", 0);
|
||||||
|
target.SetSharedData("nameTagColor", 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 8:
|
case 8:
|
||||||
target.SetSharedData("blipColor", 83);
|
target.SetSharedData("blipColor", 83);
|
||||||
|
target.SetSharedData("nameTagColor", 8);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 7:
|
case 7:
|
||||||
target.SetSharedData("blipColor", 52);
|
target.SetSharedData("blipColor", 52);
|
||||||
|
target.SetSharedData("nameTagColor", 7);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
target.SetSharedData("blipColor", 5);
|
target.SetSharedData("blipColor", 5);
|
||||||
|
target.SetSharedData("nameTagColor", 4);
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
target.SetSharedData("blipColor", 25);
|
target.SetSharedData("blipColor", 25);
|
||||||
|
target.SetSharedData("nameTagColor", 9);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
target.TriggerEvent("jailTime", 0);
|
target.TriggerEvent("jailTime", 0);
|
||||||
|
|
||||||
targetUser.Wanteds = 0;
|
targetUser.Wanteds = 0;
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
}
|
}
|
||||||
@@ -1726,6 +1743,39 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
#endregion Admin
|
#endregion Admin
|
||||||
|
|
||||||
#region ALevel1337
|
#region ALevel1337
|
||||||
|
/*NUR ZUM TESTEN
|
||||||
|
[Command("fakedeath", "~m~Benutzung:~s~ /fakedeath")]
|
||||||
|
public void CmdAdmFakeDeath(Player player)
|
||||||
|
{
|
||||||
|
if (!player.GetUser()?.IsAdmin(AdminLevel.PROJEKTLEITUNG) ?? true)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
MedicTask reviveTask = new MedicTask()
|
||||||
|
{
|
||||||
|
Victim = player.Name,
|
||||||
|
Position = player.Position,
|
||||||
|
CauseOfDeath = "FAKE",
|
||||||
|
Caller = null,
|
||||||
|
Description = "Gestorben",
|
||||||
|
Time = DateTime.Now,
|
||||||
|
Type = MedicTaskType.REVIVE,
|
||||||
|
MedicName = "none"
|
||||||
|
};
|
||||||
|
Medic.AddTaskToList(reviveTask);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
[Command("setblipcolor", "~m~Benutzung:~s~ /setblipcolor [ID]")]
|
||||||
|
public void CmdAdmSetBlipColor(Player player, int blipId)
|
||||||
|
{
|
||||||
|
if (!player.GetUser()?.IsAdmin(AdminLevel.PROJEKTLEITUNG) ?? true)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
player.SetSharedData("blipColor", blipId);
|
||||||
|
}
|
||||||
|
|
||||||
[Command("setsvar", "~m~Benutzung:~s~ /setsvar [ID] [WERT]")]
|
[Command("setsvar", "~m~Benutzung:~s~ /setsvar [ID] [WERT]")]
|
||||||
public void CmdAdmSetSvar(Player player, int varId, int varValue)
|
public void CmdAdmSetSvar(Player player, int varId, int varValue)
|
||||||
@@ -1986,6 +2036,30 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
ChatService.SendMessage(player, "~b~Das Leben von " + peopleInRange.Count + " Spielern wurde auf " + hp + " gesetzt.");
|
ChatService.SendMessage(player, "~b~Das Leben von " + peopleInRange.Count + " Spielern wurde auf " + hp + " gesetzt.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Command("rsetwage", "~m~Benutzung: ~s~/rsetwage [Radius] (Verdienst)")]
|
||||||
|
public void CmdAdminRangeSetWage(Player player, float radius, int wage)
|
||||||
|
{
|
||||||
|
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var peopleInRange = NAPI.Player.GetPlayersInRadiusOfPlayer(radius, player);
|
||||||
|
|
||||||
|
using (var dbContext = new DatabaseContext())
|
||||||
|
{
|
||||||
|
foreach (var managedPlayer in peopleInRange)
|
||||||
|
{
|
||||||
|
if (!managedPlayer.IsLoggedIn()) return;
|
||||||
|
managedPlayer.GetUser(dbContext).Wage += wage;
|
||||||
|
|
||||||
|
ChatService.SendMessage(managedPlayer, "~b~Admin " + player.Name + " hat im Radius von " + radius + " den Verdienst um $" + wage + " erhöht.");
|
||||||
|
dbContext.SaveChanges();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ChatService.SendMessage(player, "~b~Der Verdienst von " + peopleInRange.Count + " Spielern wurde um $" + wage + " erhöht.");
|
||||||
|
}
|
||||||
|
|
||||||
[Command("setweather", "~m~Benutzung: ~s~/setweather [Wetter]")]
|
[Command("setweather", "~m~Benutzung: ~s~/setweather [Wetter]")]
|
||||||
public void CmdAdminSetweather(Player player, string weather)
|
public void CmdAdminSetweather(Player player, string weather)
|
||||||
{
|
{
|
||||||
@@ -2419,21 +2493,32 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
{
|
{
|
||||||
case null:
|
case null:
|
||||||
target.SetSharedData("blipColor", 0);
|
target.SetSharedData("blipColor", 0);
|
||||||
|
target.SetSharedData("nameTagColor", 0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0:
|
||||||
|
target.SetSharedData("blipColor", 0);
|
||||||
|
target.SetSharedData("nameTagColor", 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 8:
|
case 8:
|
||||||
target.SetSharedData("blipColor", 83);
|
target.SetSharedData("blipColor", 83);
|
||||||
|
target.SetSharedData("nameTagColor", 8);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 7:
|
case 7:
|
||||||
target.SetSharedData("blipColor", 52);
|
target.SetSharedData("blipColor", 52);
|
||||||
|
target.SetSharedData("nameTagColor", 7);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
target.SetSharedData("blipColor", 5);
|
target.SetSharedData("blipColor", 5);
|
||||||
|
target.SetSharedData("nameTagColor", 4);
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
target.SetSharedData("blipColor", 25);
|
target.SetSharedData("blipColor", 25);
|
||||||
|
target.SetSharedData("nameTagColor", 9);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
@@ -2482,24 +2567,32 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
{
|
{
|
||||||
case null:
|
case null:
|
||||||
target.SetSharedData("blipColor", 0);
|
target.SetSharedData("blipColor", 0);
|
||||||
|
target.SetSharedData("nameTagColor", 0);
|
||||||
|
break;
|
||||||
|
case 0:
|
||||||
|
target.SetSharedData("blipColor", 0);
|
||||||
|
target.SetSharedData("nameTagColor", 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 8:
|
case 8:
|
||||||
target.SetSharedData("blipColor", 83);
|
target.SetSharedData("blipColor", 83);
|
||||||
|
target.SetSharedData("nameTagColor", 8);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 7:
|
case 7:
|
||||||
target.SetSharedData("blipColor", 52);
|
target.SetSharedData("blipColor", 52);
|
||||||
|
target.SetSharedData("nameTagColor", 7);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
target.SetSharedData("blipColor", 5);
|
target.SetSharedData("blipColor", 5);
|
||||||
|
target.SetSharedData("nameTagColor", 4);
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
target.SetSharedData("blipColor", 25);
|
target.SetSharedData("blipColor", 25);
|
||||||
|
target.SetSharedData("nameTagColor", 9);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3364,7 +3457,7 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
|
|
||||||
using (var dbContext = new DatabaseContext())
|
using (var dbContext = new DatabaseContext())
|
||||||
{
|
{
|
||||||
target.GetUser(dbContext).Wage = wage;
|
target.GetUser(dbContext).Wage += wage;
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,11 +51,22 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
ChatService.NotAuthorized(player);
|
ChatService.NotAuthorized(player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (f.Name == "Ballas" || f.Name == "Grove" || user.IsAdmin(AdminLevel.ADMIN))
|
if (f?.Name == "Ballas" || f?.Name == "Grove" || user.IsAdmin(AdminLevel.ADMIN))
|
||||||
{
|
{
|
||||||
message = Regex.Replace(message, "(~[a-zA-Z]~)|(!{(.*)})", "");
|
message = Regex.Replace(message, "(~[a-zA-Z]~)|(!{(.*)})", "");
|
||||||
|
|
||||||
string broadcastMessage = "!{FF0000}** " + player.GetUser().GetFactionRank().RankName + " " + player.Name + ": " + message + " **";
|
string rank = string.Empty;
|
||||||
|
|
||||||
|
if(f?.Name == "Ballas" || f?.Name == "Grove")
|
||||||
|
{
|
||||||
|
rank = player.GetUser().GetFactionRank().RankName;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rank = "[ADMIN]";
|
||||||
|
}
|
||||||
|
|
||||||
|
string broadcastMessage = "!{FF0000}** " + rank + " " + player.Name + ": " + message + " **";
|
||||||
using (var context = new DatabaseContext())
|
using (var context = new DatabaseContext())
|
||||||
{
|
{
|
||||||
ChatService.BroadcastFaction(broadcastMessage, context.Factions.ToList().FindAll(c => c.GangOwned), true);
|
ChatService.BroadcastFaction(broadcastMessage, context.Factions.ToList().FindAll(c => c.GangOwned), true);
|
||||||
@@ -86,8 +97,9 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
[Command("d", "~m~Benutzung: ~s~/d [Nachricht]", GreedyArg = true)]
|
[Command("d", "~m~Benutzung: ~s~/d [Nachricht]", GreedyArg = true)]
|
||||||
public void CmdFactionD(Player player, string message)
|
public void CmdFactionD(Player player, string message)
|
||||||
{
|
{
|
||||||
|
User u = player.GetUser();
|
||||||
Faction f = player.GetUser()?.Faction;
|
Faction f = player.GetUser()?.Faction;
|
||||||
if (f == null || !f.StateOwned)
|
if ((f == null || !f.StateOwned) && !u.IsAdmin(AdminLevel.ADMIN))
|
||||||
{
|
{
|
||||||
ChatService.NotAuthorized(player);
|
ChatService.NotAuthorized(player);
|
||||||
return;
|
return;
|
||||||
@@ -95,10 +107,21 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
|
|
||||||
message = Regex.Replace(message, "(~[a-zA-Z]~)|(!{(.*)})", "");
|
message = Regex.Replace(message, "(~[a-zA-Z]~)|(!{(.*)})", "");
|
||||||
|
|
||||||
string broadcastMessage = "!{CC3333}** " + player.GetUser().GetFactionRank().RankName + " " + player.Name + ": " + message + ", over **";
|
string factionName = string.Empty;
|
||||||
|
|
||||||
|
if(f.StateOwned)
|
||||||
|
{
|
||||||
|
factionName = player.GetUser().GetFactionRank().RankName;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
factionName = "[ADMIN]";
|
||||||
|
}
|
||||||
|
|
||||||
|
string broadcastMessage = "!{CC3333}** " + factionName + " " + player.Name + ": " + message + ", over **";
|
||||||
using (var context = new DatabaseContext())
|
using (var context = new DatabaseContext())
|
||||||
{
|
{
|
||||||
ChatService.BroadcastFaction(broadcastMessage, context.Factions.ToList().FindAll(c => c.StateOwned));
|
ChatService.BroadcastFaction(broadcastMessage, context.Factions.ToList().FindAll(c => c.StateOwned), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -188,12 +211,25 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
|
|
||||||
message = Regex.Replace(message, "(~[a-zA-Z]~)|(!{(.*)})", "");
|
message = Regex.Replace(message, "(~[a-zA-Z]~)|(!{(.*)})", "");
|
||||||
|
|
||||||
string broadcastMsg = "~y~[" + player.GetUser().Faction.Name + "] " + player.Name + ": " + message;
|
string factionName = string.Empty;
|
||||||
|
if(user.FactionLeader)
|
||||||
|
{
|
||||||
|
factionName = player.GetUser().Faction.Name;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
factionName = "ADMIN";
|
||||||
|
}
|
||||||
|
|
||||||
|
string broadcastMsg = "~y~[" + factionName + "] " + player.Name + ": " + message;
|
||||||
|
|
||||||
NAPI.Pools.GetAllPlayers().ForEach(p =>
|
NAPI.Pools.GetAllPlayers().ForEach(p =>
|
||||||
{
|
{
|
||||||
User pUser = p.GetUser();
|
User pUser = p.GetUser();
|
||||||
if (pUser?.FactionLeader ?? false || pUser.IsAdmin(AdminLevel.ADMIN)) ChatService.SendMessage(p, broadcastMsg);
|
if (pUser.FactionLeader || pUser.IsAdmin(AdminLevel.ADMIN))
|
||||||
|
{
|
||||||
|
ChatService.SendMessage(p, broadcastMsg);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -261,7 +297,7 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
}
|
}
|
||||||
|
|
||||||
using var dbContext = new DatabaseContext();
|
using var dbContext = new DatabaseContext();
|
||||||
var nearPlayers = NAPI.Player.GetPlayersInRadiusOfPlayer(2, player);
|
var nearPlayers = NAPI.Player.GetPlayersInRadiusOfPlayer(4, player);
|
||||||
var deadPlayer = nearPlayers.Where(i => i.GetData<bool>("isDead") == true).FirstOrDefault();
|
var deadPlayer = nearPlayers.Where(i => i.GetData<bool>("isDead") == true).FirstOrDefault();
|
||||||
if (player == deadPlayer)
|
if (player == deadPlayer)
|
||||||
{
|
{
|
||||||
@@ -461,23 +497,36 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
target.SetSharedData("blipColor", 0);
|
target.SetSharedData("blipColor", 0);
|
||||||
switch (targetUser.FactionId)
|
switch (targetUser.FactionId)
|
||||||
{
|
{
|
||||||
|
case null:
|
||||||
|
target.SetSharedData("blipColor", 0);
|
||||||
|
target.SetSharedData("nameTagColor", 0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0:
|
||||||
|
target.SetSharedData("blipColor", 0);
|
||||||
|
target.SetSharedData("nameTagColor", 0);
|
||||||
|
break;
|
||||||
|
|
||||||
case 8:
|
case 8:
|
||||||
target.SetSharedData("blipColor", 83);
|
target.SetSharedData("blipColor", 83);
|
||||||
|
target.SetSharedData("nameTagColor", 8);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 7:
|
case 7:
|
||||||
target.SetSharedData("blipColor", 52);
|
target.SetSharedData("blipColor", 52);
|
||||||
|
target.SetSharedData("nameTagColor", 7);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
target.SetSharedData("blipColor", 5);
|
target.SetSharedData("blipColor", 5);
|
||||||
|
target.SetSharedData("nameTagColor", 4);
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
target.SetSharedData("blipColor", 25);
|
target.SetSharedData("blipColor", 25);
|
||||||
|
target.SetSharedData("nameTagColor", 9);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
target.TriggerEvent("jailTime", 0);
|
target.TriggerEvent("jailTime", 0);
|
||||||
|
|
||||||
targetUser.Wanteds = 0;
|
targetUser.Wanteds = 0;
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -151,7 +151,9 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
licenses,
|
licenses,
|
||||||
vehicles,
|
vehicles,
|
||||||
factionVehicles,
|
factionVehicles,
|
||||||
nextPayday = u.PaydayTimer
|
nextPayday = u.PaydayTimer,
|
||||||
|
playTime = u.PlayedMinutes / 60,
|
||||||
|
userWarn = u.warn,
|
||||||
};
|
};
|
||||||
|
|
||||||
string faction = u.Faction?.Name ?? "Zivilist";
|
string faction = u.Faction?.Name ?? "Zivilist";
|
||||||
@@ -199,7 +201,7 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
DutyPoint nearestDuty = PositionManager.DutyPoints.Find(d => d.Position.DistanceTo(player.Position) <= 1.5 && d.FactionId == user.FactionId);
|
DutyPoint nearestDuty = PositionManager.DutyPoints.Find(d => d.Position.DistanceTo(player.Position) <= 1.5 && d.FactionId == user.FactionId);
|
||||||
WeaponPoint nearestWeapon = PositionManager.WeaponPoints.Find(w => w.Position.DistanceTo(player.Position) <= 1.5 && w.FactionId == user.FactionId);
|
WeaponPoint nearestWeapon = PositionManager.WeaponPoints.Find(w => w.Position.DistanceTo(player.Position) <= 1.5 && w.FactionId == user.FactionId);
|
||||||
JailReleasePoint nearestJailReleasePoint = PositionManager.JailReleasePoints.Find(j => j.Position.DistanceTo(player.Position) <= 1.5 && (user.FactionId == 1 || user.FactionId == 3) && user.GetData<bool>("duty"));
|
JailReleasePoint nearestJailReleasePoint = PositionManager.JailReleasePoints.Find(j => j.Position.DistanceTo(player.Position) <= 1.5 && (user.FactionId == 1 || user.FactionId == 3) && user.GetData<bool>("duty"));
|
||||||
ElevatorPoint nearestElevatorPoint = PositionManager.ElevatorPoints.Find(e => e.Position.DistanceTo(player.Position) <= 1.5 && (user.FactionId == 1 || user.FactionId == 3));
|
ElevatorPoint nearestElevatorPoint = PositionManager.ElevatorPoints.Find(e => e.Position.DistanceTo(player.Position) <= 1.5 && (user.FactionId == 1 || user.FactionId == 2 || user.FactionId == 3));
|
||||||
ClotheshopPoint nearestClotheShopPoint = PositionManager.clotheshopPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5 && (!user.GetData<bool>("duty")));
|
ClotheshopPoint nearestClotheShopPoint = PositionManager.clotheshopPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5 && (!user.GetData<bool>("duty")));
|
||||||
FriseurPoint nearestFriseurPoint = PositionManager.friseurPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5 && (!user.GetData<bool>("duty")));
|
FriseurPoint nearestFriseurPoint = PositionManager.friseurPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5 && (!user.GetData<bool>("duty")));
|
||||||
ItemshopPoint nearestItemShopPoint = PositionManager.itemshopPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5);
|
ItemshopPoint nearestItemShopPoint = PositionManager.itemshopPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5);
|
||||||
@@ -216,8 +218,16 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
List<VehicleItem> vehicleItems = dbContext.VehicleItems.ToList().Where(f => f.GetVehicle().GetVehicle() == nearestBehindVehiclePoint.vehicle && InventoryManager.GetItemById(f.ItemId) is IWeaponDealItem).ToList();
|
List<VehicleItem> vehicleItems = dbContext.VehicleItems.ToList().Where(f => f.GetVehicle().GetVehicle() == nearestBehindVehiclePoint.vehicle && InventoryManager.GetItemById(f.ItemId) is IWeaponDealItem).ToList();
|
||||||
if (vehicleItems.Count == 0)
|
if (vehicleItems.Count == 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
GTANetworkAPI.Vehicle vehicle = nearestBehindVehiclePoint.vehicle;
|
GTANetworkAPI.Vehicle vehicle = nearestBehindVehiclePoint.vehicle;
|
||||||
|
|
||||||
|
if (vehicle.HasAttachment("weapondeal"))
|
||||||
|
{
|
||||||
|
vehicle.AddAttachment("weapondeal", true);
|
||||||
|
vehicle.AddAttachment("weapondeal1", true);
|
||||||
|
vehicle.AddAttachment("weapondeal2", true);
|
||||||
|
}
|
||||||
|
|
||||||
if (WeaponDealManager.checkWeaponDbyVehicle(vehicle))
|
if (WeaponDealManager.checkWeaponDbyVehicle(vehicle))
|
||||||
{
|
{
|
||||||
vehicle.ResetData("WeaponDealLoad");
|
vehicle.ResetData("WeaponDealLoad");
|
||||||
@@ -262,7 +272,6 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
}
|
}
|
||||||
if (nearestDuty != null)// Duty Point
|
if (nearestDuty != null)// Duty Point
|
||||||
{
|
{
|
||||||
var nameTagColor = new Color(0, 0, 0);
|
|
||||||
var factionId = user.FactionId;
|
var factionId = user.FactionId;
|
||||||
|
|
||||||
if (user.GetData<bool>("duty") == false)
|
if (user.GetData<bool>("duty") == false)
|
||||||
@@ -280,7 +289,7 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
case 1:
|
case 1:
|
||||||
//nameTagColor = new Color(28, 134, 238);
|
//nameTagColor = new Color(28, 134, 238);
|
||||||
//player.TriggerEvent("setNameTag", JsonConvert.SerializeObject(new int[] { 28, 134, 238 }));
|
//player.TriggerEvent("setNameTag", JsonConvert.SerializeObject(new int[] { 28, 134, 238 }));
|
||||||
//player.SetSharedData("nameTagColor", JsonConvert.SerializeObject(new int[] { 28, 134, 238}));
|
player.SetSharedData("nameTagColor", factionId);
|
||||||
player.SetSharedData("blipColor", 38);
|
player.SetSharedData("blipColor", 38);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -288,15 +297,15 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
case 2:
|
case 2:
|
||||||
//nameTagColor = new Color(255, 0, 0);
|
//nameTagColor = new Color(255, 0, 0);
|
||||||
//player.TriggerEvent("setNameTag", JsonConvert.SerializeObject(new int[] { 255, 0, 0 }));
|
//player.TriggerEvent("setNameTag", JsonConvert.SerializeObject(new int[] { 255, 0, 0 }));
|
||||||
//player.SetSharedData("nameTagColor", new int[] { 255, 0, 0});
|
player.SetSharedData("nameTagColor", factionId);
|
||||||
player.SetSharedData("blipColor", 79);
|
player.SetSharedData("blipColor", 6);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//FBI
|
//FBI
|
||||||
case 3:
|
case 3:
|
||||||
//nameTagColor = new Color(173, 0, 118);
|
//nameTagColor = new Color(173, 0, 118);
|
||||||
//player.SetSharedData("nameTagColor", new int[] { 173, 0, 118});
|
player.SetSharedData("nameTagColor", factionId);
|
||||||
player.SetSharedData("blipColor", 72);
|
player.SetSharedData("blipColor", 63);
|
||||||
player.SetAccessories(2, 2, 0);
|
player.SetAccessories(2, 2, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -331,7 +340,7 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
player.TriggerEvent("toggleDutyMode", false);
|
player.TriggerEvent("toggleDutyMode", false);
|
||||||
Medic.UpdateDutyMedics(-1);
|
Medic.UpdateDutyMedics(-1);
|
||||||
player.SetSharedData("blipColor", 0);
|
player.SetSharedData("blipColor", 0);
|
||||||
//player.SetSharedData("nameTagColor", new Color[255, 255, 255, 255]);
|
player.SetSharedData("nameTagColor", 0);
|
||||||
UpdateCharacterCloth.LoadCharacterDefaults(player);
|
UpdateCharacterCloth.LoadCharacterDefaults(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -364,13 +373,11 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
|
|
||||||
using (var context = new DatabaseContext())
|
using (var context = new DatabaseContext())
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
if (player.HasAttachment("ammobox"))
|
if (player.HasAttachment("ammobox"))
|
||||||
{
|
{
|
||||||
player.AddAttachment("ammobox", true);
|
player.AddAttachment("ammobox", true);
|
||||||
player.StopAnimation();
|
player.StopAnimation();
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
bool unloadedWeaponPackage = false;
|
bool unloadedWeaponPackage = false;
|
||||||
|
|
||||||
List<UserItem> fItem = context.UserItems.Where(u => u.UserId == user.Id).ToList();
|
List<UserItem> fItem = context.UserItems.Where(u => u.UserId == user.Id).ToList();
|
||||||
@@ -553,7 +560,8 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
player.TriggerEvent("renderTextOnScreen", "Steige nun in eines der Fahrzeuge und starte den Motor mit der Taste 'N'.");
|
player.TriggerEvent("renderTextOnScreen", "Steige nun in eines der Fahrzeuge und starte den Motor mit der Taste 'N'.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (nearestJobPoint.jobId == 3 && player.GetUser().JobId == 3)
|
}
|
||||||
|
else if (nearestJobPoint.jobId == 3 && player.GetUser().JobId == 3)
|
||||||
{
|
{
|
||||||
if (nearestJobPoint.Skill < 300 && player.GetUser().PilotSkill >= 0)
|
if (nearestJobPoint.Skill < 300 && player.GetUser().PilotSkill >= 0)
|
||||||
{
|
{
|
||||||
@@ -571,11 +579,6 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
player.SendChatMessage("~y~[JOB] ~r~Dein Skilllevel ist noch zu niedrig.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (nearestJobPoint.Skill >= 300 && player.GetUser().PilotSkill >= 300)
|
if (nearestJobPoint.Skill >= 300 && player.GetUser().PilotSkill >= 300)
|
||||||
{
|
{
|
||||||
if (job.GetUsersInJob().Contains(player))
|
if (job.GetUsersInJob().Contains(player))
|
||||||
@@ -591,8 +594,7 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
player.TriggerEvent("renderTextOnScreen", "Steige nun in eines der Flugzeuge und starte den Motor mit der Taste 'N'.");
|
player.TriggerEvent("renderTextOnScreen", "Steige nun in eines der Flugzeuge und starte den Motor mit der Taste 'N'.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
{
|
||||||
player.SendChatMessage("~y~[JOB] ~r~Dein Skilllevel ist noch zu niedrig.");
|
player.SendChatMessage("~y~[JOB] ~r~Dein Skilllevel ist noch zu niedrig.");
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -104,34 +104,38 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
{
|
{
|
||||||
case null:
|
case null:
|
||||||
player.SetSharedData("blipColor", 0);
|
player.SetSharedData("blipColor", 0);
|
||||||
//player.SetSharedData("nameTagColor", new int[] { 255, 255, 255 });
|
player.SetSharedData("nameTagColor", 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0:
|
case 0:
|
||||||
player.SetSharedData("blipColor", 0);
|
player.SetSharedData("blipColor", 0);
|
||||||
//player.SetSharedData("nameTagColor", new int[] { 255, 255, 255 });
|
player.SetSharedData("nameTagColor", 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 8:
|
case 8:
|
||||||
player.SetSharedData("blipColor", 83);
|
player.SetSharedData("blipColor", 83);
|
||||||
//player.SetSharedData("nameTagColor", new int[]{171, 0, 207});
|
player.SetSharedData("nameTagColor", 8);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 7:
|
case 7:
|
||||||
player.SetSharedData("blipColor", 52);
|
player.SetSharedData("blipColor", 52);
|
||||||
//player.SetSharedData("nameTagColor", new int[] { 0, 54, 0});
|
player.SetSharedData("nameTagColor", 7);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
player.SetSharedData("blipColor", 5);
|
player.SetSharedData("blipColor", 5);
|
||||||
|
player.SetSharedData("nameTagColor", 4);
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
player.SetSharedData("blipColor", 25);
|
player.SetSharedData("blipColor", 25);
|
||||||
//player.SetSharedData("nameTagColor", new int[] { 0, 166, 133});
|
player.SetSharedData("nameTagColor", 9);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
player.SetSharedData("blipColor", 0);
|
||||||
|
player.SetSharedData("nameTagColor", 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (user.CharacterId == null)
|
if (user.CharacterId == null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ using Newtonsoft.Json;
|
|||||||
using ReallifeGamemode.Database.Entities;
|
using ReallifeGamemode.Database.Entities;
|
||||||
using ReallifeGamemode.Database.Models;
|
using ReallifeGamemode.Database.Models;
|
||||||
using ReallifeGamemode.Server.Services;
|
using ReallifeGamemode.Server.Services;
|
||||||
|
using ReallifeGamemode.Server.Types;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @overview Life of German Reallife - Player Extension (PlayerExtension.cs)
|
* @overview Life of German Reallife - Player Extension (PlayerExtension.cs)
|
||||||
@@ -93,7 +94,7 @@ namespace ReallifeGamemode.Server.Extensions
|
|||||||
|
|
||||||
internal static T GetData<T>(this User user, string key, T nullValue)
|
internal static T GetData<T>(this User user, string key, T nullValue)
|
||||||
{
|
{
|
||||||
if(user == null)
|
if (user == null)
|
||||||
{
|
{
|
||||||
return default;
|
return default;
|
||||||
}
|
}
|
||||||
@@ -107,7 +108,7 @@ namespace ReallifeGamemode.Server.Extensions
|
|||||||
|
|
||||||
internal static void SetData(this User user, string key, object value)
|
internal static void SetData(this User user, string key, object value)
|
||||||
{
|
{
|
||||||
if(user == null)
|
if (user == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -130,6 +131,7 @@ namespace ReallifeGamemode.Server.Extensions
|
|||||||
dbUser.Wanteds = newWanteds;
|
dbUser.Wanteds = newWanteds;
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
}
|
}
|
||||||
|
user.Player.SetSharedData("nameTagColor", -1);
|
||||||
user.Player.SetSharedData("blipColor", 64);
|
user.Player.SetSharedData("blipColor", 64);
|
||||||
ChatService.SendMessage(user.Player, "!{#FF614A}Du hast ein Verbrechen begangen: " + reason + "" + (cop != null ? " | Gemeldet von: " + cop.Name + "." : ""));
|
ChatService.SendMessage(user.Player, "!{#FF614A}Du hast ein Verbrechen begangen: " + reason + "" + (cop != null ? " | Gemeldet von: " + cop.Name + "." : ""));
|
||||||
ChatService.SendMessage(user.Player, " !{#FFFF00}Fahnundgslevel:~s~ " + newWanteds);
|
ChatService.SendMessage(user.Player, " !{#FFFF00}Fahnundgslevel:~s~ " + newWanteds);
|
||||||
@@ -232,5 +234,14 @@ namespace ReallifeGamemode.Server.Extensions
|
|||||||
return dbContext.UserItems.Where(u => u.UserId == user.Id).ToList();
|
return dbContext.UserItems.Where(u => u.UserId == user.Id).ToList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool IsAdmin(this User user, AdminLevel adminLevel)
|
||||||
|
{
|
||||||
|
if(user == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return user.AdminLevel >= adminLevel;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ namespace ReallifeGamemode.Server.Factions.Medic
|
|||||||
public static List<MedicTask> FireTasks = new List<MedicTask>();
|
public static List<MedicTask> FireTasks = new List<MedicTask>();
|
||||||
public static int ReviveIncome = 100;
|
public static int ReviveIncome = 100;
|
||||||
public static int dutyMedics = 0;
|
public static int dutyMedics = 0;
|
||||||
|
public static int reviveTaskTime = 240;
|
||||||
|
|
||||||
public static void AddTaskToList(MedicTask task)
|
public static void AddTaskToList(MedicTask task)
|
||||||
{
|
{
|
||||||
@@ -71,27 +72,39 @@ namespace ReallifeGamemode.Server.Factions.Medic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void UpdateTaskTimeLeft()
|
||||||
|
{
|
||||||
|
DateTime actualTime = DateTime.Now;
|
||||||
|
if (ReviveTasks.Count != 0)
|
||||||
|
{
|
||||||
|
foreach (var task in ReviveTasks)
|
||||||
|
{
|
||||||
|
if (task.MedicName != null)
|
||||||
|
{
|
||||||
|
var taskTimeLeft = Math.Abs((Int32)(((DateTimeOffset)actualTime).ToUnixTimeSeconds() - ((DateTimeOffset)task.Time).ToUnixTimeSeconds() - reviveTaskTime));
|
||||||
|
task.TimeLeft = taskTimeLeft;
|
||||||
|
var medic = PlayerService.GetPlayerByNameOrId(task.MedicName);
|
||||||
|
if(task.MedicName != "none") medic.TriggerEvent("setTaskTimeLeft", taskTimeLeft);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[RemoteEvent("loadMedicTasks")]
|
[RemoteEvent("loadMedicTasks")]
|
||||||
public void LoadMedicTasks(Player player, int type)
|
public void LoadMedicTasks(Player player, int type)
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
List<long> deathTimes = new List<long>();
|
player.TriggerEvent("showMedicTasks", 0, JsonConvert.SerializeObject(ReviveTasks));
|
||||||
foreach(var task in ReviveTasks)
|
|
||||||
{
|
|
||||||
deathTimes.Add(((DateTimeOffset)task.Time).ToUnixTimeSeconds());
|
|
||||||
}
|
|
||||||
|
|
||||||
player.TriggerEvent("showMedicTasks", 0, JsonConvert.SerializeObject(ReviveTasks), JsonConvert.SerializeObject(deathTimes));
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
player.TriggerEvent("showMedicTasks", 1, JsonConvert.SerializeObject(HealTasks), null);
|
player.TriggerEvent("showMedicTasks", 1, JsonConvert.SerializeObject(HealTasks));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
player.TriggerEvent("showMedicTasks", 2, JsonConvert.SerializeObject(FireTasks), null);
|
player.TriggerEvent("showMedicTasks", 2, JsonConvert.SerializeObject(FireTasks));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -161,11 +174,13 @@ namespace ReallifeGamemode.Server.Factions.Medic
|
|||||||
[RemoteEvent("PayCutMedicEarnings")]
|
[RemoteEvent("PayCutMedicEarnings")]
|
||||||
public void PayCutMedicEarnings(Player player)
|
public void PayCutMedicEarnings(Player player)
|
||||||
{
|
{
|
||||||
using var dbContext = new DatabaseContext();
|
using var dbContext = new DatabaseContext();
|
||||||
|
{
|
||||||
dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 2).First().BankAccount.Balance += Medic.ReviveIncome / 2;
|
dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 2).First().BankAccount.Balance += Medic.ReviveIncome / 2;
|
||||||
player.SendNotification($"Du hast den Einsatzort erreicht und ~g~{Medic.ReviveIncome / 2}$ ~s~für die Fraktion verdient.");
|
player.SendNotification($"Du hast den Einsatzort erreicht und ~g~{Medic.ReviveIncome / 2}$ ~s~für die Fraktion verdient.");
|
||||||
Medic.delReviveTaskMedic(player);
|
Medic.delReviveTaskMedic(player);
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[RemoteEvent("MedicTaskTimeout")]
|
[RemoteEvent("MedicTaskTimeout")]
|
||||||
@@ -174,6 +189,17 @@ namespace ReallifeGamemode.Server.Factions.Medic
|
|||||||
Medic.delReviveTaskMedic(player);
|
Medic.delReviveTaskMedic(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[RemoteEvent("getTaskTimeLeft")]
|
||||||
|
public void GetTaskTimeLeft(Player player, string victimName)
|
||||||
|
{
|
||||||
|
using var dbContext = new DatabaseContext();
|
||||||
|
{
|
||||||
|
var activeTaskTime = ReviveTasks.FirstOrDefault(t => t.MedicName == player.Name && t.Victim == victimName).TimeLeft;
|
||||||
|
|
||||||
|
player.TriggerEvent("setTaskTimeLeft", activeTaskTime);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void UpdateDutyMedics(int modifier)
|
public static void UpdateDutyMedics(int modifier)
|
||||||
{
|
{
|
||||||
dutyMedics = dutyMedics + modifier;
|
dutyMedics = dutyMedics + modifier;
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ namespace ReallifeGamemode.Server.Factions.Medic
|
|||||||
public string Description { get; set; }
|
public string Description { get; set; }
|
||||||
public string Caller { get; set; }
|
public string Caller { get; set; }
|
||||||
public DateTime Time { get; set; }
|
public DateTime Time { get; set; }
|
||||||
|
public int TimeLeft { get; set; }
|
||||||
public string MedicName { get; set; }
|
public string MedicName { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ namespace ReallifeGamemode.Server.Finance
|
|||||||
public static (int, float, float) GetEconomyClass(Player client, int wage)
|
public static (int, float, float) GetEconomyClass(Player client, int wage)
|
||||||
{
|
{
|
||||||
int bankAccount = client.GetUser().BankAccount.Balance;
|
int bankAccount = client.GetUser().BankAccount.Balance;
|
||||||
float financialHelp = -(float)Math.Pow(1.0005, -(bankAccount + client.GetUser().Handmoney)) * -1000;
|
float financialHelp = -(float)Math.Pow(1.0001, -(bankAccount + client.GetUser().Handmoney)) * -1000;
|
||||||
float financialInterest = 1 - (float)Math.Pow(1.00006, -wage) * 1;
|
float financialInterest = 1 - (float)Math.Pow(1.00006, -wage) * 1;
|
||||||
if (financialInterest >= 0.7)
|
if (financialInterest >= 0.7)
|
||||||
financialInterest = 0.7f;
|
financialInterest = 0.7f;
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ namespace ReallifeGamemode.Server.Inventory
|
|||||||
if (!player.HasAttachment("ammobox"))
|
if (!player.HasAttachment("ammobox"))
|
||||||
{
|
{
|
||||||
player.PlayAnimation("anim@heists@box_carry@", "idle", 49);
|
player.PlayAnimation("anim@heists@box_carry@", "idle", 49);
|
||||||
//player.AddAttachment("ammobox", false);
|
player.AddAttachment("ammobox", false);
|
||||||
NAPI.Player.SetPlayerCurrentWeapon(player, WeaponHash.Unarmed);
|
NAPI.Player.SetPlayerCurrentWeapon(player, WeaponHash.Unarmed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,7 +100,6 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
}.AsReadOnly();
|
}.AsReadOnly();
|
||||||
private readonly IReadOnlyCollection<Vector3> Skill2Route2 = new List<Vector3>//Bus_Skill_2_Route_2
|
private readonly IReadOnlyCollection<Vector3> Skill2Route2 = new List<Vector3>//Bus_Skill_2_Route_2
|
||||||
{
|
{
|
||||||
|
|
||||||
new Vector3(1925.767333984375, 2614.566162109375, 46.16560363769531),
|
new Vector3(1925.767333984375, 2614.566162109375, 46.16560363769531),
|
||||||
new Vector3(299.0667419433594, 2642.93798828125, 44.60177993774414),
|
new Vector3(299.0667419433594, 2642.93798828125, 44.60177993774414),
|
||||||
new Vector3(1162.4556884765625, 1806.3663330078125, 74.3133773803711),
|
new Vector3(1162.4556884765625, 1806.3663330078125, 74.3133773803711),
|
||||||
@@ -111,13 +110,26 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
}.AsReadOnly();
|
}.AsReadOnly();
|
||||||
private readonly IReadOnlyCollection<Vector3> Skill2Route3 = new List<Vector3>//Bus_Skill_2_Route_3
|
private readonly IReadOnlyCollection<Vector3> Skill2Route3 = new List<Vector3>//Bus_Skill_2_Route_3
|
||||||
{
|
{
|
||||||
|
new Vector3(-1855.54,153.604,79.0297),
|
||||||
new Vector3(-562.68, -2203.85, 5.5),
|
new Vector3(-1538.72,1375.19,124.3),
|
||||||
|
new Vector3(-1101.74,2668.48,17.7363),
|
||||||
|
new Vector3(1964.14,3718.04,31.2255),
|
||||||
|
new Vector3(2566.1,396.879,107.463),
|
||||||
|
new Vector3(254.405,-982.937,28.274),
|
||||||
|
new Vector3(-562.68, -2203.85, 4.5),
|
||||||
}.AsReadOnly();
|
}.AsReadOnly();
|
||||||
private readonly IReadOnlyCollection<Vector3> Skill2Route4 = new List<Vector3>//Bus_Skill_2_Route_4
|
private readonly IReadOnlyCollection<Vector3> Skill2Route4 = new List<Vector3>//Bus_Skill_2_Route_4
|
||||||
{
|
{
|
||||||
|
new Vector3(-1037.8,-2716.02,12.7963),
|
||||||
|
new Vector3(1662.69,4849.72,40.9165),
|
||||||
|
new Vector3(57.8575,3735.46,38.7301),
|
||||||
|
new Vector3(-1109.48,2681,17.8602),
|
||||||
|
new Vector3(-2536.35,2322.65,32.0599),
|
||||||
|
new Vector3(-3232.01,961.997,12.1515),
|
||||||
|
new Vector3(-3014.22,364.543,13.7242),
|
||||||
|
new Vector3(-1580.52,-652.24,28.5874),
|
||||||
|
new Vector3(-578.954,-2224.8,4.75774),
|
||||||
|
|
||||||
new Vector3(-562.68, -2203.85, 5.5),
|
|
||||||
}.AsReadOnly();
|
}.AsReadOnly();
|
||||||
private readonly IReadOnlyCollection<Vector3> Skill3Route1 = new List<Vector3>//Bus_Skill_3_Route_1
|
private readonly IReadOnlyCollection<Vector3> Skill3Route1 = new List<Vector3>//Bus_Skill_3_Route_1
|
||||||
{
|
{
|
||||||
@@ -159,8 +171,16 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
}.AsReadOnly();
|
}.AsReadOnly();
|
||||||
private readonly IReadOnlyCollection<Vector3> Skill3Route3 = new List<Vector3>//Bus_Skill_3_Route_3
|
private readonly IReadOnlyCollection<Vector3> Skill3Route3 = new List<Vector3>//Bus_Skill_3_Route_3
|
||||||
{
|
{
|
||||||
|
new Vector3(-146.62071, -2178.8228, 9.194298),
|
||||||
new Vector3(-562.68, -2203.85, 5.5),
|
new Vector3(14.580393, -1578.6385, 28.212185),
|
||||||
|
new Vector3(222.91612, -1098.8556, 28.227453),
|
||||||
|
new Vector3(246.44946, -648.45496, 38.420746),
|
||||||
|
new Vector3(102.181, -298.95276, 45.04399),
|
||||||
|
new Vector3(-104.91002, -606.26013, 35.06103),
|
||||||
|
new Vector3(-288.1007, -1204.5107, 23.403156),
|
||||||
|
new Vector3(-166.23526, -1574.4166, 34.152023),
|
||||||
|
new Vector3(-60.337997, -1976.121, 15.486664),
|
||||||
|
new Vector3(-599.1891, -2049.2695, 5.14637),
|
||||||
}.AsReadOnly();
|
}.AsReadOnly();
|
||||||
private readonly IReadOnlyCollection<Vector3> Skill3Route4 = new List<Vector3>//Bus_Skill_3_Route_4
|
private readonly IReadOnlyCollection<Vector3> Skill3Route4 = new List<Vector3>//Bus_Skill_3_Route_4
|
||||||
{
|
{
|
||||||
@@ -302,7 +322,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
if ((VehicleHash)veh.Model == VehicleHash.Coach)
|
if ((VehicleHash)veh.Model == VehicleHash.Coach)
|
||||||
{
|
{
|
||||||
Random rnd = new Random();
|
Random rnd = new Random();
|
||||||
int rroute = rnd.Next(1, 3);
|
int rroute = rnd.Next(1, 5);
|
||||||
switch (rroute)
|
switch (rroute)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
@@ -340,7 +360,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
if ((VehicleHash)veh.Model == VehicleHash.Tourbus)
|
if ((VehicleHash)veh.Model == VehicleHash.Tourbus)
|
||||||
{
|
{
|
||||||
Random rnd = new Random();
|
Random rnd = new Random();
|
||||||
int rroute = rnd.Next(1, 3);
|
int rroute = rnd.Next(1, 4);
|
||||||
switch (rroute)
|
switch (rroute)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
|
|
||||||
public override bool NeedVehicleToStart => false;
|
public override bool NeedVehicleToStart => false;
|
||||||
|
|
||||||
|
const int MAX_BAG = 40;
|
||||||
|
|
||||||
public RefuseCollectorJob()
|
public RefuseCollectorJob()
|
||||||
{
|
{
|
||||||
JobStart += RefuseCollectorJobJobStart;
|
JobStart += RefuseCollectorJobJobStart;
|
||||||
@@ -168,7 +170,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
if (data.getDataFromClient(player) == null) continue;
|
if (data.getDataFromClient(player) == null) continue;
|
||||||
veh = data.vehicle;
|
veh = data.vehicle;
|
||||||
JobBase job = JobManager.GetJob(player.GetUser().JobId ?? -1);
|
JobBase job = JobManager.GetJob(player.GetUser().JobId ?? -1);
|
||||||
ChatService.SendMessage((Player)player, $"~y~Job: ~s~Du hast deinen Job (~o~{job.Name}~s~) gestartet.");
|
ChatService.SendMessage((Player)player, $"~y~[Job] ~s~Du hast deinen Job (~o~{job.Name}~s~) gestartet.");
|
||||||
player.TriggerEvent("SERVER:MuellmannStatusTrue");
|
player.TriggerEvent("SERVER:MuellmannStatusTrue");
|
||||||
player.TriggerEvent("SERVER:MuellmannBCSErstellen", JsonConvert.SerializeObject(vector3s.ToArray()), veh);
|
player.TriggerEvent("SERVER:MuellmannBCSErstellen", JsonConvert.SerializeObject(vector3s.ToArray()), veh);
|
||||||
return;
|
return;
|
||||||
@@ -179,7 +181,6 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
public void MuellmannJobBeenden(Player player)
|
public void MuellmannJobBeenden(Player player)
|
||||||
{
|
{
|
||||||
JobBase job = JobManager.GetJob(player.GetUser().JobId ?? -1);
|
JobBase job = JobManager.GetJob(player.GetUser().JobId ?? -1);
|
||||||
ChatService.SendMessage((Player)player, $"~y~Job: ~s~Du hast deinen Job (~o~{job.Name}~s~) beendet.");
|
|
||||||
player.TriggerEvent("SERVER:MuellmannStatusFalse");
|
player.TriggerEvent("SERVER:MuellmannStatusFalse");
|
||||||
player.TriggerEvent("SERVER:MuellmannBCSEntfernen");
|
player.TriggerEvent("SERVER:MuellmannBCSEntfernen");
|
||||||
|
|
||||||
@@ -189,11 +190,19 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
|
|
||||||
if (data.hasFreePlace())
|
if (data.hasFreePlace())
|
||||||
{
|
{
|
||||||
|
if(data.vehicle != null)
|
||||||
|
data.vehicle.GetServerVehicle().Spawn(data.vehicle);
|
||||||
muellmanData.Remove(data);
|
muellmanData.Remove(data);
|
||||||
//müllwagen respawnen
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (player.HasAttachment("binbag"))
|
||||||
|
{
|
||||||
|
player.AddAttachment("binbag", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
ChatService.SendMessage(data.getPartnerClient(player), $"~y~[Job] ~s~Dein Partner hat den Job beendet.");
|
||||||
|
|
||||||
data.removeClientFromData(player);
|
data.removeClientFromData(player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -208,7 +217,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
Player target = data.getPartnerClient(player);
|
Player target = data.getPartnerClient(player);
|
||||||
if (target != null) target.TriggerEvent("MuellmannUpdateColshape", colshapeIndex);
|
if (target != null) target.TriggerEvent("MuellmannUpdateColshape", colshapeIndex);
|
||||||
player.TriggerEvent("renderTextOnScreen", "Wirf den Müllsack in den Müllwagen.");
|
player.TriggerEvent("renderTextOnScreen", "Wirf den Müllsack in den Müllwagen.");
|
||||||
//player.AddAttachment("binbag", false);
|
player.AddAttachment("binbag", false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -220,95 +229,57 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
using (var dbContext = new DatabaseContext())
|
|
||||||
|
using var dbContext = new DatabaseContext();
|
||||||
|
|
||||||
|
foreach (var data in muellmanData)
|
||||||
{
|
{
|
||||||
foreach (var data in muellmanData)
|
if (data.getDataFromClient(player) == null) continue;
|
||||||
|
Player target = data.getPartnerClient(player);
|
||||||
|
User user1 = player.GetUser(dbContext);
|
||||||
|
User user2 = target.GetUser(dbContext);
|
||||||
|
|
||||||
|
data.setTrashCount(data.getTrashCount() + 1);
|
||||||
|
player.SendNotification("Müllsack: " + data.getTrashCount() + " von " + MAX_BAG + ".");
|
||||||
|
if (target != null)
|
||||||
{
|
{
|
||||||
if (data.getDataFromClient(player) == null) continue;
|
target.SendNotification("Müllsack: " + data.getTrashCount() + " von " + MAX_BAG + ".");
|
||||||
Player target = data.getPartnerClient(player);
|
}
|
||||||
User user1 = player.GetUser(dbContext);
|
|
||||||
User user2 = target.GetUser(dbContext);
|
|
||||||
|
|
||||||
//user1 = player.GetUser(dbContext);
|
player.AddAttachment("binbag", true);
|
||||||
//user2 = target.GetUser(dbContext);
|
|
||||||
/*user1.trashcount += 1;
|
|
||||||
|
|
||||||
if (user1.trashcount == 20)
|
if (data.getTrashCount() == MAX_BAG)
|
||||||
{
|
{
|
||||||
player.SendChatMessage("~y~Dies ist dein 20ter Müllsack.");
|
ChatService.SendMessage((Player)player, "~y~[Job] ~s~Der Müllwagen ist voll. Fahre nun zurück zur Recyclinganlage!");
|
||||||
}
|
|
||||||
|
|
||||||
player.SendNotification("Müllsack: " + user1.trashcount + " von 20.");
|
|
||||||
if (target != null)
|
if (target != null)
|
||||||
{
|
{
|
||||||
target.SendNotification("Müllsack: " + user2.trashcount + " von 20.");
|
ChatService.SendMessage((Player)target, "~y~[Job] ~s~Der Müllwagen ist voll! Er muss entleert werden.");
|
||||||
user2.trashcount += 1;
|
target.TriggerEvent("SERVER:MuellmannZuBase");
|
||||||
|
|
||||||
if (user2.trashcount == 20)
|
|
||||||
{
|
|
||||||
target.SendChatMessage("~y~Dies ist dein 20ter Müllsack.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dbContext.SaveChanges();
|
|
||||||
player.AddAttachment("binbag", true);
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (player.GetUser(dbContext).trashcount >= 20)
|
|
||||||
{
|
|
||||||
ChatService.SendMessage((Player)player, "~y~Job: ~s~Der Müllwagen ist voll. Fahre nun zurück zur Recyclinganlage!");
|
|
||||||
if (target != null)
|
|
||||||
{
|
|
||||||
ChatService.SendMessage((Player)target, "~y~Job: ~s~Der Müllwagen ist voll! Er muss entleert werden.");
|
|
||||||
target.TriggerEvent("SERVER:MuellmannZuBase");
|
|
||||||
}
|
|
||||||
player.TriggerEvent("SERVER:MuellmannZuBase");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//user1 = player.GetUser(dbContext);
|
|
||||||
//user2 = target.GetUser(dbContext);
|
|
||||||
user1.trashcount += 1;
|
|
||||||
player.SendNotification("Müllsack: " + user1.trashcount + " von 20.");
|
|
||||||
if (target != null)
|
|
||||||
{
|
|
||||||
target.SendNotification("Müllsack: " + user2.trashcount + " von 20.");
|
|
||||||
user2.trashcount += 1;
|
|
||||||
}
|
|
||||||
dbContext.SaveChanges();
|
|
||||||
}
|
|
||||||
// player.AddAttachment("binbag", true);
|
|
||||||
|
|
||||||
if (player.GetUser(dbContext).trashcount >= 20)
|
|
||||||
{
|
|
||||||
ChatService.SendMessage((Player)player, "~y~Job: ~s~Der Müllwagen ist voll. Fahre nun zurück zur Recyclinganlage!");
|
|
||||||
if (target != null)
|
|
||||||
{
|
|
||||||
ChatService.SendMessage((Player)target, "~y~Job: ~s~Der Müllwagen ist voll! Er muss entleert werden.");
|
|
||||||
target.TriggerEvent("SERVER:MuellmannZuBase");
|
|
||||||
}
|
|
||||||
player.TriggerEvent("SERVER:MuellmannZuBase");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//user1 = player.GetUser(dbContext);
|
|
||||||
//user2 = target.GetUser(dbContext);
|
|
||||||
|
|
||||||
if (target != null)
|
|
||||||
{
|
|
||||||
user1.Wage += 25;
|
|
||||||
user2.Wage += 25;
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
user1.Wage += 50;
|
|
||||||
}
|
|
||||||
dbContext.SaveChanges();
|
|
||||||
}
|
}
|
||||||
|
player.TriggerEvent("SERVER:MuellmannZuBase");
|
||||||
|
}
|
||||||
|
else if(data.getTrashCount() > MAX_BAG)
|
||||||
|
{
|
||||||
|
data.setTrashCount(MAX_BAG);
|
||||||
|
ChatService.ErrorMessage((Player)player, "Der Müllwagen ist schon voll.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
if (target != null)
|
||||||
|
{
|
||||||
|
user1.Wage += 25;
|
||||||
|
user2.Wage += 25;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
user1.Wage += 50;
|
||||||
|
}
|
||||||
|
dbContext.SaveChanges();
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
[RemoteEvent("CLIENT:MuellmannBaseSack")]
|
[RemoteEvent("CLIENT:MuellmannBaseSack")]
|
||||||
@@ -321,26 +292,27 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
if (data.getDataFromClient(player) == null) continue;
|
if (data.getDataFromClient(player) == null) continue;
|
||||||
|
|
||||||
Player target = data.getPartnerClient(player);
|
Player target = data.getPartnerClient(player);
|
||||||
if (target != null) ChatService.SendMessage((Player)target, $"~y~Job: ~s~Fahrzeug wurde entleert. Säcke: {target.GetUser().trashcount}");
|
if (target != null) ChatService.SendMessage((Player)target, $"~y~[Job] ~s~Fahrzeug wurde entleert. Säcke: {data.getTrashCount()}");
|
||||||
ChatService.SendMessage((Player)player, $"~y~Job: ~s~Fahrzeug wurde entleert. Säcke: {player.GetUser().trashcount}");
|
ChatService.SendMessage((Player)player, $"~y~[Job] ~s~Fahrzeug wurde entleert. Säcke: {data.getTrashCount()}");
|
||||||
//bonus pro sack
|
//bonus pro sack
|
||||||
using (var dbContext = new DatabaseContext())
|
using (var dbContext = new DatabaseContext())
|
||||||
{
|
{
|
||||||
User user1 = player.GetUser(dbContext);
|
User user1 = player.GetUser(dbContext);
|
||||||
User user2 = target.GetUser(dbContext);
|
User user2 = target.GetUser(dbContext);
|
||||||
|
|
||||||
|
int bonus = 5 * data.getTrashCount();
|
||||||
|
|
||||||
if (target != null)
|
if (target != null)
|
||||||
{
|
{
|
||||||
user1.Wage += 250;
|
user1.Wage += (int)(bonus / 2);
|
||||||
user2.Wage += 250;
|
user2.Wage += (int)(bonus / 2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
user1.Wage += 500;
|
user1.Wage += bonus;
|
||||||
}
|
}
|
||||||
|
|
||||||
user1.trashcount -= user1.trashcount;
|
data.setTrashCount(0);
|
||||||
if (target != null) user2.trashcount -= user2.trashcount;
|
|
||||||
|
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
}
|
}
|
||||||
@@ -353,38 +325,12 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
|
|
||||||
public void MuellmannOnPlayerDc(Player player)
|
public void MuellmannOnPlayerDc(Player player)
|
||||||
{
|
{
|
||||||
foreach (var data in muellmanData)
|
MuellmannJobBeenden(player);
|
||||||
{
|
|
||||||
if (data.getDataFromClient(player) == null) continue;
|
|
||||||
|
|
||||||
if (data.hasFreePlace())
|
|
||||||
{
|
|
||||||
muellmanData.Remove(data);
|
|
||||||
//müllwagen respawnen
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
data.removeClientFromData(player);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void MuellmannOnPlayerDeath(Player player)
|
public void MuellmannOnPlayerDeath(Player player)
|
||||||
{
|
{
|
||||||
foreach (var data in muellmanData)
|
MuellmannJobBeenden(player);
|
||||||
{
|
|
||||||
if (data.getDataFromClient(player) == null) continue;
|
|
||||||
|
|
||||||
if (data.hasFreePlace())
|
|
||||||
{
|
|
||||||
muellmanData.Remove(data);
|
|
||||||
//müllwagen respawnen
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
data.removeClientFromData(player);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[ServerEvent(Event.VehicleDeath)]
|
[ServerEvent(Event.VehicleDeath)]
|
||||||
@@ -396,10 +342,13 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
{
|
{
|
||||||
if (data.vehicle == veh)
|
if (data.vehicle == veh)
|
||||||
{
|
{
|
||||||
//müllfahrzeug respawnen
|
veh.GetServerVehicle().Spawn(veh);
|
||||||
|
|
||||||
List<Player> clients = data.getClientsFromData();
|
List<Player> clients = data.getClientsFromData();
|
||||||
foreach (var c in clients) { RefuseCollectorJobJobStop(c); }
|
foreach (var c in clients)
|
||||||
|
{
|
||||||
|
MuellmannJobBeenden(c);
|
||||||
|
}
|
||||||
|
|
||||||
muellmanData.Remove(data);
|
muellmanData.Remove(data);
|
||||||
return;
|
return;
|
||||||
@@ -426,15 +375,15 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
}
|
}
|
||||||
CheckDataForDuplicatePlayer(player, data);
|
CheckDataForDuplicatePlayer(player, data);
|
||||||
data.setClientToData(player);
|
data.setClientToData(player);
|
||||||
//destroy veh
|
|
||||||
MuellmannJobStarten(player, vehicle);
|
MuellmannJobStarten(player, vehicle);
|
||||||
|
|
||||||
target = data.getPartnerClient(player);
|
target = data.getPartnerClient(player);
|
||||||
if (target == null)
|
if (target == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ChatService.SendMessage((Player)player, $"~y~Job: ~s~Dein Partner ist {target.Name}!");
|
ChatService.SendMessage((Player)player, $"~y~[Job] ~s~Dein Partner ist {target.Name}!");
|
||||||
ChatService.SendMessage((Player)target, $"~y~Job: ~s~Dein Partner ist {player.Name}!");
|
ChatService.SendMessage((Player)target, $"~y~[Job] ~s~Dein Partner ist {player.Name}!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -450,8 +399,8 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
if (target == null)
|
if (target == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ChatService.SendMessage((Player)player, $"~y~Job: ~s~Dein Partner ist {target.Name}!");
|
ChatService.SendMessage((Player)player, $"~y~[Job] ~s~Dein Partner ist {target.Name}!");
|
||||||
ChatService.SendMessage((Player)target, $"~y~Job: ~s~Dein Partner ist {player.Name}!");
|
ChatService.SendMessage((Player)target, $"~y~[Job] ~s~Dein Partner ist {player.Name}!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -123,9 +123,15 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
|
|
||||||
public static void UpdateFare()
|
public static void UpdateFare()
|
||||||
{
|
{
|
||||||
|
|
||||||
foreach (var player in GetPlayerInJob())
|
foreach (var player in GetPlayerInJob())
|
||||||
{
|
{
|
||||||
User u = player.GetUser();
|
User u = player.GetUser();
|
||||||
|
if(u == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (u.JobId != 1) return;
|
if (u.JobId != 1) return;
|
||||||
if (!player.HasData("hasPassager")) { player.SetData<bool>("hasPassager", false); continue; }
|
if (!player.HasData("hasPassager")) { player.SetData<bool>("hasPassager", false); continue; }
|
||||||
int playerId = player.GetUser().Id;
|
int playerId = player.GetUser().Id;
|
||||||
|
|||||||
@@ -73,24 +73,28 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
player.SetSharedData("blipColor", 0);
|
player.SetSharedData("blipColor", 0);
|
||||||
|
player.SetSharedData("nameTagColor", 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 8:
|
case 8:
|
||||||
player.SetSharedData("blipColor", 83);
|
player.SetSharedData("blipColor", 83);
|
||||||
|
player.SetSharedData("nameTagColor", 8);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 7:
|
case 7:
|
||||||
player.SetSharedData("blipColor", 52);
|
player.SetSharedData("blipColor", 52);
|
||||||
|
player.SetSharedData("nameTagColor", 7);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
player.SetSharedData("blipColor", 5);
|
player.SetSharedData("blipColor", 5);
|
||||||
|
player.SetSharedData("nameTagColor", 4);
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
player.SetSharedData("blipColor", 25);
|
player.SetSharedData("blipColor", 25);
|
||||||
|
player.SetSharedData("nameTagColor", 9);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -284,6 +288,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
ChatService.SendMessage(player, "!{02FCFF}Du hast " + target.Name + " aus der Fraktion geworfen.");
|
ChatService.SendMessage(player, "!{02FCFF}Du hast " + target.Name + " aus der Fraktion geworfen.");
|
||||||
ChatService.SendMessage(target, "!{02FCFF}Du wurdest von " + player.Name + " aus der Fraktion geworfen.");
|
ChatService.SendMessage(target, "!{02FCFF}Du wurdest von " + player.Name + " aus der Fraktion geworfen.");
|
||||||
target.SetSharedData("blipColor", 0);
|
target.SetSharedData("blipColor", 0);
|
||||||
|
player.SetSharedData("nameTagColor", 0);
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -628,7 +633,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (amount > -9 && amount < 9)
|
if (amount > -13 && amount < 13)
|
||||||
{
|
{
|
||||||
using (var dbContext = new DatabaseContext())
|
using (var dbContext = new DatabaseContext())
|
||||||
{
|
{
|
||||||
@@ -638,6 +643,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
}
|
}
|
||||||
player.SendNotification($"~w~Du hast ~y~{targetname} ~b~{amount} ~w~Strafpunkte gegeben. Grund: ~g~{reason}~w~.");
|
player.SendNotification($"~w~Du hast ~y~{targetname} ~b~{amount} ~w~Strafpunkte gegeben. Grund: ~g~{reason}~w~.");
|
||||||
target.SendNotification($"~b~{player.GetUser().FactionRank.RankName} | {playername} ~w~hat dir ~y~{amount} ~w~Strafpunkte gegeben.", true);
|
target.SendNotification($"~b~{player.GetUser().FactionRank.RankName} | {playername} ~w~hat dir ~y~{amount} ~w~Strafpunkte gegeben.", true);
|
||||||
|
ChatService.BroadcastFaction("!{#8181E9}HQ: " + targetname + " hat von " + playername + " " + amount + " Strafpunkt(e) erhalten. Gesamt: " + target.GetUser().Points, new List<int>() { 1, 3 });
|
||||||
if (target.GetUser().Points < 0)
|
if (target.GetUser().Points < 0)
|
||||||
{
|
{
|
||||||
using (var dbContext = new DatabaseContext())
|
using (var dbContext = new DatabaseContext())
|
||||||
@@ -647,10 +653,11 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (target.GetUser().Points >= 8)
|
else if (target.GetUser().Points >= 12)
|
||||||
{
|
{
|
||||||
target.SendNotification($"~w~Grund: ~g~{reason}~w~. ~x~Du hast nun ~r~8/8 ~x~Strafpunkten.", true);
|
target.SendNotification($"~w~Grund: ~g~{reason}~w~. ~x~Du hast nun ~r~12/12 ~x~Strafpunkten.", true);
|
||||||
target.SendNotification($"~w~Dir wird ~r~Auto- ~w~und ~r~Motorradführerschein ~w~entzogen.", true);
|
target.SendNotification($"~w~Dir wird ~r~Auto- ~w~und ~r~Motorradführerschein ~w~entzogen.", true); //FlashNotif
|
||||||
|
ChatService.HQMessage(targetname + "hat von" + playername + " " + amount + " Strafpunkt erhalten(e). Gesamt: " + target.GetUser().Points);
|
||||||
foreach (var copPlayer in NAPI.Pools.GetAllPlayers())
|
foreach (var copPlayer in NAPI.Pools.GetAllPlayers())
|
||||||
{
|
{
|
||||||
User copUser = copPlayer.GetUser();
|
User copUser = copPlayer.GetUser();
|
||||||
@@ -663,7 +670,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
{
|
{
|
||||||
if (copUser.GetData<bool>("duty") == true)
|
if (copUser.GetData<bool>("duty") == true)
|
||||||
{
|
{
|
||||||
ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: " + targetname + " besitzt nun keinen Führerschein mehr.");
|
ChatService.HQMessage(targetname + " besitzt nun keinen Führerschein mehr.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -678,12 +685,12 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
target.SendNotification($"~w~Grund: ~g~{reason}~w~. ~x~Du hast nun ~y~{target.GetUser().Points}/8 ~x~Strafpunkten.", true);
|
target.SendNotification($"~w~Grund: ~g~{reason}~w~. ~x~Du hast nun ~y~{target.GetUser().Points}/12 ~x~Strafpunkten.", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.SendNotification("~r~Du kannst nur zwischen 1 und 8 Punkte verteilen!");
|
player.SendNotification("~r~Du kannst nur zwischen 1 und 12 Punkte verteilen!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -796,14 +803,15 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
if (!player.IsLoggedIn()) return;
|
if (!player.IsLoggedIn()) return;
|
||||||
List<Player> players = NAPI.Pools.GetAllPlayers();
|
List<Player> players = NAPI.Pools.GetAllPlayers();
|
||||||
|
|
||||||
var listPlayers = players.Select(p => new
|
var listPlayers = players.Where(p => p.GetUser().Wanteds > 0)
|
||||||
|
.Select(p => new
|
||||||
{
|
{
|
||||||
Id = p.Handle.Value,
|
Id = p.Handle.Value,
|
||||||
p.Name,
|
p.Name,
|
||||||
wanted = p.GetUser().Wanteds,
|
wanted = p.GetUser().Wanteds,
|
||||||
}) ;
|
});
|
||||||
|
|
||||||
if(listPlayers.Count() > 0)
|
if (listPlayers.Count() > 0)
|
||||||
player.TriggerEvent("showWantedlist", JsonConvert.SerializeObject(listPlayers));
|
player.TriggerEvent("showWantedlist", JsonConvert.SerializeObject(listPlayers));
|
||||||
else
|
else
|
||||||
player.SendNotification("~r~[Fehler] ~w~Es gibt derzeitig keine Verbrecher!");
|
player.SendNotification("~r~[Fehler] ~w~Es gibt derzeitig keine Verbrecher!");
|
||||||
|
|||||||
@@ -560,6 +560,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
Vector3 textPos = dropPosition;
|
Vector3 textPos = dropPosition;
|
||||||
if (iItem is IWeaponDealItem obj)
|
if (iItem is IWeaponDealItem obj)
|
||||||
{
|
{
|
||||||
|
player.ClearAttachments();
|
||||||
dropPosition.Z -= 1.05f;
|
dropPosition.Z -= 1.05f;
|
||||||
grndObject = NAPI.Object.CreateObject(3666746839, dropPosition, new Vector3(0, 0, r.Next(0, 360)), 255, 0);
|
grndObject = NAPI.Object.CreateObject(3666746839, dropPosition, new Vector3(0, 0, r.Next(0, 360)), 255, 0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -348,7 +348,7 @@ public class BehindVehiclePoint
|
|||||||
if (!player.HasAttachment("ammobox"))
|
if (!player.HasAttachment("ammobox"))
|
||||||
{
|
{
|
||||||
player.PlayAnimation("anim@heists@box_carry@", "idle", 49);
|
player.PlayAnimation("anim@heists@box_carry@", "idle", 49);
|
||||||
//player.AddAttachment("ammobox", false);
|
player.AddAttachment("ammobox", false);
|
||||||
NAPI.Player.SetPlayerCurrentWeapon(player, WeaponHash.Unarmed);
|
NAPI.Player.SetPlayerCurrentWeapon(player, WeaponHash.Unarmed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ namespace ReallifeGamemode.Server.Report
|
|||||||
|
|
||||||
if (listReports.Count == 0)
|
if (listReports.Count == 0)
|
||||||
{
|
{
|
||||||
|
ChatService.ErrorMessage(client, "Im Moment gibt es keine Tickets.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
User user = client.GetUser();
|
User user = client.GetUser();
|
||||||
|
|||||||
@@ -58,17 +58,14 @@ namespace ReallifeGamemode.Server.Services
|
|||||||
{
|
{
|
||||||
User user = c.GetUser();
|
User user = c.GetUser();
|
||||||
Faction f = user?.Faction;
|
Faction f = user?.Faction;
|
||||||
if (f != null)
|
if (f != null && factions.Find(fT => fT.Id == f.Id) != null)
|
||||||
{
|
|
||||||
if (factions.Find(fT => fT.Id == f.Id) != null)
|
|
||||||
{
|
|
||||||
ChatService.SendMessage(c, message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/*else if(user.IsAdmin(AdminLevel.ADMIN) && toAdmins)
|
|
||||||
{
|
{
|
||||||
ChatService.SendMessage(c, message);
|
ChatService.SendMessage(c, message);
|
||||||
}*/
|
}
|
||||||
|
else if (user.IsAdmin(AdminLevel.ADMIN) && toAdmins)
|
||||||
|
{
|
||||||
|
ChatService.SendMessage(c, message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -97,7 +97,6 @@ public static class AttachmentSync
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
entity.ResetSharedData("attachmentsData");
|
|
||||||
entity.SetData("Attachments", new List<uint>());
|
entity.SetData("Attachments", new List<uint>());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,15 +140,18 @@ public class AttachmentSyncExample : Script
|
|||||||
public void attachment(Player player)
|
public void attachment(Player player)
|
||||||
{
|
{
|
||||||
Vehicle veh = player.Vehicle;
|
Vehicle veh = player.Vehicle;
|
||||||
if (!veh.HasAttachment("weapondeal"))
|
if (!player.HasAttachment("ammobox"))
|
||||||
{
|
{
|
||||||
veh.AddAttachment("weapondeal", false);
|
player.AddAttachment("ammobox", false);
|
||||||
|
player.PlayAnimation("anim@heists@box_carry@", "idle", 49);
|
||||||
//veh.AddAttachment("weapondeal1", false);
|
//veh.AddAttachment("weapondeal1", false);
|
||||||
//veh.AddAttachment("weapondeal2", false);
|
//veh.AddAttachment("weapondeal2", false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
veh.ClearAttachments();
|
player.StopAnimation();
|
||||||
|
|
||||||
|
player.ClearAttachments();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System.Timers;
|
using System.Timers;
|
||||||
using GTANetworkAPI;
|
using GTANetworkAPI;
|
||||||
|
using ReallifeGamemode.Server.Factions.Medic;
|
||||||
using ReallifeGamemode.Server.Finance;
|
using ReallifeGamemode.Server.Finance;
|
||||||
using ReallifeGamemode.Server.Job;
|
using ReallifeGamemode.Server.Job;
|
||||||
using ReallifeGamemode.Server.Managers;
|
using ReallifeGamemode.Server.Managers;
|
||||||
@@ -11,6 +12,7 @@ namespace ReallifeGamemode.Server.Util
|
|||||||
public class ThreadTimers
|
public class ThreadTimers
|
||||||
{
|
{
|
||||||
private static Timer timer500 = new Timer(500); //0.5 seconds timer
|
private static Timer timer500 = new Timer(500); //0.5 seconds timer
|
||||||
|
private static Timer timer1000 = new Timer(1000); //1 seconds timer
|
||||||
private static Timer timer2500 = new Timer(2500); //2.5 seconds timer
|
private static Timer timer2500 = new Timer(2500); //2.5 seconds timer
|
||||||
private static Timer timer10000 = new Timer(10000); // 10 second timer
|
private static Timer timer10000 = new Timer(10000); // 10 second timer
|
||||||
private static Timer timer60000 = new Timer(60000); //60 seconds timer
|
private static Timer timer60000 = new Timer(60000); //60 seconds timer
|
||||||
@@ -20,6 +22,9 @@ namespace ReallifeGamemode.Server.Util
|
|||||||
timer500.Start();
|
timer500.Start();
|
||||||
timer500.Elapsed += Timer500_Elapsed;
|
timer500.Elapsed += Timer500_Elapsed;
|
||||||
|
|
||||||
|
timer1000.Start();
|
||||||
|
timer1000.Elapsed += Timer1000_Elapsed;
|
||||||
|
|
||||||
timer2500.Start();
|
timer2500.Start();
|
||||||
timer2500.Elapsed += Timer2500_Elapsed;
|
timer2500.Elapsed += Timer2500_Elapsed;
|
||||||
|
|
||||||
@@ -39,6 +44,14 @@ namespace ReallifeGamemode.Server.Util
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void Timer1000_Elapsed(object sender, ElapsedEventArgs e)
|
||||||
|
{
|
||||||
|
NAPI.Task.Run(() =>
|
||||||
|
{
|
||||||
|
Medic.UpdateTaskTimeLeft();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private static void Timer60000_Elapsed(object sender, ElapsedEventArgs e)
|
private static void Timer60000_Elapsed(object sender, ElapsedEventArgs e)
|
||||||
{
|
{
|
||||||
NAPI.Task.Run(() =>
|
NAPI.Task.Run(() =>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ namespace ReallifeGamemode.Server.WeaponDeal
|
|||||||
{
|
{
|
||||||
private const int WEAPON_AMOUNT_GANG = 2;
|
private const int WEAPON_AMOUNT_GANG = 2;
|
||||||
private const int WEAPON_AMOUNT_COP = 8;
|
private const int WEAPON_AMOUNT_COP = 8;
|
||||||
private const int WEAPON_AMOUNT_COP_STUNGUN = 2;
|
private const int WEAPON_AMOUNT_COP_STUNGUN = 12;
|
||||||
public static bool checkWeaponDbyVehicle(Vehicle vehicle)
|
public static bool checkWeaponDbyVehicle(Vehicle vehicle)
|
||||||
{
|
{
|
||||||
if (!vehicle.HasData("WeaponDealLoad") || vehicle.GetData<bool>("WeaponDealLoad") == false)
|
if (!vehicle.HasData("WeaponDealLoad") || vehicle.GetData<bool>("WeaponDealLoad") == false)
|
||||||
@@ -185,6 +185,9 @@ namespace ReallifeGamemode.Server.WeaponDeal
|
|||||||
Vehicle fVeh = VehicleManager.GetVehicleFromServerVehicle(factionVehicle);
|
Vehicle fVeh = VehicleManager.GetVehicleFromServerVehicle(factionVehicle);
|
||||||
fVeh.SetData("weaponDeal", false);
|
fVeh.SetData("weaponDeal", false);
|
||||||
fVeh.SetData("WeaponDealLoad", true);
|
fVeh.SetData("WeaponDealLoad", true);
|
||||||
|
fVeh.AddAttachment("weapondeal", false);
|
||||||
|
fVeh.AddAttachment("weapondeal1", false);
|
||||||
|
fVeh.AddAttachment("weapondeal2", false);
|
||||||
InventoryManager.RemoveAllItemsfromVehicleInventory(fVeh);
|
InventoryManager.RemoveAllItemsfromVehicleInventory(fVeh);
|
||||||
int oMembers = NAPI.Pools.GetAllPlayers().Where(p => p.IsLoggedIn() && p.GetUser(context).FactionId == user.FactionId).Count();
|
int oMembers = NAPI.Pools.GetAllPlayers().Where(p => p.IsLoggedIn() && p.GetUser(context).FactionId == user.FactionId).Count();
|
||||||
|
|
||||||
|
|||||||
3
package-lock.json
generated
Normal file
3
package-lock.json
generated
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"lockfileVersion": 1
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user