Merge branch 'hotfix/hanf' into develop
This commit is contained in:
@@ -333,50 +333,61 @@ export default function hanfSystem(globalData: IGlobalData) {
|
|||||||
let hanfDataIdToObjectMap: Map<number, ObjectMp> = new Map<number, ObjectMp>();
|
let hanfDataIdToObjectMap: Map<number, ObjectMp> = new Map<number, ObjectMp>();
|
||||||
let hanfDataIdToTextLabelMap: Map<number, TextLabelMp> = new Map<number, TextLabelMp>();
|
let hanfDataIdToTextLabelMap: Map<number, TextLabelMp> = new Map<number, TextLabelMp>();
|
||||||
|
|
||||||
mp.events.add("SERVER:Hanf_UpdateHanf", (dataJsonArr: string[]) => {
|
let currentHanfUpdateJsonData: Map<number, string> = new Map<number, string>();
|
||||||
var dataJson = dataJsonArr.join('');
|
|
||||||
var data: Array<CannabisData> = <Array<CannabisData>>JSON.parse(dataJson)
|
|
||||||
|
|
||||||
var newPlants = data.filter(d => currentHanfData.filter(x => x.Id === d.Id).length == 0);
|
mp.events.add("SERVER:Hanf_UpdateHanf", (currentIndex: number, totalData: number, currentData: string) => {
|
||||||
var removedPlants = currentHanfData.filter(d => data.filter(x => x.Id === d.Id).length == 0);
|
currentHanfUpdateJsonData.set(currentIndex, currentData);
|
||||||
var existingPlants = data.filter(d => currentHanfData.filter(x => x.Id === d.Id).length == 1);
|
if (currentHanfUpdateJsonData.size == totalData) {
|
||||||
|
var jsonData: string = "";
|
||||||
newPlants.forEach(plant => {
|
for (var i = 0; i < totalData; i++) {
|
||||||
var model = getPlantModel(plant);
|
jsonData += currentHanfUpdateJsonData.get(i);
|
||||||
var object = mp.objects.new(getPlantModel(plant), new mp.Vector3(plant.X, plant.Y, plant.Z));
|
|
||||||
hanfDataIdToObjectMap.set(plant.Id, object);
|
|
||||||
|
|
||||||
var textLabel = mp.labels.new(getPlantText(plant), new mp.Vector3(plant.X, plant.Y, plant.Z + 1), {
|
|
||||||
los: true,
|
|
||||||
drawDistance: 2
|
|
||||||
});
|
|
||||||
hanfDataIdToTextLabelMap.set(plant.Id, textLabel);
|
|
||||||
});
|
|
||||||
|
|
||||||
removedPlants.forEach(plant => {
|
|
||||||
var object = hanfDataIdToObjectMap.get(plant.Id);
|
|
||||||
hanfDataIdToObjectMap.delete(plant.Id);
|
|
||||||
object.destroy();
|
|
||||||
var textLabel = hanfDataIdToTextLabelMap.get(plant.Id);
|
|
||||||
textLabel.destroy();
|
|
||||||
hanfDataIdToTextLabelMap.delete(plant.Id);
|
|
||||||
});
|
|
||||||
|
|
||||||
existingPlants.forEach(plant => {
|
|
||||||
var object = hanfDataIdToObjectMap.get(plant.Id);
|
|
||||||
var model = getPlantModel(plant);
|
|
||||||
if (model != object.model) {
|
|
||||||
object.destroy();
|
|
||||||
var object = mp.objects.new(model, new mp.Vector3(plant.X, plant.Y, plant.Z));
|
|
||||||
hanfDataIdToObjectMap.delete(plant.Id);
|
|
||||||
hanfDataIdToObjectMap.set(plant.Id, object);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var textLabel = hanfDataIdToTextLabelMap.get(plant.Id);
|
currentHanfUpdateJsonData.clear();
|
||||||
textLabel.text = getPlantText(plant);
|
|
||||||
});
|
|
||||||
|
|
||||||
currentHanfData = data;
|
var data: Array<CannabisData> = <Array<CannabisData>>JSON.parse(jsonData)
|
||||||
|
|
||||||
|
var newPlants = data.filter(d => currentHanfData.filter(x => x.Id === d.Id).length == 0);
|
||||||
|
var removedPlants = currentHanfData.filter(d => data.filter(x => x.Id === d.Id).length == 0);
|
||||||
|
var existingPlants = data.filter(d => currentHanfData.filter(x => x.Id === d.Id).length == 1);
|
||||||
|
|
||||||
|
newPlants.forEach(plant => {
|
||||||
|
var model = getPlantModel(plant);
|
||||||
|
var object = mp.objects.new(getPlantModel(plant), new mp.Vector3(plant.X, plant.Y, plant.Z));
|
||||||
|
hanfDataIdToObjectMap.set(plant.Id, object);
|
||||||
|
|
||||||
|
var textLabel = mp.labels.new(getPlantText(plant), new mp.Vector3(plant.X, plant.Y, plant.Z + 1), {
|
||||||
|
los: true,
|
||||||
|
drawDistance: 2
|
||||||
|
});
|
||||||
|
hanfDataIdToTextLabelMap.set(plant.Id, textLabel);
|
||||||
|
});
|
||||||
|
|
||||||
|
removedPlants.forEach(plant => {
|
||||||
|
var object = hanfDataIdToObjectMap.get(plant.Id);
|
||||||
|
hanfDataIdToObjectMap.delete(plant.Id);
|
||||||
|
object.destroy();
|
||||||
|
var textLabel = hanfDataIdToTextLabelMap.get(plant.Id);
|
||||||
|
textLabel.destroy();
|
||||||
|
hanfDataIdToTextLabelMap.delete(plant.Id);
|
||||||
|
});
|
||||||
|
|
||||||
|
existingPlants.forEach(plant => {
|
||||||
|
var object = hanfDataIdToObjectMap.get(plant.Id);
|
||||||
|
var model = getPlantModel(plant);
|
||||||
|
if (model != object.model) {
|
||||||
|
object.destroy();
|
||||||
|
var object = mp.objects.new(model, new mp.Vector3(plant.X, plant.Y, plant.Z));
|
||||||
|
hanfDataIdToObjectMap.delete(plant.Id);
|
||||||
|
hanfDataIdToObjectMap.set(plant.Id, object);
|
||||||
|
}
|
||||||
|
|
||||||
|
var textLabel = hanfDataIdToTextLabelMap.get(plant.Id);
|
||||||
|
textLabel.text = getPlantText(plant);
|
||||||
|
});
|
||||||
|
|
||||||
|
currentHanfData = data;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function getPlantModel(plant: CannabisData): number {
|
function getPlantModel(plant: CannabisData): number {
|
||||||
|
|||||||
@@ -281,21 +281,29 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
_currentCannabisData = activePlants;
|
_currentCannabisData = activePlants;
|
||||||
|
UpdateHanfForPlayer();
|
||||||
NAPI.Pools.GetAllPlayers().ForEach(p =>
|
|
||||||
{
|
|
||||||
UpdateHanfForPlayer(p, activePlants);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void UpdateHanfForPlayer(Player player, List<CannabisData> cannabisData = null)
|
public static void UpdateHanfForPlayer(Player player = null, List<CannabisData> cannabisData = null)
|
||||||
{
|
{
|
||||||
cannabisData ??= _currentCannabisData;
|
cannabisData ??= _currentCannabisData;
|
||||||
|
|
||||||
string jsonStr = JsonConvert.SerializeObject(cannabisData);
|
string jsonStr = JsonConvert.SerializeObject(cannabisData);
|
||||||
List<string> parts = GetChunks(jsonStr, 500);
|
string[] parts = GetChunks(jsonStr, 5000).ToArray();
|
||||||
|
|
||||||
player.TriggerEvent("SERVER:Hanf_UpdateHanf", parts);
|
int totalData = parts.Length;
|
||||||
|
|
||||||
|
for (int i = 0; i < totalData; i++)
|
||||||
|
{
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
player.TriggerEvent("SERVER:Hanf_UpdateHanf", i, totalData, parts[i]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NAPI.ClientEvent.TriggerClientEventForAll("SERVER:Hanf_UpdateHanf", i, totalData, parts[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<string> GetChunks(string value, int chunkSize)
|
public static List<string> GetChunks(string value, int chunkSize)
|
||||||
@@ -648,6 +656,8 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
InventoryManager.RemoveUserItem(user, cannabisUserItem, amount);
|
InventoryManager.RemoveUserItem(user, cannabisUserItem, amount);
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
|
|
||||||
|
dbContext.SaveChanges();
|
||||||
|
|
||||||
logger.LogInformation("Player {0} sold {1} cannabis to the server for {2} dollars", player.Name, amount, price);
|
logger.LogInformation("Player {0} sold {1} cannabis to the server for {2} dollars", player.Name, amount, price);
|
||||||
|
|
||||||
player.SendNotification($"Du hast ~g~{amount} Hanfblüten~s~ für ~g~{price.ToMoneyString()}~s~ verkauft");
|
player.SendNotification($"Du hast ~g~{amount} Hanfblüten~s~ für ~g~{price.ToMoneyString()}~s~ verkauft");
|
||||||
|
|||||||
@@ -15,9 +15,10 @@ namespace ReallifeGamemode.Server.Util
|
|||||||
{ "iCroniX", "Life of Malle - Eimer für Alle - Alle für Malle - Böllern! (CroniX)" },
|
{ "iCroniX", "Life of Malle - Eimer für Alle - Alle für Malle - Böllern! (CroniX)" },
|
||||||
{ "balboistderbeste", "Hurra! Hurra! Der Balbo ist jetzt da! (balbo)" },
|
{ "balboistderbeste", "Hurra! Hurra! Der Balbo ist jetzt da! (balbo)" },
|
||||||
{ "AirMake", "The fresh breeze of the stone is back. (AirMake)" },
|
{ "AirMake", "The fresh breeze of the stone is back. (AirMake)" },
|
||||||
{ "raviatex", "I'll remember you all in therapy. (aviate)" },
|
{ "raviatex", "was zitterstn so (aviate)" },
|
||||||
{ "datgame__", "KOPF ENTWICKLUNG!! (hydrant)" },
|
{ "datgame__", "ja (hydrant)" },
|
||||||
{ "Roachkook", "2head Entwickler ist wieder online (kookroach)" }
|
{ "Roachkook", "2head Entwickler ist wieder online (kookroach)" },
|
||||||
|
{ "Prelex", "zigaretten (Makkaroni)" }
|
||||||
};
|
};
|
||||||
|
|
||||||
public static int newbiePlayedMinutesThreshold = 30 * 60;
|
public static int newbiePlayedMinutesThreshold = 30 * 60;
|
||||||
|
|||||||
Reference in New Issue
Block a user