Log in

View Full Version : Task Reward, Radiant Crystals?


Esildor
04-11-2014, 02:49 PM
Not really sure where to put this, didn't think it belonged in the quest folder.

Made a Task on the EoC tasks window .. it's functioning perfectly but I'm wondering if there's a way to make it reward radiant crystals? I know I could put single item reward in and have it reward A radiant crystal but I want my task to give 40 of them.

As my workaround to this issue I planned on having the task reward everyone(group) a "voucher" and then the voucher can be handed in for 40 radiant crystals.

Would that be the easiest way to do this or is there a way I can have the actual task reward radiant crystals?

Thanks!

joligario
04-11-2014, 03:08 PM
If the current task code doesn't allow charges, then you can have a quest controlled reward give out 40 RCs.

Esildor
04-11-2014, 03:18 PM
If the current task code doesn't allow charges, then you can have a quest controlled reward give out 40 RCs.

So sort of like an "event controller" in the zone the task is completed, watching for task completion then give player the RCs when it reads task complete?

Akkadius
04-11-2014, 03:25 PM
So sort of like an "event controller" in the zone the task is completed, watching for task completion then give player the RCs when it reads task complete?

No need to make it that complicated.

Use your global_player script in EVENT_TASK_COMPLETE

Example:

sub EVENT_TASK_COMPLETE{
#::: Sands of Time Tasks
if($task_id == 165){
quest::we(15, "Congratulations $name for completing [Story] T1 Progression on Akka's Funhouse! $name is now a Timeshifter!");
quest::ze(15, "Chronos booms Atiiki, '$name, you have proven yourself, you are now amongst the ancients as a Timeshifter!");
$client->SetTitleSuffix("the Timeshifter", 1);
$client->Message(15, "[Title Gain]: You are now known as 'the Timeshifter'");
$client->Message(15, "[Level Unlock]: You are now able to level to 203!");
$client->Message(15, "[Expedition Unlock]: You have unlocked T1 Expeditions - Speak to the first available Expedition NPC to start");
$client->Message(15, "[Currency] You have been given 60 Phosphenes");
if($ulevel == 200){ quest::level(200); }
$client->SetGlobal("CharMaxLevel", "203", 5, 'F');
quest::updatetaskactivity(196, 3, 1); #::: Sands of Time Master Quest
quest::summonitem(79912, 60);
$client->PlayMP3("opener4.xmi");
}
}

Esildor
04-11-2014, 03:44 PM
No need to make it that complicated.

Use your global_player script in EVENT_TASK_COMPLETE

Example:

sub EVENT_TASK_COMPLETE{
#::: Sands of Time Tasks
if($task_id == 165){
quest::we(15, "Congratulations $name for completing [Story] T1 Progression on Akka's Funhouse! $name is now a Timeshifter!");
quest::ze(15, "Chronos booms Atiiki, '$name, you have proven yourself, you are now amongst the ancients as a Timeshifter!");
$client->SetTitleSuffix("the Timeshifter", 1);
$client->Message(15, "[Title Gain]: You are now known as 'the Timeshifter'");
$client->Message(15, "[Level Unlock]: You are now able to level to 203!");
$client->Message(15, "[Expedition Unlock]: You have unlocked T1 Expeditions - Speak to the first available Expedition NPC to start");
$client->Message(15, "[Currency] You have been given 60 Phosphenes");
if($ulevel == 200){ quest::level(200); }
$client->SetGlobal("CharMaxLevel", "203", 5, 'F');
quest::updatetaskactivity(196, 3, 1); #::: Sands of Time Master Quest
quest::summonitem(79912, 60);
$client->PlayMP3("opener4.xmi");
}
}

So, in the global folder?

What should I name it .. name of the task or like name of the final mob in the task?

Akkadius
04-11-2014, 03:48 PM
No, global/global_player.pl

This is a player script that is responsible for handling player events. So as a task is completed, that sub EVENT is triggered. In which $task_id passed through it as the current task that the client has completed. You just need to check for that task id and complete the task.

You could do something like this just to test ingame:

sub EVENT_TASK_COMPLETE{
if($task_id == youridgoeshere){ $client->Message(15, "Hi this works"); }
}

Esildor
04-11-2014, 03:58 PM
Okay, I understand now - going to play with it a bit and get it to work. I like that a lot more than having to hand out a voucher. Figured there had to be some way to do it but I haven't played with any global_player stuff yet so didn't know about it :P

Thanks Akka!

Akkadius
04-11-2014, 04:00 PM
Okay, I understand now - going to play with it a bit and get it to work. I like that a lot more than having to hand out a voucher. Figured there had to be some way to do it but I haven't played with any global_player stuff yet so didn't know about it :P

Thanks Akka!

global_player.pl will be active in any zone. So all of your standard player events work there.

sorvani
04-12-2014, 10:31 AM
One thing of note to add to what Akkadius said. global_player.pl works in any zone. THis means the logic fires everytime you complete a task in any zone.

If your task is impossible to complete in more than one zone, then you should put the code in the player.pl for that zone.

Yes for a single task or even a hundred it will really not make a big difference. But for a hundred tasks on a server where 10 or 20 people are completing tasks at the same time, it can start to have an impact on performance.

Kingly_Krab
04-12-2014, 12:42 PM
If you put this in global_player.pl and you find it not working, make sure all your zones have a player.pl that you'd like the task to be completed it, the player.pl may be empty, but it's necessary to have one for global_player.pl to work.

Esildor
04-13-2014, 04:47 PM
Sorvani/KK,

So, instead of using the global_player.pl I could create a "player.pl" in the zone where the task will be completed and that will also work?

Kingly_Krab
04-13-2014, 06:22 PM
Yes, that could work as well. Global_player.pl is just for things you want to be allowed on the global side, but if you just want one zone you can put a player.pl in that zone's folder and do the same thing.