Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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
                        }
                    }
                }
            }
        }