RunUO Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

BaseQuests Updated

Status
Not open for further replies.

Zebit

Wanderer
I found out a bug, with ants and bonded animal. If your bonded pet dies and walk over an acid pool you cannot resurrect it, becouse it continually dies.
 

Fury

Wanderer
Zebit said:
I found out a bug, with ants and bonded animal. If your bonded pet dies and walk over an acid pool you cannot resurrect it, becouse it continually dies.

Ill get that fixed, thanks
 

Philantrop

Sorceror
The Bracelet of Binding didn't show its attributes m_Charges (Charges) and m_Description (Inscription). Furthermore, I couldn't live with "binded" for "bound". This is a corrected version:

[code:1]
using System;
using Server.Network;
using Server.ContextMenus;
using System.Collections;
using Server.Targeting;
using Server.Prompts;

namespace Server.Items
{
public class BraceletOfBinding : Item
{
private string m_Description = "";
private Item m_Bound;
private int m_Charges;

[CommandProperty( AccessLevel.Counselor, AccessLevel.GameMaster )]
public int Charges
{
get
{
return m_Charges;
}
set
{
m_Charges = value;
InvalidateProperties();
}
}

[CommandProperty( AccessLevel.Counselor, AccessLevel.GameMaster )]
public string Description
{
get
{
return m_Description;
}
set
{
m_Description = value;
InvalidateProperties();
}
}

[CommandProperty( AccessLevel.Counselor, AccessLevel.GameMaster )]
public Item Bound
{
get
{
return m_Bound;
}
set
{
m_Bound = value;
InvalidateProperties();
}
}

[Constructable]
public BraceletOfBinding() : base(0x1086)
{
Weight = 0.5;
Name = "a bracelet of binding";
Hue = 0x489;
Layer = Layer.Bracelet;
}

public class ActivateEntry : ContextMenuEntry
{
private Mobile m_From;
private BraceletOfBinding m_BraceletOfBinding;
private Item m_Item;

public ActivateEntry( Mobile from, BraceletOfBinding braceletofbinding ) : base( 6170, 1 )
{
m_From = from;
m_BraceletOfBinding = braceletofbinding;
}

public override void OnClick()
{
if (m_BraceletOfBinding.Deleted || !m_BraceletOfBinding.Movable || !m_From.CheckAlive() )
return;

if ( !(m_BraceletOfBinding.Parent is Mobile) )
{
m_From.SendLocalizedMessage( 1054004 ); // Must be equiped to use
}
else
{
m_BraceletOfBinding.GoToTwin( m_From, m_BraceletOfBinding );
}
}
}

public class SearchEntry : ContextMenuEntry
{
private Mobile m_From;
private BraceletOfBinding m_BraceletOfBinding;
private Item m_Item;

public SearchEntry( Mobile from, BraceletOfBinding braceletofbinding ) : base( 6171, 1 )
{
m_From = from;
m_BraceletOfBinding = braceletofbinding;
}

public override void OnClick()
{
if (m_BraceletOfBinding.Deleted || !m_BraceletOfBinding.Movable || !m_From.CheckAlive() )
return;

if ( !(m_BraceletOfBinding.Parent is Mobile) )
{
m_From.SendLocalizedMessage( 1054004 ); // Must be equiped to use
}
else
{
m_BraceletOfBinding.SearchTwin( m_From, m_BraceletOfBinding );
}
}
}

public virtual void SearchTwin( Mobile from, BraceletOfBinding braceletofbinding )
{
Item twin = braceletofbinding.Bound;

if ( twin == null || !(twin.Parent is Mobile) )
{
from.SendLocalizedMessage( 1054006 );
}
else if ( ((Mobile)twin.Parent).Map != from.Map )
{
from.SendLocalizedMessage( 1054014 );
}
else
{
from.SendLocalizedMessage( 1054015 );
}
}

public virtual void GoToTwin( Mobile from, BraceletOfBinding braceletofbinding )
{
if ( braceletofbinding.Charges > 0 )
{
Item twin = braceletofbinding.Bound;

if ( twin == null || !(twin.Parent is Mobile) )
{
from.SendLocalizedMessage( 1054006 );
}
else if ( ((Mobile)twin.Parent).Map != from.Map )
{
from.SendLocalizedMessage( 1054014 );
}
else
{
from.SendLocalizedMessage( 1054015 );
Effects.SendLocationParticles( EffectItem.Create( from.Location, from.Map, EffectItem.DefaultDuration ), 0x3728, 10, 10, 2023 );
from.Location = ((Mobile)twin.Parent).Location;
from.PlaySound( 0x1FC );
braceletofbinding.Charges--;
}
}
else
{
from.SendLocalizedMessage( 1054005 );
}
}

public class BindEntry : ContextMenuEntry
{
private Mobile m_From;
private BraceletOfBinding m_BraceletOfBinding;
private Item m_Item;

public BindEntry( Mobile from, BraceletOfBinding braceletofbinding ) : base( 6173, 1 )
{
m_From = from;
m_BraceletOfBinding = braceletofbinding;
}

public override void OnClick()
{
if (m_BraceletOfBinding.Deleted || !m_BraceletOfBinding.Movable || !m_From.CheckAlive() )
return;

int number;

if ( !m_BraceletOfBinding.IsChildOf( m_From.Backpack ) )
{
number = 1042001; // That must be in your pack for you to use it.
}
else
{
number = 1054001; // Target BoB to bind to...
m_From.Target = new InternalTarget( m_BraceletOfBinding, m_Item );
}

m_From.SendLocalizedMessage( number );
}
}

public class InscribeEntry : ContextMenuEntry
{
private Mobile m_From;
private BraceletOfBinding m_BraceletOfBinding;

public InscribeEntry( Mobile from, BraceletOfBinding braceletofbinding ) : base( 6175, 1 )
{
m_From = from;
m_BraceletOfBinding = braceletofbinding;
}

public override void OnClick()
{
if (m_BraceletOfBinding.Deleted || !m_BraceletOfBinding.Movable || !m_From.CheckAlive() )
return;

int number;

if ( !m_BraceletOfBinding.IsChildOf( m_From.Backpack ) )
{
number = 1042001; // That must be in your pack for you to use it.
}
else
{
number = 1054009; // Please enter a description for this bracelet.
m_From.Prompt = new RenamePrompt( m_BraceletOfBinding );
}
m_From.SendLocalizedMessage( number );
}
}

private class InternalTarget : Target
{
private Item m_Item;
private BraceletOfBinding m_BraceletOfBinding;

public InternalTarget( BraceletOfBinding braceletofbinding, Item item ) : base ( 2, false, TargetFlags.None )
{
m_Item = item;
m_BraceletOfBinding = braceletofbinding;
}

protected override void OnTarget( Mobile from, object targeted )
{
if ( targeted is BraceletOfBinding )
{
if ( targeted == m_BraceletOfBinding )
{
from.SendLocalizedMessage( 1054012 );
}
else
{
BraceletOfBinding brace = (BraceletOfBinding)targeted;
m_BraceletOfBinding.Bound = brace;
from.SendLocalizedMessage( 1054003 );
from.PlaySound( 0x1FA );
}
}
else
{
from.SendLocalizedMessage( 1054002 );
}
}
}

private class RenamePrompt : Prompt
{
private BraceletOfBinding m_BraceletOfBinding;

public RenamePrompt( BraceletOfBinding braceletofbinding )
{
m_BraceletOfBinding = braceletofbinding;
}

public override void OnResponse( Mobile from, string text )
{
m_BraceletOfBinding.Description = text;
}
}

public override void GetContextMenuEntries( Mobile from, ArrayList list )
{
base.GetContextMenuEntries( from, list );

if ( from.Alive )
list.Add( new ActivateEntry( from, this ) );
if ( from.Alive )
list.Add( new SearchEntry( from, this ) );
if ( from.Alive )
list.Add( new BindEntry( from, this ) );
if ( from.Alive )
list.Add( new InscribeEntry( from, this ) );
}

public override void OnSingleClick( Mobile from )
{
string chrg = m_Charges.ToString();
string desc = m_Description;

if ( desc == null ) { desc = ""; }

LabelTo( from, 1054000, String.Format( "{0}\t{1}", m_Charges, m_Description ) );
}

public override void GetProperties( ObjectPropertyList list )
{
base.GetProperties( list );

list.Add( 1060658, "charges\t{0}", this.m_Charges ); // ~1_val~: ~2_val~

if (this.m_Description != "")
list.Add( 1060660, "inscription\t{0}", this.m_Description ); // ~1_val~: ~2_val~
}

public override void OnDoubleClick( Mobile from )
{
if ( !(this.Parent is Mobile) )
{
from.SendLocalizedMessage( 1054004 ); // Must be equiped to use
}
else
{
this.GoToTwin( from, this );
}
}

public BraceletOfBinding( Serial serial ) : base( serial )
{
}

public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version

writer.Write( (string) m_Description );
writer.Write( (Item) m_Bound );
writer.Write( (int) m_Charges );
}

public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();

switch ( version )
{
case 0:
{
m_Description = reader.ReadString();
m_Bound = reader.ReadItem();
m_Charges = reader.ReadInt();
break;
}
}
}
}
}
[/code:1]
 
yes

i did :) plus i merged about 50 other scripts with it LOL but tell u now bobsmarts world file scripts will have so many bugs when beta 37 comes out or what ever next release will be just for heads up :)

cause i plain on beening ready for next release when it comes :)
 

DeepFreez

Wanderer
Could you please give a list of things that changed. Or if you cant, would you please give such a list for the next release. would be much appreciated :)
 

Fury

Wanderer
changed acidpool.cs so dead bonded creatures dont get stuck in death loop.. altered braceletofbinding.cs and petsummonball.cs just those 3.
Current version is 1.6
 

JadeFist

Wanderer
I'm having a really difficult time integrating FullBaseQuests1.6 with Bobsmart's RunUOBeta36World. I followed the instructions from Fury's post here:
http://www.runuo.com/discussion/viewtopic.php?t=27553&highlight=
In addition, I removed Bobsmart's included plant system (PlantGrowingOSI2.0+) and edited SBProvisioner.cs to reflect the correct plant bowl: EmptyPlantBowl, instead of: SpecialPot.
I have a modified PlayerMobile.cs already so I manually changed it. I'm pretty sure the trouble area of my edit in PlayerMobile are these two sections:

At line 1505 PlayerMobile.cs:
[code:1] public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();

switch ( version )
{
case 15:
{
m_SolenFriend = (SolenFriend)reader.ReadInt();
m_CurrentQuest = (BaseQuest) reader.ReadItem();

Onshow = reader.ReadBool();
goto case 14;
}
case 14:[/code:1]


At line 1674 PlayerMobile.cs:
[code:1] base.Serialize( writer );

writer.Write( (int) 15 ); // version

writer.Write( (int)m_SolenFriend );
writer.Write( m_CurrentQuest );

writer.Write( (bool) Onshow );

writer.WriteEncodedInt( m_CompassionGains );[/code:1]

I have the "Onshow = reader.ReadBool();" and "writer.Write( (bool) Onshow );" edited in there to support the FuryMessaging1.5 scripts. I assume I'm screwing up the deserialize and serialize process? Here is the error:

[code:1]Scripts: Compiling C# scripts...done (0 errors, 0 warnings)
Scripts: Compiling VB.net scripts...no files found.
Scripts: Verifying...done (1548 items, 456 mobiles)
World: Loading...failed
Error: Type 'Server.Items.SpecialPot' was not found. Delete all of those types? (y/n)
y
World: Loading...failed
Error: Type 'Server.Items.BlueSeed' was not found. Delete all of those types? (y/n)
y
World: Loading...failed
Error: Type 'Server.Items.RedSeed' was not found. Delete all of those types? (y/n)
y
World: Loading...failed
Error: Type 'Server.Items.BRedSeed' was not found. Delete all of those types? (y/n)
y
World: Loading...failed
Error: Type 'Server.Items.PlainSeed' was not found. Delete all of those types? (y/n)
y
World: Loading...failed
Error: Type 'Server.Items.BBlueSeed' was not found. Delete all of those types? (y/n)
y
World: Loading...failed
Error: Type 'Server.Items.YellowSeed' was not found. Delete all of those types? (y/n)
y
World: Loading...failed
Error: Type 'Server.Items.BYellowSeed' was not found. Delete all of those types? (y/n)
y
World: Loading...failed
Error: Type 'Server.Items.SSeed' was not found. Delete all of those types? (y/n)
y
World: Loading...failed
Error: Type 'Server.Items.SpecialPotFull' was not found. Delete all of those types? (y/n)
y
World: Loading...An error was encountered while loading a saved object
- Type: Server.Mobiles.PlayerMobile
- Serial: 0x0000A97B
Delete the object? (y/n)
n
After pressing return an exception will be thrown and the server will terminate

Error:
System.Exception: Load failed (items=False, mobiles=True, guilds=False, regions=False, type=Server.Mobiles.PlayerMobile,
serial=0x0000A97B) ---> System.ArgumentOutOfRangeException: capacity was less than the current size.
Parameter name: capacity
at System.Collections.ArrayList..ctor(Int32 capacity)
at Server.BinaryFileReader.ReadMobileList()
at Server.Mobiles.PlayerMobile.Deserialize(GenericReader reader)
at Server.World.Load()
--- End of inner exception stack trace ---
at Server.World.Load()
at Server.ScriptCompiler.Compile(Boolean debug)
at Server.Core.Main(String[] args)
This exception is fatal, press return to exit[/code:1]

I've tried several times, but can't seem to work through the problem. I'm asking for help to anyone that will offer it, thanks in advance.
 

Fury

Wanderer
how did your playermobile serialize/deserialize look the last time it did compile without wanting to delete the players?
 

JadeFist

Wanderer
The same, just minus the Solen-related entries:

At line 1505 PlayerMobile.cs:
[code:1] public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();

switch ( version )
{
case 15:
{
Onshow = reader.ReadBool();
goto case 14;
}
case 14:[/code:1]


At line 1674 PlayerMobile.cs:
[code:1] base.Serialize( writer );

writer.Write( (int) 15 ); // version

writer.Write( (bool) Onshow );

writer.WriteEncodedInt( m_CompassionGains );[/code:1]



I really don't know that much, but should I have added another case and made the entries like this(?):

At line 1505 PlayerMobile.cs:
[code:1] public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();

switch ( version )
{
case 16:
{
m_SolenFriend = (SolenFriend)reader.ReadInt();
m_CurrentQuest = (BaseQuest) reader.ReadItem();
goto case 15;
}
case 15:[/code:1]


At line 1674 PlayerMobile.cs:
[code:1] base.Serialize( writer );

writer.Write( (int) 16 ); // version

writer.Write( (int)m_SolenFriend );
writer.Write( m_CurrentQuest );

writer.Write( (bool) Onshow );

writer.WriteEncodedInt( m_CompassionGains );[/code:1]
 

Fury

Wanderer
correct... it was trying to load your old case 15 but you changed case 15 so it wants to delete players... have to go up to 16 so next time yer server loads it loads case 15 but saves as case 16
 

JadeFist

Wanderer
Thanks for the replies! Things seem to be working after I restarted the server several times deleting saved items in the worldfile. I'll continue the testing process, many thanks :)
 
Status
Not open for further replies.
Top