Ir para conteúdo

Skymagnum

Posts Recomendados

Tipo: Talkaction e Função.

Testada: Não.

 

@Oque Ela Faz?.

Bem ela solta efeitos e palavras de acordo com oque foi digitado no comando por tantas vezes e por um intervalo também estipulados no comando.

 

@Como Usar?.

Oscript explica somente você ler ele bêm.

 

@Instalando....

Primeiro abra a pasta do seu servidor vá em DATA e depois em LIB e entre em 050 - FUNCTION e adicione o seguinte conteúdo lá:

 

function doSendEffectAndWords(cid, type, words, rounds, interval)

if isCreature(cid) then
doSendMagicEffect(getThingPos(cid), type)
doSendAnimatedText(getThingPos(cid), words, math.random(1, 255))
if rounds ~= 1 then
addEvent(doSendEffectAndWords, interval * 1000, getThingPos(cid), type, words, rounds - 1)
end
end
end

 

agora vá em talkactions entre na pasta scripts duplique algum arquivo e adicione o seguinte conteúdo nele:

 

function onSay(cid, words, param)

if getPlayerStorageValue(cid, 38263) > 0 then
return doPlayerSendCancel(cid, "Você já esta sob efeito da talkaction.")
end

local t = string.explode(param, ",")

if not tonumber(t[1]) or not tostring(t[2]) or not tonumber(t[3]) or not tonumber(t[4]) then
return doPlayerSendCancel(cid, "Algum parâmetro está incorreto. !comando efeito, palavras, quantas vezes irá repetir, intervalo entre os efeitos e palavras(em segundos).")
end

doSendEffectAndWords(cid, t[1], t[2], t[3], t[4])
return true
end

 

agora em talkactions.xml adicione a seguinte tag:

<talkaction log="yes" words="!efeito" access="3" event="script" value="nome_do_script.lua"/>

 

reparam como o ACESS é 3 então só cargos acima de senior tutores poderão usa-lo.

 

É isso aí espero que gostem.

Editado por Skymagnum
Link para o comentário
Compartilhar em outros sites

sua função está ok, mas a talkaction tem um problema, está faltando limitar alguns parâmetros...

 

se o player fizer algo do tipo "!comando 10, Olá, 100000000000, 0", o server vai ser obrigado a executar a função 100000000000 vezes no mesmo instante (já que o addEvent vai ter delay sempre 0), sem falar que o player pode aumentar ainda mais esse nº e ficar usando a talkaction diversas vezes, causando um provável freeze no server, e talvez (não sei), mandar muitos effects e animated texts assim pode causar debug

Editado por brun123
Link para o comentário
Compartilhar em outros sites

@UP

Mais creio que só um idiota faria isso.


function onSay(cid, words, param)

if getPlayerStorageValue(cid, 38263) > 0 then
return doPlayerSendCancel(cid, "Você já esta sob efeito da talkaction.")
end

local t = string.explode(param, ",")

if tonumber(t[3]) > 100 then
return doPlayerSendCancel(cid, "Você não pode soltar o efeito por mais de 100 vezes")
end

if tonumber(t[4]) < 1 or tonumber(t[4]) > 10 then
return doPlayerSendCancel(cid, "O delay minimo é 1 e o máximo 10.")
end

if not tonumber(t[1]) or not tostring(t[2]) or not tonumber(t[3]) or not tonumber(t[4]) then
return doPlayerSendCancel(cid, "Algum parâmetro está incorreto. !comando efeito, palavras, quantas vezes irá repetir, intervalo entre os efeitos e palavras(em segundos).")
end

doSendEffectAndWords(cid, t[1], t[2], t[3], t[4])
return true
end

Editado por Skymagnum
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...