[Resolvido]Substituir palavras de todo o jogo

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Resolvido [Resolvido]Substituir palavras de todo o jogo

Mensagem por Lucas 5293 em Sex 09 Dez 2011, 14:59

Estou fazendo um sistema de escolha de idiomas, mas

não queria fazer pelo jeito difícil que é:
Código:
if idioma=1
show_message("Maker")
else
show_message("製造商")

e sim pelo string_replace()

más não funciona...

por exemplo desse jeito funciona:
Código:
texto="Isso é um teste"
texto=string_replace(texto,"Isso","Aquilo")
show_message(texto)

Mais queria substituir palavras do jogo inteiro e não deu um só trecho.
FLWS


Última edição por Lucas 5293 em Dom 11 Dez 2011, 10:35, editado 1 vez(es)

Lucas 5293

Ranking : Nota C
Número de Mensagens : 695
Idade : 18
Data de inscrição : 10/12/2010
Notas recebidas : C-D-B-B-B-C-C-C
Reputação : 18
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://dopxgames.blogspot.com

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Substituir palavras de todo o jogo

Mensagem por PedroX em Sex 09 Dez 2011, 15:16

Use string_replace_all para substituir todos os trechos escolhidos de uma string.
Para fazer no jogo todo, você precisaria criar um arquivo ini, assim você vai conseguir.
Vou procurar um tutorial. Posto aqui quando achar.

Até mais!

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Substituir palavras de todo o jogo

Mensagem por Lucas 5293 em Sex 09 Dez 2011, 15:22

Pedrø escreveu:Use string_replace_all para substituir todos os trechos escolhidos de uma string.
Para fazer no jogo todo, você precisaria criar um arquivo ini, assim você vai conseguir.
Vou procurar um tutorial. Posto aqui quando achar.

Até mais!
Sim usei o string_replace_all mais não funcionou
FLWS

Lucas 5293

Ranking : Nota C
Número de Mensagens : 695
Idade : 18
Data de inscrição : 10/12/2010
Notas recebidas : C-D-B-B-B-C-C-C
Reputação : 18
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://dopxgames.blogspot.com

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Substituir palavras de todo o jogo

Mensagem por saim em Sex 09 Dez 2011, 16:58

Eu puxo todas as strings de um arquivo .ini. Quer dizer, o arquivo É .ini, mas eu trato ele como um arquivo de texto pra poder armazená-lo em outra pasta que não a do próprio executável. Daí, eu crio a pasta "idiomas" e coloca o arquivo "protugues.ini", "english.ini", "espanol.ini", "1337.ini", etc.

Puxo as strings com algumas rotinas simples (mas um pouco longa), assim:
Código:
globalvar text, last;
var FILE, SECTION, i, varstring;
FILE=file_text_open_read(working_directory+"\idiomas\"+language+".ini");
SECTION="[first stage texts]"

while(file_text_read_string(FILE)!=SECTION){
   file_text_readln(FILE);
   }
file_text_readln(FILE);

i=0;
while(1){
   varstring=file_text_read_string(FILE);
   if (string_copy(varstring, 0, 4)=="line"){
      text[i]=string_copy(varstring, 6+string_length(string(i)), string_length(varstring)); //7characters=>"line"+number
      file_text_readln(FILE);
      i+=1;
      }
      else{
         break;
         }
   }

file_text_close(FILE);

last=i;
Note que:
- language é uma variável que armazena o nome do arquivo
- o valor de SECTION tem que ser conhecido (seria a seção do arquivo .ini onde as strings estariam armazenada)
- as strings estarão armazenadas na array global "text"
- o índice da última+1 string da array "text" é "last". Isso quer dizer que, ao usar um loop pra mostrar todas as strings, você deverá usar for(i=0; i<last;i+=1) e não for(i=0; i<=last;i+=1)
- no arquivo, as strings estão armazenadas numa estrutura como:
line0=Primeira Linha
line1=Segunda linha
...
Assim, sem aspas, sem espaços antes nem depois do "=", tal, PODENDO usar o caractere especial "#".


Última edição por saim em Sex 09 Dez 2011, 17:02, editado 2 vez(es)

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Substituir palavras de todo o jogo

Mensagem por Lucas 5293 em Sab 10 Dez 2011, 16:18

Não funciona!
Fiz uma adaptação no seu código
mais não substitui
Aqui:
Código:
globalvar text, last;
var FILE, SECTION, i, varstring;

FILE=file_text_open_read(working_directory+"\Xopen\Languages\"+string(global.language)+".dat");
SECTION="[language]"

while(file_text_read_string(FILE)!=SECTION){
  file_text_readln(FILE);
  }
file_text_readln(FILE);

i=0;
while(1){
  varstring=file_text_read_string(FILE);
     
  if (string_copy(varstring, 0, 4)=="line"){
   
      text[i]=string_copy(varstring, 6+string_length(string(i)), string_length(varstring)); //7characters=>"line"+number
      numb=string_copy(text[i],0,2);
              text2[i]=string_copy(varstring, 9+string_length(string(i))+real(numb)+1, string_length(string(varstring)));
          text1[i]=string_copy(varstring, 9+string_length(string(i)),real(numb));
   
      string_replace_all(FILE,text1[i],text2[i]);
      file_text_readln(FILE);
      i+=1;
      }
      else{
        break;
        }
  }

file_text_close(FILE);

last=i;

No arquivo de texto ficou assim:

[language]
line0-03=cat,gato
PS: o "-03" serve para dizer quantos caracteres tem a palavra

Existe alguma variavel que represente todas as strings do jogo para que eu consiga substituir
FLWS

Lucas 5293

Ranking : Nota C
Número de Mensagens : 695
Idade : 18
Data de inscrição : 10/12/2010
Notas recebidas : C-D-B-B-B-C-C-C
Reputação : 18
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://dopxgames.blogspot.com

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Substituir palavras de todo o jogo

Mensagem por saim em Sab 10 Dez 2011, 23:08

Lucas 5293 escreveu:mais não substitui
Você entendeu que o objetivo do script é importar o texto todo, e não substituir um texto existente, né?
E eu acho que você fez um samba-do-crioulo-doido com o string_replace_all. Essa função substitui todas as ocorrências de uma substring por outra substring numa string maior. Não serve pra substituir coisas de um arquivo inteiro. FILE, no caso, é um arquivo, não uma string.

Esse é um script que ainda está em teste, mas até agora tem funcionado bem. Mas funcionado bem pra importar textos, não pra alterar textos existentes.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Substituir palavras de todo o jogo

Mensagem por Lucas 5293 em Dom 11 Dez 2011, 09:41

Cara eu já tinha feito um script para importar todas as strings de meu "jogo".
Daí o problema é substituir as strings
É isso que eu quero fazer.
Como uso o string_replace_all, entaõ?

Lucas 5293

Ranking : Nota C
Número de Mensagens : 695
Idade : 18
Data de inscrição : 10/12/2010
Notas recebidas : C-D-B-B-B-C-C-C
Reputação : 18
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://dopxgames.blogspot.com

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Substituir palavras de todo o jogo

Mensagem por saim em Dom 11 Dez 2011, 10:15

Ué... Não entendi seu objetivo, então.

string_replace_all substitui, numa string, todas as ocorrências de uma sub-string por outra sub-string. Não existe uma função que substitua todas as strings do jogo.

Agora, já que você está fazendo uma escolha de idiomas, porque simplesmente não importa todas as strings de um arquivo diferente, dependendo da escolha do jogador?

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Substituir palavras de todo o jogo

Mensagem por Lucas 5293 em Dom 11 Dez 2011, 10:19

Então não existe nenhuma função que substitua todas as strings do jogo?
Então vou ter que fazer pelo jeito difícil:
Código:
if global.idioma=1
draw_text("bláblábla"´,x,y)
if global.idioma=2
draw_text("lálála"´,x,y)

Más nem com uma .dll eu consigo substituir todas as strings do jogo?

Lucas 5293

Ranking : Nota C
Número de Mensagens : 695
Idade : 18
Data de inscrição : 10/12/2010
Notas recebidas : C-D-B-B-B-C-C-C
Reputação : 18
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://dopxgames.blogspot.com

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Substituir palavras de todo o jogo

Mensagem por saim em Dom 11 Dez 2011, 10:23

Com uma .dll, talvez. Eu não conheço nenhuma.

Mas não é difícil, o jeito mais difícil. Você importa todas as strings de um arquivo, logo no começo do jogo, grava elas em variáveis globais e, na hora de mostrar, coloque draw_text(x, y, nomeDaVariável). Só na hora de importar tem um pouco de complicação, mas o script que te mandei resolve isso.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Substituir palavras de todo o jogo

Mensagem por Lucas 5293 em Dom 11 Dez 2011, 10:24

saim escreveu:Com uma .dll, talvez. Eu não conheço nenhuma.

Mas não é difícil, o jeito mais difícil. Você importa todas as strings de um arquivo, logo no começo do jogo, grava elas em variáveis globais e, na hora de mostrar, coloque draw_text(x, y, nomeDaVariável). Só na hora de importar tem um pouco de complicação, mas o script que te mandei resolve isso.
Grande ideia.
Mais não vai ficar o jogo lento, pois, vai haver um grande numero de variaveis?

Lucas 5293

Ranking : Nota C
Número de Mensagens : 695
Idade : 18
Data de inscrição : 10/12/2010
Notas recebidas : C-D-B-B-B-C-C-C
Reputação : 18
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://dopxgames.blogspot.com

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Substituir palavras de todo o jogo

Mensagem por saim em Dom 11 Dez 2011, 10:32

Não. Embora globais sejam mais lentas que as locais, a diferença não é significativa, se você não usa um número imenso de variáveis ao mesmo tempo ("imenso" é na casa de dezenas de milhares).
E variáveis que não estão sendo usadas deixam o jogo GRANDE, não lento. Ainda assim, precisa de MUITAS variáveis pra fazer alguma diferença.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Substituir palavras de todo o jogo

Mensagem por Lucas 5293 em Dom 11 Dez 2011, 10:33

saim escreveu:Não. Embora globais sejam mais lentas que as locais, a diferença não é significativa, se você não usa um número imenso de variáveis ao mesmo tempo ("imenso" é na casa de dezenas de milhares).
E variáveis que não estão sendo usadas deixam o jogo GRANDE, não lento. Ainda assim, precisa de MUITAS variáveis pra fazer alguma diferença.
Saim valew resolvi o problema

Lucas 5293

Ranking : Nota C
Número de Mensagens : 695
Idade : 18
Data de inscrição : 10/12/2010
Notas recebidas : C-D-B-B-B-C-C-C
Reputação : 18
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://dopxgames.blogspot.com

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Substituir palavras de todo o jogo

Mensagem por saim em Dom 11 Dez 2011, 10:39

Teste isso antes de dizer que está resolvido... se já estiver testado, poste de novo que eu tranco o tópico.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Substituir palavras de todo o jogo

Mensagem por Lucas 5293 em Dom 11 Dez 2011, 10:43

saim escreveu:Teste isso antes de dizer que está resolvido... se já estiver testado, poste de novo que eu tranco o tópico.
Não olha o jeito que eu fiz:
*Primeiro armazeno todas as strings em uma variavel global
*Depois em cada room eu procuro as strings da room(com a função find_string() da gmlibrary):
Código:
str=find_string("")
*Após eu substitua
Código:
str=string_replace()

Lucas 5293

Ranking : Nota C
Número de Mensagens : 695
Idade : 18
Data de inscrição : 10/12/2010
Notas recebidas : C-D-B-B-B-C-C-C
Reputação : 18
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://dopxgames.blogspot.com

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Substituir palavras de todo o jogo

Mensagem por Tedi Ripper em Dom 11 Dez 2011, 15:29

sei que ta resolvido, mas se quiser:
faz um script com todas as frases do jogo numeradas assim:
frase1="texto em portugues"
frase1[2]="text in English"
...

depois, pra rodas a frase, coloca:
if idioma="pt" {show_message(string(frase1))}

ah, algo assim, nao tem erro ;D
flw

Tedi Ripper

Ranking : Nota C
Número de Mensagens : 765
Idade : 19
Data de inscrição : 21/11/2010
Notas recebidas : C
Reputação : 24
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Substituir palavras de todo o jogo

Mensagem por Lucas 5293 em Dom 11 Dez 2011, 18:55

Foi bem assim que eu fiz , mais não com arrays e sim com vars globais

Lucas 5293

Ranking : Nota C
Número de Mensagens : 695
Idade : 18
Data de inscrição : 10/12/2010
Notas recebidas : C-D-B-B-B-C-C-C
Reputação : 18
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://dopxgames.blogspot.com

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Substituir palavras de todo o jogo

Mensagem por PedroX em Dom 11 Dez 2011, 19:13

Se quiser que o tópico seja destrancado, mande uma mp para mim ou para um dos moderadores.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Substituir palavras de todo o jogo

Mensagem por Conteúdo patrocinado Hoje à(s) 04:08


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum