There are few things that could be improved, I didn't test it, but it should be something like this:
quest daily_quest begin
state start begin
when login or levelup with pc.get_level() >= 50 begin
if pc.getqf("daily_cd") < get_global_time() then
set_state(daily)
end
end
when letter with pc.get_level() >= 50 begin
send_letter("Daily Quest")
end
when button or info begin
say_title("Daily Quest")
if (pc.getqf("daily_cd") + (60 * 60 * 24) - get_global_time() > 0) then
local remaining_wait_time = (pc.getqf("daily_cd") + (60 * 60 * 24) - get_global_time())
say("You must wait for timer")
say_reward("You can repeat in: "..get_time_remaining(remaining_wait_time)..'[ENTER]')
return
end
say("Now you can repeat the quest.")
set_state(daily)
end
end
state daily begin
when letter begin
send_letter("Daily Quest")
end
when button or info begin
say_title("Daily Quest")
say("Daily quest active")
end
// mission
when 101.kill begin
chat("daily quest completed.")
pc.setqf("daily_cd", get_global_time() + (60 * 60 * 24));
set_state(start)
end
end
end
Or even better, lets supposedly say that we have a given array with mobs and items from which we can randomly pick both the vnum of the monster and how many to be killed, and a random reward as well:
quest daily_quest begin
state start begin
when login or levelup with pc.get_level() >= 50 begin
if pc.getqf("daily_cd") < get_global_time() then
set_state(daily)
end
end
when letter with pc.get_level() >= 50 begin
send_letter("Daily Quest")
end
when button or info begin
say_title("Daily Quest")
if (pc.getqf("daily_cd") + (60 * 60 * 24) - get_global_time() > 0) then
local remaining_wait_time = (pc.getqf("daily_cd") + (60 * 60 * 24) - get_global_time())
say("You must wait for timer")
say_reward("You can repeat in: "..get_time_remaining(remaining_wait_time)..'[ENTER]')
return
end
say("Now you can repeat the quest.")
set_state(daily)
end
end
state daily begin
// define the array of monsters and rewards
local monsters = {101, 102, 103, 104, 105};
local rewards = {{"itemVnum", 19, 1}, {"itemVnum", 19, 2}, {"itemVnum", 19, 3}, {"itemVnum", 19, 4}, {"itemVnum", 19, 5}};
// pick a random monster and reward. By using math.random() function, this will randomly select a monster and reward from the defined arrays every time the quest is taken, making the quest different each time it is taken.
local random_monster = monsters[math.random(1, #monsters)];
local random_reward = rewards[math.random(1, #rewards)];
when letter begin
send_letter("Daily Quest", "Kill "..random_monster.." monsters and receive "..random_reward[1].." "..random_reward[2].." x"..random_reward[3])
end
when button or info begin
say_title("Daily Quest")
say("Kill "..random_monster.." monsters and receive "..random_reward[1].." "..random_reward[2].." x"..random_reward[3])
end
// mission
when random_monster.kill with pc.count_item(random_reward[2]) < random_reward[3] begin
pc.give_item2(random_reward[2], random_reward[3])
chat("daily quest completed.")
pc.setqf("daily_cd", get_global_time() + (60 * 60 * 24));
set_state(start)
end
end
end
Again, not sure it will work. Maybe @ VegaS™ can spare few minutes to shade some light for both of us ?