Jump to content
×
×
  • Create New...

[OTC] onHover, Mostrar descrição do item ao passar o mouse em cima


Recommended Posts

Sem-t-tulo.png

Essa modificação permite que ao passar o mouse sobre um item, apareça uma descrição do item. Não tem como causar lag no servidor nem no cliente, pois carrega as informações dentro do arquivo na TAG itemsList

 

Vai em otclient/modules/game_interface/widgets e abra o arquivo uiitem.lua

Procure por 

function UIItem:onHoverChange(hovered)
  UIWidget.onHoverChange(self, hovered)

 

Salte uma linha e coloque o código abaixo

Spoiler

  local item = self:getItem()
  if item and not self:getTooltip() then
    local itemsList = {
        [3577] = {name = "Meat", raridade = Normal},
        [3270] = {name = "Porrete", raridade = 10, attack = 20, defense = 0},
    }
    local data = itemsList[item:getId()]
    if data then
        local description = 'This is ' .. item:getCount() .. 'x ' .. data.name .. ', Raridade ' .. data.raridade
        if data.attack then
            description = description .. ' Attack: ' .. data.attack .. '.'
        end
        if data.defense then
            description = description .. ' Defense: ' .. data.defense .. '.'
        end
        self:setTooltip('Description: ' .. description)
    else
        self:setTooltip('No description')
    end
  end

 

Link to post
Share on other sites

Vc poderia fazer algo diferente, ao invés de passar 'No description' no else poderia ser o item:getName() esse 'No description' em tudo e feio.

Edited by nociam
Link to post
Share on other sites
36 minutos atrás, nociam disse:

Vc poderia fazer algo diferente, ao invés de passar 'No description' no else poderia ser o item:getName() esse 'No description' em tudo e feio.

Não funciona assim amigo. Pra pegar o nome do item, tem só um jeito, modificando a source pra mandar opcode. Eu ja testei isso, da muito lag e sobrecarrega o servidor, da pra nuckar o servidor só passando o mouse em cima do item sem parar... Ou a própria pessoa pode pegar o número do OPCODE e editar o otclient pra por em alguma função infinita para nuckar o servidor.

 

Esse itemGetName funciona melhor dessa maneira, pegando os itens manualmente.

Por padrão o TFS só manda o ID do item, não manda o nome pro cliente.

 

  local item = self:getItem()
  if item and not self:getTooltip() then
    self:setTooltip('Description. ID: ' .. item:getId())
  end

 

Link to post
Share on other sites
2 horas atrás, Jedediasisme disse:

@FlamesAdmin Voce ta pondo server id ou cliente id? Tem 2 tipos de ID, o ID da sprite no Objectbuilder e o ID do item no ItemEditor...

E qual devo colocar?

 


/game_interface/widgets/uiitem.lua:64: attempt to concatenate field 'raridade' (a nil value)
stack traceback:
    [C]: ?
    /game_interface/widgets/uiitem.lua:64: in function </game_interface/widgets/uiitem.lua:53>
ERROR: protected lua call failed: LUA ERROR:
/game_interface/widgets/uiitem.lua:64: attempt to concatenate field 'raridade' (a nil value)
stack traceback:
    [C]: ?
    /game_interface/widgets/uiitem.lua:64: in function </game_interface/widgets/uiitem.lua:53>
ERROR: protected lua call failed: LUA ERROR:
/game_interface/widgets/uiitem.lua:64: attempt to concatenate field 'raridade' (a nil value)
stack traceback:
    [C]: ?
    /game_interface/widgets/uiitem.lua:64: in function </game_interface/widgets/uiitem.lua:53>
ERROR: protected lua call failed: LUA ERROR:
/game_interface/widgets/uiitem.lua:64: attempt to concatenate field 'raridade' (a nil value)
stack traceback:
    [C]: ?
    /game_interface/widgets/uiitem.lua:64: in function </game_interface/widgets/uiitem.lua:53>
ERROR: protected lua call failed: LUA ERROR:
/game_interface/widgets/uiitem.lua:64: attempt to concatenate field 'raridade' (a nil value)
stack traceback:
    [C]: ?
    /game_interface/widgets/uiitem.lua:64: in function </game_interface/widgets/uiitem.lua:53>
ERROR: protected lua call failed: LUA ERROR:
/game_interface/widgets/uiitem.lua:64: attempt to concatenate field 'raridade' (a nil value)
stack traceback:
    [C]: ?
    /game_interface/widgets/uiitem.lua:64: in function </game_interface/widgets/uiitem.lua:53

 

Edited by FlamesAdmin
Link to post
Share on other sites

 

@FlamesAdmin voce tem que usar o Server ID (aquele usado no ItemEditor)

Você deve ter feito algo errado ai cara, funcionou de boa aqui.

 

Baixa o meu uiitem.lua e substitui o seu

https://www.mediafire.com/file/6z9isgsfvjcjjd3/uiitem.lua/file

 

Se não conseguir fazer uma coisa simples dessa funcionar, você não tem inteligência...

 

Cola o seu uiitem.lua aqui se quiser pra eu ver o que você errou...

Edited by Jedediasisme
Link to post
Share on other sites
13 minutos atrás, Jedediasisme disse:

você não tem inteligência

e precisa esculachar no bagulho? A pergunta que fiz não pode só ser dúvida minha mas tbm de outros membros já que no tópico não tem a explicação de qual ID deve colocar

Link to post
Share on other sites

Antes de editar essas coisas avançadas, tem que saber pelo menos o básico.

 

E eu acho ainda que não precisa ter 1 cerebro pra saber que só precisa editar isso

        [3577] = {name = "Meat", raridade = Normal},
        [3270] = {name = "Porrete", raridade = 10, attack = 20, defense = 0},

Link to post
Share on other sites
21 horas atrás, Jedediasisme disse:

ão funciona assim amigo. Pra pegar o nome do item, tem só um jeito, modificando a source pra mandar opcode. Eu ja testei isso, da muito lag e sobrecarrega o servidor, da pra nuckar o servidor só passando o mouse em cima do item sem parar... Ou a própria pessoa pode pegar o número do OPCODE e editar o otclient pra por em alguma função infinita para nuckar o servidor.

 

Não concordo que derruba o servidor, o que pode acontecer e o próprio jogar foder seu próprio cliente, ou então me mostre como derrubou o serve.

 

g_lua.bindClassMemberFunction<Item>("getName", &Item::getName);

Link to post
Share on other sites

Quer retornar o getName e o id do servidor do item é simples e pratico.

 

 Na pasta do seu otClient/data/ crie uma pasta chamada items e coloque o seus arquivos items.otb e items.xml.

 Vai até a pasta do seu otClient/modules/game_things abre o arquivo things.lua e procure a função load() e coloque o seguinte:

g_things.loadOtb ('/items/items.otb')
g_things.loadXml('/items/items.xml')

 

Link to post
Share on other sites

@Gengo ja testei assim tb, da uma lagadinha em alguns pcs quando abre o cliente, se ele carregar os items.

 

Porém é uma alternativa funcional, ao contrário do que disse o amigo acima, que somente traduziu palavra pra inglês querendo achar defeito onde não tem...

Edited by Jedediasisme
Link to post
Share on other sites
Em 24/07/2019 em 00:56, Jedediasisme disse:

 

 

Porém é uma alternativa funcional, ao contrário do que disse o amigo acima, que somente traduziu palavra pra inglês querendo achar defeito onde não tem...

A sua arrogância me enoja, ninguém pôs defeito no seu sistema e se realmente é seu sistema não perderei meu tempo com um arrogante que provavelmente e outro que sabe pouco e diminui os outros pelo pouco que sabe, nesses 6,7 anos +- de xtibia aprendendo, errando e muitas duvidas nunca vi alguém tão arrogante e olha que já passou muitos caras foda aqui.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.


    Administrador |  Diretor |  Coordenador |  Moderador |  Suporter |  Estagiário |  Herói
  • Similar Content

    • By StardewMon
      Base Pokemasterx, estou editando para um novo projeto, espero que gostem!


    • By helviio
      Olá estou convertendo um tema que ganhei do OtcV8 pra OTC ... porém estou tendo um trabalho enorme pra achar essa parte ... 
      sei que é na pasta styles e tal ... porém ja deixei tudo igual nas pastas window/miniwindow/minimap ... 
       
      se alguém puder me dar essa luz ficaria agradecido  

    • By samueldev
      Eai galera do Xtibia hoje eu trago um module que desenvolvi para notificar o player caso ele esteja com o cliente desatualizado.
      Esse tutorial é para TFS 1.x, da pra usar em TFS 0.x mas terá que adaptar o código e ter OPCODES na sua source!

      Como instalar o module:
       
      1 - Pegue a pasta do module e coloque na pasta mods do seu client.
      no arquivo module.lua você vai encontrar a seguinte linha: 
       local VERSION = "1.0" nessa linha você define a versão atual do seu client, a cada novo client você modifica esse valor!

      2 - Vá até a pasta creaturescripts/scripts do seu servidor e crie uma novo script chamado clientVersion.lua

      dentro desse script, cole o seguinte código:

       
       
      Em
      local VERSION = "1.0" você define a mesma versão que colocou no client, sempre que atualizar o client, deve alterar a variável VERSION desse script acima, do mesmo modo que altera no module do client.
      Em local MESSAGE = "..." você pode alterar a mensagem que será enviada ao player caso ele esteja com um cliente desatualizado.
       
      3 - Em creaturescripts/creaturescripts.xml adicione a seguinte linha:
       
      <event type="extendedopcode" name="ClientVersion" script="clientVersion.lua" />  
      4 - Agora no arquivo creaturescripts/login.lua registre esse evento antes de return true
       
      player:registerEvent("ClientVersion")  
      Pronto, o module foi instalado!
      Print:
       


      Download
       
    • By Mizakinha
      Alguém me ajuda pelo amor de Deus.
       
      Depois de infinitas tentativas eu finalmente consegui compilar as sources do SERVIDOR, substitui o arquivo .exe que gerou e coloquei na pasta do server, liguei o server e tudo funcionou perfeitamente, mas quando eu entro no servidor o client tá todo bugado.
       
      Alguém sabe o que pode ser?
       
      Eu compilei as sources do servidor não a do client, não mexi nada no client. 
       
      To usando como base o Pokemon HuatsonOT V2.0 (DXP).

    • By XxVinePeccixX
      Olá você tibiano das antigas ou um tibiano nutella (jogador novo), estamos recrutando todos!
       
      Quer relembrar os bons momentos desse game, no melhor estilo Retro PVP Hardcore?
       
      Então eu te faço uma proposta, venha jogar no servidor Baiak Gaming!
       
      Estamos a quase 6 meses online e essa vai ser a grande reabertura, em 1 dia apenas, foram quase 100 contas criadas.
       
      Site: https://baiakgaming.online/
      Página do Facebook: 
      https://www.facebook.com/BaiakGaming
      Suporte Via Whats 24h: (51) 9 9476-0948
       
      Quer ganhar seus pontos e items vip de forma gratuita? Basta ser um streamer (Youtube ou Twitch) e divulgar o servidor, nos mande uma proposta pelo Whats.