Ir para conteúdo

Omega Task v1.0


Omega

Posts Recomendados

Informações:

  • Tasks adquiridas ou canceladas em NPC
  • As tasks podem ser feitas repetidas vezes, mas somente uma vez por dia e apenas uma de cada vez (tempo configurável)
  • Comando para acompanhar o andamento da task
  • Atualização (31/08/13) > agora é possível ganhar itens a cada vez que a task é terminada
  • Atualização (05/09/13) > VÁRIOS bugs corrigidos e algumas novas opções adicionadas
  • Agora você pode escolher se quer que as tasks sejam feitas por level ou na ordem
  • Recomendo a todos os que baixaram alguma versão anterior que atualizem

 

Códigos:

 

Tags:

Em creaturescripts.xml, adicione:

<event type="kill" name="Tasks" script="taskkill.lua"/>

Em talkactions.xml, adicione:

<talkaction words="!countkills" event="script" value="countkills.lua"/>

No arquivo creaturescripts/scripts/login.lua, adicione:

registerCreatureEvent(cid, "Tasks")

Scripts:

  • Crie um arquivo tasklib.lua em lib

 

 



-- Sistema de Task feito por Leoric (Omega no XTibia) --taskstg ={kills = 3451,permission = 3452,killstotal = 3453,monster = 3454,stage = 3455,points = 3456,}timeBetweenTasks = 24 * 60 * 60 -- 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 ordemtaskMsg = {bool = true, msg = 'Voce acaba de matar monstros suficientes para completar sua task!'} -- bool = false > sem mensagens; bool = true > aviso quando terminar a tasktaskEnd = 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', killstotal = 100}, -- aqui você deve mudar[2] = {'cyclop','cyclops','cyclops smith','cyclops drone', killstotal = 100},[3] = {'dragon','dragon lord','frost dragon', killstotal = 100}}taskreward = -- em gps{[1] = {money = 5000,xp = 20000, points = 3}, -- nenhum item será adicionado e 3 pontos de task serão adicionados[2] = {money = 10000,xp = 50000, item = 2458}, -- 1 item(2458) será adicionado e nenhum ponto de task[3] = {money = 20000,xp = 75000,item = 2458,amount = 2, points = 5} -- aqui serão adicionados 2 itens com id 2458 (se ele for amontoável - stackable) e 5 pontos de task}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 trueendfunction 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 trueendfunction 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 trueendfunction isSummon(cid) -- baseada na função do Vodkart    if getCreatureMaster(cid) ~= nil or getCreatureMaster(cid) == true then        return true    end    return falseendfunction doCompleteTask(cid)    doRewardTask(cid)    doResetTask(cid)    return trueendfunction 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 trueend

 

 

  • Crie um arquivo countkills.lua e adicione em talkactions/scripts

 

 



-- Sistema de Task feito por Leoric (Omega no XTibia) --function onSay(cid, words, param, channel)    local monster, permission = getPlayerStorageValue(cid,taskstg.monster), getPlayerStorageValue(cid,taskstg.permission)    local kills, killstotal = getPlayerStorageValue(cid,taskstg.kills), getPlayerStorageValue(cid,taskstg.killstotal)    if monster == -1 or monster == 0 then        doPlayerSendTextMessage(cid,27,'Voce nao tem nenhuma task ativa.')    else        local left = killstotal - kills        if left <= 0 then            doPlayerSendTextMessage(cid,27,'Voce ja matou monstros suficientes para terminar sua task.')        else            doPlayerSendTextMessage(cid,27,'Andamento da sua task de '..taskmonsters[monster][1]..'s -> ['..kills..'/'..killstotal..']')        end    end    return trueend

 

 

 

  • Crie um arquivo taskkill.lua em creaturescripts/scripts

 

 



-- Sistema de Task feito por Leoric (Omega no XTibia) --function onKill(cid, target)    if not isPlayer(cid) then return true end    if isSummon(target) then return true end    local monster, permission = getPlayerStorageValue(cid,taskstg.monster), getPlayerStorageValue(cid,taskstg.permission)    local kills, killstotal = getPlayerStorageValue(cid,taskstg.kills), getPlayerStorageValue(cid,taskstg.killstotal)    if monster ~= -1 and monster ~= 0 then        if isInArray(taskmonsters[monster],string.lower(getCreatureName(target))) then            if kills == -1 then                setPlayerStorageValue(cid,taskstg.kills,1)            elseif kills + 1 == killstotal and taskMsg.bool == true then                doPlayerSendTextMessage(cid, 21, taskMsg.msg)                setPlayerStorageValue(cid,taskstg.kills,kills+1)            else                setPlayerStorageValue(cid,taskstg.kills,kills+1)            end        end    end    return trueend

 

 

  • Crie um arquivo NomedoNPC.xml em npcs

 

 



<?xml version="1.0" encoding="UTF-8"?><npc name="NomedoNPC" script="data/npc/scripts/tasks.lua" walkinterval="3000" floorchange="0">    <health now="100" max="100"/>    <look type="129" head="115" body="95" legs="113" feet="0" addons="3"/>    <parameters>  <parameter key="message_greet" value="Ei, |PLAYERNAME|, quer uma {nova task}, {informacoes} ou {cancelar} uma task? Ou sera que quer {completar} sua task? Huum... talvez ver quantos {pontos} voce tem?"/>  <parameter key="message_farewell" value="Boa sorte em suas aventuras, |PLAYERNAME|."/>  <parameter key="message_walkaway" value="Tchau... babaca."/>  </parameters></npc>

 

 

  • Crie um arquivo tasks.lua em npcs/scripts

 

 



-- Sistema de Task feito por Leoric (Omega no XTibia) --local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)local talkState = {}function onCreatureAppear(cid)                npcHandler:onCreatureAppear(cid)            endfunction onCreatureDisappear(cid)            npcHandler:onCreatureDisappear(cid)            endfunction onCreatureSay(cid, type, msg)            npcHandler:onCreatureSay(cid, type, msg)        endfunction onThink()                    npcHandler:onThink()                    endfunction creatureSayCallback(cid, type, msg)    if(not npcHandler:isFocused(cid)) then        return false    end        local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid        local monster, permission = getPlayerStorageValue(cid,taskstg.monster), getPlayerStorageValue(cid,taskstg.permission)    local kills, killstotal = getPlayerStorageValue(cid,taskstg.kills), getPlayerStorageValue(cid,taskstg.killstotal)        if msgcontains(msg,'nova task') then        if monster ~= -1 then            selfSay('Você já tem uma task em andamento. Termine-a antes de começar outra.',cid)        elseif getPlayerStorageValue(cid, taskstg.stage) + 1 > #taskmonsters then            selfSay('Eu não tenho mais tasks para você.',cid)        elseif not canDoTask(cid) then            selfSay('Você deve esperar '..math.ceil((permission - os.time(t))/60)..' minutos até poder começar outra task.',cid)        else            doStartTask(cid)            selfSay('Muito bem, utilize {!countkills} para acompanhar o andamento de sua task.',cid)        end        talkState[talkUser] = 0    elseif msgcontains(msg,'completar') then        if canDoTask(cid) then            selfSay('Você não tem uma task iniciada ainda... diga {nova task} para começar uma.',cid)        elseif permission > 1 then            selfSay('Você não tem uma task ativa... e só poderá começar outra mais tarde.',cid)        elseif killstotal > 1 and kills >= killstotal then            selfSay('Parabéns por completar sua task!',cid)            doCompleteTask(cid)        else            selfSay('Você ainda não completou sua task.',cid)        end        talkState[talkUser] = 0    elseif msgcontains(msg,'info') then        if canDoTask(cid) and (monster == 0 or monster == -1) then            selfSay('Você pode começar uma task dizendo {nova task}. Assim que disser, uma nova task será atribuída a você dependendo do seu level e você poderá acompanhar seu andamento dizendo {!countkills}.',cid)        else            selfSay('Você pode acompanhar sua task pelo comando {!countkills}. Assim que terminar, me avise e você receberá seu prêmio em dinheiro e experiência.',cid)        end        talkState[talkUser] = 0    elseif msgcontains(msg, 'pontos') then        local pontos = getPlayerStorageValue(cid, taskstg.points) > 0 and getPlayerStorageValue(cid, taskstg.points) or 0        selfSay('Você tem '.. pontos ..' pontos de task.',cid)    elseif msgcontains(msg,'cancelar') then        if monster == 0  or monster == -1 then            selfSay('Você não tem uma task ativa para cancelar.',cid)            talkState[talkUser] = 0        else            selfSay('Você tem certeza que quer cancelar sua task?',cid)            talkState[talkUser] = 1        end    elseif (msgcontains(msg,'yes') or msgcontains(msg,'sim')) and talkState[talkUser] == 1 then        selfSay('Muito bem, sua task foi cancelada.',cid)        doResetTask(cid)        setPlayerStorageValue(cid,taskstg.permission,-1)        setPlayerStorageValue(cid, taskstg.stage, getPlayerStorageValue(cid, taskstg.stage)-1)        talkState[talkUser] = 0    elseif (msgcontains(msg,'no') or msgcontains(msg,'não')) and talkState[talkUser] == 1 then        selfSay('Você que sabe, né...',cid)    endendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new())

 

 

 

Configuração:

 

É feita toda no tasklib.lua:

 

Configuração dos monstros:

taskmonsters ={[1] = {'rotworm', killstotal = 100},[2] = {'cyclop','cyclops','cyclops smith','cyclops drone', killstotal = 100},[3] = {'dragon','dragon lord','frost dragon', killstotal = 100}}

 - O [número] deve seguir a ordem

 - A primeira parte deve ser o nome dos monstros da task no singular. Por isso existem 'cyclop' (singular) e 'cyclops' (nome do monstro)

 - Os nomes de todos os monstros de cada task devem aparecer. Por exemplo, na task de cyclops, qualquer tipo deles servirá para completar a task.

 - killstotal é a quantidade de monstros que você deve matar para terminar a task.

 

Configuração das recompensas:

taskreward = -- em gps{[1] = {money = 5000,xp = 20000, points = 3}, -- nenhum item será adicionado e 3 pontos de task serão adicionados[2] = {money = 10000,xp = 50000, item = 2458}, -- 1 item(2458) será adicionado e nenhum ponto de task[3] = {money = 20000,xp = 75000,item = 2458,amount = 2, points = 5} -- aqui serão adicionados 2 itens com id 2458 (se ele for amontoável - stackable) e 5 pontos de task}

 - O [número] deve ter a mesma ordem dos monstros

 - money é a quantidade de dinheiro que cada um ganha ao terminar a task correspondente

 - xp é a quantidade de experiência ganha ao terminar a task correspondente

 - item é o ID do item que ganha ao terminar a task correspondente

 - points significa quantos pontos de task o personagem irá ganhar quando terminar a task correspondente

 

Adicionando novos monstros:

 - Vou explicar com um exemplo de como adicionar uma task de hydra/serpent spawn

No taskmonsters: (REPARE NA VÍRGULA QUANDO ADICIONEI UMA NOVA LINHA!)

taskmonsters ={[1] = {'rotworm', killstotal = 100},[2] = {'cyclop','cyclops','cyclops smith','cyclops drone', killstotal = 100},[3] = {'dragon','dragon lord','frost dragon', killstotal = 100},[4] = {'hydras e serpent spawn','hydra','serpent spawn',killstotal = 200}}

No taskrewards:

taskreward = -- em gps{[1] = {money = 5000,xp = 20000, points = 3}, -- nenhum item será adicionado e 3 pontos de task serão adicionados[2] = {money = 10000,xp = 50000, item = 2458}, -- 1 item(2458) será adicionado e nenhum ponto de task[3] = {money = 20000,xp = 75000,item = 2458,amount = 2, points = 5}, -- aqui serão adicionados 2 itens com id 2458 (se ele for amontoável - stackable) e 5 pontos de task[4] = {money = 30000, xp = 5000, item = 2450, amount = 1, points = 3}}

Agora na função doStartTask(cid) - somente se quiser que as tasks sejam feitas por level -

 

 



function doStartTask(cid) 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) setPlayerStorageValue(cid,taskstg.kills,0) elseif lvl < 50 then local killstotal = taskmonsters[2].killstotal setPlayerStorageValue(cid,taskstg.monster,2) setPlayerStorageValue(cid,taskstg.killstotal,killstotal) setPlayerStorageValue(cid,taskstg.permission,1) setPlayerStorageValue(cid,taskstg.kills,0) elseif lvl < 80 then local killstotal = taskmonsters[3].killstotal setPlayerStorageValue(cid,taskstg.monster,3) setPlayerStorageValue(cid,taskstg.killstotal,killstotal) setPlayerStorageValue(cid,taskstg.permission,1) setPlayerStorageValue(cid,taskstg.kills,0) else local killstotal = taskmonsters[4].killstotal setPlayerStorageValue(cid,taskstg.monster,4) setPlayerStorageValue(cid,taskstg.killstotal,killstotal) setPlayerStorageValue(cid,taskstg.permission,1) setPlayerStorageValue(cid,taskstg.kills,0) end return trueend

 

 

O que aconteceu:

 - Antes até o lvl 20 o jogador recebia a task dos rotworms, até o lvl 50, a task dos cyclops e daí pra frente, task dos dragons.

 - As tasks iniciais são as mesmas, mas até o lvl 80 é a task dos dragons e daí pra frente, o jogador receberá a task das hydras e serpent spawns.

 

Considerações finais:

 

O sistema de pontos apenas adiciona e checa a quantidade de pontos: você deve escolher se quer adicionar alguma coisa a partir deles.

Testei profundamente e corrigi todos os erros que encontrei, postem se encontrarem mais algum, enviem o log do erro que farei o possível para consertar.

Link para o comentário
Compartilhar em outros sites

Opa! Muito obrigado por atender meu pedido! Por enquanto não tenho como testar, esperarei a galera testar e dizer como está.

Assim que for liberado Rep+ de hoje eu lhe darei Rep+, muito obrigado!

 

Edit: É possível colocar item como recompensa também?

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

Opa! Muito obrigado por atender meu pedido! Por enquanto não tenho como testar, esperarei a galera testar e dizer como está.

Assim que for liberado Rep+ de hoje eu lhe darei Rep+, muito obrigado!

 

Edit: É possível colocar item como recompensa também?

 

Para adicionar itens, você faz o seguinte:

Substitua a função doRewardTask(cid) no tasklib.lua por essa aqui

function doRewardTask(cid)
	local monster = getPlayerStorageValue(cid,taskstg.monster)
	local reward = taskreward[monster]
	if reward.item and reward.amount then
		doPlayerAddItem(cid,reward.item,reward.amount)
	end
	if monster and reward then
		doPlayerAddMoney(cid,reward.money)		
		doPlayerAddExperience(cid, reward.xp)
		return true
	end
	return false
end

E a configuração no taskrewards fica:

taskreward = -- em gps
{
[1] = {money = 5000,xp = 20000}, -- nenhum item será adicionado
[2] = {money = 10000,xp = 50000}, -- nenhum item será adicionado
[3] = {money = 20000,xp = 75000,item = 2458,amount = 1} -- aqui será adicionado 1 item com id 2458
}
Link para o comentário
Compartilhar em outros sites

Omega tem como trocar as recompensar de cada task?

 

 

 

 

Opa! Muito obrigado por atender meu pedido! Por enquanto não tenho como testar, esperarei a galera testar e dizer como está.

Assim que for liberado Rep+ de hoje eu lhe darei Rep+, muito obrigado!

 

Edit: É possível colocar item como recompensa também?

 

Para adicionar itens, você faz o seguinte:

Substitua a função doRewardTask(cid) no tasklib.lua por essa aqui

function doRewardTask(cid)
	local monster = getPlayerStorageValue(cid,taskstg.monster)
	local reward = taskreward[monster]
	if reward.item and reward.amount then
		doPlayerAddItem(cid,reward.item,reward.amount)
	end
	if monster and reward then
		doPlayerAddMoney(cid,reward.money)		
		doPlayerAddExperience(cid, reward.xp)
		return true
	end
	return false
end

E a configuração no taskrewards fica:

taskreward = -- em gps
{
[1] = {money = 5000,xp = 20000}, -- nenhum item será adicionado
[2] = {money = 10000,xp = 50000}, -- nenhum item será adicionado
[3] = {money = 20000,xp = 75000,item = 2458,amount = 1} -- aqui será adicionado 1 item com id 2458
}

 

 

 

É disso que você tá falando? Se for de grana, tem na configuração. Se não for essa a dúvida, explique melhor.

Link para o comentário
Compartilhar em outros sites

é isso mesmo mais eu quero que só possa fazer a task 1 vez por char tem como?

 

Cara, até tem, mas eu teria que refazer boa parte dos códigos. Dá uma olhada nessa task pra ver se não é melhor pro que você quer:

http://www.xtibia.com/forum/topic/151636-simple-task-30/

 

Tem vários tipos de task postadas aqui, cada uma com suas peculiaridades. A minha pode ser repetida, a do Vodkart é muito mais completa, mas não pode repetir e não tem configuração de tempo, a do Roksas não tem npc, é direto pelo comando e fica aparecendo mensagens conforme você progride na task.

 

Enfim, escolhe qual é a melhor opção pra você. Varia para cada um.

 

EDIT: se mesmo assim você ainda preferir a minha task, eu tiro um tempo pra ajeitar depois.

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

Ta obrigado vou testa essa que você me mandou tentar configurar se não de certo posto aqui pra você ajeitar a sua mesmo ta? Obrigado por me ajudar!

 

Mais só me tirar uma duvida dessa que você me mando como faço pra cada 1 dar um item diferente?

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

Ta obrigado vou testa essa que você me mandou tentar configurar se não de certo posto aqui pra você ajeitar a sua mesmo ta? Obrigado por me ajudar!

 

Mais só me tirar uma duvida dessa que você me mando como faço pra cada 1 dar um item diferente?

Para alterar o item de recompensa ou a quantidade:

Onde tem:

item = ID do item

amount = Quantidade

 

Ai vc pode alterar o id do item ou adicionar essa parte, para alem do money e xp, tambem dar algum item:

item = 2458, amount = 1

Nas recompensas

[1] [2] [3]

Ou adicionar mais recompensas. Nesse exemplo, o item adicionado corresponde à recompensa [4]:

 

Note a nova linha [4] = {money = 30000 xp = 85000 item = xxxx amount = 1}

Essa linha foi adicionada em tasklib.lua:

 

 

[1] = {money = 5000,xp = 20000}, -- nenhum item será adicionado
[2] = {money = 10000,xp = 50000}, -- nenhum item será adicionado
[3] = {money = 20000,xp = 75000,item = 2458,amount = 1}
[4] = {money = 30000 xp = 85000 item = xxxx amount = 1}  -- Nova recompensa adicionada sendo "xxxx" o id do item

 

 

 

Depois, para adiocionar a nova missão, nessa parte:

 

 

{
[1] = {'rotworm', killstotal = 100},
[2] = {'cyclop','cyclops','cyclops smith','cyclops drone', killstotal = 100},
[3] = {'dragon','dragon lord','frost dragon', killstotal = 100}
}

 

 

 

Adicione a nova missão [4]:

 

 

{
[1] = {'rotworm', killstotal = 100},
[2] = {'cyclop','cyclops','cyclops smith','cyclops drone', killstotal = 100},
[3] = {'dragon','dragon lord','frost dragon', killstotal = 100}
[4] = {'nome do monstro1', 'nome do montro2', killstotal = quantidade necessária para matar}  -- Nova missão adicionada p/ a nova recompensa
}

 

 

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

Eu tenho um problema com o:

  • Crie um arquivo countkills.lua e adicione em talkactions/scripts
function onSay(cid, words, param, channel)
	local monster, permission = getPlayerStorageValue(cid,taskstg.monster), getPlayerStorageValue(cid,tasksg.permission)
	local kills, killstotal = getPlayerStorageValue(cid,taskstg.kills), getPlayerStorageValue(cid,taskstg.killstotal)
	if monster == -1 or monster == 0 then
		doPlayerSendTextMessage(cid,27,'Voce nao tem nenhuma task ativa.')
	else
		local left = kills - killstotal
		if left <= 0 then
			doPlayerSendTextMessage(cid,27,'Voce ja matou monstros suficientes para terminar sua task.')
		else
			doPlayerSendTextMessage(cid,27,'Andamento da sua task de '..taskmonsters[monster][1]..'s -> ['..kills..'/'..killstotal..']')
		end
	end
	return true
end

Eu já criado e colocado tudo, mas quando eu digo que o comando !countkills no servidor eu recebo um erro:

[Error - TalkAction Interface] 
data/talkactions/scripts/countkills.lua:onSay
Description: 
data/talkactions/scripts/countkills.lua:2: attempt to index global 'tasksg' (a nil value)
stack traceback:
data/talkactions/scripts/countkills.lua:2: in function <data/talkactions/scripts/countkills.lua:1>

Eu uso o servidor:

 

Pokemon Dash Advanced (1.0), last compiled at Jan 11 2012.
Credits to all TFS team (Elf, slawkens, Talaturen, Lithium, KaczooH, Kiper, Kornholijo).
PokemonDistro made by mastercraft/brun123.
Link para o comentário
Compartilhar em outros sites

 

 

Eu tenho um problema com o:

  • Crie um arquivo countkills.lua e adicione em talkactions/scripts
function onSay(cid, words, param, channel)
	local monster, permission = getPlayerStorageValue(cid,taskstg.monster), getPlayerStorageValue(cid,tasksg.permission)
	local kills, killstotal = getPlayerStorageValue(cid,taskstg.kills), getPlayerStorageValue(cid,taskstg.killstotal)
	if monster == -1 or monster == 0 then
		doPlayerSendTextMessage(cid,27,'Voce nao tem nenhuma task ativa.')
	else
		local left = kills - killstotal
		if left <= 0 then
			doPlayerSendTextMessage(cid,27,'Voce ja matou monstros suficientes para terminar sua task.')
		else
			doPlayerSendTextMessage(cid,27,'Andamento da sua task de '..taskmonsters[monster][1]..'s -> ['..kills..'/'..killstotal..']')
		end
	end
	return true
end

Eu já criado e colocado tudo, mas quando eu digo que o comando !countkills no servidor eu recebo um erro:

[Error - TalkAction Interface] 
data/talkactions/scripts/countkills.lua:onSay
Description: 
data/talkactions/scripts/countkills.lua:2: attempt to index global 'tasksg' (a nil value)
stack traceback:
data/talkactions/scripts/countkills.lua:2: in function <data/talkactions/scripts/countkills.lua:1>

Eu uso o servidor:

 

Pokemon Dash Advanced (1.0), last compiled at Jan 11 2012.
Credits to all TFS team (Elf, slawkens, Talaturen, Lithium, KaczooH, Kiper, Kornholijo).
PokemonDistro made by mastercraft/brun123.

 

 

Não é problema com a sua distro, não. O nome da variável é taskstg, não tasksg. Eu devo ter escrito errado. Se der algum outro desse erro, é só substituir por taskstg.

Link para o comentário
Compartilhar em outros sites

Estou aqui mais uma vez eu gostei muito do scripit fui por no meu servidor mais deu tudo certo mais quando vou no npc falo nova task ai falo comando !countkills

sem matar nenhum mostro ele diz: 23:25 Voce ja matou monstros suficientes para terminar sua task.

 

também está dando esse erro na distro

 

 

[03/09/2013 23:30:06] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: no such table: killed_monsters (INSERT INTO killed_monsters ("name", "date") VALUES
[03/09/2013 23:30:06] ('Rotworm',1378261806);)

 

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

Estou aqui mais uma vez eu gostei muito do scripit fui por no meu servidor mais deu tudo certo mais quando vou no npc falo nova task ai falo comando !countkills

sem matar nenhum mostro ele diz: 23:25 Voce ja matou monstros suficientes para terminar sua task.

 

também está dando esse erro na distro

 

 

[03/09/2013 23:30:06] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: no such table: killed_monsters (INSERT INTO killed_monsters ("name", "date") VALUES

[03/09/2013 23:30:06] ('Rotworm',1378261806);)

 

 

Cara, esse erro não vem do meu script, não.

Huum, agora o erro do !countkills pode ser problema no jeito que você configurou. Vê se tá certo lá no killstotal dos monstros que você adicionou. Se quiser resetar na mão, usa esses comandos com o GOD:

/storage nome_do_jogador, 3451, -1 -- storage de kills
/storage nome_do_jogador, 3452, -1 -- storage de permissão / tempo pra fazer a task
/storage nome_do_jogador, 3453, -1 -- storage do total de monstros que você tem que matar
/storage nome_do_jogador, 3454, -1 -- storage do monstro que você tem que matar

Aí você resetou o sistema de tasks. Confere lá a sua configuração, se ficou certinha mesmo, porque o que o script faz é adicionar um valor de storage pra quantidade total, aí compara com outro storage com a quantidade que você matou. Se você tiver configurado errado, o NPC vai colocar o valor errado como total, dando esse erro aí.

 

Pra ver onde é o erro, vai usando

/storage nome_do_jogador, 345N
N variando de 1 a 4, como acima

Vê se os valores estão acertados.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...