I'm not creating quests very traditionally, so this may be hard to explain but I'll give it a shot.

Im using GIVE to give the player the quest
The quest has 2 objectives, the first is the real objective and the second is a fake objective
The fake objective2 is "COLLECTNAMED,CHEATER,1" and it's description2 is "Return to Bob"
Bob would be the person who gave the quest. Obvious I've disabled auto reward and bob would issue the reward when the player returns.

This has never been an issue before, since I was working on a story line, but now I'm doing daily repeatable quests and I'm not sure how I can remove the book from the players pack, and disallow them from accepting the quest a second time until those 24 hours are up. Any help would be appreciated

Finally, I've used "GETONTRIGMOB,skills.stealing.value>100" in the past to check if a player has a certain skill at a certain level, but now I'd like these daily repeatable to only be accepted by people who have 500 skill points earned TOTAL, not per skill. How can I go about checking their overall skill level?

Thanks in advance

@tass23
 
I'm not creating quests very traditionally, so this may be hard to explain but I'll give it a shot.

Im using GIVE to give the player the quest
The quest has 2 objectives, the first is the real objective and the second is a fake objective
The fake objective2 is "COLLECTNAMED,CHEATER,1" and it's description2 is "Return to Bob"
Bob would be the person who gave the quest. Obvious I've disabled auto reward and bob would issue the reward when the player returns.

This has never been an issue before, since I was working on a story line, but now I'm doing daily repeatable quests and I'm not sure how I can remove the book from the players pack, and disallow them from accepting the quest a second time until those 24 hours are up. Any help would be appreciated

Finally, I've used "GETONTRIGMOB,skills.stealing.value>100" in the past to check if a player has a certain skill at a certain level, but now I'd like these daily repeatable to only be accepted by people who have 500 skill points earned TOTAL, not per skill. How can I go about checking their overall skill level?

Thanks in advance

@tass23
You just need to add an attachment to each player as they initially get the quest, like:
Code:
SETONTRIGMOB/XmlQuestAttachment,YourQuestName,1440
Add that to Bob's XmlDialog, where the player accepts the quest.

SETONTRIGMOB means the target is the mob that triggered the XmlDialog to start with.
XmlQuestAttachment tells Xmlspawner (and the various packages for it) what kind of attachment you're adding.
YourQuestName is the Exact name of your quest as it you entered it in the NPC's XmlDialog.
1440 is the key to the whole thing, that is how long (in minutes) players MUST wait before they can get the quest again. In this case, 1,440 minutes or, 24 hours.

For testing purposes, check to see if the attachment exists on the player that got the quest. If it's present, your job is done. Players will not be able to get the quest again until the time has lapsed. If the attachment doesn't exist, double check your syntax, as that is usually the #1 cause for Xmlspawner breakage.
 
A fine answer as usual @tass23, I appreciate it. I'll test it out next time I'm working.

My other question is

I've used "GETONTRIGMOB,skills.stealing.value>100" in the past to check if a player has a certain skill at a certain level, but now I'd like these daily repeatable to only be accepted by people who have 500 skill points earned TOTAL, not per skill. How can I go about checking their overall skill level?
 
Last edited:
Thank you very much for your answers @tass23, I tested the attachment and instead of

Code:
SETONTRIGMOB/XmlQuestAttachment,YourQuestName,1440

I used

Code:
SETONTRIGMOB/ATTACH/XmlQuestAttachment,YourQuestName,1440

and it worked great.

So this starts to flow into an annoyingly challenging area of things where I don't even know if it's possible but here goes...

Is there a way that I can trigger a spawn based on 3 people who are all carrying the quest being present? For example, 3 people pick up a daily quest, all 3 of them need to go in together to fight it in order for it to spawn at all?
 
Thank you very much for your answers @tass23, I tested the attachment and instead of

Code:
SETONTRIGMOB/XmlQuestAttachment,YourQuestName,1440

I used

Code:
SETONTRIGMOB/ATTACH/XmlQuestAttachment,YourQuestName,1440

and it worked great.

So this starts to flow into an annoyingly challenging area of things where I don't even know if it's possible but here goes...

Is there a way that I can trigger a spawn based on 3 people who are all carrying the quest being present? For example, 3 people pick up a daily quest, all 3 of them need to go in together to fight it in order for it to spawn at all?
Right from the Xmlspawner2.txt file:
Added the PartyEnabled and PartyRange properties to XmlQuestToken items like the QuestNote.
When this is set to true, KILL and COLLECT type quests will allow all members of a party to have quest objectives satisfied if any member of the party kills or collects quest objective targets.
For the KILL type quests, each member will get credit for a kill made by the party.
For COLLECT type quests, regardless of who in the party collects the target items, they will be distributed to randomly selected party members.
If the PartyRange is set to a value zero or greater, then only members of the party within the specified range will share the quest targets.
The default range is -1 which means infinite range.
PartyEnabled is set to false by default.
Both party enabled and range status are shown in the upper right corner of the quest status gump.
So in your Quest construction, prior to the RewardString, you would have PartyEnabled/True/PartyRange/5, if the players had to be within 5 tiles of one another, or whatever number you want for the range. They HAVE to be in party for this to work.
 
I think you misunderstand, I want to setup a conditional spawner for the KILLNAMED quest objective that REQUIRES 3 people to be there who all have the quest (or in a party) at the same time to make it spawn.
 
Then you would have to use a Condition on the QuestNPC. Add an entry in the XmlDialog (make it a very low entry, 10 or 0 because you want it to check the Condition as soon as possible). Under the Condition try this:
Code:
PLAYERSINRANGE,5=3
PlayersInRange is a keyword for Xmlspawner. The 5 indicates the range we are checking (within a 5 tile radius) and then we are saying that there must be exactly 3 people within that 5 tile radius to trigger the QuestNPC's for the quest. In the same entry as the Condition above, under Text, you could say something like "Only 3 of the strongest adventurers may continue. No more, no less." or whatever.
Be careful using Conditions in XmlDialog, because the QuestNPC will use the FIRST Condition it comes across in the XmlDialog that is TRUE. So if you try to build a bunch of Conditions where multiple outcomes are possible, the XmlDialog will "break". Make Conditions very specific, so that there isn't a chance a player could meet more than one Condition at a time. You can have Conditions built INTO Conditions though and that seems to work 99% of the time.

Example: In a 2-part quest, there are 2 Conditions set on the QuestNPC, but Condition2 falls UNDER Condition1. If the Condition1 is False, the dialog ends. If Condition1 is True, the dialog continues and checks to see if Condition2 is True. If Condition2 is False, the dialog ends. Otherwise, the player gets the quest.

1.To check if the player has 500 skill points.
2. To check if the player is carrying 500 gold.

So using PLAYERSINRANGE in a Condition should work fine, but you'll have to make sure that players can't enter or leave that range until the dialog has ended (perhaps a "close and lock the door behind them" kind of thing).
 
Back