Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?xml version='1.0' encoding='ISO-8859-1'?>
- <mod name='Daily Task' version='1.0' enabled='yes'>
- <config name='DailyTask_conf'><![CDATA[
- TASKTYPE_KILL = 1
- TASKTYPE_ITEM = 2
- storageMain = 4000
- storageCount = 4001
- storageTimer = 4002
- timerDuration = 24 * 60 * 60 -- 24h * 60m * 60s
- messageAlreadyDone = 'Sorry, you already did dailytask today.'
- messageKilled = 'You have killed %s of %d. Total killed %d / %d.'
- messageNotGain = 'Sorry, but You must take a dailytask firstly. You can do it by writing: !dailytask.'
- messageNotDone = 'Sorry, you are not able to finish dailytask.'
- taskList = {
- {level = {1, 100}, type = TASKTYPE_KILL, list = {'wolf', 'bear'}, amount = 20,
- reward = {
- randomize = false,
- {REWARD_ITEM, 2347, 50},
- {REWARD_EXP, 750000}
- }},
- {level = {1, 100}, type = TASKTYPE_KILL, list = {'farmer', 'bandit', 'shinobazu'}, amount = 20,
- reward = {
- randomize = false,
- {REWARD_ITEM, 2347, 100},
- {REWARD_EXP, 1000000}
- }},
- {level = {1, 100}, type = TASKTYPE_KILL, list = {'prisoner', 'sound shinobi'}, amount = 30,
- reward = {
- randomize = false,
- {REWARD_ITEM, 2347, 100},
- {REWARD_EXP, 1500000}
- }},
- {level = {101, 300}, type = TASKTYPE_KILL, list = {'monk'}, amount = 50,
- reward = {
- randomize = false,
- {REWARD_ITEM, 2349, 25},
- {REWARD_EXP, 6500000}
- }},
- {level = {101, 300}, type = TASKTYPE_KILL, list = {'sand shinobi'}, amount = 50,
- reward = {
- randomize = false,
- {REWARD_ITEM, 2349, 25},
- {REWARD_EXP, 7500000}
- }},
- {level = {101, 300}, type = TASKTYPE_KILL, list = {'anbu'}, amount = 75,
- reward = {
- randomize = false,
- {REWARD_ITEM, 2349, 25},
- {REWARD_EXP, 8500000}
- }},
- {level = {301, 500}, type = TASKTYPE_KILL, list = {'zetsu clone'}, amount = 100,
- reward = {
- randomize = false,
- {REWARD_ITEM, 2349, 50},
- {REWARD_EXP, 50000000}
- }},
- {level = {301, 500}, type = TASKTYPE_KILL, list = {'samurai'}, amount = 100,
- reward = {
- randomize = false,
- {REWARD_ITEM, 2349, 50},
- {REWARD_EXP, 50000000}
- }},
- {level = {301, 500}, type = TASKTYPE_KILL, list = {'golem', 'elite golem'}, amount = 100,
- reward = {
- randomize = false,
- {REWARD_ITEM, 2349, 50},
- {REWARD_EXP, 50000000}
- }},
- {level = {501, 800}, type = TASKTYPE_KILL, list = {'senju member', 'uchiha member'}, amount = 150,
- reward = {
- randomize = false,
- {REWARD_ITEM, 2349, 75},
- {REWARD_EXP, 100000000}
- }},
- {level = {501, 800}, type = TASKTYPE_KILL, list = {'cursed samurai'}, amount = 100,
- reward = {
- randomize = false,
- {REWARD_ITEM, 2349, 75},
- {REWARD_EXP, 100000000}
- }},
- {level = {501, 800}, type = TASKTYPE_KILL, list = {'akatsuki member'}, amount = 100,
- reward = {
- randomize = false,
- {REWARD_ITEM, 2349, 75},
- {REWARD_EXP, 100000000}
- }},
- {level = {801, 2000}, type = TASKTYPE_KILL, list = {'edo tensei member'}, amount = 200,
- reward = {
- randomize = false,
- {REWARD_ITEM, 2349, 100},
- {REWARD_EXP, 500000000}
- }},
- {level = {801, 2000}, type = TASKTYPE_KILL, list = {'rikudou member'}, amount = 200,
- reward = {
- randomize = false,
- {REWARD_ITEM, 2349, 100},
- {REWARD_EXP, 500000000}
- }},
- {level = {2001, 10000}, type = TASKTYPE_KILL, list = {'rikudou member'}, amount = 250,
- reward = {
- randomize = false,
- {REWARD_ITEM, 2346, 5},
- {REWARD_EXP, 500000000}
- }},
- {level = {2001, 10000}, type = TASKTYPE_KILL, list = {'rikudou member'}, amount = 500,
- reward = {
- randomize = false,
- {REWARD_ITEM, 2346, 10},
- {REWARD_EXP, 1000000000}
- }},
- {level = {2001, 10000}, type = TASKTYPE_KILL, list = {'obito', 'madara', 'naruto', 'sasuke'}, amount = 100,
- reward = {
- randomize = false,
- {REWARD_ITEM, 2344, 1},
- {REWARD_EXP, 1000000000}
- }}
- }
- function getTask(cid)
- local level = getPlayerLevel(cid)
- local list = {}
- for i = 1, #taskList do
- if level >= taskList[i].level[1] and level <= taskList[i].level[2] then
- table.insert(list, i)
- end
- end
- return list[math.random(#list)]
- end
- function addDailyTaskReward(cid, var)
- if var[1] == REWARD_ITEM then
- if type(var[3]) == 'table' then
- doPlayerAddItem(cid, var[2], math.random(var[3][1], var[3][2]))
- else
- doPlayerAddItem(cid, var[2], var[3])
- end
- elseif var[1] == REWARD_EXP then
- doSendAnimatedText(getThingPos(cid), var[2], COLOR_WHITE)
- doPlayerAddExperience(cid, var[2])
- end
- end
- function addDailyTaskRewards(cid, list)
- if list.randomize then
- addDailyTaskReward(cid, list[math.random(#list)])
- else
- for _, v in ipairs(list) do
- addDailyTaskReward(cid, v)
- end
- end
- doCreatureSetStorage(cid, storageMain, -1)
- doCreatureSetStorage(cid, storageCount, -1)
- end
- function getMonsterKilled(cid, list)
- local var = getCreatureStorage(cid, storageCount)
- local result = {}
- for i = 1, #list do
- result[list[i]] = 0
- end
- if var ~= -1 then
- local strExplode = tostring(var):explode(';')
- for i = 1, #strExplode / 2 do
- result[strExplode[i * 2 - 1]] = strExplode[i * 2]
- end
- end
- return result
- end
- function showTask(cid, id)
- local var = taskList[id]
- if not var then
- return false
- end
- local text = 'You daily quest is '
- if var.type == TASKTYPE_ITEM then
- text = text .. 'bring '
- local count = #var.list / 2
- for i = 1, count do
- text = text .. '\n' .. getItemNameById(var.list[i * 2 - 1]) .. ' (' .. getPlayerItemCount(cid, var.list[i * 2 - 1]) .. ' / ' .. var.list[i * 2] .. ')'
- if i < count then
- text = text .. ', '
- end
- end
- elseif var.type == TASKTYPE_KILL then
- text = text .. 'kill ' .. var.amount
- local count = #var.list
- local monsterList = getMonsterKilled(cid, var.list)
- for i = 1, count do
- text = text .. '\n' .. var.list[i] .. ' (' .. monsterList[var.list[i]] .. ')'
- if i < count then
- text = text .. ', '
- end
- end
- end
- text = text .. '.'
- doShowTextDialog(cid, 1961, text)
- end
- function addTask(cid)
- local id = getTask(cid)
- doCreatureSetStorage(cid, storageMain, id)
- doCreatureSetStorage(cid, storageTimer, os.time() + timerDuration)
- showTask(cid, id)
- if taskList[id].type == TASKTYPE_KILL then
- registerCreatureEvent(cid, 'DailyTaskOnKill')
- end
- end
- ]]></config>
- <talkaction words='!dailytask' event='script'><![CDATA[
- domodlib('DailyTask_conf')
- function onSay(cid, words, param, channel)
- local id = getCreatureStorage(cid, storageMain)
- if id > 0 then
- showTask(cid, id)
- return true
- end
- if getCreatureStorage(cid, storageTimer) > os.time() then
- doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, messageAlreadyDone)
- return true
- end
- addTask(cid)
- return true
- end
- ]]></talkaction>
- <talkaction words='!report' event='script'><![CDATA[
- domodlib('DailyTask_conf')
- function onSay(cid, words, param, channel)
- local id = getCreatureStorage(cid, storageMain)
- if id <= 0 then
- doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, messageNotGain)
- return true
- end
- local var = taskList[id]
- if var.type == TASKTYPE_KILL then
- local monsterList = getMonsterKilled(cid, var.list)
- local count = 0
- for k, v in pairs(monsterList) do
- count = count + tonumber(v)
- end
- if count < var.amount then
- doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, messageNotDone)
- return true
- end
- elseif var.type == TASKTYPE_ITEM then
- local count = #var.list / 2
- for i = 1, count do
- if getPlayerItemCount(cid, var.list[i * 2 - 1]) < var.list[i * 2] then
- doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, messageNotDone)
- return true
- end
- end
- for i = 1, count do
- doPlayerRemoveItem(cid, var.list[i * 2 - 1], var.list[i * 2])
- end
- end
- addDailyTaskRewards(cid, var.reward)
- return true
- end
- ]]></talkaction>
- <event type="login" name="DailyTaskLogin" event="script"><![CDATA[
- domodlib('DailyTask_conf')
- function onLogin(cid)
- local id = getCreatureStorage(cid, storageMain)
- if id < 1 then
- return true
- end
- local var = taskList[id]
- if var.type == TASKTYPE_KILL then
- registerCreatureEvent(cid, 'DailyTaskOnKill')
- end
- return true
- end
- ]]></event>
- <event type="kill" name="DailyTaskOnKill" event="script"><![CDATA[
- domodlib('DailyTask_conf')
- function onKill(cid, target)
- local id = getCreatureStorage(cid, storageMain)
- if id < 1 then
- return true
- end
- local var = taskList[id]
- local name = getCreatureName(target):lower()
- if isInArray(var.list, name) then
- local monsterList = getMonsterKilled(cid, var.list)
- monsterList[name] = monsterList[name] + 1
- local buffer, i = '', 0
- local description = ''
- local count = 0
- for k, v in pairs(monsterList) do
- i = i + 1
- count = count + tonumber(v)
- buffer = buffer .. k .. ';' .. v
- description = description .. k .. ' (' .. v .. ')'
- if i < #var.list then
- buffer = buffer .. ';'
- description = description .. ', '
- end
- end
- doCreatureSetStorage(cid, storageCount, buffer)
- if count <= var.amount then
- doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, messageKilled:format(description, var.amount, count, var.amount))
- end
- end
- return true
- end
- ]]></event>
- </mod>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement