Fix Inventory, add different Trunk sizes

This commit is contained in:
2021-04-14 03:08:55 +02:00
parent 5e4d5b1ece
commit 9684c36db7
20 changed files with 252 additions and 60 deletions

View File

@@ -26,10 +26,9 @@ export default function itemShopList(globalData: IGlobalData) {
function addItems(data) { function addItems(data) {
// Fill it // Fill it
for (const item of data) { for (const item of data) {
const tempItem = new UIMenuItem(item.Name, ""); const tempItem = new UIMenuItem(item.Name, item.Description);
tempItem.SetRightLabel(`${item.Price > 0 ? `$${item.Price}` : "FREE"}`); tempItem.SetRightLabel(`${item.Price > 0 ? `$${item.Price}` : "FREE"}`);
@@ -70,6 +69,8 @@ export default function itemShopList(globalData: IGlobalData) {
// Reset some variables // Reset some variables
currentMenuIdx = -1; currentMenuIdx = -1;
menuTransition = false; menuTransition = false;
items = [];
// Create a new main menu // Create a new main menu
@@ -84,6 +85,7 @@ export default function itemShopList(globalData: IGlobalData) {
// Main menu events // Main menu events
mainMenu.ItemSelect.on((selectedItem, itemIndex) => { mainMenu.ItemSelect.on((selectedItem, itemIndex) => {
const nextItem = items[itemIndex]; const nextItem = items[itemIndex];
mp.console.logInfo(JSON.stringify(items));
mp.events.callRemote("SERVER:BuyItems", nextItem.Name); mp.events.callRemote("SERVER:BuyItems", nextItem.Name);
}); });

View File

@@ -14,9 +14,7 @@
-ms-user-select: none; -ms-user-select: none;
user-select: none; user-select: none;
} }
div {
user-select: none;
}
body { body {
width: 100%; width: 100%;
@@ -618,8 +616,8 @@ t#tf_nameorid {
display: inline-block; display: inline-block;
font-size: 0.5vw; font-size: 0.5vw;
position: relative; position: relative;
left: 7.7vw; left: -7vw;
top: 1vw; top: 5vw;
color: #ffffff; color: #ffffff;
} }
@@ -633,8 +631,8 @@ t#tf_nameorid {
display: inline-block; display: inline-block;
font-size: 0.5vw; font-size: 0.5vw;
position: relative; position: relative;
left: 12.5vw; left: 5.5vw;
top: -0.3vw; top: -0.1vw;
color: #ffffff; color: #ffffff;
transition: 0.3s; transition: 0.3s;
} }
@@ -653,7 +651,7 @@ t#tf_nameorid {
display: inline-block; display: inline-block;
font-size: 0.5vw; font-size: 0.5vw;
position: relative; position: relative;
left: -5.4vw; left: 5.7vw;
top: 6vw; top: 6vw;
color: #ffffff; color: #ffffff;
transition: 0.3s; transition: 0.3s;

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@@ -62,7 +62,7 @@
<div name="vehClass" class="veh hidden"> <div name="vehClass" class="veh hidden">
<div class="main"> <div class="main">
<div class="title"> <div class="title">
<div class="titlecount"><span id="count2">0</span> / 250 Kilogramm</div> <div class="titlecount"><span id="count2">0</span> / <span id="trunkSize">0</span> Kilogramm</div>
<div class="titletext">Fahrzeug</div> <div class="titletext">Fahrzeug</div>
</div> </div>
<div class="Betrag4" style="display: none;"> <div class="Betrag4" style="display: none;">
@@ -193,9 +193,11 @@
mp.trigger("CEF:callVehicleInventory"); mp.trigger("CEF:callVehicleInventory");
} }
function setVehicleItems(jsonItemArr) { function setVehicleItems(jsonItemArr, trunkSize) {
var parsedItemArr = JSON.parse(jsonItemArr) var parsedItemArr = JSON.parse(jsonItemArr)
vehInv = []; vehInv = [];
$('#trunkSize').html(trunkSize / 1000);
for (var i = 0; i < parsedItemArr.length; i++) { for (var i = 0; i < parsedItemArr.length; i++) {
var item = parsedItemArr[i]; var item = parsedItemArr[i];
var newItem = { Name: item.Name, ID: item.ItemId, Amount: item.Amount, Category: 0 }; var newItem = { Name: item.Name, ID: item.ItemId, Amount: item.Amount, Category: 0 };
@@ -463,7 +465,7 @@
blueButtonImg.setAttribute("class", "blueImg"); blueButtonImg.setAttribute("class", "blueImg");
blueButton.appendChild(blueButtonImg); blueButton.appendChild(blueButtonImg);
var listLength = list.length; var listLength = list.getElementsByTagName("li").length;
var row = 1; var row = 1;
@@ -483,7 +485,7 @@
row = 6; row = 6;
} }
var Litem = document.createElement("div"); var Litem = document.createElement("li");
Litem.setAttribute("class", "item" + row); Litem.setAttribute("class", "item" + row);
Litem.setAttribute("id", i); Litem.setAttribute("id", i);
Litem.setAttribute("name", "List" + item.Category); Litem.setAttribute("name", "List" + item.Category);
@@ -505,7 +507,7 @@
while (child) { while (child) {
e.removeChild(child); e.removeChild(child);
child = e.lastElementChild; child = e.lastElementChild;
} console.log(handelInv); }
for (var i = 0; i < vehInv.length; i++) { for (var i = 0; i < vehInv.length; i++) {
var item = vehInv[i]; var item = vehInv[i];
@@ -533,7 +535,7 @@
blueButtonImg.setAttribute("class", "blueImg"); blueButtonImg.setAttribute("class", "blueImg");
blueButton.appendChild(blueButtonImg); blueButton.appendChild(blueButtonImg);
var listLength = list.length; var listLength = list.getElementsByTagName("li").length;
var row = 1; var row = 1;

View File

@@ -8,6 +8,7 @@
var offerItemArr; var offerItemArr;
var tradeItemArr; var tradeItemArr;
var vehItemArr; var vehItemArr;
var trunkSize;
var loaded = false; var loaded = false;
@@ -60,18 +61,24 @@
}); });
mp.events.addDataHandler("backpackItems", (entity: EntityMp, jsonItemArr) => { mp.events.addDataHandler("backpackItems", (entity: EntityMp, jsonItemArr) => {
if (entity.handle != mp.players.local.handle) return; if (entity != mp.players.local) return;
itemArr = JSON.parse(jsonItemArr); itemArr = JSON.parse(jsonItemArr);
if (loaded) if (loaded)
invBrowser.execute(`setBackpackItems('${JSON.stringify(itemArr)}',true)`); invBrowser.execute(`setBackpackItems('${JSON.stringify(itemArr)}',true)`);
}); });
mp.events.addDataHandler("setVehicleTrunk", (entity: EntityMp, size) => {
if (entity != mp.players.local) return;
trunkSize = size;
});
mp.events.addDataHandler("vehicleItems", (entity: EntityMp, jsonItemArr) => { mp.events.addDataHandler("vehicleItems", (entity: EntityMp, jsonItemArr) => {
if (entity != mp.players.local) return; if (entity != mp.players.local) return;
vehItemArr = JSON.parse(jsonItemArr); vehItemArr = JSON.parse(jsonItemArr);
if (loaded) if (loaded) {
invBrowser.execute(`setVehicleItems('${JSON.stringify(vehItemArr)}')`); invBrowser.execute(`setVehicleItems('${JSON.stringify(vehItemArr)}', '${trunkSize}')`);
}
}); });
mp.events.add("CEF:InventoryLoaded", () => { mp.events.add("CEF:InventoryLoaded", () => {
@@ -136,7 +143,6 @@
} }
}); });
mp.events.add("CEF:acceptTrade", () => { mp.events.add("CEF:acceptTrade", () => {
if (invBrowser !== null) { if (invBrowser !== null) {
mp.events.callRemote('acceptTrade'); mp.events.callRemote('acceptTrade');

View File

@@ -2250,6 +2250,91 @@ namespace ReallifeGamemode.Server.Commands
} }
} }
[Command("setshopitem", "~m~Benutzung: ~s~/setshopitem [Item ID]")]
public void CmdAdminSetItemInShop(Player player, int itemId)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
IItem item = InventoryManager.GetItemById(itemId);
if (item is null)
{
ChatService.ErrorMessage(player, "Item existiert nicht");
return;
}
ItemshopPoint nearestItemShopPoint = PositionManager.itemshopPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5);
if (nearestItemShopPoint is null)
{
ChatService.ErrorMessage(player, "Du bist nicht an einem Item Shop");
return;
}
using var dbContext = new DatabaseContext();
if (dbContext.ShopItems.Where(i => i.ShopId == nearestItemShopPoint.itemShop.id && i.ItemId == item.Id).FirstOrDefault() != null)
{
ChatService.ErrorMessage(player, "Item ist bereits im Shop");
return;
}
ShopItem shopItem = new ShopItem
{
ShopId = nearestItemShopPoint.itemShop.id,
ItemId = item.Id,
Amount = 20,
Price = item.Price
};
dbContext.ShopItems.Add(shopItem);
dbContext.SaveChanges();
nearestItemShopPoint.itemShop.LoadItems();
}
[Command("rmshopitem", "~m~Benutzung: ~s~/rmshopitem [Item ID]")]
public void CmdAdminRemoveItemInShop(Player player, int itemId)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
IItem item = InventoryManager.GetItemById(itemId);
if (item is null)
{
ChatService.ErrorMessage(player, "Item existiert nicht");
return;
}
ItemshopPoint nearestItemShopPoint = PositionManager.itemshopPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5);
if (nearestItemShopPoint is null)
{
ChatService.ErrorMessage(player, "Du bist nicht an einem Item Shop");
return;
}
using var dbContext = new DatabaseContext();
ShopItem shopItem = dbContext.ShopItems.Where(i => i.ShopId == nearestItemShopPoint.itemShop.id && i.ItemId == item.Id).FirstOrDefault();
if(shopItem is null)
{
return;
}
dbContext.ShopItems.Remove(shopItem);
dbContext.SaveChanges();
nearestItemShopPoint.itemShop.LoadItems();
}
[Command("inventory", "~m~Benutzung: ~s~/inventory [Spieler]")] [Command("inventory", "~m~Benutzung: ~s~/inventory [Spieler]")]
public void CmdAdminGiveItem(Player player, string targetname) public void CmdAdminGiveItem(Player player, string targetname)
{ {

View File

@@ -17,5 +17,116 @@ namespace ReallifeGamemode.Server.Extensions
{ {
return NAPI.Pools.GetAllPlayers().Where(p => p.Vehicle != null && p.Vehicle?.Handle == veh.Handle && p.VehicleSeat == 0).FirstOrDefault(); return NAPI.Pools.GetAllPlayers().Where(p => p.Vehicle != null && p.Vehicle?.Handle == veh.Handle && p.VehicleSeat == 0).FirstOrDefault();
} }
//https://wiki.rage.mp/index.php?title=Vehicle_Classes
public static int GetVehicleTrunkSize(this Vehicle vehicle)
{
switch (vehicle.Class)
{
case 0:
return 100 * 1000;
case 1:
return 180 * 1000;
case 2:
return 400 * 1000;
case 3:
return 210 * 1000;
case 4:
if ((VehicleHash)vehicle.HashCode == VehicleHash.Moonbeam
|| (VehicleHash)vehicle.HashCode == VehicleHash.Moonbeam2
|| (VehicleHash)vehicle.HashCode == VehicleHash.Ratloader
|| (VehicleHash)vehicle.HashCode == VehicleHash.Ratloader2
|| (VehicleHash)vehicle.HashCode == VehicleHash.Slamvan
|| (VehicleHash)vehicle.HashCode == VehicleHash.Slamvan2
|| (VehicleHash)vehicle.HashCode == VehicleHash.Slamvan3
|| (VehicleHash)vehicle.HashCode == VehicleHash.Yosemite
|| (VehicleHash)vehicle.HashCode == VehicleHash.Yosemite2
|| (VehicleHash)vehicle.HashCode == VehicleHash.Picador
|| (VehicleHash)vehicle.HashCode == VehicleHash.Moonbeam)
return 250 * 1000;
else
return 180 * 1000;
case 5:
if ((VehicleHash)vehicle.HashCode == VehicleHash.Fagaloa
|| (VehicleHash)vehicle.HashCode == VehicleHash.Cheburek)
return 200 * 1000;
else
return 110 * 1000;
case 6:
return 120 * 1000;
case 7:
return 80 * 1000;
case 8:
return 5 * 1000;
case 9:
if ((VehicleHash)vehicle.HashCode == VehicleHash.Bifta
|| (VehicleHash)vehicle.HashCode == VehicleHash.Blazer
|| (VehicleHash)vehicle.HashCode == VehicleHash.Blazer2
|| (VehicleHash)vehicle.HashCode == VehicleHash.Blazer3
|| (VehicleHash)vehicle.HashCode == VehicleHash.Blazer4
|| (VehicleHash)vehicle.HashCode == VehicleHash.Blazer5)
return 30 * 1000;
else
return 300 * 1000;
case 10:
return 2500 * 1000;
case 11:
return 0;
case 12:
if ((VehicleHash)vehicle.HashCode == VehicleHash.Minivan
|| (VehicleHash)vehicle.HashCode == VehicleHash.Minivan2
|| (VehicleHash)vehicle.HashCode == VehicleHash.Bobcatxl)
return 600 * 1000;
else
return 1000 * 1000;
case 13:
return 0;
case 14:
return 50 * 1000;
case 15:
return 0;
case 16:
return 0;
case 17:
return 0;
case 18:
if ((VehicleHash)vehicle.HashCode == VehicleHash.Policet)
return 1000 * 1000;
else if ((VehicleHash)vehicle.HashCode == VehicleHash.Firetruk
|| (VehicleHash)vehicle.HashCode == VehicleHash.Pbus
|| (VehicleHash)vehicle.HashCode == VehicleHash.Policeb
|| (VehicleHash)vehicle.HashCode == VehicleHash.Polmav
|| (VehicleHash)vehicle.HashCode == VehicleHash.Predator)
return 0;
else
return 150 * 1000;
case 19:
return 0;
case 20:
return 2500 * 1000;
}
return 0;
}
} }
} }

View File

@@ -12,7 +12,7 @@ namespace ReallifeGamemode.Server.Inventory.Items
{ {
public override int Id => 101; public override int Id => 101;
public override string Name => "Apfel"; public override string Name => "Apfel";
public override string Description => "Ein Apfel"; public override string Description => "Ein Apfel.";
public override int Gewicht => 200; public override int Gewicht => 200;
public override string Einheit => "g"; public override string Einheit => "g";
public override int HpAmount => 10; public override int HpAmount => 10;

View File

@@ -8,7 +8,7 @@ using ReallifeGamemode.Server.Managers;
namespace ReallifeGamemode.Server.Inventory.Items namespace ReallifeGamemode.Server.Inventory.Items
{ {
internal class AChips : ConsumableItem internal class AviateChips : ConsumableItem
{ {
public override int Id => 104; public override int Id => 104;
public override string Name => "aviates Chips"; public override string Name => "aviates Chips";

View File

@@ -17,7 +17,7 @@ namespace ReallifeGamemode.Server.Inventory.Items
public override string Einheit => "g"; public override string Einheit => "g";
public override int HpAmount => 30; public override int HpAmount => 30;
public override uint Object => 2240524752; public override uint Object => 2240524752;
public override int Price => 300; public override int Price => 600;
public override float Cooldown => 20000; public override float Cooldown => 20000;

View File

@@ -15,12 +15,12 @@ namespace ReallifeGamemode.Server.Inventory.Items
{ {
public override int Id => 103; public override int Id => 103;
public override string Name => "Cheeseburger"; public override string Name => "Cheeseburger";
public override string Description => "Ein Burger"; public override string Description => "Extra käsig.";
public override int Gewicht => 120; public override int Gewicht => 120;
public override string Einheit => "g"; public override string Einheit => "g";
public override int HpAmount => 20; public override int HpAmount => 20;
public override uint Object => 2240524752; public override uint Object => 2240524752;
public override int Price => 150; public override int Price => 500;
public override float Cooldown => 7000; public override float Cooldown => 7000;
public override void Consume(UserItem uItem) public override void Consume(UserItem uItem)

View File

@@ -12,7 +12,7 @@ namespace ReallifeGamemode.Server.Inventory.Items
{ {
public override int Id => 100; public override int Id => 100;
public override string Name => "Chips"; public override string Name => "Chips";
public override string Description => "Eine tüte Chips"; public override string Description => "80% Luft, 20% Verpackung.";
public override int Gewicht => 180; public override int Gewicht => 180;
public override string Einheit => "g"; public override string Einheit => "g";
public override int HpAmount => 5; public override int HpAmount => 5;

View File

@@ -17,9 +17,9 @@ namespace ReallifeGamemode.Server.Inventory.Items
public override string Einheit => "g"; public override string Einheit => "g";
public override int HpAmount => 80; public override int HpAmount => 80;
public override uint Object => 2240524752; public override uint Object => 2240524752;
public override int Price => 50000; public override int Price => 1800;
public override float Cooldown => 15000; public override float Cooldown => 50000;
public override void Consume(UserItem uItem) public override void Consume(UserItem uItem)
{ {

View File

@@ -8,6 +8,6 @@
public override int Gewicht => 10; public override int Gewicht => 10;
public override string Einheit => "g"; public override string Einheit => "g";
public override uint Object => 875075437; public override uint Object => 875075437;
public override int Price => 0; public override int Price => 500;
} }
} }

View File

@@ -345,8 +345,7 @@ namespace ReallifeGamemode.Server.Job
if (type == PROFESSIONAL && user.BusSkill < SKILL_PROFESSIONAL) { player.TriggerEvent("MenuSelect:Error"); return; } if (type == PROFESSIONAL && user.BusSkill < SKILL_PROFESSIONAL) { player.TriggerEvent("MenuSelect:Error"); return; }
List<Vector3> selectedRoute = new List<Vector3>(); List<Vector3> selectedRoute = new List<Vector3>();
int index = -1; int index;
if (playerRouteCurrent.ContainsKey(player.Name)) if (playerRouteCurrent.ContainsKey(player.Name))
{ {
index = getPlayerRouteInex(player); index = getPlayerRouteInex(player);
@@ -640,8 +639,6 @@ namespace ReallifeGamemode.Server.Job
player.SendChatMessage($"~y~[JOB]: ~w~Du kannst jetzt auch mit dem Tourbus fahren!"); player.SendChatMessage($"~y~[JOB]: ~w~Du kannst jetzt auch mit dem Tourbus fahren!");
} }
BusDriverJob job = JobManager.GetJob<BusDriverJob>();
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
} }

View File

@@ -36,8 +36,6 @@ namespace ReallifeGamemode.Server.Managers
public static Dictionary<Player, PlayerTimer> itemCooldown = new Dictionary<Player, PlayerTimer>(); public static Dictionary<Player, PlayerTimer> itemCooldown = new Dictionary<Player, PlayerTimer>();
private static Timer aTimer;
public class InventoryItem public class InventoryItem
{ {
public string Name; public string Name;
@@ -90,7 +88,7 @@ namespace ReallifeGamemode.Server.Managers
{ {
ServerVehicle carlocked = veh.GetServerVehicle(dbContext); ServerVehicle carlocked = veh.GetServerVehicle(dbContext);
if (carlocked.Locked == true) if (carlocked == null || carlocked.Locked == true)
{ {
player.TriggerEvent("Error", "Das Fahrzeug ist abgeschlossen!"); player.TriggerEvent("Error", "Das Fahrzeug ist abgeschlossen!");
return; return;
@@ -123,7 +121,7 @@ namespace ReallifeGamemode.Server.Managers
}; };
vehicleItems[player].Add(newItem); vehicleItems[player].Add(newItem);
} }
player.SetSharedData("setVehicleTrunk", veh.GetVehicleTrunkSize());
player.SetSharedData("vehicleItems", JsonConvert.SerializeObject(vehicleItems[player].ToArray())); player.SetSharedData("vehicleItems", JsonConvert.SerializeObject(vehicleItems[player].ToArray()));
} }
@@ -367,7 +365,7 @@ namespace ReallifeGamemode.Server.Managers
RemoveUserItem(user, item, itemAmount); RemoveUserItem(user, item, itemAmount);
AddItemToVehicleInventory(veh, itemID, itemAmount); AddItemToVehicleInventory(veh, itemID, itemAmount);
SetVehicleItems(player); SetBackpackItems(player);
VehicleItem vehicleItem = context.VehicleItems.Where(f => f.ItemId == itemID && f.Vehicle == VehicleManager.GetServerVehicleFromVehicle(veh, context)).FirstOrDefault(); VehicleItem vehicleItem = context.VehicleItems.Where(f => f.ItemId == itemID && f.Vehicle == VehicleManager.GetServerVehicleFromVehicle(veh, context)).FirstOrDefault();
context.SaveChanges(); context.SaveChanges();
IItem iItem = GetItemById(itemID); IItem iItem = GetItemById(itemID);
@@ -428,7 +426,7 @@ namespace ReallifeGamemode.Server.Managers
int setAmount = 0; int setAmount = 0;
for (int i = 1; i <= amount; i++) for (int i = 1; i <= amount; i++)
{ {
if (GetVehicleInventoryWeight(veh) + (i * GetItemById(itemId).Gewicht) > 200000) if (GetVehicleInventoryWeight(veh) + (i * GetItemById(itemId).Gewicht) > veh.GetVehicleTrunkSize())
{ {
break; break;
} }

View File

@@ -155,7 +155,6 @@ namespace ReallifeGamemode.Server.Managers
[ServerEvent(Event.PlayerExitVehicle)] [ServerEvent(Event.PlayerExitVehicle)]
public void JobManagerPlayerExitVehicle(Player player, Vehicle veh) public void JobManagerPlayerExitVehicle(Player player, Vehicle veh)
{ {
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(veh);
User u = player.GetUser(); User u = player.GetUser();
if (u.JobId == null) return; if (u.JobId == null) return;

View File

@@ -9,10 +9,6 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Timers; using System.Timers;
using System.Threading.Tasks;
namespace ReallifeGamemode.Server.Managers namespace ReallifeGamemode.Server.Managers
{ {
@@ -811,7 +807,6 @@ namespace ReallifeGamemode.Server.Managers
v.SetSharedData("drivenDistance", (float)distanceDriven); v.SetSharedData("drivenDistance", (float)distanceDriven);
}); });
if (DateTime.UtcNow.Subtract(lastSave).Seconds >= 30) if (DateTime.UtcNow.Subtract(lastSave).Seconds >= 30)
{ {
lastSave = DateTime.UtcNow; lastSave = DateTime.UtcNow;
@@ -902,7 +897,6 @@ namespace ReallifeGamemode.Server.Managers
foreach (KeyValuePair<int, NetHandle> pair in _serverVehicles) foreach (KeyValuePair<int, NetHandle> pair in _serverVehicles)
{ {
if (pair.Value == veh.Handle) if (pair.Value == veh.Handle)
{ {
return dbContext.ServerVehicles.Find(pair.Key); return dbContext.ServerVehicles.Find(pair.Key);