• TibiaFace

    Tibiaface | Una comunidad Open Tibia donde encontras : mapas, scripts, Otserver, npc y amigos etc ...

    .
    demo menumenu

    Afiliados



    Votar:

    [Talkactions] Pedido de auras

    Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje (Página 1 de 1.)

    1Resuelto [Talkactions] Pedido de auras el Miér Jun 14, 2017 11:02 pm

    Hola amigos de tibiaface.

    Tengo un problema y es que al crear una segunda aura no me sale.

    Me explico : por ejemplo he creado una aura que se obtenga mediante quest o ítem . Para activar la aura dices "!aura1 on" y para apagarla es "!aura1 off".

    Cree otra aura donde se activa diciendo "!aura2 on" y "aura2 off"

    Bueno la aura1  es un efecto de vis que gira alrededor y la aura2 es un efecto de fuego que gira a tu alrededor pero al momento de introducir el aura2 en el server. El aura1 se convierte de fuego. No se por que razón.  Lo que quiero es que me enseñen a como modificar para que no pase esto porfavor jaja.

    Este es el código de la aura1:
    Código:
    -- CONFIGURAÇÕES
     aurastr = 25950 -- storage da aura
     estr = 25951 -- storage para o exhaust
     porcentagem = 20 -- chance de curar em cada volta da aura, em porcentagem
     quantheal = 40 -- 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 = 4 -- número do efeito da aura (efeito de distância, pode ser identificado com /x no jogo)
     efeitocura = 11 -- 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[i].x, y=posaura[i].y, z=posaura[i].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[i].x, y=posaura[i].y, z=posaura[i].z}, {x=posaura[1].x, y=posaura[1].y, z=posaura[1].z}, tipoaura)
     elseif(i<8) then
     doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].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(getPlayerStorageValue(cid, 44782) > 0) then
     if(param=="on") then
     if getPlayerStorageValue(cid, estr) > os.time() then
     doPlayerSendCancel(cid, "Espere "..(getPlayerStorageValue(cid, estr) - os.time()).." segundos para poder utilizar tu aura nuevamente.")
     else
     if(getPlayerStorageValue(cid, aurastr)==2) then
     doPlayerSendCancel(cid,"Tu aura esta activada.")
     elseif(getPlayerStorageValue(cid, aurastr)==-1) then
     doPlayerSendCancel(cid,"Aura Activada!")
     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 Retirada!")
     end
     else
     doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Di '!aura1 on' para activar su aura, y '!aura1 off' para retirarla.")
        end
      doPlayerSendCancel(cid, 'You dont have this talkaction')
        end
        return true
    end

    Y esta es la aura2:
    Código:
    -- CONFIGURAÇÕES
     aurasstr = 25921 -- storage da aura
     estr = 25922 -- storage para o exhaust
     porcentagem = 80 -- chance de curar em cada volta da aura, em porcentagem
     quantheal = 40 -- 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 = 3 -- número do efeito da aura (efeito de distância, pode ser identificado com /x no jogo)
     efeitocura = 11 -- 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[i].x, y=posaura[i].y, z=posaura[i].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[i].x, y=posaura[i].y, z=posaura[i].z}, {x=posaura[1].x, y=posaura[1].y, z=posaura[1].z}, tipoaura)
     elseif(i<8) then
     doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, {x=posaura[i+1].x, y=posaura[i+1].y, z=posaura[i+1].z}, tipoaura)
     end
     if(i<=8 and getPlayerStorageValue(cid, aurasstr)==2) then
     i = i+1
     tm = tempo/8
     return addEvent(efeitosAura,tm,i,tm,cid)
     elseif(i>8 and getPlayerStorageValue(cid, aurasstr)==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(getPlayerStorageValue(cid,  78262) > 0) then
     if(param=="on") then
     if getPlayerStorageValue(cid, estr) > os.time() then
     doPlayerSendCancel(cid, "Espere "..(getPlayerStorageValue(cid, estr) - os.time()).." segundos para poder utilizar tu aura nuevamente.")
     else
     if(getPlayerStorageValue(cid, aurasstr)==2) then
     doPlayerSendCancel(cid,"Tu aura esta activada.")
     elseif(getPlayerStorageValue(cid, aurasstr)==-1) then
     doPlayerSendCancel(cid,"Aura Activada!")
     setPlayerStorageValue(cid, aurasstr, 2)
     efeitosAura(1,tempo/8,cid)
     end
     end
     elseif(param=="off") then
     if(getPlayerStorageValue(cid, aurasstr)==2) then
     setPlayerStorageValue(cid, estr, os.time()+2)
     setPlayerStorageValue(cid, aurasstr, -1)
     doPlayerSendCancel(cid,"Aura Retirada!")
     end
     else
     doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Di '!aura2 on' para activar su aura, y '!aura2 off' para retirarla.")
        end
      doPlayerSendCancel(cid, 'You dont have this talkaction')
        end
        return true
    end


    Como ven tienen diferentes storages pero aun asi sigue el problema

    Solo quiero que me enseñen a como modificar para crear mas auras porfavor :v

    Ver perfil de usuario

    2Resuelto Re: [Talkactions] Pedido de auras el Jue Jun 15, 2017 4:42 am

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    es por esto tu estas usando una misma funciona la cual se esta confundiendo

    Código:

    function efeitosAura(i,tm,cid)

    a esa aura le cambia el nombre por

    Código:
    function efeitosAura2(i,tm,cid)

    ojo que tambien el ejecutado hay cambiar el nombre

    donde encuentres en tu scripts

    Código:
    efeitosAura

    le pones un 2 por delante asi

    Código:
    efeitosAura2

    y listo asi no se confundira las funciones



    Ver perfil de usuario http://www.tibiaface.com

    3Resuelto Re: [Talkactions] Pedido de auras el Jue Jun 15, 2017 10:35 pm

    MUCHAS GRACIAS ADMIN GOD MAYA!!!.

    Ver perfil de usuario

    4Resuelto Re: [Talkactions] Pedido de auras el Vie Jun 16, 2017 12:46 am

    Admin god maya, el problema persiste D:
    Código:
    -- CONFIGURAÇÕES
       aurasstr = 25921 -- storage da aura
       estr = 25922 -- storage para o exhaust
       porcentagem = 80 -- chance de curar em cada volta da aura, em porcentagem
       quantheal = 40 -- 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 = 3 -- número do efeito da aura (efeito de distância, pode ser identificado com /x no jogo)
       efeitocura = 11 -- 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 efeitosAura2(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[i].x, y=posaura[i].y, z=posaura[i].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[i].x, y=posaura[i].y, z=posaura[i].z}, {x=posaura[1].x, y=posaura[1].y, z=posaura[1].z}, tipoaura)
          elseif(i<8) then
             doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, {x=posaura[i+1].x, y=posaura[i+1].y, z=posaura[i+1].z}, tipoaura)
          end
          if(i<=8 and getPlayerStorageValue(cid, aurasstr)==2) then
             i = i+1
             tm = tempo/8
             return addEvent(efeitosAura2,tm,i,tm,cid)
          elseif(i>8 and getPlayerStorageValue(cid, aurasstr)==2) then
             return efeitosAura2(1,0,cid)
          else
             return TRUE
          end
       else
          return TRUE
       end
    end

    -- Função principal
    function onSay(cid, words, param, channel)
       if(getPlayerStorageValue(cid,  78262) > 0) then
     if(param=="on") then
     if getPlayerStorageValue(cid, estr) > os.time() then
     doPlayerSendCancel(cid, "Espere "..(getPlayerStorageValue(cid, estr) - os.time()).." segundos para poder utilizar tu aura nuevamente.")
     else
     if(getPlayerStorageValue(cid, aurasstr)==2) then
     doPlayerSendCancel(cid,"Tu aura esta activada.")
     elseif(getPlayerStorageValue(cid, aurasstr)==-1) then
     doPlayerSendCancel(cid,"Aura Activada!")
     setPlayerStorageValue(cid, aurasstr, 2)
     efeitosAura2(1,tempo/8,cid)
     end
     end
     elseif(param=="off") then
     if(getPlayerStorageValue(cid, aurasstr)==2) then
     setPlayerStorageValue(cid, estr, os.time()+2)
     setPlayerStorageValue(cid, aurasstr, -1)
     doPlayerSendCancel(cid,"Aura Retirada!")
     end
     else
     doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Di '!aura2 on' para activar su aura, y '!aura2 off' para retirarla.")
        end
      doPlayerSendCancel(cid, 'You dont have this talkaction')
        end
        return true
    end




    Sera por el comando que es parecido ?
    <talkaction words="!aura1" event="script" value="aura/aura.lua"/>
    <talkaction words="!aura2" event="script" value="aura/aura2.lua"/>

    Ver perfil de usuario

    5Resuelto Re: [Talkactions] Pedido de auras el Vie Jun 16, 2017 1:15 am

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    en tu funcion hay dos lugares que tiene

    Código:
    tipoaura

    y eso esta relacionado al efecto del aura ahi tendras que cambairle a los dos por

    Código:
    tipoaura2

    igualmente al local

    Código:
    tipoaura

    por

    Código:
    tipoaura2



    Ver perfil de usuario http://www.tibiaface.com

    6Resuelto Re: [Talkactions] Pedido de auras el Vie Jun 16, 2017 2:13 am

    LISTO MUCHAS GRACIAS ADMIN GOD MAYA, ya me sirvió!

    Ver perfil de usuario

    Contenido patrocinado


    Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje (Página 1 de 1.)

    Permisos de este foro:
    No puedes responder a temas en este foro.

     

    BienvenidosTibiaFace es una comunidad de Open Tibia. Para participar debes estar registrado (click para Regístrate).