Jump to content

Recommended Posts

Seria possível um script de exiva onde mostrasse junto a localização do player qual foi o último monstro targetado pelo mesmo? Exemplo : Tibia King is very far to the west.

Last target: Dragon

(pra 8.60) // eu revirei essa internet e nada até agora, caso exista deve estar sendo ofuscado pelos resultados de buscas que em maioria aparece hotckeys de elfbot. Rep+ para quem ajudar. cya

Citar

 

 

 

 

 

Share this post


Link to post
Share on other sites

Então, pra fazer esse rolê de falar o ultimo, vai dar um trabalho meio chato, unico jeito q pense é mexendo na database, mas fiz esse, q fala o target ATUAL, as vezes te serve 😃

 

bota essas 4 linhas no script do exiva, embaixo de     creature:sendTextMessage(MESSAGE_INFO_DESCR, target:getName() .. " " .. message .. ".")

    local ttt = target:getTarget()
    if ttt:getName() then
    creature:sendTextMessage(MESSAGE_INFO_DESCR, "Atualmente ele esta matando um(a) "..ttt:getName() .. ".")
    end

 


MEUS POSTS:

 

SE AJUDEI, DÁ O REP+, ESQUECE NÃO, VLW BB <3

Share this post


Link to post
Share on other sites
5 horas atrás, Mor3nao disse:

Então, pra fazer esse rolê de falar o ultimo, vai dar um trabalho meio chato, unico jeito q pense é mexendo na database, mas fiz esse, q fala o target ATUAL, as vezes te serve 😃

 

bota essas 4 linhas no script do exiva, embaixo de     creature:sendTextMessage(MESSAGE_INFO_DESCR, target:getName() .. " " .. message .. ".")


    local ttt = target:getTarget()
    if ttt:getName() then
    creature:sendTextMessage(MESSAGE_INFO_DESCR, "Atualmente ele esta matando um(a) "..ttt:getName() .. ".")
    end

 

Perdão, mas onde fica esse script do exiva? Eu revirei aqui e não achei ele.

Share this post


Link to post
Share on other sites

spells/script/find_person


MEUS POSTS:

 

SE AJUDEI, DÁ O REP+, ESQUECE NÃO, VLW BB <3

Share this post


Link to post
Share on other sites
6 horas atrás, Mor3nao disse:

Então, pra fazer esse rolê de falar o ultimo, vai dar um trabalho meio chato, unico jeito q pense é mexendo na database, mas fiz esse, q fala o target ATUAL, as vezes te serve 😃

 

bota essas 4 linhas no script do exiva, embaixo de     creature:sendTextMessage(MESSAGE_INFO_DESCR, target:getName() .. " " .. message .. ".")


    local ttt = target:getTarget()
    if ttt:getName() then
    creature:sendTextMessage(MESSAGE_INFO_DESCR, "Atualmente ele esta matando um(a) "..ttt:getName() .. ".")
    end

 

Faz utilizando uma tabela global, inserindo o last monster que o player atacou. No exiva você só pega a informação da tabela global :)

 

image.png.e55cbd27c3d6ae5893e29d2718904e7f.png

Edited by Movie (see edit history)

Share this post


Link to post
Share on other sites
20 minutos atrás, Mor3nao disse:

spells/script/find_person

No meu não há essa pasta, será que deve estar em outro local? Uso tfs 0.4 (8.6)

7 minutos atrás, Movie disse:

Faz utilizando uma tabela global, inserindo o last monster que o player atacou. No exiva você só pega a informação da tabela global :)

 

image.png.e55cbd27c3d6ae5893e29d2718904e7f.png

Eu gostaria bastante de entender o que você disse, pois parece uma solução simples para o meu pedido.

</instant>
    <instant name="Find Person" words="exiva" lvl="8" mana="20" aggressive="0" params="1" exhaustion="1000" needlearn="0" event="function" value="searchPlayer">
        <vocation id="1"/>
        <vocation id="2"/>
        <vocation id="3"/>
        <vocation id="4"/>
        <vocation id="5"/>
        <vocation id="6"/>
        <vocation id="7"/>
        <vocation id="8"/>
    </instant>

 

(única coisa que achei a respeito do exiva, pois não há pasta de script para ele. Porém ele funciona normalmente)

Share this post


Link to post
Share on other sites

Ele está em spells.cpp na source se tiver ela, existe a versão lua feita pelo LukeOake.

Spoiler

function getSearchString(fromPos, toPos, isFromCreature, isToCreature)
    isFromCreature = isFromCreature == nil and false or isFromCreature
    isToCreature = isToCreature == nil and false or isToCreature
    local DISTANCE_CLOSE,DISTANCE_FAR,DISTANCE_VERYFAR = 0,1,2
    local LEVEL_HIGHER,LEVEL_LOWER,LEVEL_SAME = 1,-1,0
    local DIR_N,DIR_S,DIR_E,DIR_W,DIR_NE,DIR_NW,DIR_SE,DIR_SW = 0,1,2,3,4,5,6,7,8
    local distance
    local direction
    local level
    local dx,dy,dz = fromPos.x - toPos.x,fromPos.y - toPos.y,fromPos.z - toPos.z
    
    if dz > 0 then
        level = LEVEL_HIGHER
    elseif dz < 0 then
        level = LEVEL_LOWER
    else
        level = LEVEL_SAME
    end
    
    if math.abs(dx) < 5 and math.abs(dy) < 5 then
        distance = DISTANCE_BESIDE
    else
        tmp = dx * dx + dy * dy
        if tmp < 10000 then
            distance = DISTANCE_CLOSE
        elseif tmp < 75625 then
            distance = DISTANCE_FAR
        else
            distance = DISTANCE_VERYFAR
        end
    end
    
    local tangent
    
    if dx ~= 0 then
        tangent = dy / dx
    else
        tangent = 10.
    end
    
    if math.abs(tangent) < 0.4142 then
        if dx > 0 then
            direction = DIR_W
        else
            direction = DIR_E
        end
    elseif math.abs(tangent) < 2.4142 then
        if tangent > 0 then
            if dy > 0 then
                direction = DIR_NW
            else
                direction = DIR_SE
            end
        else
            if dx > 0 then
                direction = DIR_SW
            else
                direction = DIR_NE
            end
        end
    else
        if dy > 0 then
            direction = DIR_N
        else
            direction = DIR_S
        end
    end
    
    local ss = ""
    
    if distance == DISTANCE_BESIDE then
        if level == LEVEL_SAME then
            ss = ss.."is "
            if toIsCreature then
                ss = ss.."standing "
            end
            
            ss = ss.."next to you"
        elseif level == LEVEL_HIGHER then
            ss = ss.."is above "
            if fromIsCreature then
                ss = ss.."you"
            end
        elseif level == LEVEL_LOWER then
            ss = ss.."is below "
            if fromIsCreature then
                ss = ss.."you"
            end
        end
    elseif distance == DISTANCE_CLOSE then
        if level == LEVEL_SAME then
            ss = ss.."is to the"
        elseif level == LEVEL_HIGHER then
            ss = ss.."is on a higher level to the "
        elseif level == LEVEL_LOWER then
            ss = ss.."is on a lower level to the "
        end
    elseif distance == DISTANCE_FAR then
        ss = ss.."is far to the"
    elseif distance == DISTANCE_VERYFAR then
        ss = ss.."is very far to the"
    end
    
    if distance ~= DISTANCE_BESIDE then
        ss = ss.." "
        if direction == DIR_N then
            ss = ss.."north"
        elseif direction == DIR_S then
            ss = ss.."south"
        elseif direction == DIR_E then
            ss = ss.."east"
        elseif direction == DIR_W then
            ss = ss.."west"
        elseif direction == DIR_NE then
            ss = ss.."north-east"
        elseif direction == DIR_NW then
            ss = ss.."north-west"
        elseif direction == DIR_SE then
            ss = ss.."south-east"
        elseif direction == DIR_SW then
            ss = ss.."south-west"
        end
    end
    
    return ss
end
 
function useExiva(cid, pid)
    return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, getCreatureName(pid)..getSearchString(getCreaturePosition(cid), getCreaturePosition(pid), true, true))
end

 

 


Naze#3578

 

<!-- Pirataria é crime, original é roubo, compartilhar é legal. -->

 

tumblr_muk78tEwDQ1qah4nko1_500.gif

Share this post


Link to post
Share on other sites
1 hora atrás, Naze disse:

Ele está em spells.cpp na source se tiver ela, existe a versão lua feita pelo LukeOake.

  Ocultar conteúdo


function getSearchString(fromPos, toPos, isFromCreature, isToCreature)
    isFromCreature = isFromCreature == nil and false or isFromCreature
    isToCreature = isToCreature == nil and false or isToCreature
    local DISTANCE_CLOSE,DISTANCE_FAR,DISTANCE_VERYFAR = 0,1,2
    local LEVEL_HIGHER,LEVEL_LOWER,LEVEL_SAME = 1,-1,0
    local DIR_N,DIR_S,DIR_E,DIR_W,DIR_NE,DIR_NW,DIR_SE,DIR_SW = 0,1,2,3,4,5,6,7,8
    local distance
    local direction
    local level
    local dx,dy,dz = fromPos.x - toPos.x,fromPos.y - toPos.y,fromPos.z - toPos.z
    
    if dz > 0 then
        level = LEVEL_HIGHER
    elseif dz < 0 then
        level = LEVEL_LOWER
    else
        level = LEVEL_SAME
    end
    
    if math.abs(dx) < 5 and math.abs(dy) < 5 then
        distance = DISTANCE_BESIDE
    else
        tmp = dx * dx + dy * dy
        if tmp < 10000 then
            distance = DISTANCE_CLOSE
        elseif tmp < 75625 then
            distance = DISTANCE_FAR
        else
            distance = DISTANCE_VERYFAR
        end
    end
    
    local tangent
    
    if dx ~= 0 then
        tangent = dy / dx
    else
        tangent = 10.
    end
    
    if math.abs(tangent) < 0.4142 then
        if dx > 0 then
            direction = DIR_W
        else
            direction = DIR_E
        end
    elseif math.abs(tangent) < 2.4142 then
        if tangent > 0 then
            if dy > 0 then
                direction = DIR_NW
            else
                direction = DIR_SE
            end
        else
            if dx > 0 then
                direction = DIR_SW
            else
                direction = DIR_NE
            end
        end
    else
        if dy > 0 then
            direction = DIR_N
        else
            direction = DIR_S
        end
    end
    
    local ss = ""
    
    if distance == DISTANCE_BESIDE then
        if level == LEVEL_SAME then
            ss = ss.."is "
            if toIsCreature then
                ss = ss.."standing "
            end
            
            ss = ss.."next to you"
        elseif level == LEVEL_HIGHER then
            ss = ss.."is above "
            if fromIsCreature then
                ss = ss.."you"
            end
        elseif level == LEVEL_LOWER then
            ss = ss.."is below "
            if fromIsCreature then
                ss = ss.."you"
            end
        end
    elseif distance == DISTANCE_CLOSE then
        if level == LEVEL_SAME then
            ss = ss.."is to the"
        elseif level == LEVEL_HIGHER then
            ss = ss.."is on a higher level to the "
        elseif level == LEVEL_LOWER then
            ss = ss.."is on a lower level to the "
        end
    elseif distance == DISTANCE_FAR then
        ss = ss.."is far to the"
    elseif distance == DISTANCE_VERYFAR then
        ss = ss.."is very far to the"
    end
    
    if distance ~= DISTANCE_BESIDE then
        ss = ss.." "
        if direction == DIR_N then
            ss = ss.."north"
        elseif direction == DIR_S then
            ss = ss.."south"
        elseif direction == DIR_E then
            ss = ss.."east"
        elseif direction == DIR_W then
            ss = ss.."west"
        elseif direction == DIR_NE then
            ss = ss.."north-east"
        elseif direction == DIR_NW then
            ss = ss.."north-west"
        elseif direction == DIR_SE then
            ss = ss.."south-east"
        elseif direction == DIR_SW then
            ss = ss.."south-west"
        end
    end
    
    return ss
end
 
function useExiva(cid, pid)
    return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, getCreatureName(pid)..getSearchString(getCreaturePosition(cid), getCreaturePosition(pid), true, true))
end

 

está dando erro na distro, diz assim ''Event on CastSpell not found <data/spells/scripts/support/find_person.lua

 

Share this post


Link to post
Share on other sites

O que passei é apenas a função, para usa-la no spells teria q ser de outra forma, ai você poderia usar o que mor3nao falou. Da forma que você tem atual o que você quer que seja feito se não usar tfs 1.3, seria apenas na forma que movie falou, pela sources, então talvez não é um trabalho que qualquer um vai fazer de graça, acho que vou adicionar no meu servidor isso, ai posto aqui mas tenho muito trabalho antes disso então pode tentar por conta, as informações que precisa ja tem.


Naze#3578

 

<!-- Pirataria é crime, original é roubo, compartilhar é legal. -->

 

tumblr_muk78tEwDQ1qah4nko1_500.gif

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By Doidodepeda
      Galera pra funfar o castle 48 hrs tem q adicionar alguma query no mysql ou sqlite ?
      Me informa ae pf !
       
      se sim... alguem poderia dispoibilizar !?
       
    • By Thensus Warrior
      Galera, tentei de toda forma colocar cooldown nessa spell e não consegui, em spells mais comuns sem addevent consegui.
      Se alguém puder adicionar um cooldown nela pra mim ficaria muito grato!
      @edit
      só depois de ter postado percebi que cliquei na área errada, desculpe o erro.
    • By Lisbeky
      .Qual servidor ou website você utiliza como base? 
      0.36
       
      Boa noite pessoal!
       
      Então, mais uma vez venho pedir ajuda... pesquisei bastante aqui no fórum e encontrei um script, testei e não deu certo, mas estarei postando aqui para quem sabe alguém solucionar o problema.
       
      o script ele faz um monstro X ao chegar aos 50% de life , ele se transforma em outro monstro Y, mas também queria ele dando storage para todos os players que atacarem ele...
       
      o que esta errado? 
      então não da erro na distro, nem quando ligo o servidor e nem quando mato o boss. mas o problema esta quando chega na metade da vida do primeiro boss, ele não aparece o outro, logo, não esta dando a storage também.
       
      obs: já pedi um suporte de um script que os playrs matam o boss e recebem a storage, esta corretíssimo funcionando, mas esse aqui é diferente, então atenção, não estou pedindo a mesma coisa :D
       
      então o script esta assim...
       
       function onStatsChange(cid, attacker, type, combat, value) local storage = 47000 local stor = 354867 -- n mexa local monster = "Phanta" -- Monstro que irá atingir o 50% e sumir local monstro = "Demo" -- Monstro que irá ser invocado local msg = "Enough playing. I am the Divinity of this house." -- Mensagem quando o monstro for sumir if not isMonster(cid) then return true end if type == STATSCHANGE_HEALTHLOSS and getCreatureName(cid):lower() == monster:lower() then local monsterPercent = 100/(getCreatureMaxHealth(cid)/getCreatureHealth(cid)) if monsterPercent <= 50 and monsterPercent >= 49 then if getGlobalStorageValue(stor) - os.time() <= 0 then doCreatureSay(cid, msg, 1) setGlobalStorageValue(stor, os.time() + 120) addEvent(doCreateMonster, 1000, monstro, getCreaturePosition(cid)) addEvent(doRemoveCreature, 1000, cid) for _, check in pairs(deathList) do if isPlayer(check) then setPlayerStorageValue(check, storage, 5) end end end end end return true end  
       
       
    • By Doidodepeda
      Entao galera, tenho esse script de top level que fica aparecendo na tela do player.
      queria saber se alguem pode modificar pra aparacer os resetes no lugar do level.
       
      Script:

      function onThink(interval, lastExecution)
          local max, query = 5, db.getResult("SELECT `name`, `level` FROM `players` WHERE `id` > 6 AND `group_id` < 2 ORDER BY `level` DESC, `name` ASC;")
          local str = "TOP Rank Level do Server:\n"
          if (query:getID() ~= -1) then 
              k = 1 
              while true do
                  str = str .. "\n " .. k .. " - "..query:getDataString("name").." - ["..query:getDataInt("level").."]"
                  k = k + 1
                  if not(query:next()) or k > max then
                      break 
                  end 
              end 
              query:free()
          end
          doBroadcastMessage(str, 22)
          return true
      end
       
       
       
      Sistema de resete que uso:
       
       
    • By Senju uchira
      ola gostaria de tira uma duvida e fazer um pedido ao mesmo tempo-se possivel;
      e possivel o sumon x usa a spell com um comando, exemplo ; eu faço ele usa a spell com o comando X etals. como faço
       
  • Recently Browsing   0 members

    No registered users viewing this page.


Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia começando do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer fazer um plano publicitário para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução!

Tibia King Recomenda

DokeHost - Soluções em Hospedagem

VPS Windows
VPS Linux
Servidor VPS
×
×
  • Create New...