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

Nenhum

Ver toda a lista


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

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

Prêmios
   : 0
   : 1
   : 0
Ver perfil do usuáriohttp://dopxgames.blogspot.com

[Resolvido]Substituir palavras de todo o jogo

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)
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: [Resolvido]Substituir palavras de todo o jogo

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!
avatar
Ranking : Nota C
Notas recebidas : C-D-B-B-B-C-C-C
Data de inscrição : 10/12/2010
Número de Mensagens : 695
Insígnias de JAM :

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

Prêmios
   : 0
   : 1
   : 0
Ver perfil do usuáriohttp://dopxgames.blogspot.com

Re: [Resolvido]Substituir palavras de todo o jogo

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
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: [Resolvido]Substituir palavras de todo o jogo

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)
avatar
Ranking : Nota C
Notas recebidas : C-D-B-B-B-C-C-C
Data de inscrição : 10/12/2010
Número de Mensagens : 695
Insígnias de JAM :

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

Prêmios
   : 0
   : 1
   : 0
Ver perfil do usuáriohttp://dopxgames.blogspot.com

Re: [Resolvido]Substituir palavras de todo o jogo

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
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: [Resolvido]Substituir palavras de todo o jogo

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.
avatar
Ranking : Nota C
Notas recebidas : C-D-B-B-B-C-C-C
Data de inscrição : 10/12/2010
Número de Mensagens : 695
Insígnias de JAM :

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

Prêmios
   : 0
   : 1
   : 0
Ver perfil do usuáriohttp://dopxgames.blogspot.com

Re: [Resolvido]Substituir palavras de todo o jogo

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õ?
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: [Resolvido]Substituir palavras de todo o jogo

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?
avatar
Ranking : Nota C
Notas recebidas : C-D-B-B-B-C-C-C
Data de inscrição : 10/12/2010
Número de Mensagens : 695
Insígnias de JAM :

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

Prêmios
   : 0
   : 1
   : 0
Ver perfil do usuáriohttp://dopxgames.blogspot.com

Re: [Resolvido]Substituir palavras de todo o jogo

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?
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: [Resolvido]Substituir palavras de todo o jogo

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.
avatar
Ranking : Nota C
Notas recebidas : C-D-B-B-B-C-C-C
Data de inscrição : 10/12/2010
Número de Mensagens : 695
Insígnias de JAM :

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

Prêmios
   : 0
   : 1
   : 0
Ver perfil do usuáriohttp://dopxgames.blogspot.com

Re: [Resolvido]Substituir palavras de todo o jogo

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?
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: [Resolvido]Substituir palavras de todo o jogo

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.
avatar
Ranking : Nota C
Notas recebidas : C-D-B-B-B-C-C-C
Data de inscrição : 10/12/2010
Número de Mensagens : 695
Insígnias de JAM :

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

Prêmios
   : 0
   : 1
   : 0
Ver perfil do usuáriohttp://dopxgames.blogspot.com

Re: [Resolvido]Substituir palavras de todo o jogo

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
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: [Resolvido]Substituir palavras de todo o jogo

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.
avatar
Ranking : Nota C
Notas recebidas : C-D-B-B-B-C-C-C
Data de inscrição : 10/12/2010
Número de Mensagens : 695
Insígnias de JAM :

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

Prêmios
   : 0
   : 1
   : 0
Ver perfil do usuáriohttp://dopxgames.blogspot.com

Re: [Resolvido]Substituir palavras de todo o jogo

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()
avatar
Ranking : Sem avaliações
Data de inscrição : 21/11/2010
Número de Mensagens : 775
Insígnias de JAM :

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

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

Re: [Resolvido]Substituir palavras de todo o jogo

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
avatar
Ranking : Nota C
Notas recebidas : C-D-B-B-B-C-C-C
Data de inscrição : 10/12/2010
Número de Mensagens : 695
Insígnias de JAM :

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

Prêmios
   : 0
   : 1
   : 0
Ver perfil do usuáriohttp://dopxgames.blogspot.com

Re: [Resolvido]Substituir palavras de todo o jogo

em Dom 11 Dez 2011, 18:55
Foi bem assim que eu fiz , mais não com arrays e sim com vars globais
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: [Resolvido]Substituir palavras de todo o jogo

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.
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