EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Quests::Q&A (https://www.eqemulator.org/forums/forumdisplay.php?f=599)
-   -   Task System Quest (https://www.eqemulator.org/forums/showthread.php?t=32684)

Bdiddy 12-14-2010 01:17 PM

Task System Quest
 
I made my first quest with KLS task master. It shows in my my db under the tasks. It's justs a basic raid, go kill one npc and that's it. My question is how do I add the task to the npc I want to have give the task. So say NPC A in PoK gives the task to go kill NPC B in PoFire. The part were NPC A gives the task is were I'm stuck. Also for the reward method I have as single item id. Is that were everyone in the group/raid gets the reward on their cursor upon a successful kill? That's basically what I'm trying to accomplish, give out task, kill raid npc, everyone gets reward. Thanks

Akkadius 12-14-2010 01:37 PM

Quote:

Originally Posted by Bdiddy (Post 195132)
I made my first quest with KLS task master. It shows in my my db under the tasks. It's justs a basic raid, go kill one npc and that's it. My question is how do I add the task to the npc I want to have give the task. So say NPC A in PoK gives the task to go kill NPC B in PoFire. The part were NPC A gives the task is were I'm stuck. Also for the reward method I have as single item id. Is that were everyone in the group/raid gets the reward on their cursor upon a successful kill? That's basically what I'm trying to accomplish, give out task, kill raid npc, everyone gets reward. Thanks

quest::assigntask(taskid);

quest::taskselector(taskcount, taskid1, taskid2, taskid3);

You can find more task related quest objects here:

http://www.eqemulator.net/wiki/wikka...uestCheatSheet

Also, before you say the task isn't working. Make sure you start your task with activity id 0, 1, 2, 3, 4 chronologically. Your steps can be whatever you wish.

Then you must make sure that if you are rewarding your players via item ID you need to define that in the editor, or know what values equal what in the schema Derision designed it for here:

http://www.eqemulator.net/wiki/wikka...goryTaskSystem

Bdiddy 12-14-2010 02:08 PM

thx, anyway this can be explained a little simpler for someone w/a novice programming background? thx

Derision 12-14-2010 02:36 PM

To assign the task, add a Perl quest to the NPC. E.g. if I wanted V'Lynn Renloe in PoK to assign the task, I would put this:
Code:


sub EVENT_SAY
{
        if($text=~/hail/i)
        {
                if(!quest::istaskactive(1000) && !quest::istaskcompleted(1000))
                {
                        quest::say("Assigning you task to kill Fennin Ro,");
                        quest::assigntask(1000);
                }
        }
}

in quests\poknowledge\V-Lynn_Renloe.pl

Note the Perl checks if you already have the task in your active tasks, or if you have completed it before.

Bdiddy 12-14-2010 02:55 PM

thx, when i try it out and hail the npc i get Invalide TaskID 303. 303 is the id of the task in my tasks table.

Derision 12-14-2010 03:08 PM

If you added the task to the task table but did not restart your server, issuing the GM command #task reloadall will make it available.

Also to address your other point about rewards, the task system currently is designed for single player tasks.

Shared Tasks, which reward a group of players are not currently implemented.

You could reward members of the group, by having the task RewardMethod set to 2 and using something like this:
Code:


sub EVENT_TASK_STAGE_COMPLETE
{
        if(($task_id == 1000) && ($activity_id == 0))
        {
                $g = $client->GetGroup();

                if(!$g)
                {
                        quest::say("You are not in a group, just rewarding you.");
                        $client->SummonItem(5500);      # SSoY
                }
                else
                {
                        for($i = 0; $i < 6; ++$i)
                        {
                                $c = $g->GetMember($i);
                             
                                if($c)
                                {
                                        $name = $c->GetName();
                                        quest::say("Rewarding group member $name");
                                        $c->SummonItem(5500);
                                }
                        }
                }
        }
}

in the player.pl of the zone the final activity takes place in (e.g. quests\pofire\player.pl), but if two or more players in the group have the task active, then all group members will get rewarded two or more times using that code.

Bdiddy 12-14-2010 03:16 PM

for the reward if each player in the group/raid gets the task and they are all grouped/raid together will each player get the reward on the kill then? instead of just getting one task for the entire group/raid

Derision 12-14-2010 03:30 PM

Yes, if every player in the group/raid has been assigned the task, by hailing the task giver, or whatever, then they will all get the reward if the final activity is a Kill activity, as all the members of the group or raid get merit for the kill.

Bdiddy 12-14-2010 03:33 PM

I restarted the server, did the gm command also and still got the same error Invalid id 303

Derision 12-14-2010 03:41 PM

Probably your activity IDs for the task don't start at 0, or are not sequential as Akkadius suggested.

If the Task ID really is 303, then there should be messages in your zone log files detailing why it couldn't load the task, but the above is most likely.

If that isn't the problem, we would need to see the relevant rows from your task and activity table, i.e. the output of:
Code:

select * from tasks where id = 303;
select * from activities where taskid =303;


Bdiddy 12-14-2010 04:05 PM

K, i got it to were i can get the task. only problem is it shows up done as soon as i get the task.

Derision 12-14-2010 04:06 PM

Do you have goalcount set to 0 in the activity row ? It should be 1 if you want them to kill one of the NPC.

Bdiddy 12-14-2010 04:11 PM

yeah, goalcount, goalid, goalmethod are all at 0
I also realized that i dont think i have anything set or code that lets the quest know that the npc has been killed and to update the quest.

Derision 12-14-2010 04:15 PM

OK, well you want goalcount = 1, to specify the player needs to kill 1 of the NPC.

In goalid you want the ID of the NPC (from the npc_types table), e.g. Fennin Ro is npc_type id 217054.

goalmethod 0 is correct for the task system to automatically provide the reward when the NPC is killed.

Also you want activitytype 2 (Kill).

Whenever you change anything in the task/activity table you should do a #task reloadall to have the zone re-read the data.

Bdiddy 12-14-2010 04:39 PM

Ok success. Now i just need to figure out how to actually write a raid quest instead of npc has X amount of hp hits X hard. Any threads you can point me to?
And thx for your help.


All times are GMT -4. The time now is 10:18 PM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.