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

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Ranking : Nota C
Notas recebidas : D-B
Data de inscrição : 08/08/2010
Número de Mensagens : 70
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://www.lzstargames.blogspot.com

[Resolvido]Problemas com irandom

em Ter 23 Jul 2013, 12:50
Olá, estou com um problema na função irandom(x)
eu queria criar um ID unico para o jogador, esse ID seria entre 0 e 4294967296 (que é 65536 x 65536), mas toda vez que o ID é gerado seu valor sempre é 0
Tentei dividir o ID em duas partes, cada uma de irandom(65536) e multiplicá-las, mas também sempre dá 0...
Há alguma outra função que possa criar esse ID aleatório? Ou há algum limite para a função irandom(x)?
Aguardo respostas xD
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 28/06/2012
Número de Mensagens : 253
Insígnias de JAM :

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

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

Re: [Resolvido]Problemas com irandom

em Ter 23 Jul 2013, 13:06
Bem... Isso não faz sentido pale 
Mas posta o seu código inteiro, talvez o problema não seja esse...
avatar
Ranking : Nota C
Notas recebidas : D-B
Data de inscrição : 08/08/2010
Número de Mensagens : 70
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://www.lzstargames.blogspot.com

Re: [Resolvido]Problemas com irandom

em Ter 23 Jul 2013, 13:10
Primeiro eu tentei: global.PID=irandom(4294967296), e sempre dava 0
Depois eu tentei: global.PID=irandom(65535)*irandom(65535), mas também só dava 0
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: [Resolvido]Problemas com irandom

em Ter 23 Jul 2013, 13:29
Eu testei irandom(65535)*irandom(65535) e funcionou, mas o irandom tem limite msm. Olha ai o teste : https://www.dropbox.com/s/ese3hykbaek2r9l/teste.gmk
avatar
Data de inscrição : 18/08/2010
Número de Mensagens : 414
Insígnias de JAM :

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

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

Re: [Resolvido]Problemas com irandom

em Ter 23 Jul 2013, 13:40
Tenta usar isso!
random_range(0,65536)
ele escolhera o numero de 0 a 65536!
Data de inscrição : 29/01/2011
Número de Mensagens : 800
Insígnias de JAM :

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

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

Re: [Resolvido]Problemas com irandom

em Ter 23 Jul 2013, 14:25


Cara, muito estranho isso. Essa vai entrar pra lista de bizarrices que eu já vi no Game Maker, mas eu acho que entendi o que aconteceu. ACHO.

Se a gente levar ao pé da letra o que o manual diz sobre "random integer number", a gente poderia *supor* que essa função (irandom) esperasse um valor que coubesse no limite de uma variável integer, o que poderia ser 2 ou 4 bytes (o que também é muita sacanagem o manual não avisar, já que o GM trata o valor de uma forma, mas a função, de outra).

O que rolou foi o seguinte. O valor de 4294967296 (que na verdade deveria ser 4294967295) cabe no limite de um valor double que o Game Maker aloca pra qualquer variável, mas quando a função pega esse valor, ela enxerga isso como um longint e isso pode ser comprovado quando você usa 4294967294, porque a função vai poder retornar um valor negativo (de -2147483648 a 2147483647).

É aí que fica explícita a bagunça que o GM faz com os dois tipos, double e longint (aparentemente, só nessa função). Se você usar 4294967296 ou 4294967295, é entendível que ele retorne 0, porque no longint, como qualquer variável que abrange um range negativo, há dois zeros, um zero negativo (4294967295, o máximo) e um positivo (4294967296, que excede o limite e volta a ser 0). Então, a função vê isso como 0 e obviamente só pode retornar zero.

O jeito aí é apelar pra outra solução. O irandom_range, como os amigos sugeriram aí, é uma boa saída.


----- Edit -----

Eu sei que é exagero, mas apesar da possibilidade ser pequena, usando um número aleatório você pode gerar dois ids iguais. Se você preferir, pode gerar um ID através do IP:

http://gmbr.forumeiros.com/t27333-script-gerar-um-id-de-jogador#202577
avatar
Ranking : Nota C
Notas recebidas : D-B
Data de inscrição : 08/08/2010
Número de Mensagens : 70
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://www.lzstargames.blogspot.com

Re: [Resolvido]Problemas com irandom

em Ter 23 Jul 2013, 17:42
Muito obrigado a todos!
Tópico resolvido!



Como o tópico ja foi resolvido, ele sera trancado.
Caso o autor deseje inserir mais alguma informação, contacte um moderador.
Att: CRP-Max.
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