Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
@@ -0,0 +1,690 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
using Server.Mobiles;
|
||||
using Server.Prompts;
|
||||
using Server.Targeting;
|
||||
using Server.Engines.XmlSpawner2;
|
||||
|
||||
|
||||
namespace Server.Gumps
|
||||
{
|
||||
|
||||
public class XmlQuestStatusGump : Gump
|
||||
{
|
||||
public static string Color(string text, string color)
|
||||
{
|
||||
return String.Format("<BASEFONT COLOR=#{0}>{1}</BASEFONT>", color, text);
|
||||
}
|
||||
|
||||
|
||||
public void DisplayQuestStatus(int x, int y, string objectivestr, string statestr, bool status, string descriptionstr)
|
||||
{
|
||||
if (objectivestr != null && objectivestr.Length > 0)
|
||||
{
|
||||
// look for special keywords
|
||||
string[] arglist = BaseXmlSpawner.ParseString(objectivestr, 5, ",");
|
||||
int targetcount = 1;
|
||||
bool foundkill = false;
|
||||
bool foundcollect = false;
|
||||
bool foundgive = false;
|
||||
bool foundescort = false;
|
||||
string name = null;
|
||||
string mobname = null;
|
||||
string type = null;
|
||||
|
||||
string status_str;
|
||||
string text = null;
|
||||
string typestr;
|
||||
bool checkprop;
|
||||
|
||||
if (arglist.Length > 0)
|
||||
switch (arglist[0])
|
||||
{
|
||||
case "GIVE":
|
||||
// format for the objective string will be GIVE,mobname,itemtype[,count][,proptest]
|
||||
if (arglist.Length > 2)
|
||||
{
|
||||
mobname = arglist[1];
|
||||
//name = arglist[2];
|
||||
type = arglist[2];
|
||||
}
|
||||
|
||||
XmlQuest.CheckArgList(arglist, 3, null, out typestr, out targetcount, out checkprop, out status_str);
|
||||
|
||||
foundgive = true;
|
||||
break;
|
||||
case "GIVENAMED":
|
||||
// format for the objective string will be GIVENAMED,mobname,itemname[,type][,count][,proptest]
|
||||
if (arglist.Length > 2)
|
||||
{
|
||||
mobname = arglist[1];
|
||||
name = arglist[2];
|
||||
}
|
||||
|
||||
XmlQuest.CheckArgList(arglist, 3, null, out typestr, out targetcount, out checkprop, out status_str);
|
||||
|
||||
if (typestr != null) type = typestr;
|
||||
|
||||
foundgive = true;
|
||||
break;
|
||||
case "KILL":
|
||||
// format for the objective string will be KILL,mobtype[,count][,proptest]
|
||||
|
||||
if (arglist.Length > 1)
|
||||
{
|
||||
//name = arglist[1];
|
||||
type = arglist[1];
|
||||
}
|
||||
|
||||
XmlQuest.CheckArgList(arglist, 2, null, out typestr, out targetcount, out checkprop, out status_str);
|
||||
|
||||
foundkill = true;
|
||||
break;
|
||||
|
||||
case "KILLNAMED":
|
||||
// format for the objective string KILLNAMED,mobname[,type][,count][,proptest]
|
||||
if (arglist.Length > 1)
|
||||
{
|
||||
name = arglist[1];
|
||||
}
|
||||
|
||||
XmlQuest.CheckArgList(arglist, 2, null, out typestr, out targetcount, out checkprop, out status_str);
|
||||
|
||||
if (typestr != null) type = typestr;
|
||||
|
||||
foundkill = true;
|
||||
break;
|
||||
case "COLLECT":
|
||||
// format for the objective string will be COLLECT,itemtype[,count][,proptest]
|
||||
if (arglist.Length > 1)
|
||||
{
|
||||
//name = arglist[1];
|
||||
type = arglist[1];
|
||||
}
|
||||
|
||||
XmlQuest.CheckArgList(arglist, 2, null, out typestr, out targetcount, out checkprop, out status_str);
|
||||
|
||||
|
||||
|
||||
foundcollect = true;
|
||||
break;
|
||||
case "COLLECTNAMED":
|
||||
// format for the objective string will be COLLECTNAMED,itemname[,itemtype][,count][,proptest]
|
||||
if (arglist.Length > 1)
|
||||
{
|
||||
name = arglist[1];
|
||||
}
|
||||
|
||||
XmlQuest.CheckArgList(arglist, 2, null, out typestr, out targetcount, out checkprop, out status_str);
|
||||
|
||||
if (typestr != null) type = typestr;
|
||||
|
||||
foundcollect = true;
|
||||
break;
|
||||
case "ESCORT":
|
||||
// format for the objective string will be ESCORT,mobname[,proptest]
|
||||
if (arglist.Length > 1)
|
||||
{
|
||||
name = arglist[1];
|
||||
}
|
||||
foundescort = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (foundkill)
|
||||
{
|
||||
// get the current kill status
|
||||
int killed = 0;
|
||||
try
|
||||
{
|
||||
killed = int.Parse(statestr);
|
||||
}
|
||||
catch { }
|
||||
|
||||
int remaining = targetcount - killed;
|
||||
|
||||
if (remaining < 0) remaining = 0;
|
||||
|
||||
// report the kill task objective status
|
||||
if (descriptionstr != null)
|
||||
text = String.Format("{0} ({1} left)", descriptionstr, remaining);
|
||||
else
|
||||
{
|
||||
if (name != null)
|
||||
{
|
||||
if (type == null) type = "mob";
|
||||
|
||||
text = String.Format("Kill {0} {1}(s) named {2} ({3} left)", targetcount, type, name, remaining);
|
||||
}
|
||||
else
|
||||
text = String.Format("Kill {0} {1}(s) ({2} left)", targetcount, type, remaining);
|
||||
}
|
||||
}
|
||||
else
|
||||
if (foundescort)
|
||||
{
|
||||
// get the current escort status
|
||||
int escorted = 0;
|
||||
try
|
||||
{
|
||||
escorted = int.Parse(statestr);
|
||||
}
|
||||
catch { }
|
||||
|
||||
int remaining = targetcount - escorted;
|
||||
|
||||
if (remaining < 0) remaining = 0;
|
||||
|
||||
// report the escort task objective status
|
||||
if (descriptionstr != null)
|
||||
text = descriptionstr;
|
||||
else
|
||||
text = String.Format("Escort {0}", name);
|
||||
}
|
||||
else
|
||||
if (foundcollect)
|
||||
{
|
||||
// get the current collection status
|
||||
int collected = 0;
|
||||
try
|
||||
{
|
||||
collected = int.Parse(statestr);
|
||||
}
|
||||
catch { }
|
||||
|
||||
int remaining = targetcount - collected;
|
||||
|
||||
if (remaining < 0) remaining = 0;
|
||||
|
||||
// report the collect task objective status
|
||||
if (descriptionstr != null)
|
||||
text = String.Format("{0} ({1} left)", descriptionstr, remaining);
|
||||
else
|
||||
{
|
||||
if (name != null)
|
||||
{
|
||||
if (type == null) type = "mob";
|
||||
|
||||
text = String.Format("Collect {0} {1}(s) named {2} ({3} left)", targetcount, type, name, remaining);
|
||||
}
|
||||
else
|
||||
text = String.Format("Collect {0} {1}(s) ({2} left)", targetcount, type, remaining);
|
||||
}
|
||||
}
|
||||
else
|
||||
if (foundgive)
|
||||
{
|
||||
// get the current give status
|
||||
int collected = 0;
|
||||
|
||||
try
|
||||
{
|
||||
collected = int.Parse(statestr);
|
||||
}
|
||||
catch { }
|
||||
|
||||
int remaining = targetcount - collected;
|
||||
|
||||
if (remaining < 0) remaining = 0;
|
||||
|
||||
// report the collect task objective status
|
||||
if (descriptionstr != null)
|
||||
text = String.Format("{0} ({1} left)", descriptionstr, remaining);
|
||||
else
|
||||
{
|
||||
if (name != null)
|
||||
{
|
||||
if (type == null) type = "item";
|
||||
|
||||
text = String.Format("Give {0} {1}(s) named {2} to {3} ({4} left)", targetcount, type, name, mobname, remaining);
|
||||
}
|
||||
else
|
||||
text = String.Format("Give {0} {1}(s) to {2} ({3} left)", targetcount, type, mobname, remaining);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// just report the objectivestring
|
||||
text = objectivestr;
|
||||
}
|
||||
|
||||
AddHtml(x, y, 223, 35, XmlSimpleGump.Color(text, "EFEF5A"), false, false);
|
||||
|
||||
if (status)
|
||||
{
|
||||
AddImage(x - 20, y + 3, 0x939); // bullet
|
||||
AddHtmlLocalized(x + 222, y, 225, 37, 1046033, 0xff42, false, false); // Complete
|
||||
}
|
||||
else
|
||||
{
|
||||
AddImage(x - 20, y + 3, 0x938); // bullet
|
||||
AddHtmlLocalized(x + 222, y, 225, 37, 1046034, 0x7fff, false, false); // Incomplete
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private IXmlQuest m_questitem;
|
||||
private string m_gumptitle;
|
||||
private int m_X;
|
||||
private int m_Y;
|
||||
private bool m_solid;
|
||||
private int m_screen;
|
||||
|
||||
public XmlQuestStatusGump(IXmlQuest questitem, string gumptitle)
|
||||
: this(questitem, gumptitle, 0, 0, false, 0)
|
||||
{
|
||||
}
|
||||
|
||||
public XmlQuestStatusGump(IXmlQuest questitem, string gumptitle, int X, int Y, bool solid)
|
||||
: this(questitem, gumptitle, X, Y, solid, 0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public XmlQuestStatusGump(IXmlQuest questitem, string gumptitle, int X, int Y, bool solid, int screen)
|
||||
: base(X, Y)
|
||||
{
|
||||
Closable = true;
|
||||
Dragable = true;
|
||||
m_X = X;
|
||||
m_Y = Y;
|
||||
m_solid = solid;
|
||||
m_questitem = questitem;
|
||||
m_gumptitle = gumptitle;
|
||||
m_screen = screen;
|
||||
|
||||
AddPage(0);
|
||||
|
||||
if (!solid)
|
||||
{
|
||||
AddImageTiled(54, 33, 369, 400, 2624);
|
||||
AddAlphaRegion(54, 33, 369, 400);
|
||||
}
|
||||
else
|
||||
{
|
||||
AddBackground(54, 33, 369, 400, 5054);
|
||||
}
|
||||
|
||||
AddImageTiled(416, 39, 44, 389, 203);
|
||||
|
||||
// AddButton( 338, 392, 2130, 2129, 3, GumpButtonType.Reply, 0 ); // Okay button
|
||||
|
||||
AddHtmlLocalized(139, 59, 200, 30, 1046026, 0x7fff, false, false); // Quest Log
|
||||
AddImage(97, 49, 9005); // quest ribbon
|
||||
|
||||
AddImageTiled(58, 39, 29, 390, 10460); // left hand border
|
||||
AddImageTiled(412, 37, 31, 389, 10460); // right hand border
|
||||
AddImage(430, 9, 10441);
|
||||
AddImageTiled(40, 38, 17, 391, 9263);
|
||||
AddImage(6, 25, 10421);
|
||||
AddImage(34, 12, 10420);
|
||||
AddImageTiled(94, 25, 342, 15, 10304); // top border
|
||||
AddImageTiled(40, 414, 415, 16, 10304); // bottom border
|
||||
AddImage(-10, 314, 10402);
|
||||
AddImage(56, 150, 10411);
|
||||
|
||||
AddImage(136, 84, 96);
|
||||
AddImage(372, 57, 1417);
|
||||
AddImage(381, 66, 5576);
|
||||
|
||||
// add the status and journal tabs
|
||||
AddImageTiled(90, 34, 322, 5, 0x145E); // top border
|
||||
int tab1 = 0x138F;
|
||||
int tab2 = 0x138E;
|
||||
if (screen == 1)
|
||||
{
|
||||
tab1 = 0x138E;
|
||||
tab2 = 0x138F;
|
||||
}
|
||||
AddButton(100, 18, tab1, tab2, 900, GumpButtonType.Reply, 0);
|
||||
AddLabel(115, 17, 0, "Status");
|
||||
AddButton(189, 18, tab2, tab1, 901, GumpButtonType.Reply, 0);
|
||||
AddLabel(205, 17, 0, "Journal");
|
||||
|
||||
if (screen == 1)
|
||||
{
|
||||
// display the journal
|
||||
if (questitem.Journal != null && questitem.Journal.Count > 0)
|
||||
{
|
||||
string journaltext = null;
|
||||
for (int i = 0; i < questitem.Journal.Count; i++)
|
||||
{
|
||||
journaltext += "<u>";
|
||||
journaltext += questitem.Journal[i].EntryID;
|
||||
journaltext += ":</u><br>";
|
||||
journaltext += questitem.Journal[i].EntryText;
|
||||
journaltext += "<br><br>";
|
||||
}
|
||||
AddHtml(100, 90, 270, 300, journaltext, true, true);
|
||||
|
||||
}
|
||||
|
||||
// add the add journal entry button
|
||||
AddButton(300, 49, 0x99C, 0x99D, 952, GumpButtonType.Reply, 0);
|
||||
//AddButton(300, 49, 0x159E, 0x159D, 952, GumpButtonType.Reply, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gumptitle != null && gumptitle.Length > 0)
|
||||
{ // display the title if it is there
|
||||
AddImage(146, 91, 2103); // bullet
|
||||
AddHtml(164, 86, 200, 30, XmlSimpleGump.Color(gumptitle, "00FF42"), false, false);
|
||||
}
|
||||
|
||||
if (questitem.NoteString != null && questitem.NoteString.Length > 0)
|
||||
{ // display the note string if it is there
|
||||
AddHtml(100, 106, 270, 80, questitem.NoteString, true, true);
|
||||
}
|
||||
|
||||
DisplayQuestStatus(130, 192, questitem.Objective1, questitem.State1, questitem.Completed1, questitem.Description1);
|
||||
DisplayQuestStatus(130, 224, questitem.Objective2, questitem.State2, questitem.Completed2, questitem.Description2);
|
||||
DisplayQuestStatus(130, 256, questitem.Objective3, questitem.State3, questitem.Completed3, questitem.Description3);
|
||||
DisplayQuestStatus(130, 288, questitem.Objective4, questitem.State4, questitem.Completed4, questitem.Description4);
|
||||
DisplayQuestStatus(130, 320, questitem.Objective5, questitem.State5, questitem.Completed5, questitem.Description5);
|
||||
|
||||
//if(questitem.HasCollect){
|
||||
AddButton(100, 350, 0x2A4E, 0x2A3A, 700, GumpButtonType.Reply, 0);
|
||||
AddLabel(135, 356, 0x384, "Collect");
|
||||
//}
|
||||
|
||||
if ((questitem.RewardItem != null && !questitem.RewardItem.Deleted))
|
||||
{
|
||||
m_questitem.CheckRewardItem();
|
||||
|
||||
if (questitem.RewardItem.Amount > 1)
|
||||
{
|
||||
AddLabel(230, 356, 55, String.Format("Reward: {0} ({1})", questitem.RewardItem.GetType().Name,
|
||||
questitem.RewardItem.Amount));
|
||||
AddLabel(230, 373, 55, String.Format("Weight: {0}", questitem.RewardItem.Weight * questitem.RewardItem.Amount));
|
||||
}
|
||||
else
|
||||
if (questitem.RewardItem is Container)
|
||||
{
|
||||
AddLabel(230, 356, 55, String.Format("Reward: {0} ({1} items)", questitem.RewardItem.GetType().Name,
|
||||
questitem.RewardItem.TotalItems));
|
||||
AddLabel(230, 373, 55, String.Format("Weight: {0}", questitem.RewardItem.TotalWeight + questitem.RewardItem.Weight));
|
||||
}
|
||||
else
|
||||
{
|
||||
AddLabel(230, 356, 55, String.Format("Reward: {0}", questitem.RewardItem.GetType().Name));
|
||||
AddLabel(230, 373, 55, String.Format("Weight: {0}", questitem.RewardItem.Weight));
|
||||
}
|
||||
AddImageTiled(330, 373, 81, 40, 200);
|
||||
AddItem(340, 376, questitem.RewardItem.ItemID);
|
||||
|
||||
}
|
||||
if (questitem.RewardAttachment != null && !questitem.RewardAttachment.Deleted)
|
||||
{
|
||||
AddLabel(230, 339, 55, String.Format("Bonus: {0}", questitem.RewardAttachment.GetType().Name));
|
||||
}
|
||||
|
||||
if ((questitem.RewardItem != null && !questitem.RewardItem.Deleted) || (questitem.RewardAttachment != null && !questitem.RewardAttachment.Deleted))
|
||||
{
|
||||
if (questitem.CanSeeReward)
|
||||
{
|
||||
AddButton(400, 380, 2103, 2103, 800, GumpButtonType.Reply, 0);
|
||||
}
|
||||
}
|
||||
|
||||
// indicate any status info
|
||||
XmlQuest.VerifyObjectives(questitem);
|
||||
if (questitem.Status != null)
|
||||
{
|
||||
AddLabel(100, 392, 33, questitem.Status);
|
||||
}
|
||||
else
|
||||
// indicate the expiration time
|
||||
if (questitem.IsValid)
|
||||
{
|
||||
//AddHtmlLocalized(150, 400, 50, 37, 1046033, 0xf0000 , false , false ); // Expires
|
||||
AddHtml(130, 392, 200, 37, XmlSimpleGump.Color(questitem.ExpirationString, "00FF42"), false, false);
|
||||
}
|
||||
else
|
||||
if (questitem.AlreadyDone)
|
||||
{
|
||||
if (!questitem.Repeatable)
|
||||
{
|
||||
AddLabel(100, 392, 33, "Already done - cannot be repeated");
|
||||
}
|
||||
else
|
||||
{
|
||||
List<XmlAttachment> a = XmlAttach.FindAttachments(questitem.Owner, typeof(XmlQuestAttachment), questitem.Name);
|
||||
if (a != null && a.Count > 0)
|
||||
{
|
||||
AddLabel(100, 392, 33, String.Format("Repeatable in {0}", a[0].Expiration));
|
||||
}
|
||||
else
|
||||
{
|
||||
AddLabel(150, 392, 33, "Already done - ???");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//AddHtml( 150, 384, 200, 37, XmlSimpleGump.Color( "No longer valid", "00FF42" ), false, false );
|
||||
AddLabel(150, 392, 33, "No longer valid");
|
||||
}
|
||||
if (XmlQuest.QuestPointsEnabled)
|
||||
{
|
||||
AddHtml(250, 40, 200, 30, XmlSimpleGump.Color(String.Format("Difficulty Level {0}", questitem.Difficulty), "00FF42"), false, false);
|
||||
}
|
||||
if (questitem.PartyEnabled)
|
||||
{
|
||||
AddHtml(250, 55, 200, 30, XmlSimpleGump.Color("Party Quest", "00FF42"), false, false);
|
||||
if (questitem.PartyRange >= 0)
|
||||
{
|
||||
AddHtml(250, 70, 200, 30, XmlSimpleGump.Color(String.Format("Party Range {0}", questitem.PartyRange), "00FF42"), false, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
AddHtml(250, 70, 200, 30, XmlSimpleGump.Color("No Range Limit", "00FF42"), false, false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
AddHtml(250, 55, 200, 30, XmlSimpleGump.Color("Solo Quest", "00FF42"), false, false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public override void OnResponse(NetState state, RelayInfo info)
|
||||
{
|
||||
if (info == null || state == null || state.Mobile == null || state.Mobile.Deleted || m_questitem == null || m_questitem.Deleted)
|
||||
return;
|
||||
switch (info.ButtonID)
|
||||
{
|
||||
case 700:
|
||||
state.Mobile.Target = new XmlQuest.GetCollectTarget(m_questitem);
|
||||
state.Mobile.SendGump(new XmlQuestStatusGump(m_questitem, m_gumptitle, m_X, m_Y, m_solid, m_screen));
|
||||
break;
|
||||
case 800:
|
||||
if(!m_questitem.CanSeeReward) return;
|
||||
if (m_questitem.RewardItem != null || m_questitem.RewardAttachment != null)
|
||||
{
|
||||
// open a new status gump
|
||||
state.Mobile.SendGump(new XmlQuestStatusGump(m_questitem, m_gumptitle, m_X, m_Y, m_solid, m_screen));
|
||||
}
|
||||
// display the reward item
|
||||
if (m_questitem.RewardItem != null)
|
||||
{
|
||||
// show the contents of the xmlquest pack
|
||||
if (m_questitem.Pack != null)
|
||||
m_questitem.Pack.DisplayTo(state.Mobile);
|
||||
}
|
||||
// identify the reward attachment
|
||||
if (m_questitem.RewardAttachment != null)
|
||||
{
|
||||
//state.Mobile.SendMessage("{0}",m_questitem.RewardAttachment.OnIdentify(state.Mobile));
|
||||
state.Mobile.CloseGump(typeof(DisplayAttachmentGump));
|
||||
state.Mobile.SendGump(new DisplayAttachmentGump(state.Mobile, m_questitem.RewardAttachment.OnIdentify(state.Mobile)));
|
||||
}
|
||||
break;
|
||||
case 900:
|
||||
// open a new status gump with status display
|
||||
state.Mobile.SendGump(new XmlQuestStatusGump(m_questitem, m_gumptitle, m_X, m_Y, m_solid, 0));
|
||||
break;
|
||||
case 901:
|
||||
// open a new status gump with journal display
|
||||
state.Mobile.SendGump(new XmlQuestStatusGump(m_questitem, m_gumptitle, m_X, m_Y, m_solid, 1));
|
||||
break;
|
||||
case 952:
|
||||
// open a new status gump with journal display
|
||||
state.Mobile.SendGump(new XmlQuestStatusGump(m_questitem, m_gumptitle, m_X, m_Y, m_solid, 1));
|
||||
// and open the journal entry editing gump
|
||||
// only allow this to be used if the questholder is theirs
|
||||
if (m_questitem.Owner == state.Mobile)
|
||||
{
|
||||
state.Mobile.SendGump(new JournalEntryGump(m_questitem, m_gumptitle, m_X, m_Y, m_solid));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public class JournalEntryGump : Gump
|
||||
{
|
||||
private IXmlQuest m_questitem;
|
||||
private string m_gumptitle;
|
||||
private int m_X, m_Y;
|
||||
private bool m_solid;
|
||||
|
||||
public JournalEntryGump(IXmlQuest questitem, string gumptitle, int X, int Y, bool solid)
|
||||
: base(X, Y)
|
||||
{
|
||||
if (questitem == null || questitem.Deleted)
|
||||
return;
|
||||
|
||||
m_questitem = questitem;
|
||||
m_gumptitle = gumptitle;
|
||||
m_X = X;
|
||||
m_Y = Y;
|
||||
m_solid = solid;
|
||||
|
||||
AddPage(0);
|
||||
|
||||
//AddBackground(0, 0, 260, 354, 5054);
|
||||
//AddAlphaRegion(20, 0, 220, 354);
|
||||
AddImage(0, 0, 0x24AE); // left top scroll
|
||||
AddImage(114, 0, 0x24AF); // middle top scroll
|
||||
AddImage(170, 0, 0x24B0); // right top scroll
|
||||
AddImageTiled(0, 140, 114, 100, 0x24B1); // left middle scroll
|
||||
AddImageTiled(114, 140, 114, 100, 0x24B2); // middle middle scroll
|
||||
AddImageTiled(170, 140, 114, 100, 0x24B3); // right middle scroll
|
||||
AddImage(0, 210, 0x24B4); // left bottom scroll
|
||||
AddImage(114, 210, 0x24B5); // middle bottom scroll
|
||||
AddImage(170, 210, 0x24B6); // right bottom scroll
|
||||
//AddImageTiled(23, 40, 214, 290, 0x52);
|
||||
//AddImageTiled(24, 41, 213, 281, 0xBBC);
|
||||
|
||||
|
||||
// OK button
|
||||
AddButton(25, 327, 0xFB7, 0xFB9, 1, GumpButtonType.Reply, 0);
|
||||
// Close button
|
||||
AddButton(230, 327, 0xFB1, 0xFB3, 0, GumpButtonType.Reply, 0);
|
||||
// Edit button
|
||||
//AddButton(100, 325, 0xEF, 0xEE, 2, GumpButtonType.Reply, 0);
|
||||
string str = null;
|
||||
|
||||
int entrynumber = 0;
|
||||
if (questitem.Journal != null && questitem.Journal.Count > 0)
|
||||
{
|
||||
entrynumber = questitem.Journal.Count;
|
||||
}
|
||||
string m_entryid = "Personal entry #" + entrynumber;
|
||||
|
||||
// entryid text entry area
|
||||
//AddImageTiled(23, 0, 214, 23, 0x52);
|
||||
//AddImageTiled(24, 1, 213, 21, 0xBBC);
|
||||
AddTextEntry(35, 5, 200, 21, 0, 1, m_entryid);
|
||||
|
||||
// main text entry area
|
||||
AddTextEntry(35, 40, 200, 271, 0, 0, str);
|
||||
|
||||
// editing text entry areas
|
||||
// background for text entry area
|
||||
/*
|
||||
AddImageTiled(23, 275, 214, 23, 0x52);
|
||||
AddImageTiled(24, 276, 213, 21, 0xBBC);
|
||||
AddImageTiled(23, 300, 214, 23, 0x52);
|
||||
AddImageTiled(24, 301, 213, 21, 0xBBC);
|
||||
|
||||
AddTextEntry(35, 275, 200, 21, 0, 1, null);
|
||||
AddTextEntry(35, 300, 200, 21, 0, 2, null);
|
||||
*/
|
||||
}
|
||||
|
||||
public override void OnResponse(NetState state, RelayInfo info)
|
||||
{
|
||||
if (info == null || state == null || state.Mobile == null) return;
|
||||
|
||||
if (m_questitem == null || m_questitem.Deleted)
|
||||
return;
|
||||
bool update_entry = false;
|
||||
//bool edit_entry = false;
|
||||
switch (info.ButtonID)
|
||||
{
|
||||
case 0: // Close
|
||||
{
|
||||
update_entry = false;
|
||||
break;
|
||||
}
|
||||
case 1: // Okay
|
||||
{
|
||||
update_entry = true;
|
||||
break;
|
||||
}
|
||||
case 2: // Edit
|
||||
{
|
||||
//edit_entry = true;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
update_entry = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (update_entry)
|
||||
{
|
||||
string entrytext = null;
|
||||
string entryid = null;
|
||||
|
||||
TextRelay entry = info.GetTextEntry(0);
|
||||
if (entry != null)
|
||||
{
|
||||
entrytext = entry.Text;
|
||||
}
|
||||
|
||||
entry = info.GetTextEntry(1);
|
||||
if (entry != null)
|
||||
{
|
||||
entryid = entry.Text;
|
||||
}
|
||||
|
||||
m_questitem.AddJournalEntry = entryid + ":" + entrytext;
|
||||
}
|
||||
// open a new journal gump
|
||||
state.Mobile.CloseGump(typeof(XmlQuestStatusGump));
|
||||
state.Mobile.SendGump(new XmlQuestStatusGump(m_questitem, m_gumptitle, m_X, m_Y, m_solid, 1));
|
||||
}
|
||||
}
|
||||
|
||||
private class DisplayAttachmentGump : Gump
|
||||
{
|
||||
public DisplayAttachmentGump(Mobile from, string text)
|
||||
: base(0, 0)
|
||||
{
|
||||
// prepare the page
|
||||
AddPage(0);
|
||||
|
||||
AddBackground(0, 0, 400, 150, 5054);
|
||||
AddAlphaRegion(0, 0, 400, 150);
|
||||
AddLabel(20, 2, 55, "Quest Attachment Description");
|
||||
|
||||
AddHtml(20, 20, 360, 110, text, true, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user