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 é get
ID, 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:
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);
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.
Clique para expandir...