Ir para conteúdo
  • Cadastre-se

[PEDIDO] Colocar magic effect no exp ring (a cada 1 segundo)


Posts Recomendados

Queria Colocar magic effect no exp ring (a cada 1 segundo) quando for equipado

 

 

 

meu exp ring é esse

function onEquip(cid, item, slot)


local rate = {}


if getPlayerLevel(cid) <= 1000 then
rate = 2
elseif getPlayerLevel(cid) > 1001 and getPlayerLevel(cid) <= 2000 then
rate = 2
elseif getPlayerLevel(cid) > 2001 and getPlayerLevel(cid) <= 3000 then
rate = 2
elseif getPlayerLevel(cid) > 3001 and getPlayerLevel(cid) <= 4000 then
rate = 2
elseif getPlayerLevel(cid) > 4001 then
rate = 2
end


doTransformItem(item.uid, 10309, 1)
doPlayerSendTextMessage(cid, 22, "Sua experiencia foi multiplicada (2x).")
doPlayerSetExperienceRate(cid, rate)
return TRUE
end


function onDeEquip(cid, item, slot)
doTransformItem(item.uid, 10310, 1)
doPlayerSendTextMessage(cid, 22, "Sua experiencia esta de volta ao normal.")
doPlayerSetExperienceRate(cid, 1.0)
return TRUE
end

 

ps: eu tenho um double exp potion que quando é usado ele fika saindo um magic effect a cada 1 segundo até  o efeito acabar, só que esse exp potion ta bugado, se morrer perde o efeito, ai eu queria que botasse esse efeito no exp ring

 

 

o script do potion é esse se facilitar pra por no ring '-', obrigado desde ja

 

 

 

exp potion com efeito

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


local pausa = 30*60*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 = 30*60*1000 -- 1000 = 1s então 1000 vezes 60 vezes 30 = 30 minutos
local textofinal1 = "Você já esta sob efeito da pot de experiência espere o efeito acabar."
local seuitem = 12289 -- seu item que dará double exp
local efeito1 = 53 -- efeito que ficara com o char por meia hora
local efeito2 = 14 -- efeito que acontecera no momento que usar a pot




--fim da parte configuravel não mecha se nao tiver conhecimento de scripting
local timeEffect = 1801 -- 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, efeito1)
         end
      end
         
if item.itemid == seuitem and (getPlayerStorageValue(cid, limitedeuso) - os.time() <= 0) then
  doRemoveItem(item.uid,1)
   doPlayerSetExperienceRate(cid,exp)
    doSendMagicEffect(frompos,efeito2)
     setPlayerStorageValue(cid, limitedeuso, os.time() + 1800)
    doPlayerSendTextMessage(cid,22,texto)
addEvent(potion,pausa,cid)


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


elseif item.itemid == seuitem and (getPlayerStorageValue(cid, limitedeuso) - os.time() > 0) then
  doPlayerSendTextMessage(cid,22,textofinal1)
end




return true
end




function potion(cid)
doPlayerSetExperienceRate(cid,expfinal)
doPlayerSendTextMessage(cid,22,textofinal)


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

Tenta ae:

local start = os.time()
local efeito = 15

function onEquip(cid, item, slot, fromPosition, toPosition)

local rate = {}

if getPlayerLevel(cid) <= 1000 then
rate = 2
elseif getPlayerLevel(cid) > 1001 and getPlayerLevel(cid) <= 2000 then
rate = 2
elseif getPlayerLevel(cid) > 2001 and getPlayerLevel(cid) <= 3000 then
rate = 2
elseif getPlayerLevel(cid) > 3001 and getPlayerLevel(cid) <= 4000 then
rate = 2
elseif getPlayerLevel(cid) > 4001 then
rate = 2
end

if start >= 1000 then
doSendMagicEffect(getPlayerPosition(cid),efeito)
start = 0;
end

doTransformItem(item.uid, 10309, 1)
doPlayerSendTextMessage(cid, 22, "Sua experiencia foi multiplicada (2x).")
doPlayerSetExperienceRate(cid, rate)
return TRUE
end


function onDeEquip(cid, item, slot)
doTransformItem(item.uid, 10310, 1)
doPlayerSendTextMessage(cid, 22, "Sua experiencia esta de volta ao normal.")
doPlayerSetExperienceRate(cid, 1.0)
return TRUE
end
Editado por danihcv (veja o histórico de edições)

Te ajudei?? REP + e ficamos quites... <ahttp://www.tibiaking.com/forum/uploads/emoticons/default_happyy.png' alt=';D'>

Atenciosamente,

Daniel.

Abraços!

Link para o post
Compartilhar em outros sites

tipo, esse efeito só adiciona quando o ring é equipado (nao fica a cada 1 segundo até acabar  o ring)

Link para o post
Compartilhar em outros sites

Tenta agora:

local efeito = 15

function onEquip(cid, item, slot, fromPosition, toPosition)


local rate = {}


if getPlayerLevel(cid) <= 1000 then
rate = 2
elseif getPlayerLevel(cid) > 1001 and getPlayerLevel(cid) <= 2000 then
rate = 2
elseif getPlayerLevel(cid) > 2001 and getPlayerLevel(cid) <= 3000 then
rate = 2
elseif getPlayerLevel(cid) > 3001 and getPlayerLevel(cid) <= 4000 then
rate = 2
elseif getPlayerLevel(cid) > 4001 then
rate = 2
end

addEvent(doSendMagicEffect, 1000, getPlayerPosition(cid), efeito)

doTransformItem(item.uid, 10309, 1)
doPlayerSendTextMessage(cid, 22, "Sua experiencia foi multiplicada (2x).")
doPlayerSetExperienceRate(cid, rate)
return TRUE
end


function onDeEquip(cid, item, slot)
doTransformItem(item.uid, 10310, 1)
doPlayerSendTextMessage(cid, 22, "Sua experiencia esta de volta ao normal.")
doPlayerSetExperienceRate(cid, 1.0)
return TRUE
end

Te ajudei?? REP + e ficamos quites... <ahttp://www.tibiaking.com/forum/uploads/emoticons/default_happyy.png' alt=';D'>

Atenciosamente,

Daniel.

Abraços!

Link para o post
Compartilhar em outros sites

agora quando equipa o ring, depois de 1 segundo ele solta o efeito (1x só)

 

ainda n pegou =c

Link para o post
Compartilhar em outros sites

Mas ainda ta sem soltar de 1 em 1 segundo??

Te ajudei?? REP + e ficamos quites... <ahttp://www.tibiaking.com/forum/uploads/emoticons/default_happyy.png' alt=';D'>

Atenciosamente,

Daniel.

Abraços!

Link para o post
Compartilhar em outros sites

Amigo, tentei de todos os jeitos que eu consegui pensar. Essa foi a forma final que consegui chegar, vê se dá certo:

local efeito = 15
local storage = 27398

function onEquip(cid, item, slot, fromPosition, toPosition)


local rate = {}


if getPlayerLevel(cid) <= 1000 then
rate = 2
elseif getPlayerLevel(cid) > 1001 and getPlayerLevel(cid) <= 2000 then
rate = 2
elseif getPlayerLevel(cid) > 2001 and getPlayerLevel(cid) <= 3000 then
rate = 2
elseif getPlayerLevel(cid) > 3001 and getPlayerLevel(cid) <= 4000 then
rate = 2
elseif getPlayerLevel(cid) > 4001 then
rate = 2
end

if isPlayer(cid) == TRUE then
if getPlayerStorageValue(cid, storage) <= 0 then 
equip1 = addEvent(doSendMagicEffect, 1, getPlayerPosition(cid), efeito) 
equip2 = addEvent(setPlayerStorageValue, 1000, cid, storage, -1) 
end
end

doTransformItem(item.uid, 10309, 1)
doPlayerSendTextMessage(cid, 22, "Sua experiencia foi multiplicada (2x).")
doPlayerSetExperienceRate(cid, rate)
setPlayerStorageValue(cid, storage, -1)
return TRUE
end


function onDeEquip(cid, item, slot)

if isPlayer(cid) == TRUE then
if getPlayerStorageValue(cid, config.storage) >= 1 then
setPlayerStorageValue(cid, config.storage, -1)
stopEvent(equip1)
stopEvent(equip2)
end
end

doTransformItem(item.uid, 10310, 1)
doPlayerSendTextMessage(cid, 22, "Sua experiencia esta de volta ao normal.")
doPlayerSetExperienceRate(cid, 1.0)
return TRUE
end

Se ñ der certo, me desculpe mas ñ sei o q fazer. Se puder dar rep pela tentativa e pelo tempo que gastei tentando faze-lo ficarei agradecido, mas se ñ quiser tudo bem. ^^

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

Te ajudei?? REP + e ficamos quites... <ahttp://www.tibiaking.com/forum/uploads/emoticons/default_happyy.png' alt=';D'>

Atenciosamente,

Daniel.

Abraços!

Link para o post
Compartilhar em outros sites

agr, bugou, nem equipa + o item =\

 

 

 

 

[06/06/2014 17:40:59] [Error - LuaScriptInterface::loadFile] data/movements/scripts/exp_ring.lua:31: unexpected symbol near ']'
[06/06/2014 17:40:59] [Warning - Event::loadScript] Cannot load script (data/movements/scripts/exp_ring.lua)
[06/06/2014 17:40:59] data/movements/scripts/exp_ring.lua:31: unexpected symbol near ']'
[06/06/2014 17:40:59] [Error - LuaScriptInterface::loadFile] data/movements/scripts/exp_ring.lua:31: unexpected symbol near ']'
[06/06/2014 17:40:59] [Warning - Event::loadScript] Cannot load script (data/movements/scripts/exp_ring.lua)
[06/06/2014 17:40:59] data/movements/scripts/exp_ring.lua:31: unexpected symbol near ']'
[06/06/2014 17:40:59] [Error - LuaScriptInterface::loadFile] data/movements/scripts/exp_ring.lua:31: unexpected symbol near ']'
[06/06/2014 17:40:59] [Warning - Event::loadScript] Cannot load script (data/movements/scripts/exp_ring.lua)
[06/06/2014 17:40:59] data/movements/scripts/exp_ring.lua:31: unexpected symbol near ']'
[06/06/2014 17:40:59] [Error - LuaScriptInterface::loadFile] data/movements/scripts/exp_ring.lua:31: unexpected symbol near ']'
[06/06/2014 17:40:59] [Warning - Event::loadScript] Cannot load script (data/movements/scripts/exp_ring.lua)
[06/06/2014 17:40:59] data/movements/scripts/exp_ring.lua:31: unexpected symbol near ']'

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

Tenta dnv, editei o post anterior.

Te ajudei?? REP + e ficamos quites... <ahttp://www.tibiaking.com/forum/uploads/emoticons/default_happyy.png' alt=';D'>

Atenciosamente,

Daniel.

Abraços!

Link para o post
Compartilhar em outros sites

mesmo jeito =\

 

 

edit: msm assim vlw por tentar REP+

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

Testa ae 

 

function onEquip(cid, item, slot)


local timeEffect = 300000
function effect()
if isPlayer(cid) then
local pos = getCreaturePosition(cid)
doSendMagicEffect(pos, 13)
end
end

local rate = {}


if getPlayerLevel(cid) <= 1000 then
rate = 2
elseif getPlayerLevel(cid) > 1001 and getPlayerLevel(cid) <= 2000 then
rate = 2
elseif getPlayerLevel(cid) > 2001 and getPlayerLevel(cid) <= 3000 then
rate = 2
elseif getPlayerLevel(cid) > 3001 and getPlayerLevel(cid) <= 4000 then
rate = 2
elseif getPlayerLevel(cid) > 4001 then
rate = 2
end
a = 1
while a ~= timeEffect do
addEvent(effect, a * 1000)
a = a + 1
end

doTransformItem(item.uid, 10309, 1)
doPlayerSendTextMessage(cid, 22, "Sua experiencia foi multiplicada (2x).")
doPlayerSetExperienceRate(cid, rate)

return TRUE
end


function onDeEquip(cid, item, slot)
doTransformItem(item.uid, 10310, 1)
doPlayerSendTextMessage(cid, 22, "Sua experiencia esta de volta ao normal.")
doPlayerSetExperienceRate(cid, 1.0)
a = 299999
while a ~= timeEffect do
addEvent(effect, a * 1000)
a = a + 1
end
return TRUE
end

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

 

 

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

 

Atenciosamente,

                   Lucas.

Abraços!

Link para o post
Compartilhar em outros sites

Cara se tu der reload em movements ele para... msm para creature script -_- O script funcionou?

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

 

 

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

 

Atenciosamente,

                   Lucas.

Abraços!

Link para o post
Compartilhar em outros sites

@llucas75,

 

deu no mesmo

 

@MaTTch,

sim, tambem pensei nisso, só que nao tenho scripts semelhantes a este em creature script, no caso teria que criar =\

Link para o post
Compartilhar em outros sites

Amigo, após parar e pensar um pouco mais, cheguei à isso:

Substitua seu script do ring por esse:

local storage = 27398
local efeito = 15
local playerpos = getPlayerPosition(pid)

function onEquip(cid, item, slot, fromPosition, toPosition)

doSendMagicEffect(playerpos, efeito)

local rate = {}

if getPlayerLevel(cid) <= 1000 then
rate = 2
elseif getPlayerLevel(cid) > 1001 and getPlayerLevel(cid) <= 2000 then
rate = 2
elseif getPlayerLevel(cid) > 2001 and getPlayerLevel(cid) <= 3000 then
rate = 2
elseif getPlayerLevel(cid) > 3001 and getPlayerLevel(cid) <= 4000 then
rate = 2
elseif getPlayerLevel(cid) > 4001 then
rate = 2
end

setPlayerStorageValue(cid, storage, 1)

doTransformItem(item.uid, 10309, 1)
doPlayerSendTextMessage(cid, 22, "Sua experiencia foi multiplicada (2x).")
doPlayerSetExperienceRate(cid, rate)
return TRUE
end


function onDeEquip(cid, item, slot)

setPlayerStorageValue(cid, storage, -1)

doTransformItem(item.uid, 10310, 1)
doPlayerSendTextMessage(cid, 22, "Sua experiencia esta de volta ao normal.")
doPlayerSetExperienceRate(cid, 1.0)
return TRUE
end

E adiciona essa tag em globalevents.xml:

	<globalevent name="EffectExpRing" interval="1000" event="script" value="effectExpRing.lua"/>

Agora cria um arquivo chamado effectExpRing.lua dentra da pasta data\globalevents\scripts e coloca isso dentro:

local playerpos = getPlayerPosition(pid)
local efeito = 15
local storage = 27398

function onThink(interval, lastExecution)
if getPlayerStorageValue(cid, storage) >= 1 then
doSendMagicEffect(playerpos, efeito)
end
return true
end

Pronto, tenho 90% de ctz que vai funcionar. ^^

Te ajudei?? REP + e ficamos quites... <ahttp://www.tibiaking.com/forum/uploads/emoticons/default_happyy.png' alt=';D'>

Atenciosamente,

Daniel.

Abraços!

Link para o post
Compartilhar em outros sites

Boa Dani... Nem lembrava que dava pra fazer isso rsrsrs...

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

 

 

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

 

Atenciosamente,

                   Lucas.

Abraços!

Link para o post
Compartilhar em outros sites

Dando uma olhada rápida, tenta assim:

Script do ring:

local storage = 27398local efeito = 15local playerpos = getPlayerPosition(cid)function onEquip(cid, item, slot, fromPosition, toPosition)doSendMagicEffect(playerpos, efeito)local rate = {}if getPlayerLevel(cid) <= 1000 thenrate = 2elseif getPlayerLevel(cid) > 1001 and getPlayerLevel(cid) <= 2000 thenrate = 2elseif getPlayerLevel(cid) > 2001 and getPlayerLevel(cid) <= 3000 thenrate = 2elseif getPlayerLevel(cid) > 3001 and getPlayerLevel(cid) <= 4000 thenrate = 2elseif getPlayerLevel(cid) > 4001 thenrate = 2endsetPlayerStorageValue(cid, storage, 1)doTransformItem(item.uid, 10309, 1)doPlayerSendTextMessage(cid, 22, "Sua experiencia foi multiplicada (2x).")doPlayerSetExperienceRate(cid, rate)return TRUEendfunction onDeEquip(cid, item, slot)setPlayerStorageValue(cid, storage, -1)doTransformItem(item.uid, 10310, 1)doPlayerSendTextMessage(cid, 22, "Sua experiencia esta de volta ao normal.")doPlayerSetExperienceRate(cid, 1.0)return TRUEend
E o globalevent:

local playerpos = getPlayerPosition(cid)local efeito = 15local storage = 27398function onThink(interval, lastExecution)if getPlayerStorageValue(cid, storage) >= 1 thendoSendMagicEffect(playerpos, efeito)endreturn trueend
Editado por danihcv (veja o histórico de edições)

Te ajudei?? REP + e ficamos quites... <ahttp://www.tibiaking.com/forum/uploads/emoticons/default_happyy.png' alt=';D'>

Atenciosamente,

Daniel.

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo