[Duvida] GetId não esta retornando o ID

Discussão em 'Dúvidas resolvidas (macro)' iniciado por Xavier___, 7 Dezembro 2021.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. Xavier___

    Xavier___ Neutro

    Afiliado:
    7 Dezembro 2021
    Mensagens:
    8
    Curtidas Recebidas:
    2
    Curtiu:
    5
    Sexo:
    Masculino
    Cubos:
    57.00
    Nick:
    TheKingOfXaviers
    #1 Xavier___, 7 Dezembro 2021
    Última edição: 8 Dezembro 2021
    Boa noite, recentemente eu quis me aprofundar nessa questão de macros para minecraft e começei a estudar a documentação não oficial do KeyBind Mod, e estou a criar meus proprios macros com intenção didatica de aprender melhor como mexer com a ferramenta, mas, nessa aventura, eu acabei me deparando com um erro não explicito

    Que seria justamente com o "getid" e sua variável "getidrel", eu testei ambos pois pretendia fazer uma busca por area, utilizando as coordernadas e o ID do bloco fornecido para futuros macros mas o output que ele esta retornando não esta muito correto eu acredito

    Pois o output dele sempre esta sendo, FALSE, ou, 0

    Olhem mais em baixo é verão o código em questão do qual eu estou usando

    Codigo:

    Ou se preferirem, postei ele no Pastebin para melhor visualização
    Link: Macro GETID

    PS: O macro foi feito e esta rodando para a versão 1.8 do Minecraft
    PSS: Se precisarem posso mandar print do OUTPUT do log()
     
  2. ThiagoSzz

    ThiagoSzz Craftlandiano

    Afiliado:
    17 Agosto 2012
    Mensagens:
    1,623
    Curtidas Recebidas:
    782
    Curtiu:
    1,192
    Sexo:
    Masculino
    Cubos:
    289.00
    Nick:
    ThiagoSzz
    Clan:
    FoF
    Esse script foi feito para qual versão do jogo (1.5/1.8)?
     
  3. Xavier___

    Xavier___ Neutro

    Afiliado:
    7 Dezembro 2021
    Mensagens:
    8
    Curtidas Recebidas:
    2
    Curtiu:
    5
    Sexo:
    Masculino
    Cubos:
    57.00
    Nick:
    TheKingOfXaviers
    Bom dia, desculpe a lentidão da resposta é a má formatação do script, sou novo quando o assunto são fóruns então não sei ainda utilizar muito bem essas ferramentas de formatações de texto XD

    Mas respondendo sua pergunta, a script esta rodando e foi feita para a versão 1.8 do Minecraft.
    Aproveitando, na script esta "getidrel", mas eu usei "getid" também, é o output foi o mesmo, False ou 0

    É sim, as coordenadas especificadas estavam sim com um bloco, não sei se será de relevância, mas, a script estava rondando em um servidor "Rank UP" com um plugin de plots, não sei se o plugin poderia estar interferindo na busca do script ou algo assim

    Isso deve ser uma duvida boba, mas, infelizmente ainda sou iniciante quando os assuntos são macros, então peço que tenham paciência comigo xd

    PS: O uso de macro lá é permitido, com exceções de auto-clickers
     
  4. ThiagoSzz

    ThiagoSzz Craftlandiano

    Afiliado:
    17 Agosto 2012
    Mensagens:
    1,623
    Curtidas Recebidas:
    782
    Curtiu:
    1,192
    Sexo:
    Masculino
    Cubos:
    289.00
    Nick:
    ThiagoSzz
    Clan:
    FoF
    #4 ThiagoSzz, 8 Dezembro 2021
    Última edição: 8 Dezembro 2021
    Entendi.

    Nesse caso, o problema está no formato da saída da ação getid(). Acontece que para a versão 1.8 do jogo, os itens passaram a ser tratados por seus nomes, e não mais pelos IDs. Então, ao invés de coletar o valor do item como uma variável numérica (#), você deve coletar como uma variável string (&). Consequentemente, o valor armazenado nessa variável não será mais o ID do item, e sim o nome do bloco. Sei que isso pode confundir, já que o nome da ação é getID, mas é assim que funciona kk.

    Então, se você deseja coletar o nome do bloco que está na coordenada (1292, 66, 593), você deve usar getid(1292,66,593,&nome);

    Por exemplo, se eu usar o comando getid neste local para as coordenadas (-3577, 74, 321), o resultado deve ser:

    [​IMG]

    Já o getidrel() funciona um pouco diferente. Ao invés de obter o nome do bloco em uma determinada coordenada do mapa, ele coleta o nome do bloco para uma distância em relação a coordenada atual do jogador.

    Então, para obter o nome do bloco que está a X+n blocos de distância do jogador, você deve usar getidrel(n,0,0,&nome);

    Para obter o nome do bloco que está a Y+n blocos de distância do jogador, você deve usar getidrel(0,n,0,&nome);

    Para obter o nome do bloco que está a Z+n blocos de distância do jogador, você deve usar getidrel(0,0,n,&nome);

    Você também pode combinar esses valores X+m, Y+n, Z+o para obter o nome do bloco em qualquer posição relativa ao jogador usando getidrel(m,n,o,&nome);

    Por exemplo, se eu quiser obter o nome do bloco que está Z+1 blocos a minha frente, basta utilizar o comando getidrel(0,0,+1,&nome);

    [​IMG]

    [​IMG]

    Lembrando que o getidrel leva em conta a direção, ou seja, você deve verificar para qual direção cada item da tripla (X, Y, Z) aumenta ou diminui, dependendo de qual bloco você deseja obter o nome, e utilizar "+" ou "-" para indicar isso.
     
    Xavier___ e xLucasBessa curtiram isso.
  5. Xavier___

    Xavier___ Neutro

    Afiliado:
    7 Dezembro 2021
    Mensagens:
    8
    Curtidas Recebidas:
    2
    Curtiu:
    5
    Sexo:
    Masculino
    Cubos:
    57.00
    Nick:
    TheKingOfXaviers
    Wow! Obrigado :D, achei excepcional sua explicação, simples, direta e didática, eu não tinha a menor ideia que a saída GetId tinha sido atualizado

    Agora poderei continuar com meus projetos de macro, sem nenhum obstáculo xD, vlw mesmo!
     
    ThiagoSzz curtiu isso.
  6. CapCamargo

    CapCamargo Craftlandiano
    Administração

    Afiliado:
    26 Outubro 2012
    Mensagens:
    5,571
    Curtidas Recebidas:
    1,000
    Curtiu:
    623
    Sexo:
    Masculino
    Localização:
    /minerar
    Cubos:
    1,205.00
    Nick:
    CapCamargo
    Clan:
    STF

    Que aula
     
    Xavier___ curtiu isso.
  7. Xavier___

    Xavier___ Neutro

    Afiliado:
    7 Dezembro 2021
    Mensagens:
    8
    Curtidas Recebidas:
    2
    Curtiu:
    5
    Sexo:
    Masculino
    Cubos:
    57.00
    Nick:
    TheKingOfXaviers
    xD Olha eu aqui novamente, bom eu fui testar e mudei a variavel que antes estava "#" para "&", de fato funcionou mas ainda não esta retornando corretamente a saida!

    Estou usando esse script para tentar conseguir o nome do bloco:

    Mas esta apenas me retornando air no log, sendo que há um bloco nessa coords especifica

    Tirei uma print da resposta para você entender melhor:
    [​IMG]
    [​IMG]
     
  8. ThiagoSzz

    ThiagoSzz Craftlandiano

    Afiliado:
    17 Agosto 2012
    Mensagens:
    1,623
    Curtidas Recebidas:
    782
    Curtiu:
    1,192
    Sexo:
    Masculino
    Cubos:
    289.00
    Nick:
    ThiagoSzz
    Clan:
    FoF
    Hm...

    1) Tem um erro de digitação aqui. Isso pode estar fazendo com que a variável com o nome do bloco não esteja sendo "atualizada".
    getid(1262,64,589.&idvar); --> deveria ser uma vírgula ao invés do ponto antes de &idvar

    2) Pode ser que você tenha entrado a coordenada errada. Lembrando que se o bloco estiver a sua frente, você terá que somar/subtrair 1 do valor de X ou de Z. Pra ter certeza da coordenada exata do bloco, seria bom você subir encima dele e coletar as coordenadas, e depois subtrair 1 do valor de Y.
    [​IMG]
     
  9. Xavier___

    Xavier___ Neutro

    Afiliado:
    7 Dezembro 2021
    Mensagens:
    8
    Curtidas Recebidas:
    2
    Curtiu:
    5
    Sexo:
    Masculino
    Cubos:
    57.00
    Nick:
    TheKingOfXaviers

    Opa, Boa Tarde, desculpe a lentidão da resposta, ainda não entrei de férias e a escola esta puxada xd, então não estou entrando muito no computador, mas voltando ao assunto em questão, era mesmo devido ao ponto lol, eu sempre confundo com a virgula devido a fonte do minecraft, desculpa ocupar seu tempo por isso xd, mas vlw pelo ajuda! :D
     
Status do Tópico:
Não esta aberto para novas mensagens.