Ir para conteúdo
  • Cadastre-se

[ PEDIDO ] Da Use em um item e ganha uma talkactions por dias


Posts Recomendados

Como ja diz no titulo, quero um jeito de fazer essa scripts a baixo, funcione do seguinte jeito .. Um player ganha um item x, e ao da use nesse item x ele ganha essa talkactions por um determinado dias, como se fosse uma forma de vender essa talkactions !!

 

data\talkactions\scripts

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

 

 

 

 

data\talkactions.xml

 

 

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

 

 

- Deste já agradeço a colaboração de vocês !!

Link para o post
Compartilhar em outros sites

Simples , ao dar use no item, seta uma storage com os.time no player, e quando for executar o talkactions verifica se tem a storage.

infos40x40.png

Skype : duhw.carvalho

 

Ajude-nos a crescer, clicando em curtir

 

 

 

Link para o post
Compartilhar em outros sites

What ? Parceiro não entendi .. Que como deu pra ver não manjo muito de scripts ..

Link para o post
Compartilhar em outros sites

Eduardo tenho uma dúvida se fizer isso o ostime não vai contar só quando o player estiver on ou ele roda enquanto player estiver off também?

 

 

obs: deixe eu fazer o script pro unico pra treinar :).

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

Scripter: |||||||||| 10%

 

 

Te ajudei?? REP + e ficamos quites...  ;D

 

Atenciosamente,

                   Lucas.

Abraços!

Link para o post
Compartilhar em outros sites

Porfavor nao esqueçam o foco do topico que e minha duvida ^^ ... se tive como ajeita essa scripts minha para poder funcionar do jeito que eu preciso , agradeço (:

Link para o post
Compartilhar em outros sites

Estou fazendo pra ti já :).

Scripter: |||||||||| 10%

 

 

Te ajudei?? REP + e ficamos quites...  ;D

 

Atenciosamente,

                   Lucas.

Abraços!

Link para o post
Compartilhar em outros sites

Ok manow .. Obrigado estou a espera entao ^^

Link para o post
Compartilhar em outros sites

aura.lua

-- 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)

local storitem = 32222

-- 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)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") and (getPlayerStorageValue(cid, storitem) - os.time() > 0) 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

talkactions.xml

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

agora a parte do item

itemaura.lua

function onUse(cid, item, frompos, item2, topos)

local pausa = days*24*60*60*1000 -- Tempo que o player tera acesso ao comando(sbistitua days pelo tempo em dias

local texto = "Voce ganhou acesso ao comando !aura " -- Texto que irá receber ao usar o item.

local storage = 32222

local textofinal1 = "Você já tem acesso ao comando !aura."

local seuitem = 2133 -- id do seu item que dara o comando

local efeito2 = 13

-- fim da parte configurável se não tiver conhecimentos de script não mecha

if item.itemid == seuitem and (getPlayerStorageValue(cid, storage) - os.time() <= 0) then

doRemoveItem(item.uid,1)

doSendMagicEffect(frompos,efeito2)

setPlayerStorageValue(cid, storage, os.time() + pausa)

doPlayerSendTextMessage(cid,22,texto)

elseif item.itemid == seuitem and (getPlayerStorageValue(cid, storage) - os.time() > 0) then

doPlayerSendTextMessage(cid,22,textofinal1)

end

return true

end

actions.xml

<action itemid="seuitem" event="script" value="itemaura.lua"/>

Obs:desculpe a demora estou aprendendo ainda ae demoro um pouco pra fazer um script kkkk

Obs2:leia toda aas partes configuraveis.. do itemaura e coloque os seus dados como item id na tag do actions.

obs3:relendo vi um erro no primeiro arquivo recopie ele e cole...

obs4:estava faltando um parametro no arquivo itemaura recopie e cole.

Espero ter ajudado.

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

Scripter: |||||||||| 10%

 

 

Te ajudei?? REP + e ficamos quites...  ;D

 

Atenciosamente,

                   Lucas.

Abraços!

Link para o post
Compartilhar em outros sites

manow tem um problema, quando fala !aura on, nao ativa o talkactions

Link para o post
Compartilhar em outros sites

La no lugar de days no itemaura vc colocou uma quantidade em dias?

 

Consertado copie e cole denovo de um reload actions e teste ;)(apenas itemaura)

 

Edite2:copei denovo o itemaura agora esta sem nenhum erro tenho quase ctz :).

 

edite3:tinha mais um erro kkk mal to com sono agora quase quase ctz que não há mais erros.(copie denovo o itemaura.lua)

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

Scripter: |||||||||| 10%

 

 

Te ajudei?? REP + e ficamos quites...  ;D

 

Atenciosamente,

                   Lucas.

Abraços!

Link para o post
Compartilhar em outros sites

mesma coisa manow, la em days eu mudei pra 7 certinho, mais ainda continua nao funcionando o talkactions .. acho q erro nao seria no itemaura mais sim na mudança q tu fez na aura.lua do talkactions.

Link para o post
Compartilhar em outros sites

Algum erro na distro?

Scripter: |||||||||| 10%

 

 

Te ajudei?? REP + e ficamos quites...  ;D

 

Atenciosamente,

                   Lucas.

Abraços!

Link para o post
Compartilhar em outros sites

Quando usa o item da uma mensagem? Você ganho acesso ao comando?, editei o aura.lua teste agora...

Scripter: |||||||||| 10%

 

 

Te ajudei?? REP + e ficamos quites...  ;D

 

Atenciosamente,

                   Lucas.

Abraços!

Link para o post
Compartilhar em outros sites

Aparece sim a mensagem "03:07 Voce ganhou acesso ao comando !aura " mais depois na de executar o comando !aura on nao funciona nada !!

 

- Manow irei sair mais amanha ..estarei aqui denovo e esperando tua ajuda e de todos q poder me ajudar ..

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

único erro aparente é que o os.time() não usa milisegundos, ele usa o tempo em segundos.. então não precisa multiplicar por mil;

local pausa = days*24*60*60*1000

ficaria

local pausa = days*24*60*60

e um adendo: quando vc pretende colocar action por itemid você não precisa colocar esse if item.itemid == seuitem porque o script só vai ser ativado quando for aquele itemid então não faz sentido isso. A gente coloca essa condicional quando tiver mexendo com dois ou mais items no mesmo script ou em alguns casos extremos quando o cara quer ter certeza absoluta que o action/uniqueid pertence aquele item específico

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Vish esqueci que os time é em segundos, vou testar o script aqui em casa depois te mando funcional Unico...

 

Testado e funcionando

 

aura.lua

 

 
-- 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)
local storitem = 32222
local texto = "Voce nao tem acesso ao comando !aura, compre o item para obte-lo"
-- 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") and (getPlayerStorageValue(cid, storitem) - os.time() > 0) 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
if (getPlayerStorageValue(cid, storitem) - os.time() < 0) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,texto)
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Digite '!aura on' para ligar sua aura, e '!aura off' para desliga-la.")
end
end
return TRUE
end

 

 

talkaction.xml

 

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

 

 

itemaura.lua

 

function onUse(cid, item, frompos, item2, topos)
local pausa = 1*24*60*60-- Tempo que o player tera acesso ao comando(sbistitua days pelo tempo em dias
local texto = "Voce ganhou acesso ao comando !aura " -- Texto que irá receber ao usar o item.
local storage = 32222
local textofinal1 = "Você ja tem acesso ao comando !aura."
local seuitem = 2213 -- id do seu item que dara o comando
local efeito2 = 13
 
-- fim da parte configurável se não tiver conhecimentos de script não mecha
 
 
if item.itemid == seuitem and (getPlayerStorageValue(cid, storage) - os.time() <= 0) then
doRemoveItem(item.uid,1)
doSendMagicEffect(frompos,efeito2)
setPlayerStorageValue(cid, storage, os.time() + pausa)
doPlayerSendTextMessage(cid,22,texto)
 
elseif item.itemid == seuitem and (getPlayerStorageValue(cid, storage) - os.time() > 0) then
doPlayerSendTextMessage(cid,22,textofinal1)
end
 
 
return true

end

 

action.xml

 

<action itemid="seuitem" event="script" value="itemaura.lua"/>

 

 

Unico desculpe-me a demora , ontem estava com sono e devo ter feito alguma merda no meio do script... Agora está totalmente funcional... Qualquer dúvida só chamar (configure nas partes configuráveis do script)

 

 

Obs2: Eu sou extremista ho yeah ... Sqn .. Vlw pelas dicas white.

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

Scripter: |||||||||| 10%

 

 

Te ajudei?? REP + e ficamos quites...  ;D

 

Atenciosamente,

                   Lucas.

Abraços!

Link para o post
Compartilhar em outros sites

Manow continua nao funcionando, só que agora, da esta dando para da USE no item e como no caso nao da pra da USE no item nao tem como eu testar e ver se o talkactions estar ou nao funcionando, além do mais vc colocou o ID de um anel como item x, sendo assim creio que nao tem como da USE num anel e ele sumir, certo ???

Link para o post
Compartilhar em outros sites

Eduardo tenho uma dúvida se fizer isso o ostime não vai contar só quando o player estiver on ou ele roda enquanto player estiver off também?

 

 

obs: deixe eu fazer o script pro unico pra treinar :).

 

Não, quando o player ta off também. Exemplos disso são as vip's que usam os.time(), mesmo o player estando off, seus dias de vip vão acabando.

 

Dica :

 

elseif é usado para fazer uma outra verificação, antes que o if seja executado, então no caso seria melhor um else.

 

Exemplo :

if getPlayerLevel(cid) >= 200 then

  ...

else

  ...

end

 

tradução :

se o level do player cid for maior ou igual à 200 então

  ...

senão

  ...

fim

 

 

facilita, e muito !

--------

 

Manow continua nao funcionando, só que agora, da esta dando para da USE no item e como no caso nao da pra da USE no item nao tem como eu testar e ver se o talkactions estar ou nao funcionando, além do mais vc colocou o ID de um anel como item x, sendo assim creio que nao tem como da USE num anel e ele sumir, certo ???

 

tem sim amigo, se ele falou que testou, então creio que você configurou errado ;/

infos40x40.png

Skype : duhw.carvalho

 

Ajude-nos a crescer, clicando em curtir

 

 

 

Link para o post
Compartilhar em outros sites

Configurei oq ? o meu CTRL C e CTRL V ? O Lucas passou a configuração ja acertada, que eu tive q mudar foi so o ID do item na actions.xml que ele nao colocou .. O resto ja estava tudo configurado !!

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