Full Version : How do I - Create Playermade quests?
xmlspawner >>XMLSpawner - How do I? >>How do I - Create Playermade quests?


<< Prev | Next >>

ArteGordon- 01-16-2006
What is a Playermade quest?

Playermade quests are created by giving out blank QuestHolder books that have the PlayerMade property set to true. This would typically be done through the use of the XmlQuestMaker stone.
They allow players to design quests for other players to complete.

When the PlayerMade property is set, players can edit blank QuestHolders by double clicking them. This brings up a quest-design gump that allows them to enter their own objectives, text, and attach their own rewards.

Playermade quests can be just designed just like normal quests that a GM or other staff might create with some additional restrictions and features.

These quests can be given to other players or placed on playervendors or added to the PlayerQuestBoard bulletin board.

The quests will automatically be configured for AutoReward when reward items are attached.

Differences between Playermade and non-Playermade quests:

So that player quests can always be distinguished from non-player quests by spawners and other triggering items, player quests will have "PQ: " automatically appended to the beginning of their name.

When playermade quests expire or are deleted before being completed, the reward item that was attached to them will be returned to the quest creator. This way, players can hand out quests without worrying about losing the committed reward if the quest isnt used or completed.
A return container can be specified to receive quest reward returns. If not set, then it is returned to the players backpack.

Playermade quests have the weight of the reward items that they contain. This is to prevent exploits involving use of playerquests as weight-free containers. Non-playermade quests are weightless.

COLLECT and GIVE type quests:

Players can design quests that require other players to go out and collect or retrieve specified items.

The items collected or given are returned to the quest creator and placed into the specified return container (or the creators backpack if nothing is specified).
This allows resource contract type quests to be made, in which players offer rewards in return for certain goods.

For example constructing a quest with this objective

COLLECT,goldingot,100

would create a basic contract for 100 gold ingots.

COLLECT,greatercurepotion,100

would create a basic contract for 100 greater cure potions.

KILL type quests:

Playermade quests can specify objectives that require certain creatures to be killed by using the same type of KILL objective specifications used in normal quests. For example

KILL,balron,5

would instruct the player to kill 5 balrons.

If suggested installation STEP 6 is followed, the playermade quests will support various types of player kill contracts.

For example, a player constructing a quest with an objective

KILLNAMED,playername,PlayerMobile

would create a basic contract that would give the reward when the named player was killed.

KILL,PlayerMobile,5,kills>10

would create a contract that would give the reward when 5 murderers with more that 10 kills were killed

KILL,PlayerMobile,5,kills=0

would create a contract that would give the reward when 5 innocents were killed

Note that specifying the PlayerMobile type avoids exploits that would be possible with just a simple name specification of the target (for example killing a pet named the same as the target player).

Special Playermade quest items:

The PlayerQuestBoard item is a bulletinboard that can be placed in the world and allows players to drop and received playermade quests (such as the player kill contracts).
Just place it with

[add playerquestboard

The XmlQuestMaker item is a stone that dispenses blank playermade quests to be edited (double click it to dispense).
Just

[add xmlquestmaker

to place it.

Examples:

The questbook.xml example in xmlextras spawns two mobs that drop quests and questbooks.

Insignia- 01-20-2006
how would you make a quest that can be done by every player on the server individually without recreating the quest multiple times.

ArteGordon- 01-20-2006
those would be the regular quests (not the playermade) that you would typically hand out automatically through a quest npc or a spawner.

If you take a look at the basic quest tutorial it shows you how to set something like that up.

Insignia- 01-20-2006
alright thanks again

Lara- 06-20-2006
Player Expectation?

If I am reading this correctly, players need to know the item name of what they want collected? Is there some other way that the name can be derived from the actual name display or a target that I'm not understanding?

I guess I could enable the "search" portion of .add for players...

Thank you,
Lara

ArteGordon- 06-21-2006
QUOTE (Lara @ June 21, 2006 12:21 am)
Player Expectation?

If I am reading this correctly, players need to know the item name of what they want collected? Is there some other way that the name can be derived from the actual name display or a target that I'm not understanding?

I guess I could enable the "search" portion of .add for players...

Thank you,
Lara

yeah, thats a good point. Maybe I could add a "What is this?" button to the gump that would identify the name and type of a targeted object.

Lara- 06-21-2006
That would work if they had the object or mobs near them when doing the gump.

But if they dont, then that would be helpful, but not a complete solution. Ideally, either that command needs to be available outside of the gump, or the gump would allow access to a global search like the staff have with .add.

Lara

ArteGordon- 06-21-2006
QUOTE (Lara @ June 21, 2006 10:16 am)
That would work if they had the object or mobs near them when doing the gump.

But if they dont, then that would be helpful, but not a complete solution. Ideally, either that command needs to be available outside of the gump, or the gump would allow access to a global search like the staff have with .add.

Lara

I'm a little reluctant to give players any staff-related powers that they wouldnt otherwise have, even if they are relatively benign (like listing all of the available objects). I can imagine shards that had items/mobiles that they didnt want players to know about.
At least if they have to target it, it is something that is known to be available to them.

Having a [whatisit command that that wasnt tied to the questmaker gump and would reveal type and name information of targeted objects would be a possibility.

Lara- 06-21-2006
agreed smile.gif

ArteGordon- 06-28-2006
added the '[WhatIsIt' command that will be in the v3.13 release to the latest beta_20_313.zip file.

http://xmlspawner.15.forumer.com/index.php?showtopic=53

Gembone- 09-05-2006
I am having a slight problem with the player quest board. its not allowing players to add quest book to it. keeps saying this is not your container. you can't store things here. did I miss a script mod or am I forgeting to do something?

ArteGordon- 09-05-2006
QUOTE (Gembone @ September 05, 2006 10:03 pm)
I am having a slight problem with the player quest board. its not allowing players to add quest book to it. keeps saying this is not your container. you can't store things here. did I miss a script mod or am I forgeting to do something?

I think this is the result of the default containers under 2.0 being deco.

You can set the LiftOverride property on the board to true and that will fix it.

[set liftoverride true

You can also add that to the constructor in xmlquestbook.cs by default if you like.

CODE

       [Constructable]
       public PlayerQuestBoard() : base( 0x1e5e )
       {
           Movable = false;
           [color=red]LiftOverride = true;[/color]
           Name = "Player Quest Board";
       }

Gembone- 09-05-2006
this is for runUO1.0 not 2.0 will this still work?

ok tried the [set liftoverride true and it said property not found.

ArteGordon- 09-06-2006
in xmlquestbook.cs, make this mod

QUOTE


  public override bool CanStore( Mobile m )
  {
   return (Parent == null || Movable || IsLockedDown || IsSecure || m == Parent);

  }

       [Constructable]
       public PlayerQuestBoard() : base( 0x1e5e )
       {
           Movable = false;
           Name = "Player Quest Board";
       }

Gembone- 09-06-2006
ok that fixed it thanks.