/// <summary> /// Pokazywanie statystyk gracza. /// </summary> /// <param name="charData"></param> /// <param name="targetData"></param> public static void ShowStats(Character charData, Character targetData) { if (charData == null || targetData == null) { return; } List <DialogColumn> dialogColumns = new List <DialogColumn> { new DialogColumn("", 45), new DialogColumn("", 45) }; List <DialogRow> dialogRows = new List <DialogRow> { new DialogRow(null, new[] { "Postać", $"{targetData.Name} {targetData.Lastname} ({targetData.Id})" }), new DialogRow(null, new[] { "Konto globalne", $"{GetPlayerOocName(targetData)} ({targetData.MemberId})" }), new DialogRow(null, new[] { "Płeć", targetData.Sex == CharSex.Male ? "Mężczyzna" : "Kobieta" }), new DialogRow(null, new[] { "Portfel", $"${targetData.Cash:0,0}" }), new DialogRow(null, new[] { "Konto bankowe", $"${targetData.AccountBalance:0,0}" }), new DialogRow(null, new[] { "Czas online", Global.GetFormattedTime(targetData.OnlineTime) }), new DialogRow(null, new[] { "Czas BW", targetData.BwTime == 0 ? "n/d" : Global.GetFormattedTime(targetData.BwTime, true) }), new DialogRow(null, new[] { "Czas AJ", targetData.AdminJailTime == 0 ? "n/d" : Global.GetFormattedTime(targetData.AdminJailTime, true) }), new DialogRow(null, new[] { "VirtualWorld", targetData.PlayerHandle.Dimension.ToString() }), new DialogRow(null, new[] { "DNA", targetData.Dna }), new DialogRow(null, new[] { "mDNA", targetData.ShortDna }), new DialogRow(null, new[] { "HP", $"{targetData.PlayerHandle.Health}%" }), new DialogRow(null, new[] { "Ilość logowań", targetData.LoginCount.ToString() }), new DialogRow(null, new[] { "IP", targetData.PlayerHandle.Address }), new DialogRow(null, new[] { "", "" }), new DialogRow(null, new[] { "Grupy gracza", "" }) }; List <GroupMember> playerGroups = Library.GetPlayerGroups(targetData.PlayerHandle); if (playerGroups != null) { foreach (GroupMember entry in playerGroups) { Group groupData = Library.GetGroupData(entry.GroupId); if (groupData == null) { continue; } dialogRows.Add(new DialogRow(null, new[] { $"{groupData.Name} ({groupData.Id})", entry.RankName })); } } else { dialogRows.Add(new DialogRow(null, new[] { "Brak grup.", "---" })); } string[] dialogButtons = { "Zamknij" }; Features.Dialogs.Library.CreateDialog(charData.PlayerHandle, DialogId.None, "Statystyki gracza", dialogColumns, dialogRows, dialogButtons); }
/// <summary> /// Spawnuje danego gracza /// </summary> /// <param name="player"></param> public static void SpawnPlayer(Client player) { Character charData = Account.GetPlayerData(player); if (charData == null) { return; } if (!BuildPlayerSkin(charData)) { return; } // BuildPlayerFace(charData); // TODO: GeneratePlayerDescriptions player.TriggerEvent("client.money.update", charData.Cash); if (charData.AdminJailTime > 0) { NAPI.Player.SpawnPlayer(player, AjPosition); player.Dimension = (uint)new Random().Next(25000, 35000); Log.LogPlayer(player, $"Spawn w AJ. Pozostały czas: {charData.AdminJailTime} s.", LogType.SpawnPlayer); } else if (charData.BwTime > 0) { NAPI.Player.SpawnPlayer(player, new Vector3(charData.LastX, charData.LastY, charData.LastZ)); player.Dimension = (uint)charData.Dimension; Features.Bw.Library.SetPlayerBw(charData, charData.BwTime); Log.LogPlayer(player, $"Spawn z BW na ostatniej pozycji. Pozostały czas: {charData.BwTime} s.", LogType.SpawnPlayer); } else { if (charData.DetentionDoorId != 0) { // TODO: przetrzymanie } else { if (Global.GetTimestamp() - charData.LastLogin < 600) { NAPI.Player.SpawnPlayer(player, new Vector3(charData.LastX, charData.LastY, charData.LastZ)); player.Dimension = (uint)charData.Dimension; Log.LogPlayer(player, "Spawn na ostatniej pozycji.", LogType.SpawnPlayer); } else { if (charData.SpawnType == 0) // Spawn domyślny { NAPI.Player.SpawnPlayer(player, DefaultSpawnPosition); player.Dimension = 0; Log.LogPlayer(player, "Spawn na domyślnej pozycji.", LogType.SpawnPlayer); } else if (charData.SpawnType == 1) // Spawn grupy { Group groupData = Library.GetGroupData(charData.SpawnInfo); if (groupData != null) { if (Math.Floor(groupData.SpawnX) > 0 || Math.Floor(groupData.SpawnX) < 0) { Log.LogPlayer(player, $"Spawn na pozycji grupowej {groupData.Name} (UID: {groupData.Id}).", LogType.SpawnPlayer); NAPI.Player.SpawnPlayer(player, new Vector3(groupData.SpawnX, groupData.SpawnY, groupData.SpawnZ)); player.Dimension = (uint)groupData.SpawnDimension; } else { charData.SpawnType = 0; charData.SpawnInfo = 0; // ReSharper disable once TailRecursiveCall SpawnPlayer(player); } } else { charData.SpawnType = 0; charData.SpawnInfo = 0; // ReSharper disable once TailRecursiveCall SpawnPlayer(player); } } else if (charData.SpawnType == 2) // Spawn w domu { SendFormattedChatMessage(charData.PlayerHandle, "Spawn w domu nie jest zakodzony. :c", Constants.ColorPictonBlue); // TODO Spawn w domu } else if (charData.SpawnType == 3) // Spawn w hotelu { SendFormattedChatMessage(charData.PlayerHandle, "Spawn w hotelu nie jest zakodzony. :c", Constants.ColorPictonBlue); // TODO Spawn w hotelu } } } } }