Full Version : XmlAttachments + Elf core Mod
xmlspawner >>Q&A >>XmlAttachments + Elf core Mod
<< Prev | Next >>
DaLaw- 06-10-2006
Hey Arte, just another question, Im sure you saw the Elf core mod on the RunUO forums, well, we installed it a while back, and we think its causing issues with players not getting attatchments after finishing quests, could this be?
And if so, what would be the best approach to fix this issue? (on our side ofcourse)
Thanks!
ArteGordon- 06-10-2006
that seems unlikely.
I would check for typos in the attachment specification.
I would also check to see if they are getting quest points, since those two features are performed together on quest completion, so if they arent getting points then it may be an issue with improper autoreward specification.
Is it all players that are failing to get the attachments, or only those with elf forms?
DaLaw- 06-10-2006
Well, For some people it works, they get the attatchment, get the quest points and what not, and then someone else try's it and they dont get either.
ArteGordon- 06-10-2006
is this a repeatable quest? Does it have a time limit? Does it have a minimum time between repeats?
The quest points and attachment are given out when the questholder is deleted. Is it being taken or is it an autoreward type?
Vladimir- 06-10-2006
Hey Arte.. DaLaw is my admin but i make the quests...
still having the problem where the Attachment isn't added in some cases... happens once every 10-20 times and i'm just exploring different options to figure out why it does this... it adds one quest point but not the attachment... the following is an exampl of a quest that it does this on:

QUOTE
<?xml version="1.0" standalone="yes"?> <XmlQuestNPC> <NPC> <Name>Corbin</Name> <Running>True</Running>
<ProximityRange>3</ProximityRange>
<AllowGhost>False</AllowGhost>
<SpeechPace>10</SpeechPace>
<ResetTime>0.5</ResetTime>
<ConfigFile>Aria'sBrother(brother)</ConfigFile>
<SpeechEntries>4</SpeechEntries>
</NPC>
<SpeechEntry>
<EntryNumber>0</EntryNumber>
<ID>0</ID>
<Pause>1</Pause>
<PrePause>-1</PrePause>
<LockConversation>True</LockConversation>
<AllowNPCTrigger>False</AllowNPCTrigger>
<SpeechStyle>Regular</SpeechStyle>
<SpeechHue>-1</SpeechHue>
</SpeechEntry>
<SpeechEntry>
<EntryNumber>10</EntryNumber>
<ID>10</ID>
<Text>Thank you for saving me {GETONTRIGMOB,name}! I knew my sister would send someone as brave as you to rescue me!. Please, take this gold as a reward for your selfless actions</Text>
<Action>GIVE/gold,800 ; TAKE/Aria's Brother ; SETONTRIGMOB/ATTACH,Aria's Brother,XmlQuestAttachment</Action>
<Condition>GETONCARRIED,Aria's Brother,questholder,iscompleted=true</Condition>
<DependsOn>-1</DependsOn>
<Pause>1</Pause>
<PrePause>-1</PrePause>
<LockConversation>True</LockConversation>
<AllowNPCTrigger>False</AllowNPCTrigger>
<SpeechStyle>Regular</SpeechStyle>
<SpeechHue>-1</SpeechHue>
</SpeechEntry>
<SpeechEntry>
<EntryNumber>30</EntryNumber>
<ID>30</ID>
<Action>SETONTHIS/hidden/true</Action>
<DependsOn>10</DependsOn>
<Pause>1</Pause>
<PrePause>10</PrePause>
<LockConversation>True</LockConversation>
<AllowNPCTrigger>False</AllowNPCTrigger>
<SpeechStyle>Regular</SpeechStyle>
<SpeechHue>-1</SpeechHue>
</SpeechEntry>
<SpeechEntry>
<EntryNumber>40</EntryNumber>
<ID>40</ID>
<Action>SETONSPAWN,Testspawn1,1/RESET</Action>
<DependsOn>30</DependsOn>
<Pause>1</Pause>
<PrePause>-1</PrePause>
<LockConversation>True</LockConversation>
<AllowNPCTrigger>False</AllowNPCTrigger>
<SpeechStyle>Regular</SpeechStyle>
<SpeechHue>-1</SpeechHue>
</SpeechEntry>
</XmlQuestNPC>

That is the xmlquestnpc that i use to hand out the reward and TAKE the quest book
This is the details for the questholder:
GIVE/&lt;questholder/name/Aria's Brother/Notestring/Rescue Aria's brother from the bandits in the mountain to the west of dungeon Covetous/objective1/KILL,brigand,4/autoreward/false/repeatable/false
ArteGordon- 06-10-2006
That is a puzzle.
I dont see how it is doing that. Perhaps you could add this debugging code in xmlquestholder.cs and look for instances where points are given without the attachment for that quest.

QUOTE
private void QuestCompletionAttachment() { bool complete = IsCompleted; // is this quest repeatable if((!Repeatable || NextRepeatable > TimeSpan.Zero) && complete)
{
double expiresin = Repeatable ? NextRepeatable.TotalMinutes : 0;
Console.WriteLine("{0}: Quest attachment '{1}' expiration {2} Owner {3}", DateTime.Now, this.Name, expiresin, Owner);
// then add an attachment indicating that it has already been done
XmlAttach.AttachTo(Owner, new XmlQuestAttachment(this.Name, expiresin));
}
// have quest points been enabled?
if(XmlQuest.QuestPointsEnabled && complete && !PlayerMade)
{
Console.WriteLine("{0}: Quest points for '{1}' Owner {2}", DateTime.Now, this.Name, Owner);
XmlQuestPoints.GiveQuestPoints(Owner, this);
}
}

ArteGordon- 06-10-2006
also, this line has a syntax error
<Action>GIVE/gold,800 ; TAKE/Aria's Brother ; SETONTRIGMOB/ATTACH,Aria's Brother,XmlQuestAttachment</Action>
to manually add the xmlquestattachment named "Aria's Brother" to the trigger mob, use this
SETONTRIGMOB/ATTACH/XmlQuestAttachment,Aria's Brother
Vladimir- 07-31-2006
Hello ArteGordon
Still having trouble with this attachments thing and I thought of something that might affect it
My question is whether or not the order of the autoreward/false and repeatable/false effects the outcome of these?
As I said in the post, some of the players recieve the quest point and reward after the taking of the quest holder, but not the attachment for the quest. The quest is set to repeatable false. (This only happens to some players, for others it works 100% and I haven't been able to pinpoint anything common amoungst the players that don't get the attachment, and I can't replicate the situation myself.)
However, I noticed that I hadn't had this problem with one particular quest of mine, and I noticed that the order of the GIVE/<questholder thing was different. In this case I had put it as: repeatable/false/autoreward/false where in previous problematic cases I had put it autoreward/false/repeatable false.
I was just wandering if this would make a difference and possibly interfere with the adding of the attachment? might it solve the problem for me? I have no real way of testing this as i cannot predict when the next person who doesn't recieve the attachment will show up tongue.gif
Thx again ArteGordon! xmlspawner/Checked2.gif
ArteGordon- 07-31-2006
I would go into xmlquestholder.cs and replace the QuestCompletionAttachment with this debugging code and see what it finds. It will write out all instances of quests that are completed and given points, but no questattachment, to a log file.

QUOTE
private void QuestCompletionAttachment() { bool complete = IsCompleted; double expiresin = Repeatable ? NextRepeatable.TotalMinutes : 0; bool hasattach = false;
// is this quest repeatable
if((!Repeatable || NextRepeatable > TimeSpan.Zero) && complete)
{
hasattach = true;
// then add an attachment indicating that it has already been done
XmlAttach.AttachTo(Owner, new XmlQuestAttachment(this.Name, expiresin));
}
// have quest points been enabled?
if(XmlQuest.QuestPointsEnabled && complete && !PlayerMade)
{
XmlQuestPoints.GiveQuestPoints(Owner, this);
if (!hasattach)
{
// log completed quests where it gives points but adds no attachment
try
{
using (StreamWriter op = new StreamWriter("questreport.log", true))
{
op.WriteLine("{0}: Quest attachment '{1}' expiration {2} Owner {3}", DateTime.Now, this.Name, expiresin, Owner);
op.WriteLine();
}
}
catch
{ }
}
}
}

Vladimir- 07-31-2006
Ok added that. Got the first entry where only quest points where added:
2006/07/31 23:30:28: Quest points for 'Kill the Excavator' Owner 0x4FEC "Beh'lok"eblade"gon Iceblade"
Will let the list grow a bit. How will this show me where the problem is? I don't think its quest specific because I've had it happen on a number of other quests.
ArteGordon- 07-31-2006

QUOTE (Vladimir @ July 31, 2006 05:43 pm)
Ok added that. Got the first entry where only quest points where added: 2006/07/31 23:30:28: Quest points for 'Kill the Excavator' Owner 0x4FEC "Beh'lok"eblade"gon Iceblade" Will let the list grow a bit. How will this show me where the problem is? I don't think its quest specific because I've had it happen on a number of other quests.

The log will list all quests that are repeatable without any time limit. Those also dont get attachments.
You will have to manually look through the list and find the cases where it lists quests that should be non-repeatable and therefore should be getting the attachment but arent.
I didnt add in a test to log only non-repeatable quests because I want to make sure that it doesnt miss anything.
If you want to only log non-repeatable quests, change this
if (!hasattach)
to
if (!hasattach && !Repeatable)
ArteGordon- 07-31-2006
also, it looks like you modified the report line
op.WriteLine("{0}: Quest attachment '{1}' expiration {2} Owner {3}", DateTime.Now, this.Name, expiresin, Owner);
You need to add back in everything that I had it print out. The change you made doesnt include the expiresin argument, and that is one thing that is important to see.
Vladimir- 07-31-2006
Ok i'll add that in aswell
I only have about 24 quests on the shard at the moment, because I don't want to make more before I sort this issue out All of my quests are non-repeatable so it should add the attachment to all of them. The thing that bugs me tho is that most ppl DO get the attachment, only 1 out of say 20 don't. That says to me that its not a problem with the quest or the quest system? but I have no clue where else to start looking :/
Vladimir- 08-06-2006
Ok it has been happening alot less recently but one did come through today...
2006/08/06 19:21:18: Quest attachment 'The Fighters Proving Ground' expiration 0 Owner 0x4F1 "poena" - Repeatable True
That says repeatable true, even tho it isn't a repeatable quest? (A few people did that quest today and only the one came out with it repeatable)
ArteGordon- 08-06-2006
ah. Ok, I think I know what is going on. The Repeatable property is not being serialized.
I have updated xmlquestholder.cs and xmlquesttoken.cs in beta_20_314.zip with the fix.