[Duvida] GetId não esta retornando o ID

Bem-vindo!

Ao se registrar conosco, você poderá discutir, compartilhar e enviar mensagens privadas com outros membros da nossa comunidade.

Inscreva-se agora!
Status
Não está aberto para novas respostas.

Xavier___

Neutro
Entrou
Dez 7, 2021
Mensagens
8
Cubos
0
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:

$${
toggle;
if(flag);
wait(200ms);
getidrel(1292,66,593,#idvar);
log(%#idvar%);
else;
stop;
endif;
}$$

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()
 
Última edição:
Esse script foi feito para qual versão do jogo (1.5/1.8)?
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
 
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

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:

yfpmR4m.png


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);

0GwMovE.png


VmrG2is.png


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.
 
Última edição:
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:

yfpmR4m.png


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);

0GwMovE.png


VmrG2is.png


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.

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!
 
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:

yfpmR4m.png


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);

0GwMovE.png


VmrG2is.png


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.


Que aula
 
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:

yfpmR4m.png


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);

0GwMovE.png


VmrG2is.png


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.

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:

$${
toggle;
if(flag);
wait(200ms);
getid(1262,64,589.&idvar);
log(%&idvar%);
else;
stop;
endif;
}$$

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:
a.png

Jk2yH1R
 
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:
a.png

Jk2yH1R

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.
ixfxoXO.png
 
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.
ixfxoXO.png


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
Não está aberto para novas respostas.

Users who are viewing this thread

Voltar
Topo