Ir para conteúdo
  • 0

Ajuda Task System


EduziTow

Pergunta

Bom Meu Script ja está quase full eu coloquei este script aqui Clique aqui.

 

soque dai eu quero coloca +de 1 item pra adcionar na premiação eu ja coloquei de todas as formas assim

[54] = {money = 3000000,xp = 64000,item = 5940,item = 5940,item = 5919,item = 5809,item = 5804}

Assim

[54] = {money = 3000000,xp = 64000,item = 5940,5940,5919,5809,5804}

é nada da certo alguem poderia me ajudar?

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

[54] = {money = 3000000,xp = 64000,item = 5940;5940;5919;5809;5804}

 

Tente assim.

 

 

Não irá funcionar.

 

@ Topic

 

Coloque assim:

[54] = {money = 3000000,xp = 64000,item = {5940, 5919, 5809, 5804} amount = {1, 2, 3, 4}}

Em tasklib.lua, procure por:

function doRewardTask(cid)
    local monster = getPlayerStorageValue(cid,taskstg.monster)
    local reward = taskreward[monster]
    if reward.item then
        doPlayerAddItem(cid,reward.item,(reward.amount and reward.amount or 1))
    end
    if reward.points then
        local points = getPlayerStorageValue(cid, taskstg.points)
        if points == -1 then
            setPlayerStorageValue(cid, taskstg.points, 0)
        end
        setPlayerStorageValue(cid, taskstg.points, reward.points + points)
    end
    if monster and reward then
        doPlayerAddMoney(cid,reward.money)        
        doPlayerAddExperience(cid, reward.xp)
    end    
    return true
end

Apague, e coloque isso:

function doRewardTask(cid)
    local monster = getPlayerStorageValue(cid,taskstg.monster)
    local reward = taskreward[monster]
    if reward.item then
        for i= 1, #reward.item do
           doPlayerAddItem(cid,reward.item[i],reward.amount[i])
        end
    end
    if reward.points then
        local points = getPlayerStorageValue(cid, taskstg.points)
        if points == -1 then
            setPlayerStorageValue(cid, taskstg.points, 0)
        end
        setPlayerStorageValue(cid, taskstg.points, reward.points + points)
    end
    if monster and reward then
        doPlayerAddMoney(cid,reward.money)        
        doPlayerAddExperience(cid, reward.xp)
    end    
    return true
end

Portanto, deverá adicionar 1 item de id 5940, 2 de id 5919, 3 de id 5809 e 4 de id 5804, isso se eu não comi sintaxe.

 

Obs.: Li meio por cima o código do Omega, então não tenho certeza se é só isso que tem que modificar. Poste o resultado!

Editado por GustavoCastilho
Link para o comentário
Compartilhar em outros sites

  • 0

 

 

[54] = {money = 3000000,xp = 64000,item = 5940;5940;5919;5809;5804}

 

Tente assim.

 

 

Não irá funcionar.

 

@ Topic

 

Coloque assim:

[54] = {money = 3000000,xp = 64000,item = {5940, 5919, 5809, 5804} amount = {1, 2, 3, 4}}

Em tasklib.lua, procure por:

function doRewardTask(cid)
    local monster = getPlayerStorageValue(cid,taskstg.monster)
    local reward = taskreward[monster]
    if reward.item then
        doPlayerAddItem(cid,reward.item,(reward.amount and reward.amount or 1))
    end
    if reward.points then
        local points = getPlayerStorageValue(cid, taskstg.points)
        if points == -1 then
            setPlayerStorageValue(cid, taskstg.points, 0)
        end
        setPlayerStorageValue(cid, taskstg.points, reward.points + points)
    end
    if monster and reward then
        doPlayerAddMoney(cid,reward.money)        
        doPlayerAddExperience(cid, reward.xp)
    end    
    return true
end

Apague, e coloque isso:

function doRewardTask(cid)
    local monster = getPlayerStorageValue(cid,taskstg.monster)
    local reward = taskreward[monster]
    if reward.item then
        for i= 1, #reward.item do
           doPlayerAddItem(cid,reward.item[i],reward.amount[i])
        end
    end
    if reward.points then
        local points = getPlayerStorageValue(cid, taskstg.points)
        if points == -1 then
            setPlayerStorageValue(cid, taskstg.points, 0)
        end
        setPlayerStorageValue(cid, taskstg.points, reward.points + points)
    end
    if monster and reward then
        doPlayerAddMoney(cid,reward.money)        
        doPlayerAddExperience(cid, reward.xp)
    end    
    return true
end

Portanto, deverá adicionar 1 item de id 5940, 2 de id 5919, 3 de id 5809 e 4 de id 5804, isso se eu não comi sintaxe.

 

Obs.: Li meio por cima o código do Omega, então não tenho certeza se é só isso que tem que modificar. Poste o resultado!

 

 

 

O problema é que ele vai ter que fazer o mesmo pra todos os monstros, porque se não vai pedir uma tabela e receber um número, o que vai causar erro.

Mas gostei da solução, me parece que deve funcionar se não houve 'erros bobos'.

Link para o comentário
Compartilhar em outros sites

  • 0

 

 

 

[54] = {money = 3000000,xp = 64000,item = 5940;5940;5919;5809;5804}

 

Tente assim.

 

 

Não irá funcionar.

 

@ Topic

 

Coloque assim:

[54] = {money = 3000000,xp = 64000,item = {5940, 5919, 5809, 5804} amount = {1, 2, 3, 4}}

Em tasklib.lua, procure por:

function doRewardTask(cid)
    local monster = getPlayerStorageValue(cid,taskstg.monster)
    local reward = taskreward[monster]
    if reward.item then
        doPlayerAddItem(cid,reward.item,(reward.amount and reward.amount or 1))
    end
    if reward.points then
        local points = getPlayerStorageValue(cid, taskstg.points)
        if points == -1 then
            setPlayerStorageValue(cid, taskstg.points, 0)
        end
        setPlayerStorageValue(cid, taskstg.points, reward.points + points)
    end
    if monster and reward then
        doPlayerAddMoney(cid,reward.money)        
        doPlayerAddExperience(cid, reward.xp)
    end    
    return true
end

Apague, e coloque isso:

function doRewardTask(cid)
    local monster = getPlayerStorageValue(cid,taskstg.monster)
    local reward = taskreward[monster]
    if reward.item then
        for i= 1, #reward.item do
           doPlayerAddItem(cid,reward.item[i],reward.amount[i])
        end
    end
    if reward.points then
        local points = getPlayerStorageValue(cid, taskstg.points)
        if points == -1 then
            setPlayerStorageValue(cid, taskstg.points, 0)
        end
        setPlayerStorageValue(cid, taskstg.points, reward.points + points)
    end
    if monster and reward then
        doPlayerAddMoney(cid,reward.money)        
        doPlayerAddExperience(cid, reward.xp)
    end    
    return true
end

Portanto, deverá adicionar 1 item de id 5940, 2 de id 5919, 3 de id 5809 e 4 de id 5804, isso se eu não comi sintaxe.

 

Obs.: Li meio por cima o código do Omega, então não tenho certeza se é só isso que tem que modificar. Poste o resultado!

 

 

 

O problema é que ele vai ter que fazer o mesmo pra todos os monstros, porque se não vai pedir uma tabela e receber um número, o que vai causar erro.

Mas gostei da solução, me parece que deve funcionar se não houve 'erros bobos'.

 

 

Tudo tem seu custo. Mas ainda bem que você falou, não havia pensado nisso.

 

@Topic

 

Como o Omega disse,em todas as outras linhas, devem ser adicionadas chaves ('{' e '}') aos campos loot e amount.

 

Exemplo:

[1] = {money = 5000, xp = 10000, item = {2160}, amount = {10}}
[2] = {money = 20000,xp = 40000, item = {2160, 2414}, amount = {20,1}}
[3] = {money = 0,xp = 1000000, item = {2160}, amount = {100}}

Poste o resultado, amigo!

Editado por GustavoCastilho
Link para o comentário
Compartilhar em outros sites

  • 0

Ta dando erro,

INFO: Starting OTScript Debug.lua

ERROR: tasklib.lua:134: '}' expected (to close '{' at line 77) near 'function'
INFO: Stopping OTScript Debug.lua


-- Sistema de Task feito por Leoric (Omega no XTibia) --
taskstg =
{
kills = 3451,
permission = 3452,
killstotal = 3453,
monster = 3454,
stage = 3455,
points = 3456,
}
timeBetweenTasks = 1 -- tempo até poder fazer outra task (24 * 60 * 60 = 24hs)
taskLevel = false -- true se quiser que as tasks sejam feitas por level / false se quiser que elas sejam feitas na ordem
taskMsg = {bool = true, msg = 'Voce acaba de matar monstros suficientes para completar sua task!'} -- bool = false > sem mensagens; bool = true > aviso quando terminar a task
taskEnd = true -- [não tem função no modo Level] se estiver como true, quando o jogador terminar a última task disponível, ele não poderá repeti-la. Se estiver false, ele poderá repetir a última task infinitamente.
taskmonsters =
{
[1] = {'rotworm','carrion worm', killstotal = 270}, -- aqui você deve mudar
[2] = {'bandit','assassin', killstotal = 285},
[3] = {'dwarf','dwarf soldier', killstotal = 300},
[4] = {'amazon','amazons', killstotal = 315},
[5] = {'orc warrior','orc spearman','orc shaman','orc leader','orc berserker','orc warlord','orc rider', killstotal = 330},
[6] = {'elf scout','elf arcanist', killstotal = 345},
[7] = {'tarantula', killstotal = 360},
[8] = {'cyclop','cyclops','cyclops drone','cyclops smith', killstotal = 375},
[9] = {'dwarf guard', killstotal = 390},
[10] = {'beholder','elder beholder','braindeath', killstotal = 405},
[11] = {'pirate buccaneer','pirate corsair','pirate Cutthroat','pirate ghost','pirate marauder','pirate skeleton', killstotal = 425},
[12] = {'crypt shambler', killstotal = 445},
[13] = {'monk','dark monk', killstotal = 465},
[14] = {'dark magician','mad scientist', killstotal = 485},
[15] = {'lizard sentinel','lizard snakecharmer','lizard templar', killstotal = 505},
[16] = {'blue djinn','green djinn','efreet','marid', killstotal = 525},
[17] = {'demon skeleton', killstotal = 545},
[18] = {'mercury blob','death blob','acid blob','slime', killstotal = 565},
[19] = {'necromancer', killstotal = 585},
[20] = {'vampire','vampire bride', killstotal = 605},
[21] = {'bone beast', killstotal = 630},
[22] = {'ice witch', killstotal = 655},
[23] = {'mutated bat', killstotal = 680},
[24] = {'dragon', killstotal = 705},
[25] = {'ancient scarab', killstotal = 730},
[26] = {'frost dragon hatchling', killstotal = 755},
[27] = {'crystal spider', killstotal = 780},
[28] = {'lich', killstotal = 805},
[29] = {'banshee', killstotal = 830},
[30] = {'giant spider', killstotal = 855},
[31] = {'hero', killstotal = 885},
[32] = {'nightmare','nightmare scion', killstotal = 915},
[33] = {'black knight', killstotal = 945},
[34] = {'dragon lord', killstotal = 975},
[35] = {'frost dragon', killstotal = 1005},
[36] = {'hydra', killstotal = 1035},
[37] = {'behemoth', killstotal = 1065},
[38] = {'plaguesmith', killstotal = 1095},
[39] = {'blightwalker', killstotal = 1125},
[40] = {'dark torturer', killstotal = 1155},
[41] = {'hand of cursed fate', killstotal = 1190},
[42] = {'warlock', killstotal = 1225},
[43] = {'infernalist', killstotal = 1260},
[44] = {'phantasm', killstotal = 1295},
[45] = {'grim reaper', killstotal = 1330},
[46] = {'son of verminor', killstotal = 1365},
[47] = {'demon', killstotal = 1400},
[48] = {'hellhound', killstotal = 1435},
[49] = {'undead dragon', killstotal = 1470},
[50] = {'Juggernaut', killstotal = 1500},
[51] = {'ferumbras', killstotal = 80},
[52] = {'verminor','annihilon','latrivan','zoralurk','hellgorak','madareth', killstotal = 60},
[53] = {'orshabaal', killstotal = 40},
[54] = {'ghazbaran','morgaroth', killstotal = 40}
}
taskreward = -- em gps
{
[1] = {money = 3000000,xp = 64000,item = {5940, 5940, 5919, 5809, 5804}, amount = {1,1,1,1,1}},
[2] = {money = 2,xp = 11000}, -- 1 item(2458) será adicionado e nenhum ponto de task
[3] = {money = 3,xp = 12000}, -- aqui serão adicionados 2 itens com id 2458 (se ele for amontoável - stackable) e 5 pontos de task
[4] = {money = 4,xp = 13000},
[5] = {money = 5,xp = 14000},
[6] = {money = 6,xp = 15000},
[7] = {money = 7,xp = 16000},
[8] = {money = 8,xp = 17000},
[9] = {money = 9,xp = 18000},
[10] = {money = 3000000,xp = 19000,item = {8300}, amount = {2},
[11] = {money = 10,xp = 20000},
[12] = {money = 11,xp = 21000},
[13] = {money = 12,xp = 22000},
[14] = {money = 13,xp = 23000},
[15] = {money = 14,xp = 24000},
[16] = {money = 15,xp = 25000},
[17] = {money = 16,xp = 26000},
[18] = {money = 17,xp = 27000},
[19] = {money = 18,xp = 28000},
[20] = {money = 3000000,xp = 29000,item = {8300}, amount = {3}},
[21] = {money = 20,xp = 30000},
[22] = {money = 21,xp = 31000},
[23] = {money = 22,xp = 32000},
[24] = {money = 23,xp = 33000},
[25] = {money = 24,xp = 34000},
[26] = {money = 25,xp = 35000},
[27] = {money = 26,xp = 36000},
[28] = {money = 27,xp = 37000},
[29] = {money = 28,xp = 38000},
[30] = {money = 29,xp = 39000,item = {5015,8300}, amount = {1,1}},
[31] = {money = 30,xp = 40000},
[32] = {money = 31,xp = 41000},
[33] = {money = 32,xp = 42000},
[34] = {money = 33,xp = 43000},
[35] = {money = 34,xp = 44000},
[36] = {money = 35,xp = 45000},
[37] = {money = 36,xp = 46000},
[38] = {money = 37,xp = 47000},
[39] = {money = 38,xp = 48000},
[40] = {money = 5000000,xp = 49000,item = {8306, 8300}, amount = {1,1}},
[41] = {money = 39,xp = 50000},
[42] = {money = 40,xp = 51000},
[43] = {money = 41,xp = 52000},
[44] = {money = 42,xp = 53000},
[45] = {money = 43,xp = 54000},
[46] = {money = 44,xp = 55000},
[47] = {money = 45,xp = 56000},
[48] = {money = 46,xp = 57000},
[49] = {money = 47,xp = 58000},
[50] = {money = 48,xp = 59000},
[51] = {money = 49,xp = 60000},
[52] = {money = 50,xp = 61000},
[53] = {money = 51,xp = 62000},
[54] = {money = 3000000,xp = 64000,item = {5940, 5940, 5919, 5809, 5804}, amount = {1,1,1,1,1}}
}
function canDoTask(cid)
local stage = getPlayerStorageValue(cid, taskstg.stage)
if stage + 1 > #taskmonsters then
return false
elseif getPlayerStorageValue(cid,taskstg.permission) <= 0 then
return true
elseif getPlayerStorageValue(cid,taskstg.permission) == 1 then
return false
elseif getPlayerStorageValue(cid,taskstg.permission) >= os.time(t) then
return false
end
return true
end
function doResetTask(cid)
setPlayerStorageValue(cid,taskstg.kills,-1)
setPlayerStorageValue(cid,taskstg.permission,os.time(t) + timeBetweenTasks)
setPlayerStorageValue(cid,taskstg.killstotal,-1)
setPlayerStorageValue(cid,taskstg.monster,-1)
return true
end
function doRewardTask(cid)
local monster = getPlayerStorageValue(cid,taskstg.monster)
local reward = taskreward[monster]
if reward.item then
for i= 1, #reward.item do
doPlayerAddItem(cid,reward.item,reward.amount)
end
end
if reward.points then
local points = getPlayerStorageValue(cid, taskstg.points)
if points == -1 then
setPlayerStorageValue(cid, taskstg.points, 0)
end
setPlayerStorageValue(cid, taskstg.points, reward.points + points)
end
if monster and reward then
doPlayerAddMoney(cid,reward.money)
doPlayerAddExperience(cid, reward.xp)
end
return true
end
function isSummon(cid) -- baseada na função do Vodkart
if getCreatureMaster(cid) ~= nil or getCreatureMaster(cid) == true then
return true
end
return false
end
function doCompleteTask(cid)
doRewardTask(cid)
doResetTask(cid)
return true
end
function doStartTask(cid)
if not taskLevel then
local stage = getPlayerStorageValue(cid, taskstg.stage)
if stage <= 0 then
setPlayerStorageValue(cid, taskstg.monster, 1)
setPlayerStorageValue(cid, taskstg.killstotal, taskmonsters[1].killstotal)
setPlayerStorageValue(cid, taskstg.stage, 1)
else
setPlayerStorageValue(cid, taskstg.monster, stage+1)
setPlayerStorageValue(cid, taskstg.killstotal, taskmonsters[stage+1].killstotal)
if taskEnd or stage < #taskmonsters then
setPlayerStorageValue(cid, taskstg.stage, stage+1)
end
end
setPlayerStorageValue(cid, taskstg.permission, 1)
setPlayerStorageValue(cid, taskstg.kills, 0)
return true
end
local lvl = getPlayerLevel(cid)
if lvl < 20 then
local killstotal = taskmonsters[1].killstotal
setPlayerStorageValue(cid,taskstg.monster,1)
setPlayerStorageValue(cid,taskstg.killstotal,killstotal)
setPlayerStorageValue(cid,taskstg.permission,1)
elseif lvl < 50 then
local killstotal = taskmonsters[2].killstotal
setPlayerStorageValue(cid,taskstg.monster,2)
setPlayerStorageValue(cid,taskstg.killstotal,killstotal)
setPlayerStorageValue(cid,taskstg.permission,1)
else
local killstotal = taskmonsters[3].killstotal
setPlayerStorageValue(cid,taskstg.monster,3)
setPlayerStorageValue(cid,taskstg.killstotal,killstotal)
setPlayerStorageValue(cid,taskstg.permission,1)
end
setPlayerStorageValue(cid,taskstg.kills,0)
return true
end

Editado por EduziTow
Link para o comentário
Compartilhar em outros sites

  • 0

Você esqueceu de pôr [ /spoiler] no final.

[10] = {money = 3000000,xp = 19000,item = {8300}, amount = {2}

Tá faltando fechar as chaves do [10], ou seja, amount = {2}}

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...