|
|
| Line 1: |
Line 1: |
| − | '''TRIGEDIT-MOB-TUTORIAL TRIGEDIT-TUTORIAL''' | + | '''TRIGEDIT-COMMANDLISTS''' |
| | [[Category:Help Files]] | | [[Category:Help Files]] |
| | + | [[Category:Building]] |
| | | | |
| − | TRIGEDIT-MOB-TUTORIAL TRIGEDIT-TUTORIAL
| |
| | | | |
| − | TRIGEDIT-MOB-TUTORIAL TRIGEDIT-TUTORIAL
| |
| − |
| |
| − | TRIGEDIT-MOB-TUTORIAL TRIGEDIT-TUTORIAL
| |
| − |
| |
| − |
| |
| − |
| |
| − | Mob trigger tutorial
| |
| − |
| |
| − | This mini-quest is setup in TBA as an example. {cRGOTO 1310{c0 and work your way north
| |
| − |
| |
| − | with nohassle off.
| |
| − |
| |
| − |
| |
| − | The following 7 steps should give you a general idea about what to do, and how to go
| |
| − |
| |
| − | about making small quests in the dg scripting language. This example is concentrated
| |
| − |
| |
| − | on quests involving mobs.
| |
| − |
| |
| − |
| |
| − |
| |
| − | The process can be broken down to the following:
| |
| − |
| |
| − | # Decide what you want the script to do.
| |
| − | # Make corresponding objects and mobs.
| |
| − | # Split up the quest.
| |
| − | # Find corresponding trigger types.
| |
| − | # write the scripts for the triggers.
| |
| − | # Attach the scripts - permanently
| |
| − | # Done ?
| |
| − |
| |
| − | # Decide what you want the script to do.
| |
| − | #; In this example, we want to make a small mini quest in an area. The quest
| |
| − | #; work like this: When you enter the room, where the first mob is, it will
| |
| − | #; to tell a tale. In this tale, you are instructed to perform a task, in
| |
| − | #; case, kill an evil ogre, that lives in a nearby forest. As proof of the
| |
| − | #; you must bring back the ogre's apprehension to the questgiving mob.
| |
| − |
| |
| − | # Make corresponding objects and mobs.
| |
| − | #; Ingredients for this quest:
| |
| − | #; 1 Questgiver mob - I've chosen 'the questmaster' - vnum 1310
| |
| − | #; 1 Target mob - In this case 'an apprehensive Ogre' - vnum 1311
| |
| − | #; 1 Quest object - 'some apprehension' - trash object, vnum 1300
| |
| − |
| |
| − | # Split up the quest.
| |
| − | #; Next thing to do is look at the different steps involved with the quest. In
| |
| − | #; example, we have three steps:
| |
| − | #; Player entering room -> tell story
| |
| − | #; Player finds ogre -> load object (Do not just want the mob to carry it)
| |
| − | #; Player gives questmaster apprehension -> reward player
| |
| − |
| |
| − | # Find corresponding trigger types.
| |
| − | #; Having split the quest up also means we reasonably easy can decide what
| |
| − | #; of triggers we need - in this case:
| |
| − | #; mob GREET trigger (attached to questmaster)
| |
| − | #; mob DEATH trigger (attached to ogre)
| |
| − | #; mob RECEIVE trigger (attached to questmaster)
| |
| − |
| |
| − | # write the scripts for the triggers.
| |
| − | #; Up to this point, neither trigedit or the script editors have been used.
| |
| − | #; the info needed is in the help files and on the webpages. Notice most of
| |
| − | #; work required is PLANNING! You must know exactly what you want to do before
| |
| − | #; do it. Now is the time to fire up trigedit and start editing the triggers.
| |
| − | #; give the first one vnum 0, and edit it to look like the script below:
| |
| − |
| |
| − |
| |
| − |
| |
| − | > trigedit 0
| |
| − |
| |
| − | Trigger Editor [0]
| |
| − |
| |
| − |
| |
| − |
| |
| − | 1) Name : {cyMob Tutorial Example 1310 - Quest Offer{c0
| |
| − |
| |
| − | 2) Intended for : {cyMobiles{c0
| |
| − |
| |
| − | 3) Trigger types: {cyGreet {c0
| |
| − |
| |
| − | 4) Numeric Arg : {cy100{c0
| |
| − |
| |
| − | 5) Arguments :
| |
| − |
| |
| − | 6) Commands:
| |
| − |
| |
| − | {cc* we don't want him to tell this to mobs. vnum -1 is reserved for players.
| |
| − |
| |
| − | if %actor.vnum% == -1
| |
| − |
| |
| − | * only greet players coming from the south.
| |
| − | if %direction% == south
| |
| − |
| |
| − | *wait 1 second, always give the player time before you start sending text.
| |
| − |
| |
| − | wait 1 sec
| |
| − |
| |
| − | say Can you help me, %actor.name%?
| |
| − |
| |
| − | wait 1 sec
| |
| − |
| |
| − | say An apprehensive ogre has something of mine.
| |
| − |
| |
| − | wait 1 sec
| |
| − |
| |
| − | say If you slay him I'll give you all the coins I can spare.
| |
| − |
| |
| − | wait 1 sec
| |
| − |
| |
| − | say Please, bring me the apprehension he has stolen.
| |
| − |
| |
| − | end
| |
| − |
| |
| − | end{c0
| |
| − |
| |
| − |
| |
| − |
| |
| − | The script above will be executed every time anyone enters the room. If the
| |
| − |
| |
| − | person entering is a mobile, the if check at the beginning will stop the
| |
| − |
| |
| − | execution. Note, that I've named the trigger as I did above. ALWAYS include
| |
| − |
| |
| − | the VNUM of where you plan on attaching the trigger. Also, give it a name so
| |
| − |
| |
| − | it is easy to see what part of the quest this trigger handles. The second
| |
| − |
| |
| − | script is very simple.
| |
| − |
| |
| − |
| |
| − |
| |
| − | > trigedit 1
| |
| − |
| |
| − | Trigger Editor [1]
| |
| − |
| |
| − |
| |
| − |
| |
| − | 1) Name : {cyMob Tutorial Example 1311 - Kill ogre{c0
| |
| − |
| |
| − | 2) Intended for : {cyMobiles{c0
| |
| − |
| |
| − | 3) Trigger types: {cyDeath{c0
| |
| − |
| |
| − | 4) Numeric Arg : {cy100{c0
| |
| − |
| |
| − | 5) Arguments :
| |
| | | | |
| | 6) Commands: | | 6) Commands: |
| | | | |
| − | {ccsay you got the best of me %actor.name%. | + | {ccsay My trigger commandlist is not complete!{c0 |
| − | | |
| − | * load some apprehension
| |
| − | %load% obj 1300
| |
| − | * reload the mob for the next questor
| |
| − | %load% mob 1311{c0
| |
| − | | |
| − | | |
| − | The above script will be executed when the mob is killed - just before the
| |
| − | | |
| − | death cry. The last script just needs to check if the object handed over is
| |
| − | | |
| − | the correct one. Let's see it, here with vnum 2:
| |
| − | | |
| − | | |
| − | | |
| − | > trigedit 2
| |
| − | | |
| − | Trigger Editor [2]
| |
| − | | |
| − | | |
| − | | |
| − | 1) Name : {cyMob Tutorial Example 1310 - Give/Quest Completion{c0
| |
| − | | |
| − | 2) Intended for : {cyMobiles{c0
| |
| − | | |
| − | 3) Trigger types: {cyReceive{c0
| |
| − | | |
| − | 4) Numeric Arg : {cy100{c0
| |
| − | | |
| − | 5) Arguments :
| |
| − | | |
| − | 6) Commands:
| |
| − | | |
| − | {cc* check if this was indeed the right object
| |
| − | | |
| − | if %object.vnum% == 1300
| |
| − | | |
| − | wait 1 sec
| |
| − | | |
| − | say Thank you, %actor.name%
| |
| − | | |
| − | %send% %actor% %self.name% gives you a gold piece.
| |
| − | | |
| − | %echoaround% %actor% %actor.name% is rewarded for his valor.
| |
| − | | |
| − | nop %actor.gold(1)%
| |
| − | | |
| − | wait 5 sec
| |
| − | | |
| − | %purge% obj 1300
| |
| − | | |
| − | else
| |
| − | | |
| − | * this wasn't the right object - don't accept it
| |
| − | say I don't want that - bring me back my apprehension.
| |
| − | | |
| − | return 0
| |
| − | | |
| − | end{c0
| |
| − | | |
| − | | |
| − | | |
| − | The script above is pretty self explanatory, but to clarify a bit: First check
| |
| − | | |
| − | if the object is the correct vnum, then give the reward, and send messages to
| |
| − | | |
| − | the player and others in the room. If it wasn't the object, reject it, and use
| |
| − | | |
| − | the return value of the script to prevent the object being passed over. Lastly,
| |
| − | | |
| − | and very importantly, 'end' ends the if.
| |
| − | | |
| − | | |
| − | | |
| − | # Attach the scripts - permanently
| |
| − | #; Proceed and add the scripts to the two mobiles through medit:
| |
| − | | |
| − | > medit 1310
| |
| − | | |
| − | [medit menu]
| |
| − | | |
| − | Enter choice ? S
| |
| − | | |
| − | Script Editor
| |
| − | | |
| − | | |
| − | | |
| − | Trigger List:
| |
| − | | |
| − | <none>
| |
| − | | |
| − | | |
| − | | |
| − | N) New trigger for this script
| |
| − | | |
| − | D) Delete a trigger in this script
| |
| − | | |
| − | X) Exit Script Editor
| |
| − | | |
| − | | |
| − | | |
| − | Enter choice :
| |
| − | | |
| − | Here, add the scripts by typing N, then the script vnum:
| |
| − | | |
| − | Enter choice : n
| |
| − | | |
| − | Please enter position, vnum (ex: 1, 200): 0
| |
| − | | |
| − | Enter choice ? n
| |
| − | | |
| − | Please enter position, vnum (ex: 1, 200): 2
| |
| − | | |
| − | Enter choice ? x
| |
| − | | |
| − | | |
| − | | |
| − | And add the trigger vnum 3 to the ogre in a similar manner.
| |
| − | | |
| − | | |
| − | | |
| − | # Done ?
| |
| − | #; The scripts are now attached to the correct mobs, and the players of your
| |
| − | #; can now take the quest whenever they wish. This is a great time for
| |
| − | #; improvements to the little quest:
| |
| − | | |
| − | Balance issues:
| |
| − | | |
| − | Should players get a smaller reward if they perform the quest many times ?
| |
| − | | |
| − | Should it be limited to 1 quest per player or 1 per reboot ?
| |
| − | | |
| − | Gameplay issues:
| |
| − | | |
| − | Perhaps other mobs in town should tell the player to go see the old man ?
| |
| − | | |
| − | Should the ogre always load the object, or only when people know he has it ?
| |
| − | | |
| − | Are there other mobs who would like to pay for that object ?
| |
| − | | |
| − | | |
| − | | |
| − | The above list is just a few examples. All of them could be implemented, but
| |
| − | | |
| − | it is beyond the scope of this tutorial.
| |
| | | | |
| | + | This is the command list, which contains the actions which take place, when the |
| | | | |
| | + | trigger is executed. The command list makes use of the {cRHELP TEXT-EDITOR{c0. |
| | | | |
| | + | This is often called the 'script', and is actually a small program, executed |
| | | | |
| | + | step by step. In it, you can use different types of commands: script - specific |
| | | | |
| − | 12DEC01 - mob tutorial by Welcor
| + | commands, flow control commands - if this is a mobile script, you can use |
| | | | |
| − | 04OCT02 - updated/modified by Rumble
| + | standard mud commands like say or give. |
This is the command list, which contains the actions which take place, when the
trigger is executed. The command list makes use of the {cRHELP TEXT-EDITOR{c0.
step by step. In it, you can use different types of commands: script - specific
standard mud commands like say or give.