Guida Item CambiaNome

Exco

Utente Gold
8 Agosto 2013
461
53
74
218
Come prima cosa apriamo il nostro progetto, e rechiamoci in ---> OpenNos.Handler.FamilyPacketHandler -> CreateFamily

C#:
else if (createFamilyPacket.CharacterName != null && Session.Character.Group == null && Session.Character.Inventory.Any(x => x.Item.VNum == 1638)) // Enter Item VNum
    if (createFamilyPacket.CharacterName.Length< 4 || createFamilyPacket.CharacterName.Length> 14)
    {
        Session.SendPacketFormat($"info {Language.Instance.GetMessageFromKey("INVALID_CHARNAME")}");
    }
    else
    {
        private Regex rg = new Regex(@"^[A-Za-z0-9_äÄöÖüÜß~*<>°+-.!_-Й¤£±†‡×ßø^\S]+$");
        if (rg.Matches(createFamilyPacket.CharacterName).Count == 1)
        {
            if (DAOFactory.CharacterDAO.LoadByName(createFamilyPacket.CharacterName) == null)
            {
                Session.Character.Name = createFamilyPacket.CharacterName;

                if (Session.Character.Miniland == Session.Character.MapInstance)
                {
                    ServerManager.Instance.JoinMiniland(Session, Session);
                }
                else
                {
                    ServerManager.Instance.ChangeMapInstance(Session.Character.CharacterId, Session.Character.MapInstanceId, Session.Character.PositionX, Session.Character.PositionY, true);
                    Session.SendPacket(StaticPacketHelper.Cancel(2));
                }

                Session.Character.Inventory.RemoveItemFromInventory(Session.Character.Inventory.LoadByVNum<ItemInstance>(1638).Id);
                Session.Character.Save();
            }
            else
            {
                Session.SendPacketFormat($"info {Language.Instance.GetMessageFromKey("ALREADY_TAKEN")}");
            }
        }
        else
        {
            Session.SendPacketFormat($"info {Language.Instance.GetMessageFromKey("INVALID_CHARNAME")}");
        }
    }
}



Subito dopo creiamo un nuovo Case per questo item in --> (OpenNos.GameObject.SpecialItem)

C#:
//Namechange
case 1638:
    if (session.Character.Group != null && session.Character.Inventory.Any(x => x.Item.VNum == 1638)) // Enter VNum
    {
        session.SendPacket(UserInterfaceHelper.GenerateMsg("Leave your group to change your name", 0));
    }
    else
    {
        session.SendPacket(UserInterfaceHelper.GenerateInbox($"#glmk^ 14 1 Charactername Charactername"));
    }
    break;

Ringrazione AfterLife per le fonti!