Hi, Im Bart
at the beginning I would like to apologize for my English, it is not my frist language
Im looking for help with my Task system.
My distro is TFS 0.4 rev 3777
Its a code :
The problem is that system let me do any task and everyting looks fine but when you want to do another task and you have finished it (killed enough monsters) it says
and another thing is that if even that message appears, sometimes I get an reward and sometimes I don't.
Can someone help mi with this ?
Thanks in advance.
Best Regard
Bart
at the beginning I would like to apologize for my English, it is not my frist language
Im looking for help with my Task system.
My distro is TFS 0.4 rev 3777
Its a code :
Lua:
<?xml version="1.0" encoding="UTF-8"?>
<mod name="Talkaction Task System" version="1.0" author="Oskar" contact="[email protected]" enabled="yes">
<config name="talkactionTask_conf"><![CDATA[
task = {
['undead elite gladiator'] = {storage = 10000, beginStorageValue = 300, finishStorageValue = 301, count = 10,
requiedLevelToReward = 99999999,
rewards = {'smsPoints', 100, 'exp', 2397600, 'cash', 200000, 'item', {5808, 1}}},
['retching horror'] = {storage = 9999, beginStorageValue = 1, finishStorageValue = 2, count = 10,
requiedLevelToReward = 99999999,
rewards = {'smsPoints', 100, 'exp', 2397600, 'cash', 200000, 'item', {5808, 1}}},
['silencer'] = {storage = 9998, beginStorageValue = 3, finishStorageValue = 4, count = 10,
requiedLevelToReward = 99999999,
rewards = {'smsPoints', 100, 'exp', 2397600, 'cash', 200000, 'item', {5808, 1}}},
['midnight asura'] = {storage = 8965, beginStorageValue = 103, finishStorageValue = 104, count = 200,
requiedLevelToReward = 99999999,
rewards = {'exp', 65400, 'cash', 20000, 'item', {5880, 10}}},
['ghastly dragon'] = {storage = 8975, beginStorageValue = 108, finishStorageValue = 109, count = 150,
requiedLevelToReward = 99999999,
rewards = {'exp', 8000, 'cash', 20000, 'item', {2486, 1, 2168, 1}}},
['wailing widow'] = {storage = 1421, beginStorageValue = 5, finishStorageValue = 6, count = 250,
requiedLevelToReward = 99999999,
rewards = {'exp', 90750, 'cash', 30000, 'item', {2515, 1}}},
['triple medusa'] = {storage = 9993, beginStorageValue = 13, finishStorageValue = 14, count = 300,
requiedLevelToReward = 99999999,
rewards = {'exp', 54900, 'cash', 35000, 'item', {2534, 1}}},
['crystal spider'] = {storage = 8675, beginStorageValue = 211, finishStorageValue = 212, count = 500,
requiedLevelToReward = 99999999,
rewards = {'exp', 270000, 'cash', 20000, 'item', {5879, 10, 7290, 5}}},
['worker golem'] = {storage = 8375, beginStorageValue = 205, finishStorageValue = 206, count = 300,
requiedLevelToReward = 99999999,
rewards = {'exp', 225000, 'cash', 20000, 'item', {2487, 1}}},
['dragon'] = {storage = 5123, beginStorageValue = 85, finishStorageValue = 86, count = 4,
requiedLevelToReward = 99999999,
rewards = {'exp', 168000, 'cash', 60000, 'item', {2487, 1, 2516, 1}}},
['bog raider'] = {storage = 9992, beginStorageValue = 15, finishStorageValue = 16, count = 400,
requiedLevelToReward = 99999999,
rewards = {'exp', 192000, 'cash', 64000, 'item', {8880, 1}}},
['giant spider'] = {storage = 9982, beginStorageValue = 35, finishStorageValue = 36, count = 500,
requiedLevelToReward = 99999999,
rewards = {'exp', 270000, 'cash', 30000, 'item', {5879, 10}}},
['quara'] = {storage = 8412, beginStorageValue = 118, finishStorageValue = 119, count = 250,
requiedLevelToReward = 99999999,
rewards = {'exp', 350000, 'cash', 70000, 'item', {5895, 10}}},
['necromancer'] = {storage = 8961, beginStorageValue = 100, finishStorageValue = 101, count = 400,
requiedLevelToReward = 99999999,
rewards = {'exp', 140000, 'cash', 20000, 'item', {2195, 1}}},
['wyrm'] = {storage = 9961, beginStorageValue = 77, finishStorageValue = 78, count = 600,
requiedLevelToReward = 99999999,
rewards = {'exp', 558000, 'cash', 77000, 'item', {8871, 1}}},
['dragon lord'] = {storage = 4561, beginStorageValue = 87, finishStorageValue = 88, count = 800,
requiedLevelToReward = 99999999,
rewards = {'exp', 1008000, 'cash', 90000, 'item', {2414, 1, 7899, 1}}},
['frost dragon'] = {storage = 9997, beginStorageValue = 90, finishStorageValue = 91, count = 800,
requiedLevelToReward = 99999999,
rewards = {'exp', 1008000, 'cash', 90000, 'item', {2498, 1}}},
['hero'] = {storage = 9996, beginStorageValue = 7, finishStorageValue = 8, count = 500,
requiedLevelToReward = 99999999,
rewards = {'exp', 360000, 'cash', 70000, 'item', {2491, 1, 2488, 1}}},
['black knight'] = {storage = 9995, beginStorageValue = 9, finishStorageValue = 10, count = 600,
requiedLevelToReward = 99999999,
rewards = {'exp', 576000, 'cash', 80000, 'item', {2496, 1}}},
['war golem'] = {storage = 8275, beginStorageValue = 203, finishStorageValue = 204, count = 450,
requiedLevelToReward = 99999999,
rewards = {'exp', 742500, 'cash', 30000, 'item', {2645, 1}}},
['hydra'] = {storage = 9978, beginStorageValue = 43, finishStorageValue = 44, count = 800,
requiedLevelToReward = 99999999,
rewards = {'exp', 1008000, 'cash', 90000, 'item', {2498, 1, 2195, 1}}},
['medusa'] = {storage = 9973, beginStorageValue = 53, finishStorageValue = 54, count = 750,
requiedLevelToReward = 99999999,
rewards = {'exp', 1822500, 'cash', 140000, 'item', {7884, 1, 7903, 1, 7885, 1}}},
['serpent spawn'] = {storage = 9967, beginStorageValue = 65, finishStorageValue = 66, count = 700,
requiedLevelToReward = 99999999,
rewards = {'exp', 1281000, 'cash', 50000}},
['nightmare'] = {storage = 9959, beginStorageValue = 81, finishStorageValue = 82, count = 850,
requiedLevelToReward = 99999999,
rewards = {'exp', 110000, 'cash', 95000, 'item', {6391, 1}}},
['warlock'] = {storage = 8475, beginStorageValue = 207, finishStorageValue = 208, count = 850,
requiedLevelToReward = 99999999,
rewards = {'exp', 2040000, 'cash', 90000, 'item', {7895, 1, 7898, 1}}},
['behemoth'] = {storage = 9994, beginStorageValue = 11, finishStorageValue = 12, count = 500,
requiedLevelToReward = 99999999,
rewards = {'exp', 900000, 'cash', 80000, 'item', {2466, 1}}},
['destroyer'] = {storage = 8075, beginStorageValue = 213, finishStorageValue = 214, count = 600,
requiedLevelToReward = 99999999,
rewards = {'exp', 900000, 'cash', 70000, 'item', {5741, 1}}},
['grim reaper'] = {storage = 9983, beginStorageValue = 33, finishStorageValue = 34, count = 900,
requiedLevelToReward = 99999999,
rewards = {'exp', 2180000, 'cash', 180000, 'item', {5741, 1}}},
['fury'] = {storage = 8175, beginStorageValue = 201, finishStorageValue = 202, count = 800,
requiedLevelToReward = 99999999,
rewards = {'exp', 2160000, 'cash', 70000, 'item', {2470, 1}}},
['hellfire fighter'] = {storage = 8575, beginStorageValue = 209, finishStorageValue = 210, count = 450,
requiedLevelToReward = 99999999,
rewards = {'exp', 1053000, 'cash', 110000, 'item', {7891, 1, 7899, 1, 7890, 200}}},
['demon'] = {storage = 9964, beginStorageValue = 71, finishStorageValue = 72, count = 666,
requiedLevelToReward = 99999999,
rewards = {'smsPoints', 100, 'exp', 2397600, 'cash', 200000, 'item', {5808, 1}}}
}
mainStorage = 12155
function isSummon(cid)
if(not isCreature(cid)) then
return false
end
return getCreatureMaster(cid) ~= cid
end
function checkInfoAboutTask(tableTask)
local message = ''
for i = 1, #tableTask/2 do
local rewardType, rewardCount = tableTask[i*2-1], tableTask[i*2]
if rewardType == 'item' and type(rewardCount) == 'table' then
for item = 1, #rewardCount/2 do
local rewardItemId, rewardItemCount = rewardCount[item*2-1], rewardCount[item*2]
message = message .. ('* ' .. rewardItemCount .. 'x ' .. getItemNameById(rewardItemId)) .. '\n'
end
else
message = message .. ((rewardType == 'item' and '* ' .. getItemNameById(rewardCount)) or
(rewardType == 'exp' and '* ' .. rewardCount .. ' Experience ') or
(rewardType == 'cash' and '* ' .. rewardCount .. ' Money ') or
(rewardType == 'smsPoints' and '* ' .. rewardCount .. ' Sms points ')) .. '\n'
end
end
return message
end
function doAddExp(cid, amount)
return doSendAnimatedText(getThingPos(cid), amount, COLOR_WHITE) and doPlayerAddExperience(cid, amount) or false
end
]]></config>
<talkaction words="!task" event="script"><![CDATA[
domodlib('talkactionTask_conf')
function onSay(cid, words, param, channel)
local taskMenu, message = task[param:lower()], ''
if taskMenu and (taskMenu.potionTask and getCreatureStorage(cid, taskMenu.storage) == -1 or getCreatureStorage(cid, mainStorage) < 1) then
if taskMenu.potionTask and getCreatureStorage(cid, taskMenu.storage) > -1 then
return true
else
doCreatureSetStorage(cid, mainStorage, taskMenu.beginStorageValue)
end
doCreatureSetStorage(cid, taskMenu.storage, 0)
return doPlayerPopupFYI(cid, 'The decision taken, your task is to '..(taskMenu.potionTask and 'use' or 'kill')..' - ' .. taskMenu.count.. ' ' ..param:lower().. (taskMenu.count > 1 and 's' or '') .. '\nRewards which you receive for finishing this task:\n' .. checkInfoAboutTask(taskMenu.rewards) .. (taskMenu.potionTask and '' or 'If you want to abort the current job enough that you use the command !task cancel\n')..'If you want to know about the current job simply use the command !task info\nIf you wish to receive a prize for the job simply use the command !task reward')
elseif taskMenu and (taskMenu.potionTask and getCreatureStorage(cid, taskMenu.storage) == 1 or getCreatureStorage(cid, mainStorage) >= 1) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'You are already doing some task!')
elseif isInArray({'cancel', 'delete', 'abort'}, param:lower()) and getCreatureStorage(cid, mainStorage) > 0 then
for _, v in pairs(task) do
if not v.potionTask and getCreatureStorage(cid, v.storage) >= 0 then
doCreatureSetStorage(cid, mainStorage, -1)
doCreatureSetStorage(cid, v.storage, -1)
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'You canceled the current task.')
end
end
elseif isInArray({'reward', 'end', 'finish'}, param:lower()) then
local rewards, showMessage = 'Items that you got as a reward is: ', false
for _, v in pairs(task) do
if getCreatureStorage(cid, mainStorage) ~= v.finishStorageValue and getCreatureStorage(cid, v.storage) == v.count then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'You have not finished your task yet or You have not started any task!')
end
if (v.potionTask and getCreatureStorage(cid, v.storage) == v.count or getCreatureStorage(cid, mainStorage) == v.finishStorageValue) then
showMessage = true
if not v.potionTask then
doCreatureSetStorage(cid, mainStorage, -1)
else
doCreatureSetStorage(cid, v.storage, v.count + 1)
end
if not v.requiedLevelToReward or v.requiedLevelToReward >= getPlayerLevel(cid) then
for i = 1, #v.rewards/2 do
local rewardType, rewardCount = v.rewards[i*2-1], v.rewards[i*2]
if rewardType == 'item' and type(rewardCount) == 'table' and #rewardCount > 1 then
for item = 1, #rewardCount / 2 do
local rewardItemId, rewardItemCount = rewardCount[item*2-1], rewardCount[item*2]
rewards = rewards .. rewardItemCount .. 'x ' .. getItemNameById(rewardItemId) .. ', '
doPlayerAddItem(cid, rewardItemId, rewardItemCount, true)
end
else
rewards = rewards .. rewardCount .. 'x ' .. (rewardType == 'item' and getItemNameById(rewardCount) or rewardType == 'exp' and 'experience' or rewardType == 'cash' and 'money' or rewardType == 'smsPoints' and 'sms points') .. ', '
if rewardType == 'item' then
doPlayerAddItem(cid, rewardCount, 1, true)
elseif rewardType == 'exp' then
doAddExp(cid, rewardCount)
elseif rewardType == 'cash' then
doPlayerAddMoney(cid, rewardCount)
elseif rewardType == 'smsPoints' then
db.executeQuery("UPDATE `accounts` SET `premium_points` = `premium_points` + " .. rewardCount .. " WHERE `name` = '" .. getAccountByName(getCreatureName(cid)) .. "' LIMIT 1;")
end
end
end
else
rewards = 'Your experience level is too high to be able to receive the reward.'
end
end
end
return showMessage and doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, string.sub(rewards, 1, string.len(rewards) - 1)..'.')
else
for k, v in pairs(task) do
if isInArray((v.potionTask and {'potion','potions'} or {'info', 'information', 'details'}), param:lower()) and (v.potionTask and getCreatureStorage(cid, v.storage) >= 0 or getCreatureStorage(cid, mainStorage) > 0) then
if (v.potionTask and getCreatureStorage(cid, v.storage) <= v.count or isInArray({v.finishStorageValue, v.beginStorageValue}, getCreatureStorage(cid, mainStorage))) then
return doPlayerPopupFYI(cid, 'Your current task is to '..(v.potionTask and 'use' or 'kill')..' - ' .. v.count.. ' ' ..k:lower().. (v.count > 1 and 's' or '') .. '\nYou have killed ' .. getCreatureStorage(cid, v.storage) .. ' of ' .. v.count .. ' ' .. k:lower() .. (v.count == 1 and '' or 's') .. '. You must kill ' .. v.count - getCreatureStorage(cid, v.storage) .. ' ' .. k:lower() .. (v.count == 1 and '' or 's') .. ' yet\nRewards which you receive for finishing this task:\n' .. checkInfoAboutTask(v.rewards))
end
else
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'You have not started any task!')
end
end
end
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Wrong command!')
end
]]></talkaction>
<event type="kill" registerTo ="all" name="talkactionTask" event="script"><![CDATA[
domodlib('talkactionTask_conf')
function onKill(cid, target)
if isPlayer(target) or getCreatureMaster(target) or isNpc(target) then
return true
end
for k, v in pairs(task) do
if k:lower() == getCreatureName(target):lower() then
if getCreatureStorage(cid, mainStorage) == v.beginStorageValue then
if getCreatureStorage(cid, v.storage) < v.count then
doCreatureSetStorage(cid, v.storage, getCreatureStorage(cid, v.storage) + 1)
s = 'You killed ' .. getCreatureStorage(cid, v.storage) .. ' of ' .. v.count .. ' ' .. k:lower() .. (v.count == 1 and '' or 's') .. '.'
if getCreatureStorage(cid, v.storage) == v.count then
doCreatureSetStorage(cid, mainStorage, v.finishStorageValue)
s = 'Congratulations! You have killed enough '.. k:lower() ..'.'
end
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, s)
end
end
end
end
return true
end
]]></event>
<event type="login" name="taskEventLogin" event="buffer"><![CDATA[
registerCreatureEvent(cid, 'talkactionTask')
]]></event>
</mod>
The problem is that system let me do any task and everyting looks fine but when you want to do another task and you have finished it (killed enough monsters) it says
Wiki:
You have not finished your task yet or You have not started any task!
and another thing is that if even that message appears, sometimes I get an reward and sometimes I don't.
Can someone help mi with this ?
Thanks in advance.
Best Regard
Bart
Last edited: