Conectar-se
Quem está conectado
25 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 25 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 19/08/2010
Número de Mensagens : 1299
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 47

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuário

Array 3D não suportado ?

em Sex 29 Nov 2013, 02:46
Eu tentei usa uma array 3d do tipo : variavel[i,a,o] e qndo executei o jogo apareceu um erro de que não era suportado. por quê ? T-T
avatar
Ranking : Nota B
Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Número de Mensagens : 1013
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 79

Prêmios
   : 2
   : 0
   : 0
Ver perfil do usuário

Re: Array 3D não suportado ?

em Sex 29 Nov 2013, 02:58
O GM só suporta arrays bidimensionais mesmo, infelizmente. Tem alguns métodos que encontrei na internet mas achei muito gambiarra, mas caso queira tentar:

http://gmc.yoyogames.com/index.php?showtopic=414085
http://gmc.yoyogames.com/index.php?showtopic=571988
avatar
Data de inscrição : 19/08/2010
Número de Mensagens : 1299
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 47

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuário

Re: Array 3D não suportado ?

em Sex 29 Nov 2013, 03:02
Gambiarra é oq eu vou ter q fazer sem poder usar uma array 3D T-T , mas vlw ai.
avatar
Ranking : Nota B
Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Número de Mensagens : 1013
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 79

Prêmios
   : 2
   : 0
   : 0
Ver perfil do usuário

Re: Array 3D não suportado ?

em Sex 29 Nov 2013, 03:03
O que você está querendo fazer exatamente? Talvez poderia estar usando ds_map ou grid...
avatar
Data de inscrição : 19/08/2010
Número de Mensagens : 1299
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 47

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuário

Re: Array 3D não suportado ?

em Sex 29 Nov 2013, 03:06
tenho o numero jogodador, tenho o monstro do jogador, e a 3º iria ser a habilidade desse monstro do jogador. Só q tem numeros de habs, e talvez eu fosse usar pra outras coisas tb.
avatar
Ranking : Nota B
Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Número de Mensagens : 1013
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 79

Prêmios
   : 2
   : 0
   : 0
Ver perfil do usuário

Re: Array 3D não suportado ?

em Sex 29 Nov 2013, 03:10
Seria isso né?

Código:
variable[player_id,monster_id,skill_id]
E o valor dessa var seria o quê? scratch
avatar
Data de inscrição : 19/08/2010
Número de Mensagens : 1299
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 47

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuário

Re: Array 3D não suportado ?

em Sex 29 Nov 2013, 03:14
sim, seria um script da habilidade.

tipo assim :
habilidade[1,1,1] = scr_tempestade // o slot 1 do monstros 1 do player 1 , é a habilidade tempestade.
habilidade[1,1,2] = scr_terremoto // o slot 2 do monstros 1 do player 1 , é a habilidade terremoto.

e assim vai Happy .
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 121

Prêmios
   : 1
   : 0
   : 3
Ver perfil do usuário

Re: Array 3D não suportado ?

em Sex 29 Nov 2013, 09:44
Cara... Eu já precisei achei que fosse precisar de uma array 3D e o brendan me quebrou um galho de forma sensacional.
O que ele fez foi dividir uma array 1D em 3 (ou foram 9?) partes e, num script rápido com 3 argumentos, transformar a array 1D em uma 3D. Eu não lembro o script, vou dar uma procurada, mas a forma de usar era assim:
Código:
função[array3D(i, j, k)] := valor;
Como é pouco provável que você precise dos... 32000? Bom, dos limites da array, é uma solução quase mágica.

Vou procurar a solução de novo e volto a postar aqui.
Edit: achei! Poxa, fiquei me sentindo um mal-agradecido, agora, por só ter mencionado o Brendan. Teve muita gente genial postando naquele tópico, muitas soluções alternativas. Só que eu gravei a do Brendan por dividir o limite da array em partes iguais. Nem sempre é o que você quer.
avatar
Data de inscrição : 19/08/2010
Número de Mensagens : 1299
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 47

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuário

Re: Array 3D não suportado ?

em Sab 30 Nov 2013, 01:45
Saim, eu li o tópico todo! kkkkk achei interessante, mas, me perdi qndo li isso : "é mais fácil elevar o número na potência da razão inversa pra fazer esse cálculo" KKKKKKKKKKKKKK oq é isso cara ? suponho q o Brendan seja o GameMakerTutorias certo ? então, não entendi nada doq ele falou, mas entendi os dos demais (Jiraya). E como usar esse script ?
avatar
Data de inscrição : 02/10/2009
Número de Mensagens : 2227
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 52

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Array 3D não suportado ?

em Sab 30 Nov 2013, 02:16
Moço, se você for usar banco de dados, qual a real utilidade de uma array desse tamanho? o.õ
avatar
Data de inscrição : 19/08/2010
Número de Mensagens : 1299
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 47

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuário

Re: Array 3D não suportado ?

em Sab 30 Nov 2013, 02:18
n entendi gabreel u.u exemplifique pf hauhsuahs
avatar
Data de inscrição : 02/10/2009
Número de Mensagens : 2227
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 52

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Array 3D não suportado ?

em Sab 30 Nov 2013, 02:48
FlyAway escreveu:n entendi gabreel u.u exemplifique pf hauhsuahs
Imagino que isso seja pro Vosturia, certo?
Se sim, você vai ter que ter um banco dados, e pode (deve) puxar as habilidades de lá.

Se não, você pode fazer um banco de dados pra fazer a mesma coisa que você faria com as arrays, passando os argumentos correspondentes.

avatar
Data de inscrição : 19/08/2010
Número de Mensagens : 1299
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 47

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuário

Re: Array 3D não suportado ?

em Sab 30 Nov 2013, 03:00
ah, tendi, mas n é pro vosturia, esse projeto ja era, meu irmão mudou ele inteiro '-' , nem é mais esse o nome hsuahsuash
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6037
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 288

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Array 3D não suportado ?

em Sab 30 Nov 2013, 08:58
FlyAway escreveu:Saim, eu li o tópico todo! kkkkk achei interessante, mas, me perdi qndo li isso : "é mais fácil elevar o número na potência da razão inversa pra fazer esse cálculo" KKKKKKKKKKKKKK oq é isso cara ? suponho q o Brendan seja o GameMakerTutorias certo ? então, não entendi nada doq ele falou, mas entendi os dos demais (Jiraya). E como usar esse script ?
Elevar o número na potência da razão inversa é o modo nerd de dizer: tirar a raiz quadrada / cúbica / quarta / etc.

No caso, a raiz cúbica de 32000 é 31. Então você pode dizer que cada indice poderia ir de 0 a 30. Ele estava falando sobre o script do Jiraya.

Estou vendo se acho uma solução sem repetições.
avatar
Data de inscrição : 19/08/2010
Número de Mensagens : 1299
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 47

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuário

Re: Array 3D não suportado ?

em Sab 30 Nov 2013, 10:29
Bem, o saim disse q conseguiu, se n , espero a conclusão, vou realmente precisar de uma array 3d =/
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 121

Prêmios
   : 1
   : 0
   : 3
Ver perfil do usuário

Re: Array 3D não suportado ?

em Dom 01 Dez 2013, 23:58
Conseguir, não consegui. Só entendi e concordei com a idéia. Como disse, acabei percebendo que não precisava de muitas dimensões, mas de muitas arrays.

É o seguinte... você quer um valor pra cada combinação de índices da sua array, certo? Bom, e se todas as combinações estivessem numa única array? Te atende? Claro que atende, não seja ranzinza!
O que o script faz é pegar os 3 argumentos e espalhar os valores em posições da array. Você divide a array em pedaços suficientes pra garantir que não vai repetir o índice.
Algo como o primeiro índice ser a primeira casa decimal, o segundo ser a segunda casa decimal e assim por diante. A posição da 3D[1, 5, 9] seria, na 1D, [159]. O script divide igualmente o limite de 32000 elementos da array, sem risco de sobreposição. É, fica um monte de espaço em branco na array, mesmo, mas o computador não se importa. É só não usar esses espaços como se eles estivessem preenchidos.

Eu não lembro como isso foi feito, não vou lembrar agora (talvez, outro dia, mas não acho que vá fazer). Lembro que a solução binária foi a que achei mais da hora, me pareceu mais simples e a divisão ficava melhor. Mas pode ser porque ela se adequava melhor à situação. De cabeça, assim, a potenciação me soa mais lógica.

Enfim, jeito tem. Você tem uma prévia de quantos elementos cada índice pode precisar?
avatar
Data de inscrição : 19/08/2010
Número de Mensagens : 1299
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 47

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuário

Re: Array 3D não suportado ?

em Seg 02 Dez 2013, 21:32
Olha, eu quero apenas arrays 3D do tipo, habilidade[i,a,o]. Eu entendi o script do jiraya, mas dependendo dos valores na array havia possibilidade de sobreposição, um certo conflito no índice. O jeito binário eu n entendi mto, pois n conheço o método. Mas agora me veio uma ideia '-' . eu posso usar algo do tipo habilidade[string(i)+string(a)+string(o)] e juntar esses valores, sim claro q eu n faria essa junção de strings no indice da array, eu guardaria em uma var e ela seria o indice da array, mas é possivel ? se o limite for 32000, então nunca chegará nem perto, pq usarei apenas arrays 3D, onde o primeiro valor varia de 1 a 8, o segundo de 1 a 9 e o terceiro de 1 a 5. Esse metódo é válido pro meu caso ? Happy
avatar
Data de inscrição : 31/08/2010
Número de Mensagens : 630
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 15

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://leninja.com.br

Re: Array 3D não suportado ?

em Seg 02 Dez 2013, 22:49
Eu usei ds_list dentro de ds_list dentro de ds_list, ai criei scripts para manusea-las.

Só não te passo as minhas porque elas estão modificadas pro meu jogo(cerca de 60% do código é personalizado).
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 121

Prêmios
   : 1
   : 0
   : 3
Ver perfil do usuário

Re: Array 3D não suportado ?

em Ter 03 Dez 2013, 11:29
Vamos lá. Eu não tenho certeza se entendi o que você chamou de "primeiro" e "terceiro", então vou tentar o seguinte...
array[a, b, c], onde
"a" varia de 0 a 7,
"b" varia de 0 a 8, e
"c" varia de 0 a 5

Você poderia usar algo assim
array[script(a, b, c)]

O script poderia ser assim:
Código:
var a, b, c;
a := argument0;
b := argument1;
c := argument2;
// o valor máximo de cada argumento será somado de 1, para o cálculo
var max_a, max_b, max_c;
max_a = 8; max_b = 9; max_c = 6; // já somados
return(a + b * max_a + c * max_a * max_b)
Pra verificar que o script não tem chance de retornar valores iguais, você pode criar um objeto-teste com um draw assim:
Código:
var i, j, k, alt;
alt := 20; // um ponto na altura
for(i := 0; i < 8; i += 1){
   for(j := 0; j < 9; j += 1){
      for(k := 0; k < 6; k += 1){
         draw_text(20, alt, "valor[" + string(k) + "," + string(j) + "," + string(i) + "]=" + string(script(k, i, j)));
         alt += 20;
         }
      }
   }
avatar
Data de inscrição : 19/08/2010
Número de Mensagens : 1299
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 47

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuário

Re: Array 3D não suportado ?

em Ter 03 Dez 2013, 14:55
Entendi, vou testar, mas a minha idéia n é valida n ? pq se fosse, n teria como dar nenhum conflito.
Conteúdo patrocinado

Re: Array 3D não suportado ?

Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum