Qual o erro no Script: reconhecer o PC e alterar a variável?

 
   3D Game Builder - Índice » Programação
Qual o erro no Script: reconhecer o PC e alterar a variável?
Autor Mensagem
Lemos
Usuário
Usuário


Registrado: 14/04/09
Mensagens: 802
Localização: Rio de Janeiro - RJ

Qual o erro no Script: reconhecer o PC e alterar a variável?
Amigos, segui a dica do Edirlei e fiz o Seguinte:

//---Begin Script Builder: Mostrar a chave do meu Windows no label Key---//
SetLabelText('Key', 'Key: '+RegReadString($80000002, 'SOFTWARE\Microsoft\Windows\CurrentVersion\','ProductId','0'));
//---End Script Builder---//
WriteGlobalVar('PCID', 0);
//---Begin Script Builder: Alterar a variável PCID em função da identidade do Windows e mostrar o resultado no label PcID---//
if (RegValueExists($80000002, 'SOFTWARE\Microsoft\Windows\CurrentVersion\','CHAVE MOSTRADA NO LABEL') = true) then
WriteGlobalVar('PCID', 1);
//---End Script Builder---//
SetLabelText('Objeto16', 'PcID:' +IntToStr(ReadGlobalVar('PCID')));


Vamos lá:

//---Begin Script Builder: Mostrar a chave do meu Windows no label Key---//
SetLabelText('Key', 'Key: '+RegReadString($80000002, 'SOFTWARE\Microsoft\Windows\CurrentVersion\','ProductId','0'));
//---End Script Builder---//

Aqui a chave do PC onde roda o Jogo é mostrada no Label Key


//---Begin Script Builder: Alterar a variável PCID em função da identidade do Windows e mostrar o resultado no label PcID---//
if (RegValueExists($80000002, 'SOFTWARE\Microsoft\Windows\CurrentVersion\','CHAVE MOSTRADA NO LABEL') = true) then
WriteGlobalVar('PCID', 1);
//---End Script Builder---//
SetLabelText('Objeto16', 'PcID:' +IntToStr(ReadGlobalVar('PCID')));


Primeiro eu declarei a variável PCID=0. Depois eu usei a função RegValueExists para checar a chave existente. Pelo que entendi, se a chave for igual, ela retorna true. Então fiz um script que se ela fosse = a true, a variável PCID mudaria para 1. Depois eu fiz ela aparecer no Label Objeto16: SetLabelText('Objeto16', 'PcID:' +IntToStr(ReadGlobalVar('PCID')));

A verificação não mostra erros, eu salvei e rodei, mas a variável PCID, mostrada no Label, não sai de zero, testei colocando a chave mostrada no Label certinha, do jeito que está escrito e testei com uma outra chave.
O Objetivo é alterar uma variável global em função da chave do PC. O mapa inicial só carregaria se a chave checada fosse a correta, a variável retornaria 1. Qualquer valor diferente retorna 0 e o mapa não carrega, ou carrega um mapa com uma mensagem de erro.

Abraço!



_________________
Lemos
http://alemdanimacao.zip.net/
Qua Out 28, 2009 4:06 pm Exibir perfil de usuários
Edirlei
Administrador
Administrador


Registrado: 15/03/08
Mensagens: 760

Você não pode passar o valor da chave na função RegValueExists, com essa função só vai ser retornado true se você verificar se existe o "ProductId".

if (RegValueExists($80000002, 'SOFTWARE\Microsoft\Windows\CurrentVersion\','CHAVE MOSTRADA NO LABEL') = true) then

A função não vai ler o dado associado, e sim se aquele valor existe, mas não verifica o que esta gravado nele.

Um código fala mais do que mil palavras:

Código:
if (RegValueExists($80000002, 'SOFTWARE\Microsoft\Windows\CurrentVersion\','ProductId') = true) then
begin
  if (RegReadString($80000002, 'SOFTWARE\Microsoft\Windows\CurrentVersion\','ProductId','0') == 'CHAVE MOSTRADA NO LABEL') then
  begin
    //O valor ProductId existe e o dado associado a ele é o mesmo que foi mostrado antes no label.
  end
  else
    //O valor ProductId existe mas o dado associado a ele é diferente do que foi mostrado antes no label.
end
else
  //O valor ProductId não existe.

Qui Out 29, 2009 3:29 am Exibir perfil de usuários
Lemos
Usuário
Usuário


Registrado: 14/04/09
Mensagens: 802
Localização: Rio de Janeiro - RJ

Cara, vou checar isso o quanto antes, valeu mesmo! Very Happy Mas me fala só mais uma coisa, para aprender essa linguagem, o que eu tenho que procurar, pque os materiais que eu tenho de Pascal nunca mostram elementos como esses que você passa, é como se eu estivesse estudando álgebra para uma prova de geometria... Confused Se for necessário, penso em fazer um curso mesmo, mas queria ir na boa, para não perder tempo e dinheiro.
Se nessa nova versão você melhorar a documentação com pelo menos 1 exemplo como esse para cada script, já vai clarear muito a nossa vida! Rolling Eyes
Mais uma vez, obrigado.

_________________
Lemos
http://alemdanimacao.zip.net/
Qui Out 29, 2009 11:28 am Exibir perfil de usuários
Lemos
Usuário
Usuário


Registrado: 14/04/09
Mensagens: 802
Localização: Rio de Janeiro - RJ

Edirlei, consegui! Very Happy Segui todo o passo-a-passo! Na condição = true (a chave existe e é igual, eu coloquei a variável em 1, na condição 2, existe mas é diferente, a variável muda para 2). Na condição = false, a chave inexiste, a variável ficaria em 0. Usei como teste as chaves do pc da firma e do meu e as variáveis mudam perfeitamente!
Com as variáveis sendo afetadas, basta fazer com que o mapa inicial só carregue se a variável PCID = 1, caso contrário carregaria um mapa com uma mensagem de erro!
Obrigado mesmo!
Agora vou aperfeiçoar o script para que os dados possam ser gravados em banco de dados.

Abraço!

_________________
Lemos
http://alemdanimacao.zip.net/
Qui Out 29, 2009 11:09 pm Exibir perfil de usuários
   3D Game Builder - Índice » Programação
Página 1 de 1