Ir para conteúdo

[PEDIDO] Como fazer uma script de um NPC, para dar permissão para usar um talkaction

Featured Replies

Postado

Aqui esta a Script da Aura

 

-- CONFIGURAÇÕES
    aurastr = 25950 -- storage da aura
    estr = 25951 -- storage para o exhaust
    porcentagem = 40 -- chance de curar em cada volta da aura, em porcentagem
    quantheal = 10 -- porcentagem do hp máximo que cada cura irá curar. (No caso, irá curar 10% do hp máximo cada cura)
    tempo = 1180 -- tempo para dar uma volta no player (este tempo foi o que achei mais agradável visualmente, é recomendável não mudar)
    tipoaura = 30 -- número do efeito da aura (efeito de distância, pode ser identificado com /x no jogo)
    efeitocura = 49 -- número do efeito quando a cura chega ao player (efeito de posição fixa, pode ser identificado com /z no jogo)

-- Função que chama a aura
function efeitosAura(i,tm,cid)
    if(isCreature(cid)) then
            local atual = getCreaturePosition(cid)
        local posaura = {
            {x=(atual.x)-1, y=(atual.y)-1, z=atual.z},
            {x=atual.x, y=(atual.y)-1, z=atual.z},
            {x=(atual.x)+1, y=(atual.y)-1, z=atual.z},
            {x=(atual.x)+1, y=atual.y, z=atual.z},
            {x=(atual.x)+1, y=(atual.y)+1, z=atual.z},
            {x=atual.x, y=(atual.y)+1, z=atual.z},
            {x=(atual.x)-1, y=(atual.y)+1, z=atual.z},
            {x=(atual.x)-1, y=atual.y, z=atual.z},

}
        local chances = math.random(100)
        if(chances<=porcentagem/8 and getCreatureHealth(cid)<getCreatureMaxHealth(cid)) then
            doCreatureAddHealth(cid, getCreatureMaxHealth(cid)/quantheal)
            if(i<=8 and i>1) then
                doSendDistanceShoot({x=posaura.x, y=posaura.y, z=posaura.z}, atual, tipoaura)
            else
                doSendDistanceShoot({x=posaura[1].x, y=posaura[1].y, z=posaura[1].z}, atual, tipoaura)
            end
            doSendMagicEffect(atual, efeitocura)
        end
        if(i==8) then
            doSendDistanceShoot({x=posaura.x, y=posaura.y, z=posaura.z}, {x=posaura[1].x, y=posaura[1].y, z=posaura[1].z}, tipoaura)
        elseif(i<8) then
            doSendDistanceShoot({x=posaura.x, y=posaura.y, z=posaura.z}, {x=posaura[i+1].x, y=posaura[i+1].y, z=posaura[i+1].z}, tipoaura)
        end
        if(i<=8 and getPlayerStorageValue(cid, aurastr)==2) then
            i = i+1
            tm = tempo/8
            return addEvent(efeitosAura,tm,i,tm,cid)
        elseif(i>8 and getPlayerStorageValue(cid, aurastr)==2) then
            return efeitosAura(1,0,cid)
        else
            return TRUE
        end
    else
        return TRUE
    end
end

-- Função principal
function onSay(cid, words, param, channel)
    if(param=="on") then
        if getPlayerStorageValue(cid, estr) > os.time() then
            doPlayerSendCancel(cid, "Espere "..(getPlayerStorageValue(cid, estr) - os.time()).." segundos para poder habilitar aura novamente.")
        else
            if(getPlayerStorageValue(cid, aurastr)==2) then
                doPlayerSendCancel(cid,"Sua aura já está habilitada.")
            elseif(getPlayerStorageValue(cid, aurastr)==-1) then
                doPlayerSendCancel(cid,"Aura ligada!")
                setPlayerStorageValue(cid, aurastr, 2)
                efeitosAura(1,tempo/8,cid)
            end
        end
    elseif(param=="off") then
        if(getPlayerStorageValue(cid, aurastr)==2) then
            setPlayerStorageValue(cid, estr, os.time()+2)
            setPlayerStorageValue(cid, aurastr, -1)
            doPlayerSendCancel(cid,"Aura desligada!")
        end

else    
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Digite '!aura on' para ligar sua aura, e '!aura off' para desligá-la.")
    end
    return TRUE
end 

 

 

Queria que tivesse um npc em que de para dar a permissao para usar essa Talkaction! ^^

 

 

 

Editado por samuel.show (veja o histórico de edições)

  • Respostas 8
  • Visualizações 739
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • eu ja te ensinei la no seu outro topico cara   edit. ja vi pq o script n tava te satisfazendo, é pq o script de aura q vc tem, pede que a storage esta com valor == 2   se eu soubes

  • kkkk ' obrigado então ! @Sekk Jajá vou testar!!    Meu conhecimento com Scripts não e muito grande kk ! Por isso não consigo explicar corretamente!   Muito obrigado a vocês e

Postado

Esta é uma mensagem automática! Este tópico foi movido para a área correta.
Pedimos que você leia as regras do fórum.

Spoiler

This is an automated message! This topic has been moved to the correct area.
Please read the forum rules.

 

@samuel.show  Coloque para o NPC dar uma storage, esse storage você usa como check, se o player tiver, o ele pode usar, se não tiver não pode!

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Postado
1 hora atrás, samuel.show disse:

Agora me explique como fazer isso por favor?:| Eu não entendo muito sabe '

 

eu ja te ensinei la no seu outro topico cara

 

edit. ja vi pq o script n tava te satisfazendo, é pq o script de aura q vc tem, pede que a storage esta com valor == 2

 

se eu soubesse disso antes kkkk

 

ai ta o script do item

function onUse(cid, item, fromPosition, itemEx, toPosition)

local s = 25950 -- storage aura
local x = 25951 -- storage on/off
local pos = getCreaturePosition(cid) -- n mexa
local exh = 25952 -- storage exhaust
local texh = 5 -- tempo de exhaust em segundos

if exhaustion.check(cid, exh) then
	doPlayerSendCancel(cid, "You can use it again in "..exhaustion.get(cid, exh).." seconds.")
return true
end

if getPlayerStorageValue(cid, x) <= 0 and getPlayerStorageValue(cid, s) <= 0 then
	 setPlayerStorageValue(cid, x, 1)
	  setPlayerStorageValue(cid, s, 2)
	   exhaustion.set(cid, exh, texh)
	    doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE)
	     doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua aura foi ativada.")
elseif getPlayerStorageValue(cid, x) == 1 and getPlayerStorageValue(cid, s) == 2 then
	 setPlayerStorageValue(cid, x, 0)
	  setPlayerStorageValue(cid, s, 0)
	   exhaustion.set(cid, exh, texh)
	    doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE)
	     doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua aura foi desativada.")
end
return true
end

 

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

Postado
  • Autor

kkkk ' obrigado então ! @Sekk Jajá vou testar!! 

 

Meu conhecimento com Scripts não e muito grande kk !

Por isso não consigo explicar corretamente!

 

Muito obrigado a vocês e pela paciência ^^ 

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