Ir para conteúdo
  • Cadastre-se

(Resolvido)addEvent Send magic effect Alguém sabe?


Ir para solução Resolvido por Eduardo Carvalho,

Posts Recomendados

Oi tudo bem?

 

Eu estava tentando criar um efeito enquanto a pessoa tivesse tal storage com while tipo...

 

 

local tempo = 1*1*1000

local storage = 23000

while (getPlayerStorageValue(cid, storage) >= 1) do

addEvent(doSendMagicEffect, tempo ,frompos, 35)

end

 

Porem não esta funcionando(queria que a cada segundo ele mande um efeito enquanto o player tiver o storage tal).

Alguém sabe como faze-lo?

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

@up

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

 

 

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

 

Atenciosamente,

                   Lucas.

Abraços!

Link para o post
Compartilhar em outros sites

O melhor seria usar recursion.

function efeito(cid)
   if isCreature(cid) and getPlayerStorageValue(cid, STORAGE) > 0 then
      doSendMagicEffect(getThingPos(cid), EFEITO)
      addEvent(efeito, INTERVALO, cid)
   end   
   return true
end

Quando quiser ativar o efeito, é só chamar a função, exemplo:

 

function onUse(cid)
   efeito(cid)
   return true
end

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

Link para o post
Compartilhar em outros sites

então assim estaria correto? 

 

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


doSendMagicEffect(frompos,13)
return true
end

 

function doSendMagicEffect(frompos, cid)


if isCreature(cid) and getPlayerStorageValue(cid, limitedeuso) > 0 then
doSendMagicEffect(getThingPos(cid), 13)
addEvent(doSendMagicEffect, tempo1, cid)
end
return true
end

 

Obs: se não tiver aponte oque eu fiz de errado :) ty.

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

E como fica com o pos?

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

 

 

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

 

Atenciosamente,

                   Lucas.

Abraços!

Link para o post
Compartilhar em outros sites

então assim estaria correto? 

 

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


doSendMagicEffect(frompos,13)
return true
end

 

function doSendMagicEffect(frompos, cid)


if isCreature(cid) and getPlayerStorageValue(cid, limitedeuso) > 0 then
doSendMagicEffect(getThingPos(cid), 13)
addEvent(doSendMagicEffect, tempo1, cid)
end
return true
end

 

Obs: se não tiver aponte oque eu fiz de errado :) ty.

 

Não está certo porque você usou o nome de uma função que já existe. Você sobreescreveu a antiga doSendMagicEffect por essa sua, e isso é horrível em vários sentidos, além que tem uma recursion desnecessária alí. O ideal seria algo como:

function doSendMagicEffectRepeat(cid)
   if isCreature(cid) and getPlayerStorageValue(cid, limitedeuso) > 0 then
      doSendMagicEffect(getThingPos(cid), 13)
      addEvent(doSendMagicEffectRepeat, tempo1, cid)
   end
   return true
end
 
function onUse(cid, item, frompos, item2, topos)
   doSendMagicEffectRepeat(cid)
   return true
end

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

Link para o post
Compartilhar em outros sites

Max agora no seu caso, não precisa por o parametro frompos quando chama a funçao pois vc retirou o parametro pos da funçao. E esse 13 tb n deveria estar ai, pq a funçao n tem nenhum parametro nunérico.

O correto seria chamar a funçao assim:

doSendMagicEffectRepeat(cid)

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

 

 

 

 

 

v61snZO.png?129bcx1x.pngiVgTXVz.png?1

 

 

 

 

 

Link para o post
Compartilhar em outros sites

Usa como base :

  function effect()
     local pos = getCreaturePosition(cid)
      doSendMagicEffect(pos, 35)
  end
 
i = 1
j = 1
while i ~= 31 do
   addEvent(effect, j * 1000)
     i = i + 1
     j = j + 1   
end

infos40x40.png

Skype : duhw.carvalho

 

Ajude-nos a crescer, clicando em curtir

 

 

 

Link para o post
Compartilhar em outros sites

Du, vc n colocou parametro na function effect(), tirou aquele cid de onde? E ele quer que nunca pare de enviar o efeito enquanto o player esta on, nesse seu loop só vai mandar o efeito 31 vezes. E pq vc usou variáveis i e j se elas vão ter sempre o mesmo valor até mesmo dentro do loop? Bastava usar uma só

 

 

 

 

 

v61snZO.png?129bcx1x.pngiVgTXVz.png?1

 

 

 

 

 

Link para o post
Compartilhar em outros sites

Du, vc n colocou parametro na function effect(), tirou aquele cid de onde? E ele quer que nunca pare de enviar o efeito enquanto o player esta on, nesse seu loop só vai mandar o efeito 31 vezes. E pq vc usou variáveis i e j se elas vão ter sempre o mesmo valor até mesmo dentro do loop? Bastava usar uma só

 

é que eu meio que confundir .

usei cid pq é só uma base, não vi todo o topico, achei que ele queria por 30 segundos, ao dar use em algum item.

i e j , realmente poderia usar somente 1 'rsrs

 

bjiim gato ;*

se possível, entra skype.

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

infos40x40.png

Skype : duhw.carvalho

 

Ajude-nos a crescer, clicando em curtir

 

 

 

Link para o post
Compartilhar em outros sites

Max agora no seu caso, não precisa por o parametro frompos quando chama a funçao pois vc retirou o parametro pos da funçao. E esse 13 tb n deveria estar ai, pq a funçao n tem nenhum parametro nunérico.

O correto seria chamar a funçao assim:

doSendMagicEffectRepeat(cid)

 

S, eu tava com pressa e n li o código todo, é isso msm.

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

Link para o post
Compartilhar em outros sites

Só uma ultima dúvida... eu usei assim...

 

function effect(cid, pos)


local pos = getCreaturePosition(cid)
doSendMagicEffect(pos, 35)
end


 

 

function onuse

local i = 1

local j = 1

if nanana then

while i ~= 31 do
addEvent(effect, j * 1000)
i = i + 1
j = j + 1
end
end

 

Mas mesmo assim não fica enviando o efeito 30 vezes(1 por segundo)

 

 

Ae tentei assim (certeza que ta errado kkk)

 

function doSendMagicEffect(cid, pos)


local pos = getCreaturePosition(cid)
doSendMagicEffect(pos, 35)
end

 

function onuse

local i = 1

local j = 1

if nanana then

while i ~= 31 do
addEvent(doSendMagicEffect, j * 1000)
i = i + 1
j = j + 1
end
end

 

Pq deu errado em ambos os casos?

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
function onUse(cid, item, frompos, item2, topos)

         function effect()
              if isPlayer(cid) then
                 local pos = getCreaturePosition(cid)
                 doSendMagicEffect(pos, 35)
              end
         end
         
a = 1
 while a ~= 31 do
     addEvent(effect, a * 1000)
       a = a + 1
 end
 
 return true
end

infos40x40.png

Skype : duhw.carvalho

 

Ajude-nos a crescer, clicando em curtir

 

 

 

Link para o post
Compartilhar em outros sites

Cara desculpe pela minha ignorância no assunto(sou novo em scripting) e não entendi direito onde encaixar essa função dentro do script vou te passar ele e me mostra..(só vendo um exemplo dentro de uma seção de ifs eu vou entender acho..)

 

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


local pausa = 30*1*1000 -- (1000 = 1 segundos) Tempo que o script durará
local texto = "Você dobrou sua Experiencia por 30 minutos" -- Texto que irá receber ao usar a potion.
textofinal = "Acabou o potion de Experiencia." -- Texto que irá receber quando o efeito da potion acabar.
local exp = 2 -- O quanto que você quer que dobre sua experiencia, por exemplo 2 é 2x as rates do seu server.
expfinal = 1 --Não mude, isso é para a experiencia voltar ao normal.
local limitedeuso = 49015
local tempo = 1*1*1000
local textofinal1 = "Você já esta sob efeito da pot de experiência espere o efeito acabar."
local a = 1
local j = 1
if item.itemid == 9930 and (getPlayerStorageValue(cid, limitedeuso) - os.time() <= 0) then
doRemoveItem(item.uid,1)
doPlayerSetExperienceRate(cid,exp)
doSendMagicEffect(frompos,13)
setPlayerStorageValue(cid, limitedeuso, os.time() + 30)
doPlayerSendTextMessage(cid,22,texto)
addEvent(potion,pausa,cid)
function effect(cid, pos)
if isPlayer(cid) then
local pos = getCreaturePosition(cid)
doSendMagicEffect(pos, 13)
end
end

while a ~= 1801 do
addEvent(effect, a * 1000)
a = a + 1
end

return true
end
elseif item.itemid == 9930 and (getPlayerStorageValue(cid, limitedeuso) - os.time() > 0) then
doPlayerSendTextMessage(cid,22,textofinal1)
end
while a ~= 31 do
addEvent(effect, a * 1000)
a = a + 1
end

return true
end
end




function potion(cid)
local limitedeuso = 49012
doPlayerSetExperienceRate(cid,expfinal)
doPlayerSendTextMessage(cid,22,textofinal)
end

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
  • Solução
function onUse(cid, item, frompos, item2, topos)
local pausa = 30*1*1000 -- (1000 = 1 segundos) Tempo que o script durará
local texto = "Você dobrou sua Experiencia por 30 minutos" -- Texto que irá receber ao usar a potion.
textofinal = "Acabou o potion de Experiencia." -- Texto que irá receber quando o efeito da potion acabar.
local exp = 2 -- O quanto que você quer que dobre sua experiencia, por exemplo 2 é 2x as rates do seu server.
expfinal = 1 --Não mude, isso é para a experiencia voltar ao normal.
local limitedeuso = 49015
local tempo = 1*1*1000
local textofinal1 = "Você já esta sob efeito da pot de experiência espere o efeito acabar."

local timeEffect = 31 -- tempo em segundos que o efeito vai apareceer no player, 31 = 30 segundos. sempre coloque 1 segundo a mais.

      function effect()
         if isPlayer(cid) then
            local pos = getCreaturePosition(cid)
            doSendMagicEffect(pos, 35)
         end
      end
         
if item.itemid == 9930 and (getPlayerStorageValue(cid, limitedeuso) - os.time() <= 0) then
  doRemoveItem(item.uid,1)
   doPlayerSetExperienceRate(cid,exp)
    doSendMagicEffect(frompos,13)
     setPlayerStorageValue(cid, limitedeuso, os.time() + 30)
    doPlayerSendTextMessage(cid,22,texto)
 
   a = 1
  while a ~= timeEffect do
        addEvent(effect, a * 1000)
          a = a + 1
  end
 
elseif item.itemid == 9930 and (getPlayerStorageValue(cid, limitedeuso) - os.time() > 0) then
  doPlayerSendTextMessage(cid,22,textofinal1)
end


return true
end

lembrado que dessa maneira se o player logar o efeito não sairá novamente, até que o mesmo der use denovo.

infos40x40.png

Skype : duhw.carvalho

 

Ajude-nos a crescer, clicando em curtir

 

 

 

Link para o post
Compartilhar em outros sites

Mto obrigado Eduardo agora eu entendi :).

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

 

 

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

 

Atenciosamente,

                   Lucas.

Abraços!

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.

  • Conteúdo Similar

    • Por GabrielSapient
      Galera comecei ontem a mexer com programação LUA e criar um script básico dentro do sistema de surf do pokémon, e é o a partir que o player entra na água ele recebe o addEvent(doCreatureAddHealth, 180000, cid, -99999) para morrer em 3 minutos mas quando sai da agua continua, então queria cancelar este addEvent ao sair da água, alguém pode me ajudar ?
    • Por Adventure
      Olá.
      Eu gostaria que podesse adicionar a função para que ao clicar no item ele se transformasse em outro item e após 5 minutos este item voltasse ao normal e retirar esse tempo para poder clicar de novo.
      OBS: Caso possivel se tiver como colocar para os monstros serem aleatorios de acordo o level. Tipo ao clicar aparecer uma wave de monstro de acordo o lvl .
      Vou detalhar no script oque deve fazer.
       
      Segue script:
       
       
    • Por NathanAmaro
      Eai galera
       
      Instalei um Gesior compatível com minha distro, sem nenhum erro, mas o site fica online só pra mim, na casa dos meus amigos ele fica branco e da erro lá. Eu fui mexendo no meu config.lua e uma coisa mudou.
       
      Eu mudei o ip
      sqlHost = "127.0.0.1" pelo ip do meu servidor que as pessoas conseguem entrar. E meio que funcionou, só que apareceu esse erro:
       
      Já me conectei pelo localhost/phpmyadmin e ta de boa, até me conectei na database pelo ipdomeupc/phpmyadmin mas mesmo assim o mesmo erro, o que eu preciso fazer?
    • Por onix
      Boa tarde, gostaria de saber se alguem sabe uma função que anule, bloqueie, cancele, ou não permita essa funçao:         doSendMagicEffect(position, CONST_ME_HITBYFIRE). Quero usar por exemplo em um script de uma falsa firewalker boots, que ao andar sobre o fogo essa bota cancele o efeito visual do fogo pegando, mas não proteja do fogo o jogador perde vida normalmente mas sem o efeito visual somente. Vai me ajudar muito mesmo obrigado.
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo