
Darknnez
Membros-
Total de itens
216 -
Registro em
-
Última visita
Tudo que Darknnez postou
-
Eu peguei todas as .dll que estavam na pasta Support do package (eram 7 no total). E aí fiz o instalador pelo ISTool, conforme recomendado. Vou da uma olhada nesse tópico que você falou.
-
Olha só. Eu mandei o programa pra alguns amigos e em todos os casos foi instalado e rodou perfeitamente. Com exceção de um. Olha a mensagem de erro: E essa imagem também apareceu para outros *.dll. Eu acho até que o problema não é com o programa, e sim com o computador do sujeito, que reconheceu um arquivo.dll semelhante no \system32, mas não conseguiu substiui-lo. Como eu evito isso?
-
Beleza. Consegui. Tá pronto e funcionando. :D Valeu.
-
Tem como abrir arquivos de qualquer formato? Eu tentei fazer abrir arquivos diferentes de arquivo.exe, e não deu certo. Edit: Eu mandei o programa pra um amigo meu, e quando ele mandou abrir lá, deu a seguinte mensagem de erro: "Component 'COMDLG32.OCX" or one of its dependencies not correclty registered: a file is missing or invalid" O que é isso?
-
Consegui corrigir aqui. Sò que agora quando eu aperto Ok no frmAdicionar, aparece uma mensagem de erro: "File already open" Isso é por que o arquivo já foi criado anteriormente. Mas então como eu faço para trabalhar com o mesmo arquivo, e salvar a informação necessário nele, sem precisar abri-lo novamente? O engraçado é que isso não tava dando antes. Mas antes o programa tava todo errado, então sei lá. Edit: Já consegui corrigir aqui. Valeu.
-
Caramba! É sério! Criei um programa destruídor de arquivos. E fiz sem querer. Tava fazendo um programa aqui, pra passar o tempo (e que maneira de passar o tempo). O objetivo é que o usuário, através desse programa, possa selecionar e registrar 10 arquivos executáveis como favoritos, que ficam salvos no próprio programa. E quando ele quiser abrir um dos arquivos registrados, ele faz isso diretamente sem precisar ir até o diretório original do arquivo. E tava tudo ok. Eu testei várias vezes com um mesmo arquivo, e funcionou perfeitamente em todos os casos. Isso até que eu fiz o executável do programa. A partir daí, toda vez que eu fazia o processo, aparecia uma mensagem de erro, e os arquivos testados eu não consegui mais abrir depois, mesmo sem ser pelo programa. A imagem que aparece é a seguinte: E to passando o projeto completo caso queiram ver: http://rapidshare.com/files/85104297/Favoritos.rar.html Por que isso acontece? Se forem testar, testem em um arquivo que não seja importante. Não me responsabilizo por perdas e danos. huahahahahaha Até mais.
-
Faz parte. Ainda bem que eu tenho alguém pra reparar nos meus erros. Cara, eu sei que é idiota, mas como fiquei muito tempo sem mecher no projeto, e só voltei recentemente, tem algumas coisas que eu não entendo por que fiz de tal maneira antes. E eu estou fazendo uma coisa no form Corrida, e me deparei com um trecho do código que eu não me lembro por que fiz desse jeito. E mesmo o jogo sendo teoricamente meu, você com certeza pode me tirar essa dúvida melhor do que se eu tentasse entender sozinho. Olha só: For i = 0 To 21 a = Int(xPiloto(i).chance * Rnd) + 1 xPiloto(i).ultimavolta = ((xCircuito(nCircuito).tempomédio - a) / 100) If xPiloto(i).ai > 0 Then xPiloto(i).ai2 = Int((xPiloto(i).chance) * Rnd) + 1 xPiloto(i).ai = xPiloto(i).ai + xPiloto(i).ai2 xPiloto(i).tempovolta = xPiloto(i).tempovolta + ((xCircuito(nCircuito).tempomédio - xPiloto(i).ai2) / 100) End If If (Int(xPiloto(i).chance * Rnd) + 1) < (xPiloto(i).ai2 / 133) Then xPiloto(i).ai = 0 End If Next Nesse trecho, note as linhas que possuem: Int(xPiloto(i).chance * Rnd) + 1 Eu fiquei na dúvida se a cada vez que esse comando aparece um novo valor aleatório é gerado, ou o valor permanece o mesmo que foi gerado na primeira vez que esse comando aparece. (???) Eu não sei mesmo por que fiz desse jeito antes, mas agora não me parece tão claro. Na verdade me parece muito errado. E o estranho é que o jogo tá funcionando corretamente. Se eu fizesse assim: For i = 0 To 21 a = Int(xPiloto(i).chance * Rnd) + 1 xPiloto(i).ultimavolta = ((xCircuito(nCircuito).tempomédio - a) / 100) If xPiloto(i).ai > 0 Then xPiloto(i).ai2 = a xPiloto(i).ai = xPiloto(i).ai + xPiloto(i).ai2 xPiloto(i).tempovolta = xPiloto(i).tempovolta + ((xCircuito(nCircuito).tempomédio - xPiloto(i).ai2) / 100) End If If a < (xPiloto(i).ai2 / 133) Then xPiloto(i).ai = 0 End If Next seria mais correto (ou menos errado)? É isso aí.
-
Corrigi o que?Troquei 'funções' por 'variáveis'? huahahahaha Eu tinha feito esse erro sem querer. Pensei em escrever variáveis e escrevi funções, e só agora vi o erro. Aí eu pensei: "Ih! É melhor eu trocar isso antes que o kuroi veja e eu passe vergonha" huahauhauhauhahahaha Entendi, deu certinho. Valeu.
-
kuroi, você pode dar uma olhadinha no projeto denovo, por favor? Eu estou fazendo um Frame no Form MenuEquipe, que mostra o piloto vencedor e a equipe vencedora de cada temporada. Pra isso, eu fiz um type: Type Campeonato CampPiloto As String CampEquipe As String ano As Integer conclusão As Boolean End Type Declarei no módulo, as variáveis: Public xCampeonato(19) As Campeonato Public nCamp setando nCamp = 0 Declarei a função: Public Function Campeão(ByRef Vetor() As Campeonato, tam) Dim i, j Dim Min Dim aux As Campeonato For i = 0 To tam Min = i For j = i + 1 To tam If Vetor(j).ano < Vetor(Min).ano Then Min = j Next j aux = Vetor(i) Vetor(i) = Vetor(Min) Vetor(Min) = aux Next i End Function que vai ordenar as temporadas no Frame da maior à menor. Ao fim de cada temporada os valores são alterados: xCampeonato(nCamp).CampPiloto = xPiloto(21).nome xCampeonato(nCamp).CampEquipe = xEquipe(10).nome xCampeonato(nCamp).ano = temporada xCampeonato(nCamp).conclusão = True If nCamp < 19 Then nCamp = nCamp + 1 Else nCamp = 0 End If O nCamp só varia até o número 19 por que quero mostrar apenas os campeõs das últimas 20 temporadas. E finalmente, no Form MenuEquipe eu fiz: '_____________Histórico de Campeões______________ Campeão xCampeonato(), 19 For d = 0 To 19 If xCampeonato(d).conclusão = True Then Me.Controls("lblTemporada" & (20 - d)).Caption = xCampeonato(d).ano Me.Controls("lblCampPiloto" & (20 - d)).Caption = xCampeonato(d).CampPiloto Me.Controls("lblCampEquipe" & (20 - d)).Caption = xCampeonato(d).CampEquipe End If Next Até a 10° temporada, tudo funciona perfeitamente. Depois dela, dá o erro. Eu não sei bem o que acontece, mas é como se não desse continuidade à apresentação dos nomes dos pilotos e das equipes nas Labels. Não dá pra explicar direito, só vendo mesmo. Pra facilitar, setei o final da temporada com apenas 1 corrida. E pra ver o problema, é só clicar no botão Histórico de Campeões, no MenuEquipe.
-
Achei uma função de criptografia e funcionou direitinho. Acho que não é tão segura, mas também não me preocupo com isso. O importante é que não ficou rídiculo que nem antes. Valeu.
-
Hmm... entendi. Sobre essa opção de arquivos binários ou criptografados e tal, realmente, como você disse, não ligo muito em tornar o jogo perfeito. Seria interessante impossibilitar, ou ao menos dificultar, que o jogador roube no jogo. Mas incialmente eu só quero aprender a salvar os valores. E por isso tenho uma porção de dúvidas. haha 1° Se eu começar a fazer o método de salvar o jogo agora em arquivos .txt, mais tarde tem como eu mudar facilmente para arquivos binários ou criptografados? 2° Tem algum tópico aqui mesmo no fórum ou algum tutorial que ensine a fazer esse método de salvar diretamente em arquivos binários ou criptografados? Por que aquele link que você me passou, do seu tópico, o Graymalkin não chegou a te responder, e não tem uma explicação sobre como fazer isso. 3° Se eu colocar um For no código, da seguinte forma: CommonDialog1.CancelError = True CommonDialog1.Filter = "arquivo de texto(*.txt) | *.txt" CommonDialog1.ShowSave Open CommonDialog1.FileName For Output As #1 For j = 0 to 10 Print #1, xEquipe(j).nome Next Close #1 vai dar certo? 4° Eu tinha mais dúvidas, mas esqueci. huahahaha Não precisa responder tudo de uma vez. Valeu. Até mais.
-
Hmm... valeu cara. Vou dar uma olhada nesse link que você me passou. EDIT: Você sabe de algum tutorial que ensina a fazer isso que eu te perguntei? Sem ser aquele do macoratti (é assim que escreve?), por que ele não ensina a salvar o valor das variáveis, se não me engano. Por que olhando somente esse link que você me passou fica difícil, já que não tenho absolutamente nenhuma lógica de programação.
-
Valeu, deu certo. Mais duas perguntas: Primeiro, sobre o tamanho do jogo. Tem um arquivo do projeto, Circuito.frx, que tem tamanho de 650 Kb. Isso mesmo já tendo deletado aquela imagem que tinha no form Circuito. Por que isso? A segunda, é sobre trabalhar com arquivos.txt no VB. Eu tive ajuda de um membro aqui do fórum mesmo, e já consegui salvar e carregar o conteúdo das Labels, TextBox, etc, do jogo. O problema é que salvar somente isso não basta. Teria que salvar também o valor das variáveis, até mesmo por que nem todas elas aparecem em Labels e TextBox. Tem como fazer isso?
-
Mas isso já é feito. Tem o type Circuitos, e nele é gravado o vencedor e o segundo colocado de cada corrida. E mesmo assim dá esse problema. Sei lá, não entendi muito bem.
-
Sem querer ser chato (o que é bem difícil), mas isso que você disse, eu meio que já sabia. Acho que não deixei muito claro o que queria. Eu sei qual é o problema, mas não consegui ver a solução. Por isso eu disse que é estúpido, por que tenho certeza que assim que corrigir o problema vou lamentar por não ter pensado na solução antes. Eu tentei algumas coisas antes de te solicitar sua ajuda, e nenhuma delas deu certo. Não consegui pensar em como corrigir o problema de forma simplificada. Por isso queria saber se você sabe alguma maneira de fazer isso. Desculpa por não ter deixado isso claro antes. Mas é isso aí.
-
Ah... pff.... sem comentários... valeu Tranquilo, sem pressa.
-
Vou te mandar lá. Não precisa ter pressa. Só tem um problema. Não sei por que, mas quando eu compacto a pasta do jogo aqui no winrar, ta ficando com tamanho de 681Kb, enquanto quando eu compacto em casa, fica uns 40Kb. Será por causa da versão diferente do VB? Bem, pra ver o erro, é só rodar as corridas do jogo normalmente, e clicar no botão 'Temporada Atual' no MenuEquipe. Aí vai ver o erro que eu falei no post passado. Valeu.
-
Olha só, to com um problema. Tenho certeza que é estúpido, até mais do que eu imagino, mas não to conseguindo ver a solução nem f*****! Eu to fazendo um Frame que mostra os vencedores e segundo-colocados de cada corrida da temporada. E eu quero que as Labels só fiquem visíveis depois que a respectiva corrida aconteça. Ou seja, a label do circuito 10 só aparece depois que a 10ª corrida acontecer. Para isso, fiz: For g = 0 To 16 If g = (nCircuito - 1) Then Me.Controls("lblCircuito" & (g + 1)).Visible = True Me.Controls("lblVencedor" & (g + 1)).Caption = xCircuito(nCircuito - 1).vencedor Me.Controls("lblSegundo" & (g + 1)).Caption = xCircuito(nCircuito - 1).segundo For i(7) = 0 To UBound(xPiloto) For j = 0 To UBound(xEquipe) If xPiloto(i(7)).nome = xCircuito(nCircuito - 1).vencedor Then If xPiloto(i(7)).equipe = xEquipe(j).nome Then Me.Controls("lblVencedor" & (g + 1)).BackColor = xEquipe(j).Cor1 Me.Controls("lblVencedor" & (g + 1)).ForeColor = xEquipe(j).Cor2 End If ElseIf xPiloto(i(7)).nome = xCircuito(nCircuito - 1).segundo Then If xPiloto(i(7)).equipe = xEquipe(j).nome Then Me.Controls("lblSegundo" & (g + 1)).BackColor = xEquipe(j).Cor1 Me.Controls("lblSegundo" & (g + 1)).ForeColor = xEquipe(j).Cor2 End If End If Next Next End If Next E tá tudo certinho. Os nomes dos pilotos aparecem, o nome do circuito aparece, e as cores das equipes de cada piloto também aparecem corretamente. O problema é que quando a 10ª corrida (por exemplo) acaba, não só as respectivas labels aparecem corretamente, como as labels da corrida passada somem, e isso não era pra acontecer. Deu pra entender mais ou menos? Por que isso acontece?
-
Valeu, deu certinho.
-
Mas como fazer para mostrar apenas o número inteiro, sem as casas decimais?
-
Se você tá dizendo então é por que tá certo.Eu não sabia que as propriedades são alteradas juntamente com os índices. Hmmm.... realmente simples. Só uma dúvida que eu tenho: como devo declarar a variável pontos? Se eu declarar como integer, o valor da variável é arredondado ou apenas não aparecem as casas decimais?
-
É assim: xEquipe(0).Motor = xMotor(6).nome xEquipe(10).Motor = xMotor(0).nome No final da corrida, somando os pontos de cada piloto, a ordem das equipes é alterada de acordo com a classificação. Ou seja, a primeira equipe da classificação se torna a xEquipe(10), e a última se torna a xEquipe(0). Com isso, a xEquipe(0) que tinha o xMotor(6), passa a ter o xMotor(0), e esse é o problema.... ou não? Era só para a equipe, mas apenas no form em que aparecem as pontuações de cada equipe na última corrida. E eu não sei fazer para esse caso específico. Tentei fazer igual e não consegui.
-
Na verdade eu falei errado. Os motores, combustíveis e pneus não estão sendo ordenados juntos.Mas olha o que acontece: Eu defini no início do projeto que o motor da Equipe(0) é o Motor(3), por exemplo. E o da Equipe(1) é o Motor(2). Quando a corrida acaba, as equipes são ordenadas de acordo com a pontuação total delas, certo? Então quando isso acontece, se a Equipe(0) passa para o 2º lugar do campeonato, ela passa a ser a Equipe(1), e portanto seu motor passa a ser o Motor(2). Ficou confuso? Imagine a situação: Um PilotoX termina todas as corridas do campeonato em 10º lugar, e um PilotoY termina todas em 20º lugar. Como apenas os 8 primeiros pontuam na corrida, nenhum dos dois pontuou, certo? Teoricamente, o PilotoX foi muito melhor que o PilotoY no decorrer do campeonato, já que terminou sempre na frente, e seu salário deveria ser maior. Mas o que acontece é que, se por acaso o PilotoY, na última corrida, terminar na frente do PilotoX, na ordem da tabela de classificação, o PilotoY fica na frente do PilotoX, e assim seu salário será maior. Esse é o erro. O mesmo acontece com as equipes que não pontuam. Ou seja, aquela que termina na frente na última corrida do campeonato, terá o salário maior, mesmo tendo sido pior que uma determinada equipe durante toda a temporada.
-
E se eu quiser fazer o caminho inverso? Por exemplo: em vez de selecionar o arquivo.txt na ComboBox, procurá-lo no diretório e exibir o conteúdo em uma TextBox, eu queria escrever um texto na TextBox, transferir o conteúdo para um arquivo.txt e salvá-lo no diretório selecionado.
-
Valeu. Nem precisei do VB2008, consegui o VB6 aqui. To com uma dúvida. Na hora que eu ordeno as equipes na função ClassificaçãoEquipes2, os motores, pneus e combustíveis estão sendo ordenados juntos, certo? Só que eu preciso que eles não ordenem, ou seja, mantenham sempre na mesma ordem. Pra isso, eu alterei a função da seguinte forma: Public Function ClassificaçãoEquipe2(ByRef Vetor() As equipe, tam) Dim i, j, h, k Dim Min Dim aux As equipe Dim aux1, aux2, aux3 As Variant For i = 0 To tam Min = i For j = i + 1 To tam If Vetor(j).desempate < Vetor(Min).desempate Then Min = j Next j aux = Vetor(i) Vetor(i) = Vetor(Min) Vetor(Min) = aux '____________________MOTORES____________________ xMotor(7).nome = "Ferrari" xMotor(7).potencia = 100 xMotor(7).custo = 10000 xMotor(6).nome = "Mercedes" xMotor(6).potencia = 95 xMotor(6).custo = 9000 xMotor(5).nome = "Renault" xMotor(5).potencia = 85 xMotor(5).custo = 7000 xMotor(4).nome = "Honda" xMotor(4).potencia = 80 xMotor(4).custo = 6000 xMotor(3).nome = "Toyota" xMotor(3).potencia = 70 xMotor(3).custo = 4500 xMotor(2).nome = "BMW" xMotor(2).potencia = 60 xMotor(2).custo = 3500 xMotor(1).nome = "Ford" xMotor(1).potencia = 45 xMotor(1).custo = 2000 xMotor(0).nome = "Supertec" xMotor(0).potencia = 30 xMotor(0).custo = 1000 '____________________PNEUS____________________ xPneu(2).nome = "Bridgestone" xPneu(2).custo = 2000 xPneu(2).força = 50 xPneu(1).nome = "Michelin" xPneu(1).custo = 1500 xPneu(1).força = 45 xPneu(0).nome = "Firestone" xPneu(0).custo = 500 xPneu(0).força = 25 '____________________COMBUSTÍVEIS____________________ xCombustível(4).nome = "Petrobrás" xCombustível(4).custo = 3000 xCombustível(4).força = 50 xCombustível(3).nome = "Shell" xCombustível(3).custo = 2500 xCombustível(3).força = 45 xCombustível(2).nome = "Texaco" xCombustível(2).custo = 1500 xCombustível(2).força = 35 xCombustível(1).nome = "Sasol" xCombustível(1).custo = 1000 xCombustível(1).força = 30 xCombustível(0).nome = "Esso" xCombustível(0).custo = 500 xCombustível(0).força = 25 Next i End Function Assim, imagino eu, sempre que eu chamar a função, os motores, pneus e combustíveis, inicialmente, irão ser ordenados de acordo com a posição das equipes, e em seguida, re-ordenados de tal forma que voltem para a ordem original, ou estou errado? E mais uma probleminha que estou tendo. Agora os pilotos tem salários, e as equipes patrocínios. O primeiro problema é que o salário de cada piloto muda de acordo com sua posição na classificação final, ou seja, no final da temporada. Mas acontece que tem piloto que não pontua durante toda a temporada, e dessa forma, a ordem nna classificação não fica correta, por que não há um critério de desempate. O mesmo ocorre com as equipes, que de 6 em 6 corridas, tem seus patrocínios alterados de acordo com a posição na classificação. Mas da mesma forma, algumas equipes não pontuam, e ficam na ordem errada. Tem idéia de como posso corrigir isso? Valeu.