Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Galera, to com uns amigos em um projeto que apenas esta em idéias, e nada em pratica, porem como nosso servidor terá varias vocações, eu fico pensando, que terei que fazer aquele monte de bau em quests simples, que o cara escolheria 1 e nao poderia pegar os outros, igual anihilator, tornario o otserv muito feio, sei lá ...

porem, se tivesse como no lugar dos bau um npc, que tu falasse hi, reward, e ele desse o item ao player que seria de acordo com sua vocação, tornaria mais bonito e mais pratico ... nao sei se é dificil, se é facil, só sei que nao sei fazer porra nenhuma, por isso to aqui, quem puder me ajudar, agradecerei muito, e darei rep, u.u

Conheça agora os planos e preços da TKS Host.

Qualidade e Preço Justo!

 

www.tkshost.com

Link para o post
Compartilhar em outros sites

Aqui...

vá em npcs/scripts e crie um arquivo chamado Delivery Itens.lua e coloque isso dentro

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
     
    if msgcontains(msg, 'reward') or msgcontains(msg, 'REWARD') and getPlayerStorageValue(cid, 22123) == 0 then
    if getPlayerVocation(cid) == 1 and getPlayerStorageValue(cid, 22123) == 0 then
            doPlayerAddItem(cid, 2160, 100) --2160 é o ID do item nesse caso é crystal coins e 100 é a quantidade
            setPlayerStorageValue(cid, 22123, 1)
            doPlayerSendTextMessage(cid,22,"Você pegou os itens de Sorcerer.")
     elseif getPlayerVocation(cid) == 2 and getPlayerStorageValue(cid, 22123) == 0 then 
            doPlayerAddItem(cid, 2160, 100)  
            setPlayerStorageValue(cid, 22123, 1) 
            doPlayerSendTextMessage(cid,22,"Você pegou os itens de Druid.")
    elseif getPlayerVocation(cid) == 3 and getPlayerStorageValue(cid, 22123) == 0 then  
            doPlayerAddItem(cid, 2160, 100)
            setPlayerStorageValue(cid, 22123, 1)  
            doPlayerSendTextMessage(cid,22,"Você pegou os itens de Paladin.")
    elseif getPlayerVocation(cid) == 4 and getPlayerStorageValue(cid, 22123) == 0 then 
            doPlayerAddItem(cid, 2160, 100) 
            setPlayerStorageValue(cid, 22123, 1)
            doPlayerSendTextMessage(cid,22,"Você pegou os itens de Knight.")   
            return true
        end
    if msgcontains(msg, 'reward') or msgcontains(msg, 'REWARD') and getPlayerStorageValue(cid, 22123) == 1 then end
    npcHandler:say('Você já pegou os seus itens.', cid)
    end
    return true
end 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())  

e depois volte para pasta NPCs e crie um arquivo chamado Delivery Itens.xml e coloque isso dentro.

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Delivery Itens" script="data/npc/scripts/Delivery Itens.lua" walkinterval="0" floorchange="0">
	<health now="150" max="150"/>
  <look type="131" head="95" body="95" legs="95" feet="95" corpse="6080"/>
</npc>

Agora vá em creaturescript/script e abra o login.lua e coloque isso em algum lugar

if getPlayerStorageValue(cid, 22123) == -1 then
        setPlayerStorageValue(cid, 22123, 0)
    end

Depois disso é só adicionar no RME ou usar o comando /n Delivery Itens e fazer os testes.

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

Te ajudei?
Se você achar que eu mereço, me dê uma "rep+" e selecione meu post como "melhor resposta"

 

Skype: JoadsonAion

Link para o post
Compartilhar em outros sites

Se não se importa, fiz minha própria versão do código:

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 config = {
        storage = 9671,
        items = {
            --[vocation_id] = {itemid, count},
            [1] = {2160, 100},                     --Exemplo.
        },
    }
    if msgcontains(msg:lower(), "reward") then
        if getPlayerStorageValue(cid, config.storage) > -1 then
            selfSay("You already got your reward.", cid)
            return true
        elseif not config.items[getPlayerVocation(cid)] then
            selfSay("No rewards for your vocation.", cid)
            return true
        end
        local item, count = config.items[getPlayerVocation(cid)][1], config.items[getPlayerVocation(cid)][2]
        setPlayerStorageValue(cid, config.storage, 1)
        doPlayerAddItem(cid, item, count)
        selfSay("You received {"..count.."x} "..getItemNameById(item)..(count > 1 and "s" or "")..".", cid)
    end
    return true
end     
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())  

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Amigão, a script ta perfeita, só de ver da gosto e ja te dei rep, mas eu fui com as 10 vocations, e falei hi, reward, e 10 vezes deu debug no client, será que é oque oO?

To olhando aqui o console aberto, e nao tem nenhum pau, apenas da debug '-'

Conheça agora os planos e preços da TKS Host.

Qualidade e Preço Justo!

 

www.tkshost.com

Link para o post
Compartilhar em outros sites

Amigão, a script ta perfeita, só de ver da gosto e ja te dei rep, mas eu fui com as 10 vocations, e falei hi, reward, e 10 vezes deu debug no client, será que é oque oO?

To olhando aqui o console aberto, e nao tem nenhum pau, apenas da debug '-'

Qual é a versao so seu tfs?

Porque testei aqui e funcionou normal.

Teste o que o @Zipter98 postou também

Te ajudei?
Se você achar que eu mereço, me dê uma "rep+" e selecione meu post como "melhor resposta"

 

Skype: JoadsonAion

Link para o post
Compartilhar em outros sites

Este é o TFS que usei, foi baixado aqui no TibiaKing

http://www.tibiaking.com/forum/topic/17280-960961-the-forgotten-server-v0214-mystic-spirit/

 

E foi este que baixei: theforgottenserver-v0.2.14-win32console.7z

E outra, ele nao tem a pasta Lib dentro da pasta Data/

 

 

Pra mim que sou bem leigo, fica dificil configurar a script do zipter98, pois a sua eu adicionei 10 vocations, só olhando a primeira, eu nao saberia adicionar novas vocations na dele kkkk

 

 

Acabei de ver uma coisa aqui, o npc da o itens certinho, se tu for pedir denovo, ele nao da mais, mas insisti no erro de dar debug ao falar reward a primeira vez ... acho que é em meu servidor então, porem nao sei onde mecher, eu acho que teria que ter aquela lib que tem vocations, pra eu adicionar as novas vocations, e não apenas no vocations em data/xml/vocations. mas simplesmente nao tem

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

Conheça agora os planos e preços da TKS Host.

Qualidade e Preço Justo!

 

www.tkshost.com

Link para o post
Compartilhar em outros sites

A lib desse servidor fica em data/global.lua, em relação ao debug, não sei o que possa ser, pois testei numa versão 8.60.
Depois irei testar num 9.60 e ver se dá o debug também.

Te ajudei?
Se você achar que eu mereço, me dê uma "rep+" e selecione meu post como "melhor resposta"

 

Skype: JoadsonAion

Link para o post
Compartilhar em outros sites

Estarei no aguardo irmao, obrigado

Conheça agora os planos e preços da TKS Host.

Qualidade e Preço Justo!

 

www.tkshost.com

Link para o post
Compartilhar em outros sites

Talvez o problema do debug seja na cor da mensagem (acho MUITO improvável, mas é sempre bom testar).

Troque todos os:

doPlayerSendTextMessage(cid,22,
por:
doPlayerSendTextMessage(cid, 27,
E veja se o erro continua.
Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Muito boa a ideia, vou testar a do JoadSon no meu OT

wq3bBzt.png
Pokémon Dust Evolution
 
É aonde começa sua nova aventura!! 

 

Facebook

 
Verifique Atualizações

 

Link para o post
Compartilhar em outros sites

Tipo, o debug ainda continua mesmo mudando a cor da mensagem, acho estranho que pra dar algo do tipo, nao consigo imaginar oque é, porem é na hora que entrega, pq depois que eu falo reward que o npc nao entrega, nao da debug ...

Conheça agora os planos e preços da TKS Host.

Qualidade e Preço Justo!

 

www.tkshost.com

Link para o post
Compartilhar em outros sites

Aqui, testado e sem debugs...
era o tipo de mensagem kk

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
     
    if msgcontains(msg, 'reward') or msgcontains(msg, 'REWARD') and getPlayerStorageValue(cid, 22123) == 0 then
    if getPlayerVocation(cid) == 1 and getPlayerStorageValue(cid, 22123) == 0 then
    
            doPlayerAddItem(cid, 2160, 100) 
            setPlayerStorageValue(cid, 22123, 1)
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você pegou os itens de Sorcerer.")
     elseif getPlayerVocation(cid) == 2 and getPlayerStorageValue(cid, 22123) == 0 then 
            doPlayerAddItem(cid, 2160, 100)  
            setPlayerStorageValue(cid, 22123, 1) 
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você pegou os itens de Druid.")
    elseif getPlayerVocation(cid) == 3 and getPlayerStorageValue(cid, 22123) == 0 then  
            doPlayerAddItem(cid, 2160, 100) 
            setPlayerStorageValue(cid, 22123, 1)  
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você pegou os itens de Paladin.")
    elseif getPlayerVocation(cid) == 4 and getPlayerStorageValue(cid, 22123) == 0 then 
            doPlayerAddItem(cid, 2160, 100) 
            setPlayerStorageValue(cid, 22123, 1)
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você pegou os itens de Knight.")   
            return true
        end
    if msgcontains(msg, 'reward') or msgcontains(msg, 'REWARD') and getPlayerStorageValue(cid, 22123) == 1 then end
    npcHandler:say('Você já pegou os seus itens.', cid)
    end
    return true
end 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())  

Te ajudei?
Se você achar que eu mereço, me dê uma "rep+" e selecione meu post como "melhor resposta"

 

Skype: JoadsonAion

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

Conheça agora os planos e preços da TKS Host.

Qualidade e Preço Justo!

 

www.tkshost.com

Link para o post
Compartilhar em outros sites

Ok, postei acima do jeito que estou usando, e postarei agora o npc e o erro no console ...

vou postar o link da image pelo imageshack, porque nao sei postar a foto :/

 

http://imageshack.com/a/img910/8670/cJ2ZAk.jpg

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

Conheça agora os planos e preços da TKS Host.

Qualidade e Preço Justo!

 

www.tkshost.com

Link para o post
Compartilhar em outros sites

Este erro é que a configuração não tem valor ^^


No meu a primeiro do @joadson Funcionou Direitinho

wq3bBzt.png
Pokémon Dust Evolution
 
É aonde começa sua nova aventura!! 

 

Facebook

 
Verifique Atualizações

 

Link para o post
Compartilhar em outros sites

 

Aqui, testado e sem debugs...

era o tipo de mensagem kk

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
     
    if msgcontains(msg, 'reward') or msgcontains(msg, 'REWARD') and getPlayerStorageValue(cid, 22123) == 0 then
    if getPlayerVocation(cid) == 1 and getPlayerStorageValue(cid, 22123) == 0 then
    
            doPlayerAddItem(cid, 2160, 100) 
            setPlayerStorageValue(cid, 22123, 1)
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você pegou os itens de Sorcerer.")
     elseif getPlayerVocation(cid) == 2 and getPlayerStorageValue(cid, 22123) == 0 then 
            doPlayerAddItem(cid, 2160, 100)  
            setPlayerStorageValue(cid, 22123, 1) 
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você pegou os itens de Druid.")
    elseif getPlayerVocation(cid) == 3 and getPlayerStorageValue(cid, 22123) == 0 then  
            doPlayerAddItem(cid, 2160, 100) 
            setPlayerStorageValue(cid, 22123, 1)  
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você pegou os itens de Paladin.")
    elseif getPlayerVocation(cid) == 4 and getPlayerStorageValue(cid, 22123) == 0 then 
            doPlayerAddItem(cid, 2160, 100) 
            setPlayerStorageValue(cid, 22123, 1)
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você pegou os itens de Knight.")   
            return true
        end
    if msgcontains(msg, 'reward') or msgcontains(msg, 'REWARD') and getPlayerStorageValue(cid, 22123) == 1 then end
    npcHandler:say('Você já pegou os seus itens.', cid)
    end
    return true
end 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())  

Caso queria usar, já havia corrigido o debug e funciononou perfeitamente no 9.60

Te ajudei?
Se você achar que eu mereço, me dê uma "rep+" e selecione meu post como "melhor resposta"

 

Skype: JoadsonAion

Link para o post
Compartilhar em outros sites

Caso queria usar, já havia corrigido o debug e funciononou perfeitamente no 9.60

o meu é 8.60 e funcionou direitinho! Cada vocação recebendo seu devido item com sua devida mensagem

wq3bBzt.png
Pokémon Dust Evolution
 
É aonde começa sua nova aventura!! 

 

Facebook

 
Verifique Atualizações

 

Link para o post
Compartilhar em outros sites

Este erro é que a configuração não tem valor ^^

No meu a primeiro do @joadson Funcionou Direitinho

Dafuq?

 

@script

O erro está sendo causado pois você não possui a função getItemNameById(itemid).

Use este script:

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 config = {
        storage = 9671,
        items = {
            --[vocation_id] = {itemid, count},
            [1] = {2160, 100},                     --Exemplo.
        },
    }
    if msgcontains(msg:lower(), "reward") then
        if getPlayerStorageValue(cid, config.storage) > -1 then
            selfSay("You already got your reward.", cid)
            return true
        elseif not config.items[getPlayerVocation(cid)] then
            selfSay("No rewards for your vocation.", cid)
            return true
        end
        local item, count = config.items[getPlayerVocation(cid)][1], config.items[getPlayerVocation(cid)][2]
        setPlayerStorageValue(cid, config.storage, 1)
        doPlayerAddItem(cid, item, count)
        selfSay("You received {"..count.."x} "..getItemInfo(item).name..(count > 1 and "s" or "")..".", cid)
    end
    return true
end     
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo