Ir para conteúdo
  • Cadastre-se

Posts Recomendados


alguem pode me dizer o que esta errado nesse script de task que editei?



-- Sistema de Task feito por Leoric --

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 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] = {'lord demon', killstotal = 200}, -- aqui você deve mudar
[2] = {'master warlock', killstotal = 300},
[3] = {'master green reaper', killstotal = 400}, 
[4] = {'master demon', killstotal = 500}
}

taskreward = -- em gps
{
[1] = {money = 1000000,xp = 50000, item = 8262}, -- nenhum item será adicionado e 3 pontos de task serão adicionados
[2] = {money =  1000000,xp = 70000, item = 8263}, -- 1 item(2458) será adicionado e nenhum ponto de task
[3] = {money =  1000000,xp = 80000, item = 8264}, -- 1 item(2458) será adicionado e nenhum ponto de task 
[4] = {money =  1000000,xp = 95000, item = 8265} -- 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 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
        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

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

 

o erro que da no distro é esse:

 

esse é o script do NPC

 

 

-- 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)            end
function onCreatureDisappear(cid)            npcHandler:onCreatureDisappear(cid)            end
function onCreatureSay(cid, type, msg)            npcHandler:onCreatureSay(cid, type, msg)        end
function onThink()                    npcHandler:onThink()                    end


function 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)
    end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Editado por carloos (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
3 horas atrás, Talesigorvr disse:

Ué, qual erro da na distro?

esse aqui

ddd.png

Link para o post
Compartilhar em outros sites

O XML do NPC está na pasta certa?

Não da pra ver a print direito.

Editado por Talesigorvr (veja o histórico de edições)

Não dou suporte via PM, crie um tópico caso tenha dúvidas.

Isso previne que outras pessoas com a mesma dúvida criem tópicos desnecessários.

Link para o post
Compartilhar em outros sites
8 minutos atrás, Talesigorvr disse:

O XML do NPC está na pasta certa?

Não da pra ver a print direito.

I/O warning : failed to load external entity "data/npc/adonai.xml"
[warning = Npc::loadFromXmll Cannot load npc file (data/npc/adonai.xml).
info: failed to load external entity "data/npc/adonai.xml"

 

é apenas isso que aparece 2 vezes seguidas

o XML é

 

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Adonai" 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>

Link para o post
Compartilhar em outros sites

Tenta assim:

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Adonai" script="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>

 

Não dou suporte via PM, crie um tópico caso tenha dúvidas.

Isso previne que outras pessoas com a mesma dúvida criem tópicos desnecessários.

Link para o post
Compartilhar em outros sites
9 minutos atrás, Talesigorvr disse:

Tenta assim:


<?xml version="1.0" encoding="UTF-8"?>
<npc name="Adonai" script="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>

Mano o npc Funfou.

mais agora voltou ao que tava, voce pega a task com o npc tudo certinho

mais mata o monster e continua no 0

18:55 Andamento da sua task de lord of demons -> [0/200]

 

Link para o post
Compartilhar em outros sites

Isso não tem nada a ver com o erro que você mostrou, esse erro é do próprio script do NPC.

Editado por Talesigorvr (veja o histórico de edições)

Não dou suporte via PM, crie um tópico caso tenha dúvidas.

Isso previne que outras pessoas com a mesma dúvida criem tópicos desnecessários.

Link para o post
Compartilhar em outros sites
10 minutos atrás, Talesigorvr disse:

Isso não tem nada a ver com o erro que você mostrou, esse erro é do próprio script do NPC.

è, sei que nao tem nada a ver.

mais tipo esse erro que esta dando agora n aparece nada no console

voce da !countkills e por mais que voce mate varios monstros

nao sai de 0, ja testei com outro monster mais nd!!

Editado por carloos (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Você passou o script errado.

!countkills é uma talkaction.

Não dou suporte via PM, crie um tópico caso tenha dúvidas.

Isso previne que outras pessoas com a mesma dúvida criem tópicos desnecessários.

Link para o post
Compartilhar em outros sites
4 horas atrás, Talesigorvr disse:

Você passou o script errado.

!countkills é uma talkaction.

essa ea talkaction

 

-- 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 true
end

Link para o post
Compartilhar em outros sites

Tá faltando um script.

Provavelmente um creaturescripts.

Não dou suporte via PM, crie um tópico caso tenha dúvidas.

Isso previne que outras pessoas com a mesma dúvida criem tópicos desnecessários.

Link para o post
Compartilhar em outros sites
7 horas atrás, Talesigorvr disse:

Tá faltando um script.

Provavelmente um creaturescripts.

Nao ta tudo certinho isso que nao entendo

Creaturescripts:

 

-- 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 true
end

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Jaurez
      .
    • Por Cat
      Em alguns casos, o tibia 8.60 comum não abre de jeito nenhum no map editor, mesmo desmarcando check file signatures e configurando o path corretamente.
       
      Este é o client 8.60 adaptado para o Remere's Map Editor. Resolvi postar já que ele foi removido do site oficial do RME. (ficou apenas a versão para linux lá)
      Se estiver tendo problemas para abrir a versão 8.60, tente utilizar este.
                                                                                                                     
      Baixar o Tibia Client 8.60 que funciona no Remere’s Map Editor
      Essa versão do Tibia 8.60 client resolve o erro unsupported client version ou Could not locate tibia.dat and/or tibia.spr, please navigate to your tibia 8.60 installation folder.
       
      Downloads
      https://tibiaking.com/applications/core/interface/file/attachment.php?id=47333

      Scan: https://www.virustotal.com/gui/file/333e172ac49ba2028db9eb5889994509e7d2de28ebccfa428c04e86defbe15cc
       
    • Por danilo belato
      Fala Galera To Com um problema aki 
       
      quero exporta umas sprites de um server para colocar em outro 
       
      eu clico na sprites ai aparece tds a forma delas do lado de la >>
       
      ai eu clico nela e ponho a opiçao de export mais quando salvo a sprite ela n abri 
       
      aparece isso quando tento vê-la 
       
      visualização não disponível ( no formatos png e bitmap)
       
      Agora no formato idc fala que o paint n pode ler 
       
      me ajudem ae...
    • Por Vitor Bicaleto
      Galera to com o script do addon doll aqui, quando eu digito apenas "!addon" ele aparece assim: Digite novamente, algo está errado!"
      quando digito por exemplo: "!addon citizen" ele não funciona e não da nenhum erro
       
      mesma coisa acontece com o mount doll.. 
    • Por Ayron5
      Substitui uma stone no serve, deu tudo certo fora  esse  erro ajudem  Valendo  Rep+  Grato  

      Erro: data/actions/scripts/boost.lua:557: table index is nil
       [Warning - Event::loadScript] Cannot load script (data/actions/scripts/boost.lua)

      Script:
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo