Years ago (in my player days about 14 years ago) I played on a Freeshard that had a neat Gump that popped up to show who had completed what quests and how many points they has accumulated by doing so.
I think (but could be wrong) that the Gump was accessed by players 'clicking' on the Quest button on their Paperdoll but maybe it was from using a command instead.
I have searched everywhere I can think of on this topic to no avail.
Has anyone seen anything like this and if so know where I might find it (or something similar)?
You can try to reach someone named Laretheo or a member of the old UOR shard staff. They implemented this using the XmlSpawner system. Read through the following excerpt to see if this is what you remember:
added the new quest points system (thanks to Eymerich for the suggestion). Individual quests now have a Difficulty property (default value 1) that can be set on the questholder book. When a quest is completed, the player will receive the corresponding number of quest points. These points will be maintained on the new XmlQuestPoints attachment, along with a history of completed quests.
Shard-wide rankings of players based upon these quest points will also be maintained.
Quest credits will also be accumulated that can be exchanged for quest rewards at a quest reward stone.
The XmlQuestPoints attachment will automatically be added when completing the first quest for points, so no administrative action is required to enable the system. If you do not want to use the quest points system, change the QuestPointsEnabled constant in XmlQuest.cs around line 123
public const bool QuestPointsEnabled = true;
added the Difficulty property to the questholder item. This can be set to the number of points that you wish the player to receive when they complete the quest (when the questholder is deleted). This is an example of a spawn entry that would give out a quest with a set difficulty.
added the [questleaderboardsave command that can be run by administrators to enable/disable the periodic saving of xml and html quest leaderboard information. The html file can be used to display ranking information on a website. The leaderboard files will be placed in a folder named Leaderboard in the main RunUO directory. This is the same folder that the XmlPoints system uses for its leaderboard information.
added the QuestLeadersBoard item that is a bulletin board that when double clicked brings up the current shard rankings for questers.
added the QuestRewardStone item that can be used to allow players to exchange their quest credits for rewards. You can add or modify rewards by editing XmlQuestPointsRewards.cs
added a handler for the Quest button in the paperdoll to open the quest log that displays current and past quests. If you do not wish to link the quest log to the Quest button, comment out this line in PacketHandlerOverrides.cs
// This will replace the default packet handler called when the quest button on the paperdoll is pressed.
Timer.DelayCall( TimeSpan.Zero, new TimerCallback( QuestButtonOverride ) );
added the [questlog command that can be executed by players to bring up the quest log gump. The new quest log gump contains a list of all completed and currently active quests as well as current point status and ranking.
Completed quests will be listed with he completion date (helpful for time-limited repeatable quests) as well as the number of times the quest has been repeated.
Active quests have an 'Open' button that allows the individual quest gump to be opened.
The top quest players ranking can also be opened from the button at the bottom of the gump.
added the [questranking command that can be executed by players to bring up the quest ranking gump.
I just noticed that since this is XmlSpawner stuff, it's possible this was already incorporated into the latest XmlSpawner development. You might start there.
Thank you Lokai . . . looking at this from the memory (at the time) of a non-scripter, it appears to be exactly what I'm remembering. This is most likely what was used to make that system work.
I am no expert on the XMLQuest system but I assume what you set out above would only work with quests that were set up using that system. If that is so then . . with over 100 custom quests on my server (using countless xml spawners) it could be a major undertaking to redo them all.
Now . . your information has my small brain pondering a work around (being script challenged I do that a lot) . . . I have a 'command' (PlayerWealth) that searches players shard wide for gold then reports this in an updateable html file . . so . .
1) I am wondering about having completed quests add an tiny (diamond maybe), invisible, weightless, stackable, unmovable item to a player's bank box then adjust/overwrite the totals for them recorded in a "QuestBoard.HTML" file set up for the purpose. With quests offering point values of 1, 2 or 3 (based on difficulty) this means the max potential item count for these stackable items added to bank boxes would be three (probably not too large of a weightless intrusion on storage for the benefit obtained).
2) At the time the completed quests add their item to a player's bank box, they would also update the "QuestBoard.HTML" file.
3) This would be relatively easy to edit (cut/paste) into the final Gump for each custom quest without having to undertake a massive rework of all the quests.
4) Then if a player wanted to check the quest standings he could go to one of a town's newly created Quest Boards or Stones to view a Gump with a report. The report could be drawn from the "QuestBoard.HTML" file or it could be drawn from its own search of players bank boxes.
If you (or anyone) thinks this might be a workable solution then I will give it a try. I know that some parts of this will be harder for me than others. The part mentioned in step 4) above where a Quest Board or Stone presents a Report Gump from the "QuestBoard.HTML" file or from its own search of bank boxes is going to be over my head.
I know . . (I can almost feel your eyes rolling) . . but your opinion is valued.
*bows*
Post automatically merged:
The more I read the above . . the dumber it sounds.
I would probably create a Dictionary that stores a Class (PlayerQuestStatus) for each player (accessed by their Serial.Value or something. This Class could be a Struct instead, but a Class gives it more flexibility. The server could save and load the Dictionary on each Save and Load by hooking into those procedures. That would be my first choice. If you have questions about how to do any of that, you can look at my Health system for an example of how to save and load complex variables.
Alternatively, you could store Quest information in Account tags. Account tags are nice because they can be added, removed and read easily. They are stored as strings, so you have flexibility on the information stored.
For example, let's say you have a quest called SantaQuest.
The player wants to start the quest:
C#:
string tag = player.Account.GetTag(player.Name + "~" + "SantaQuest");
if (tag == null) player.Account.AddTag(player.Name + "~" + "SantaQuest", "STARTED");
Then later, when you want to see what quests they have started or completed, you can pull tags like this:
C#:
List<AccountTag> tags = new List<AccountTag>();
foreach (AccountTag tag in player.Account.Tags)
{
string[] splitTag = tag.Split("~");
if (splitTag.Length > 1 && split.Tag[0] == player.Name)
tags.Add(tag);
}
From there you would have all the quest tags for that player in the variable "tags" and can count which ones have been STARTED, COMPLETED, etc.