Ir para conteúdo
Banner com Efeitos

Featured Replies

Postado

tfs 0.4

 

Salve pessoal, eu estava procurando um script que tivesse mais opções de promotion, ja que meu server, o player pode se especializar. Eu achei um script assim, que quando voce fala com o npc, voce escolhe uma promotion e vira ela, até ai tudo certo, o problema é quando o player loga, pois ai reseta a vocação e ele volta a ser o que ele era antes.

Aqui esta o Script:

 


 

Spoiler

 

-- config by uotl£
config = {[2] = { -- [coloca vocation que tem que ser antes de escolher]
lvl = 20, -- level tem que ser maior que 50
id_da_vocation = 22,nome_da_vocation = "Elder Druid", -- id da primeira vocation que pode compra e o nome dela
id_da_vocation2 = 25,nome_da_vocation2 = "Elemental"} -- id da segunda vocation que pode compra e o nome dela
}
local fala_do_npc = "Voce ja deve ter escolhido." -- fala do npc se já tiver comprado e se não for vocation certa
local preco = 200 -- preço por platinum  100 que é igual 1 crystal
-- config by uotl£

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
voc = config[getPlayerVocation(cid)]
if(msgcontains(msg, 'promotion') or msgcontains(msg, 'promotions')) then
       check (cid,talkUser)
    elseif (msgcontains(msg, voc.nome_da_vocation) and talkState[talkUser] == 1) then
       talkState[talkUser] = 2
          selfSay("tem certeza que você quer ser [ "..voc.nome_da_vocation.." ] por "..preco.." crystal coin?", cid)
    elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 2) then
        v1_check (cid,talkUser,numero_s)
    elseif (msgcontains(msg, 'no') and talkState[talkUser] == 2) then
       talkState[talkUser] = 0
        selfSay("ate mais, volte quando decidir", cid)
    elseif (msgcontains(msg, voc.nome_da_vocation2) and talkState[talkUser] == 1) then
        talkState[talkUser] = 3
         selfSay("tem certeza que você quer ser ["..voc.nome_da_vocation2.."] por "..preco.." moedas de platinum?", cid)
    elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 3) then
        v2_check (cid,talkUser,numero_s)
        talkState[talkUser] = 0
    elseif (msgcontains(msg, 'no') and talkState[talkUser] == 3) then
        talkState[talkUser] = 0
        selfSay("ate mais, volte quando decidir", cid)
    end
end

function check (cid,talkUser)
    if voc then
        if getPlayerLevel(cid) >= voc.lvl then
        talkState[talkUser] = 1
        selfSay('Pois entao Druida, o que sera? [ '..voc.nome_da_vocation..' ] OU ['..voc.nome_da_vocation2..'] por '..preco..' moedas de platinum', cid)
        else
            selfSay('volta aqui quando pegar level '..voc.lvl..'', cid)
            talkState[talkUser] = 0
        end
    else
        selfSay(fala_do_npc, cid)
        talkState[talkUser] = 0
        return true
    end
end

function v1_check (cid,talkUser)
    if(doPlayerRemoveMoney(cid, (preco*100)) == true)  then
        doPlayerSetVocation(cid, voc.id_da_vocation)
        selfSay("parabens agora você é "..voc.nome_da_vocation.."", cid)
        talkState[talkUser] = 0
    else
        selfSay('volta aqui quando tiver dinheiro '..preco..' moedas de platinum', cid)
        talkState[talkUser] = 0
    end
    return true
end

function v2_check (cid,talkUser)
    if(doPlayerRemoveMoney(cid, (preco*100)) == true) then
      doPlayerAddOutfit(cid, getPlayerSex(cid) == 1 and 20 or 20, 0)
        doPlayerSetVocation(cid, voc.id_da_vocation2)
        selfSay("parabens agora você é "..voc.nome_da_vocation2.."", cid)
        talkState[talkUser] = 0
    else
        selfSay('volta aqui quando tiver dinheiro '..preco..' moedas de platinum', cid)
        talkState[talkUser] = 0
    end
    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

Resolvido por MatCollier

Ir para solução
  • Respostas 9
  • Visualizações 436
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Posso passar o script, mas não sei como funciona a conversão infelizmente.     No caso é só tu mudar o 5 pelo id da vocação que tu quer.   Aí pode fazer um script de npc des

Postado

Qual o tfs que tu usa?

 

Eu tenho um sistema parecido no meu ot, TFS 1.2, posso compartilhar, mas funciona da seguinte forma:

 

O player é, digamos, "mage" (o sorcerer do meu ot). No level 35 ele pode promover pra "Master Sorcerer" ou pra "Wizard". Mas são 2 npcs diferentes. Se ele promover com um npc é pra master sorcerer, com o outro é pra wizard. Serve pra tu?

Postado
  • Solução

Posso passar o script, mas não sei como funciona a conversão infelizmente.

 

Spoiler

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

local tabela = {1} -- aqui eu coloco a vocação inicial do player, no caso 1 é a minha vocação mage
local c = 0

function creatureSayCallback(cid, type, msg)
    if(not npcHandler:isFocused(cid)) then
        return false
    end

    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
    
    
    
    
    if (msgcontains(msg, 'promotion') or msgcontains(msg, 'promote') or msgcontains(msg, 'promover'))  then
        for x=1,#tabela do
            if getPlayerVocation(cid) == tabela[x] then
                if getPlayerLevel(cid) >= 35 then
                    if (getPlayerVocation(cid) == 1) then
                        npcHandler:say('Voce quer ser promovido para Master Sorcerer por 10.000gp?', cid)
                        talkState[talkUser] = 1
                        
                    elseif (getPlayerVocation(cid) == 5) then -- aqui no lugar do 5 tu coloca a vocação pra a qual ele será promovido
                        npcHandler:say('Voce ja esta na ultima promocao', cid)
                    else
                        npcHandler:say('Você não tem level suficiente para se promover.', cid)
                    end
                else
                    npcHandler:say('Me desculpe, mas eu só posso promover quando estiver level 35.', cid)
                end
                c = 1
                break
            end
        end
        if c == 0 then
            npcHandler:say("Voce tem que ser um Mage para ser promovido aqui.", cid)
        end
        
    elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
        if(getPlayerVocation(cid) == 1) then
            if(not doPlayerRemoveMoney(cid, 10000)) then
                npcHandler:say('Desculpe, mas voce nao tem dinheiro suficiente.', cid)
            else
                doPlayerSetVocation(cid, 5) -- aqui no lugar do 5 tu coloca a vocação pra a qual ele será promovido
                npcHandler:say('Voce foi promovido!', cid)
            end
            talkState[talkUser] = 0
            
        end
    
    elseif(msgcontains(msg, 'no')) then
        npcHandler:say('Ate mais, volte quando estiver preparado.', cid)
        talkState[talkUser] = 0
        
    end

    return true
end

function msgcontains(message, keyword)
    if(type(keyword) == "table") then
        return table.isStrIn(keyword, message)
    end

    local a, b = message:lower():find(keyword:lower())
    if(a ~= nil and b ~= nil) then
        return true
    end

    return false
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

No caso é só tu mudar o 5 pelo id da vocação que tu quer.

 

Aí pode fazer um script de npc desses pra cada promoção diferente (que foi o que eu fiz) ou tentar juntar eles em um só, o que é possível, acho eu.

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

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo