Dezzie

Member
I added the Zhah script and I can add Queen Zhah in game but she doesn't have the talk option when you single click her, nor does she give you the quest when you double click her. The script compiled fine. I'm pasting it in here, maybe I need to add something?

using System;
using Server;
using Server.Items;
using Server.Mobiles;
using Server.Targeting;
using System.Collections;
using System.Collections.Generic;

namespace Server.Engines.Quests
{
public class AthenaeumIsleQuest : BaseQuest
{
/* Journey to the Athenaeum Isle */
public override object Title { get { return 1150929; } }

//Greetings, adventurer. <br><br> As you know, my people have suffered the incessant onslaught of the Void and its minions for as long as Gargish
//history exists. Protecting Ter Mur from the darkness, and its desire to consume the land completely, is a burden passed down from one ruler to
//another upon ascension to the throne. During my rule, I have been more successful than my predecessors but, now, I fear that the greatest evil both
//myself and my people have ever faced is about to return.<br><br> Long ago, Ter Mur was assaulted by the most formidable and horrid servant of the
//Void it had ever faced. Called Scelestus the Defiler, this daemon proved invincible to any weapon or spell that was utilized against him. I was unable
//to defeat him and was forced to imprison him instead. Sadly, my own daughter was caught in the spell and stands imprisoned next to the daemon. It has
//been this way for a thousand years now.<br><br> I have received word that the isle which houses the daemon, Athenaeum Isle, is once again swarming
//with daemons. Based on the description provided to me, I believe these are the minions of the Defiler himself. They have no doubt crawled out of the
//dark in anticipation of their master’s return. In truth, the prison I placed him within will not last forever.<br><br> I ask that you journey to
//the southwestern flight tower, adventurer, and head further southwest towards the shore. Near the water's edge, you will find an ancient teleport site
//which will transport you to the isle. Once there, please slay as many of these monsters as you can. Additionally, please keep your eye out for any
//documents that you may discover. This isle was the former home of our Great Library and, when it fell, not all of the documents and books were able to
//be taken to the new location here in the Royal City.<br><br> Slay the beasts and return to me any documents that you acquire.<br><br> Be careful,
//and go with honor.
public override object Description { get { return 1150902; } }

//Understood. Perhaps you are not as brave as I initially thought. Be on your way, then.
public override object Refuse { get { return 1150930; } }

//You have returned. Did you manage to slay the beasts and obtain any documents that may be of interest?
public override object Uncomplete { get { return 1150931; } }

//You have returned! I cannot thank you enough for the service you have done me, adventurer. <br><br> The documents that you have retrieved may seem
//unimportant to you, as they are naught but random letters and doctrines. But they each represent an echo of the past, musings of our ancestors. I had
//always meant to return to the former library and retrieve all that I could, but I had thought they were safe, gathering dust in the ruins. I will
//immediately have these cleaned and placed in the Great Library here in the Royal City.<br><br> As thanks, I offer you this book. It is the chronicle
//of my life, of the arrival of the Defiler, and a history of my people. In hopes that you will be granted further understanding of the impending danger
//we suffer, I offer it to you as a gesture of friendship and goodwill.<br><br> Thank you again, on behalf of the Gargoyle people. I may have need of your
//assistance at another time, should you be willing to come to my aid again.<br><br> Until then, farewell.
public override object Complete { get { return 1150903; } }

/*public override bool CanOffer()
{
return MondainsLegacy.TwistedWeald;
}*/

public AthenaeumIsleQuest()
: base()
{
this.AddObjective(new SlayObjective(typeof(MinionOfScelestus), "Minion of Scelestus ", 10));

this.AddObjective(new ObtainObjective(typeof(TheChallengeRite), "Obtain Gargish Document - Challenge Rite", 1, 0x0FF2));
this.AddObjective(new ObtainObjective(typeof(AthenaeumDecree), "Obtain Gargish Document - Athenaeum Decree", 1, 0x14ED));
this.AddObjective(new ObtainObjective(typeof(ALetterFromTheKing), "Obtain Gargish Document - Letter from the King", 1, 0x14ED));
this.AddObjective(new ObtainObjective(typeof(OnTheVoid), "Obtain Gargish Document - On the Void", 1, 0x0FF2));
this.AddObjective(new ObtainObjective(typeof(ShilaxrinarsMemorial), "Obtain Gargish Document - Shilaxrinar's Memorial", 1, 0x14ED));
this.AddObjective(new ObtainObjective(typeof(ToTheHighScholar), "Obtain Gargish Document - To the High Scholar", 1, 0x14ED));
this.AddObjective(new ObtainObjective(typeof(ToTheHighBroodmother), "Obtain Gargish Document - To the High Broodmother", 1, 0x14ED));
this.AddObjective(new ObtainObjective(typeof(ReplyToTheHighScholar), "Obtain Gargish Document - Reply to the High Scholar", 1, 0x14ED));
this.AddObjective(new ObtainObjective(typeof(AccessToTheIsle), "Obtain Gargish Document - Access to the Isle", 1, 0x14ED));
this.AddObjective(new ObtainObjective(typeof(InMemory), "Obtain Gargish Document - In Memory", 1, 0x0FF2));

this.AddReward(new BaseReward(typeof(ChronicleGargoyleQueenVolI), 1150914));
}

public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );

writer.Write( (int) 0 ); // version
}

public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );

int version = reader.ReadInt();
}
}

public class Zhah : MondainQuester
{
public override Type[] Quests{ get{ return new Type[]
{
//typeof(AthenaeumIsleQuest)
}; } }

[Constructable]
public Zhah()
: base("Zhah", "the Gargoyle Queen")
{
}

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

public override void InitBody()
{
this.Race = Race.Gargoyle;
this.InitStats(100, 100, 25);
this.Female = true;
this.Body = 667;

this.Hue = 0x431;
this.HairItemID = 0x42AB;
this.HairHue = 0x21;
}

public Item ApplyHue(Item item, int hue)
{
item.Hue = hue;

return item;
}

public override void InitOutfit()
{
this.AddItem(new Backpack());
this.AddItem(this.ApplyHue(new PlateTalons(), 0x8AB));
this.AddItem(this.ApplyHue(new FemaleGargishPlateKilt(), 0x8AB));
this.AddItem(this.ApplyHue(new FemaleGargishPlateChest(), 0x8AB));
this.AddItem(this.ApplyHue(new FemaleGargishPlateArms(), 0x8AB));
this.AddItem(this.ApplyHue(new GargishPlateWingArmor(), 0x8AB));
this.AddItem(this.ApplyHue(new GlassStaff(), 0x503));
}

public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );

writer.Write( (int) 0 ); // version
}

public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );

int version = reader.ReadInt();
}
}
}

Not sure how to make her talk.
 
/*begin ignoring this part, /* finish ignoring this part
//dont listen to this line of script

its all commented out..
 
yes, that's the way the other ones that work are done as well. Here is one that works, you'll see it's also commented out. I'm an idiot when it comes to scripts, that's why I have to bring everything here.

using System;
using Server.Items;
using Server.Targeting;
using Server.Mobiles;
using System.Collections;
using System.Collections.Generic;

namespace Server.Engines.Quests
{
public class TheExchangeQuest : BaseQuest
{
public TheExchangeQuest()
: base()

{
this.AddObjective(new ObtainObjective(typeof(WhiteChocolate), "White Chocolates", 5, 0xF11));
this.AddObjective(new ObtainObjective(typeof(DarkSapphire), "Dark Sapphire", 1, 0x3192));

this.AddReward(new BaseReward(typeof(AverageImbuingBag), 1113768));//Average Imbuing Bag
this.AddReward(new BaseReward("Loyalty Rating"));
}

/*The Exchange*/
public override object Title
{
get
{
return 1113777;
}
}
//Hello there! Hail and well met, and all of that. I must apologize in advance for being
//so impatient, but you must help me! You see, my mother and my eldest sister are visiting
//soon, and I haven’t seen them in quite awhile, so I want to present them both with a
//surprise when they arrive.<br><br>My sister absolutely adores white chocolate, but
//gargoyles don’t seem to care for it much, so I haven’t been able to find any here.
//It was recently my mother’s birthday, and I know that she would love some finely
//crafted gargish jewelry, but the jeweler hasn’t had her favorite jewel in stock for
//quite some time. If you could help me obtain five pieces of white chocolate and one
//dark sapphire, I will reward you with a bag of hard to obtain imbuing ingredients.
public override object Description
{
get
{
return 1113778;
}
}
//Oh, no, you must help me! Please say that you will!
public override object Refuse
{
get
{
return 1113779;
}
}
//Remember, I need five pieces of white chocolate, and one dark sapphire. Please do hurry!
public override object Uncomplete
{
get
{
return 1113780;
}
}
//Oh, thank you so very much! I cannot begin to thank you enough for helping me find
//these presents. Here is your reward. You’ll have to excuse me while I set this dark
//sapphire in a setting that will best highlight the cut. Farewell!
public override object Complete
{
get
{
return 1113781;
}
}
public override void GiveRewards()
{
if (Owner is PlayerMobile)
((PlayerMobile)Owner).Exp += 350;
Owner.SendMessage("You have been awarded 35 Queen's Loyalty Points!");
base.GiveRewards();
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);

writer.Write((int)0); // version
}

public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);

int version = reader.ReadInt();
}
}

public class AWorthyPropositionQuest : BaseQuest
{
public AWorthyPropositionQuest()
: base()
{
this.AddObjective(new ObtainObjective(typeof(BambooFlute), "Bamboo Flutes", 10, 0x2805));
this.AddObjective(new ObtainObjective(typeof(ElvenFletchings), "Elven Fletching", 1, 0x5737));

this.AddReward(new BaseReward(typeof(ValuableImbuingBag), 1113769));//Valuable Imbuing Bag
this.AddReward(new BaseReward("Loyalty Rating"));
}

/* A Worthy Proposition */
public override object Title
{
get
{
return 1113782;
}
}

//Hello, welcome to the shop. I don't own it, but the gargoyles here are as keen to
//learn from me as I am from them. They've been helping me with the work on my latest
//invention, but I am short some parts. Perhaps you could help me?<br><br>I have heard
//that the bamboo flutes of the Tokuno Islands are exceptionally strong for their weight,
//and nothing can beat elven fletching for strength in holding them together. If you
//would bring me, say, ten bamboo flutes and some elven fletching, I have some valuable
//imbuing ingredients I’ll give you in exchange. What do you say?
public override object Description
{
get
{
return 1113783;
}
}
//Well, if you change your mind, I’ll be here.
public override object Refuse
{
get
{
return 1113784;
}
}
//Hmm, what is that? Oh yes, I would like you to bring me ten bamboo flutes and some elven
//fletching for my fly… er, my invention.
public override object Uncomplete
{
get
{
return 1113785;
}
}
//These are of fine quality! I think they will work just fine to reinforce the floor of the
//basket. What’s that? Did I say basket? I meant, bakery! Yes, I am inventing a, um, floor
//for a bakery. There is a great need for that, you know! Ok, now please leave so I can get
//back to work. Thank you, bye, bye!
public override object Complete
{
get
{
return 1113786;
}
}
public override void GiveRewards()
{
if (Owner is PlayerMobile)
((PlayerMobile)Owner).Exp += 500;
Owner.SendMessage("You have been awarded 50 Queen's Loyalty Points!");
base.GiveRewards();
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);

writer.Write((int)0); // version
}

public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);

int version = reader.ReadInt();
}
}

public class Aliabeth : MondainQuester
{

public override void InitSBInfo()
{
this.SBInfos.Add(new SBTinker());
}

[Constructable]
public Aliabeth()
: base("Aliabeth", "the Tinker")
{
this.SetSkill(SkillName.Lockpicking, 60.0, 83.0);
this.SetSkill(SkillName.RemoveTrap, 75.0, 98.0);
this.SetSkill(SkillName.Tinkering, 64.0, 100.0);
}

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

public override Type[] Quests
{
get
{
return new Type[]
{
typeof(AWorthyPropositionQuest),
typeof(TheExchangeQuest),
};
}
}
public override void InitBody()
{
this.Female = true;
//this.CantWalk = true;
this.Race = Race.Human;

base.InitBody();
}
public override void InitOutfit()
{
this.AddItem(new Backpack());

this.AddItem(new Kilt(Utility.RandomNeutralHue()));
this.AddItem(new Shirt(Utility.RandomNeutralHue()));
this.AddItem(new Sandals());
}

public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);

writer.Write((int)0); // version
}

public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);

int version = reader.ReadInt();
}
}
}
 
Both of those scripts are referring to cliloc entry numbers. The commented-out text part is just there for your reference so you know what is being displayed to the player.
 
Both of those scripts are referring to cliloc entry numbers. The commented-out text part is just there for your reference so you know what is being displayed to the player.

Any idea why Zhah won't talk to the players?
 
Your Zhah.cs script has this line commented out:

Code:
typeof(AthenaeumIsleQuest)

Take away the // and she will probably work as intended. Without that info the server sees her as having no quest to offer.
 
Your Zhah.cs script has this line commented out:

Code:
typeof(AthenaeumIsleQuest)

Take away the // and she will probably work as intended. Without that info the server sees her as having no quest to offer.

Thank you so much, that worked perfectly!!
 

Active Shards

Donations

Total amount
$0.00
Goal
$1,000.00
Back