Spells inside spellbook not visible

Luke wyatt

Member
Jan 13, 2015
11
0
31
does anyone have any idea why when i set my private server to UOR expansion or lower my mage spells dont show inside my spellbook ingame. but they work if you macro them etc.
 

Attachments

Juzzver

Well-Known Member
Sep 17, 2013
187
18
Shard Name
Mythic World / Heavens Gate / Inceptum / NovaUO / Utopia / UOBG
Which server or servuo revision do you use?
 

Luke wyatt

Member
Jan 13, 2015
11
0
31
im useing servuo latest with UOR expansion enabled. this seems to be the problem because when i switch back to aos it works fine.
im new to all this so just looking for abit of help :)
 

Juzzver

Well-Known Member
Sep 17, 2013
187
18
Shard Name
Mythic World / Heavens Gate / Inceptum / NovaUO / Utopia / UOBG
Show your Scripts\Items\Equipment\Spellbooks\Spellbook.cs script, we will try to understand. And please specify your version of the client.
 
Last edited:

Juzzver

Well-Known Member
Sep 17, 2013
187
18
Shard Name
Mythic World / Heavens Gate / Inceptum / NovaUO / Utopia / UOBG
I think you trying to use ObjectPropertyList packets on Pre-AOS Eras, when this packets don't work, this may affect other packets.
Try check your Scripts\Misc\CurrentExpansion.cs
and if you will find something as this:
C#:
ObjectPropertyList.Enabled = true;
try to change this line to:
C#:
ObjectPropertyList.Enabled = Core.AOS;
 

Luke wyatt

Member
Jan 13, 2015
11
0
31
Sorry for the late reply I have been away
Thank you! I will have a look at that as soom as I'm home.
 

ArgentSmoke

Member
Sep 17, 2019
7
0
can also tweak spellbook.cs as so starting at line 806. Might cause other breakage somewhere down the line so will need testing.

//if (ObjectPropertyList.Enabled)
//{
// if (ns.NewSpellbook)
// {
// to.Send(new NewSpellbookContent(this, ItemID, BookOffset + 1, m_Content));
// }
// else
// {
// if (ns.ContainerGridLines)
// {
// to.Send(new SpellbookContent6017(m_Count, BookOffset + 1, m_Content, this));
// }
// else
// {
// to.Send(new SpellbookContent(m_Count, BookOffset + 1, m_Content, this));
// }
// }
//}
//else
//{
if (ns.ContainerGridLines)
{
to.Send(new SpellbookContent6017(m_Count, BookOffset + 1, m_Content, this));
}
else
{
to.Send(new SpellbookContent(m_Count, BookOffset + 1, m_Content, this));
}
//}
Post automatically merged:

If you're going this direction, the next challenge you'll have is in commodity deeds. The commoditydeed.cs doesn't even have an OnSingleClick handler, so you'll need to create one otherwise they'll simply show as empty or filled with no indication of commodity or amount
 

Luke wyatt

Member
Jan 13, 2015
11
0
31
I changed the objectproperty to core.AOS and its has fixxed the spellbook issue, but now the menu drop down on Mobiles does not work. as soon as you change back the object propertylist.enabled = core.aos and vise versa.
 

Luke wyatt

Member
Jan 13, 2015
11
0
31
I believe it may have something to do with this part. but i could be wrong :D
set it true and you get you single click props but not visible spells.
set it false and you loose your single click prop and spells are visible.

C#:
AOS.DisableStatInfluences();

            if (ObjectPropertyList.Enabled)
            {
                PacketHandlers.SingleClickProps = true; // single click for everything is overriden to check object property list
            }
Post automatically merged:

C#:
public virtual void AddProperty(ObjectPropertyList list)
        {
        }
i have also found this inside spellbook. left blank
 
Last edited:

Juzzver

Well-Known Member
Sep 17, 2013
187
18
Shard Name
Mythic World / Heavens Gate / Inceptum / NovaUO / Utopia / UOBG
I believe it may have something to do with this part. but i could be wrong :D
set it true and you get you single click props but not visible spells.
Look on ArgentSmoke answer. It's can resolve your problem.
 

Juzzver

Well-Known Member
Sep 17, 2013
187
18
Shard Name
Mythic World / Heavens Gate / Inceptum / NovaUO / Utopia / UOBG
I tested it, it's work for me on latest version of servuo. 1571708707093.png.
You need change your DispayTo method in Spellbook.cs to next:

C#:
        public void DisplayTo(Mobile to)
        {
            // The client must know about the spellbook or it will crash!
            NetState ns = to.NetState;

            if (ns == null)
            {
                return;
            }

            if (Parent == null)
            {
                to.Send(WorldPacket);
            }
            else if (Parent is Item)
            {
                // What will happen if the client doesn't know about our parent?
                if (ns.ContainerGridLines)
                {
                    to.Send(new ContainerContentUpdate6017(this));
                }
                else
                {
                    to.Send(new ContainerContentUpdate(this));
                }
            }
            else if (Parent is Mobile)
            {
                // What will happen if the client doesn't know about our parent?
                to.Send(new EquipUpdate(this));
            }

            if (ns.HighSeas)
            {
                to.Send(new DisplaySpellbookHS(this));
            }
            else
            {
                to.Send(new DisplaySpellbook(this));
            }

        /*    if (ObjectPropertyList.Enabled)
            {
                if (ns.NewSpellbook)
                {
                    to.Send(new NewSpellbookContent(this, ItemID, BookOffset + 1, m_Content));
                }
                else
                {
                    if (ns.ContainerGridLines)
                    {
                        to.Send(new SpellbookContent6017(m_Count, BookOffset + 1, m_Content, this));
                    }
                    else
                    {
                        to.Send(new SpellbookContent(m_Count, BookOffset + 1, m_Content, this));
                    }
                }
            }
            else
            {*/
                if (ns.ContainerGridLines)
                {
                    to.Send(new SpellbookContent6017(m_Count, BookOffset + 1, m_Content, this));
                }
                else
                {
                    to.Send(new SpellbookContent(m_Count, BookOffset + 1, m_Content, this));
                }
        //    }
        }
And enable your ObjectPropertyList if you dissabled it earlier.
ObjectPropertyList.Enabled = true;
 
  • Like
Reactions: Luke wyatt