GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Problema ao entrar por uma porta e voltar por ela
por aminaro Ontem à(s) 10:08

» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43

» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16

» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45

» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21


[Problema] Com file_finds e outros

2 participantes

Ir para baixo

[Problema] Com file_finds e outros Empty [Problema] Com file_finds e outros

Mensagem por luiz_eldorado Qui 18 Out 2012, 22:28

Estou tentando criar o ".game Executer", mas algo está dando errado. Antes de tudo, code:
Código:

/*** Simples sistema de carregamento de arquivos ".game" ***/

//Tela de "Loading"
draw_set_color(c_white); draw_set_halign(1); draw_set_valign(1);

screen_redraw(); draw_text(room_width/2,room_height/2,'Waiting user...'); screen_refresh();
//Executar arquivo se for aberto com o programa ("Abrir com...", etc).
//Caso aberto diretamente, perguntar pelo arquivo.
var fname;
fname=parameter_string(1);
if fname="" {
fname=get_open_filename("Game file (*.game)|*.game","");
if fname="" {game_end(); exit;}
}

//Para evitar problemas
if !file_exists(fname) {show_message("The file not exists."); game_end(); exit;}

//Recriar pasta
if !directory_exists(working_directory+"\temp")
{directory_create(working_directory+"\temp");}

screen_redraw(); draw_text(room_width/2,room_height/2,'Unziping...'); screen_refresh();

//Necessário para o VBSZIP (o arquivo tem que ser ".zip")
file_copy(fname,working_directory+'\temp.zip');

//Começo do "VBSZIP" (por Ninja8086)
//Foi modificado um pouco por razões de espaço, e etc.
//E não está em scripts, pois não se pode para este programa.

var Script, ZipFile, ZipDir, VBScript, TempFile;
ZipFile  = working_directory+'\temp.zip';
ZipDir  = working_directory+"\temp";

Script  = file_text_open_write(environment_get_variable('TEMP')+'\gmzip.vbs');
VBScript = '
    Set GMZIP = CreateObject("Shell.Application")
    GMZIP.NameSpace("' + ZipDir + '").CopyHere GMZIP.NameSpace("' + ZipFile + '").Items
';
file_text_write_string(Script, VBScript);
file_text_close(Script);

TempFile = environment_get_variable('TEMP')+'\gmzip.vbs';
execute_program('wscript', TempFile, true);
file_delete(TempFile);

//Fim do "VBSZIP"

//Não preciso mais disto
file_delete(working_directory+'\temp.zip');

//Configurações globais do jogo
screen_redraw(); draw_text(room_width/2,room_height/2,'Loading Global Game Settings');
screen_refresh();

var a;
a=file_text_open_read(working_directory+'\temp\global_game_settings');

var fullscreen,scale,color,sizeable,stayontop,showborder,showicons,cursor,colordepth,w,h,
    frequency,syn,priority;

                    fullscreen=real(string_digits(file_text_read_string(a)));
file_text_readln(a); scale=real(string_digits(file_text_read_string(a)));
file_text_readln(a); color=real(string_digits(file_text_read_string(a)));
file_text_readln(a); sizeable=real(string_digits(file_text_read_string(a)));
file_text_readln(a); stayontop=real(string_digits(file_text_read_string(a)));
file_text_readln(a); showborder=not real(string_digits(file_text_read_string(a)));
file_text_readln(a); showicons=not real(string_digits(file_text_read_string(a)));
file_text_readln(a); cursor=real(string_digits(file_text_read_string(a)))+1;
file_text_readln(a); colordepth=real(string_digits(file_text_read_string(a)));
file_text_readln(a); w=real(string_digits(file_text_read_string(a)));
file_text_readln(a); h=real(string_digits(file_text_read_string(a)));
file_text_readln(a); frequency=real(string_digits(file_text_read_string(a)));
file_text_readln(a); syn=real(string_digits(file_text_read_string(a)));
file_text_readln(a); priority=real(string_digits(file_text_read_string(a)));

file_text_close(a);

window_set_fullscreen(fullscreen); window_set_region_scale(scale,0); window_set_color(color);
window_set_sizeable(sizeable); window_set_stayontop(stayontop);
window_set_showborder(showborder); window_set_showicons(showicons); window_set_cursor(cursor);
display_set_all(w,h,frequency,colordepth); set_synchronization(syn);
set_program_priority(priority);

//Objetos
screen_redraw(); draw_text(room_width/2,room_height/2,'Loading Objects'); screen_refresh();

var p,f,res;
p=working_directory+'\temp\Objects';
for (f=file_find_first(p,fa_directory); f!=''; f=file_find_next()) {
if file_attributes(p+f,fa_directory) {

execute_string('globalvar '+f+';');
res=object_add();
variable_global_set(f,res);
a=file_text_open_read(p+f+'\settings');
object_set_sprite(res,real(file_text_read_string(a))); file_text_readln(a);
object_set_visible(res,real(file_text_read_string(a))); file_text_readln(a);
object_set_solid(res,real(file_text_read_string(a))); file_text_readln(a);
object_set_depth(res,real(file_text_read_string(a))); file_text_readln(a);
object_set_persistent(res,real(file_text_read_string(a))); file_text_readln(a);
object_set_parent(res,real(file_text_read_string(a))); file_text_readln(a);
object_set_mask(res,real(file_text_read_string(a))); file_text_close(a);

p2=p+f;
for (f2=file_find_first(p2,0); f2!=''; f2=file_find_next()) {
if f2!='settings' {
s='';
a=file_text_open_read(p2+f2);
while !file_text_eof(a) {
s+=file_text_read_string(a)+chr(13)+chr(10);
file_text_readln(a);
}
file_text_close(a);
object_event_add(res,string_copy(f2,1,string_pos(' ',f2)),
string_copy(f2,string_pos(' ',f2)+1,string_length(f2)-string_pos(' ',f2)+1),s);
}
}
}
}

//Rooms
screen_redraw(); draw_text(room_width/2,room_height/2,'Loading Rooms'); screen_refresh();

p=working_directory+'\temp\Rooms';
for (f=file_find_first(p,fa_directory); f!=''; f=file_find_next()) {

if file_attributes(p+f,fa_directory) {
show_message('room created!');

execute_string('globalvar '+f+';');
res=room_add();
variable_global_set(f,res);
a=file_text_open_read(p+f+'\settings');
room_set_caption(res,file_text_read_string(a)); file_text_readln(a);
room_set_width(res,real(file_text_read_string(a))); file_text_readln(a);
room_set_height(res,real(file_text_read_string(a))); file_text_readln(a);
room_set_code(res,"room_speed="+file_text_read_string(a)+";"); file_text_readln(a);
room_set_persistent(res,real(file_text_read_string(a)));
file_text_close(a);

a=file_text_open_read(p+f+'\background');
var col, show;
show=real(file_text_read_string(a)); file_text_readln(a);
col=real(file_text_read_string(a)); file_text_readln(a);
room_set_background_color(res,col,show); file_text_close(a);

var xx,yy,oo;
a=file_text_open_read(p+f+'\instances');
while !file_text_eof(a) {
s=file_text_read_string(a)+' '; file_text_readln(a);
xx=real(string_copy(s,1,string_pos(' ',s))); s=string_delete(s,1,string_pos(' ',s)+1);
yy=real(string_copy(s,1,string_pos(' ',s))); s=string_delete(s,1,string_pos(' ',s)+1);
oo=real(string_copy(s,1,string_pos(' ',s)));
room_instance_add(res,xx,yy,oo);
}

//Futuramente terá tiles e backgrounds! Ou não! XD

}
}

if directory_exists(working_directory+"\temp") {
screen_redraw();
draw_text(room_width/2,room_height/2,'Deleting folders...'); screen_refresh();

//Começo do "BatchScript" (por Ninja8086)
//Usado para deletar pastas silenciosamente... mwhuahuahuahua! ¬_¬
//Foi modificado um pouco por razões de espaço, e etc.
var runcmd, runvbs, script, tempdr;
tempdr = environment_get_variable('TEMP');
runcmd = tempdr + '\run.cmd';
runvbs = tempdr + '\run.vbs';

script = file_text_open_write(runcmd);
file_text_write_string(script,'rd /s /q "'+working_directory+'\temp"');
file_text_close(script);

script = file_text_open_write(runvbs);

file_text_write_string(script,'
set cmdprompt = createobject("wscript.shell")
cmdprompt.run "' + runcmd + '"'
);

file_text_write_string(script, ',0');
file_text_write_string(script, ', true');
file_text_close(script);

if file_exists(runcmd) and file_exists(runvbs) {
    execute_program('wscript', '"' + runvbs + '"', true);
    file_delete(runcmd);
    file_delete(runvbs);
}
//Fim do "BatchScript"
}

//Valores resetados, para não mudar o jogo
draw_set_color(0); draw_set_halign(0); draw_set_valign(0);

//"Go Go Go Pb"!
room_goto_next();
Este código é do Creation Code de uma room sem nome e sem fundos (literalmente, sem o "Draw Background Color").
Já nem sei que dorgas eu fiz aí, só sei que ele não está procurando os arquivos corretamente. Ele não está criando rooms porque não está achando alguma coisa, e também acho que não está criando objetos. E o único erro que está dando é no final, que a room seguinte não existe.

Quando executar, ele vai pedir um arquivo .game, tente este:
http://db.tt/mj07sEuO
Você pode abrir com um descompatador .zip (como WinRar e 7Zip).
luiz_eldorado
luiz_eldorado

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 30/07/2011
Reputação : 47
Número de Mensagens : 928
Prêmios : [Problema] Com file_finds e outros Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://luizpontes.tk/

Ir para o topo Ir para baixo

[Problema] Com file_finds e outros Empty Re: [Problema] Com file_finds e outros

Mensagem por theguitarmester Dom 21 Out 2012, 12:51

Luiz_eldorado, Baixei o Aleatorizador e coloquei o script no Creation code de uma GMK nova, tô fazendo os testes para entender.

Tem uma coisa na seu Script que eu vinha buscando(uns tempo), que é a descriptografar a GMK do Game Maker, como funciona por direito isto?

á, quando eu executo-o e acho o jogo, ele não consegue achar o VBSCRIPT e com isto, lógicamente não funciona corretamente.
theguitarmester
theguitarmester

Games Ranking : Nota C

Notas recebidas : B + C
Data de inscrição : 28/02/2012
Reputação : 139
Número de Mensagens : 2211
Prêmios : [Problema] Com file_finds e outros Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Unity


http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Ir para o topo Ir para baixo

[Problema] Com file_finds e outros Empty Re: [Problema] Com file_finds e outros

Mensagem por luiz_eldorado Dom 21 Out 2012, 13:04

theguitarmester escreveu:Tem uma coisa na seu Script que eu vinha buscando(uns tempo), que é a descriptografar a GMK do Game Maker, como funciona por direito isto?
Não, ele não faz isso (é algo impossível para GMK, mas para GM6 talvez seja). Esse arquivo .game fui que criei com o WinRar no formato .zip, depois mudei a extensão.
theguitarmester escreveu:á, quando eu executo-o e acho o jogo, ele não consegue achar o VBSCRIPT e com isto, lógicamente não funciona corretamente.
Só se seu PC não tiver o VBS, o que eu creio que é meio impossível. Todo Windows tem VBS, que SO está usando? Tente, sei lá, "baixar" o VBScript. Qual é o erro exatamente?
Até's
luiz_eldorado
luiz_eldorado

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 30/07/2011
Reputação : 47
Número de Mensagens : 928
Prêmios : [Problema] Com file_finds e outros Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://luizpontes.tk/

Ir para o topo Ir para baixo

[Problema] Com file_finds e outros Empty Re: [Problema] Com file_finds e outros

Mensagem por theguitarmester Dom 21 Out 2012, 13:39

Só se seu PC não tiver o VBS, o que eu creio que é meio impossível. Todo Windows tem VBS,
já tive uns problemas com ele, sei que tenho, mas acho que não tá ativado mais.

que SO está usando?
O que é isso?

Quando arrumar isto, vou ver se consigo arrumar seu programa.

mas para quê serve o vbscript em seu código? ele é substituível? e como funciona esta váriavel, não tinha conhecimento: environment_get_variable


vou tirar a parte do vbscript e ver como vai.

_____________________________________14:05
como isso é algo que me Interessa, vou ver se faço um novo seguindo o seu Script, praticamente Não consegui entender o Seu, me dê explicações como funciona, principalmente aqui, que é onde está o erro, qá que não existe o objeto, e nem criar a room:
Código:
//Objetos
screen_redraw(); draw_text(room_width/2,room_height/2,'Loading Objects'); screen_refresh();
var p,f,res;
p=working_directory+'\temp\Objects';
for (f=file_find_first(p,fa_directory); f!=''; f=file_find_next()) {
if file_attributes(p+f,fa_directory) {
execute_string('globalvar '+f+';');
res=object_add();
variable_global_set ......... ... ... ... ... E todo o Resto

olha o erro que dá:
Código:

___________________________________________
ERROR in
action number 1
of Create Event
for object <undefined>:

File is not opened for reading.
theguitarmester
theguitarmester

Games Ranking : Nota C

Notas recebidas : B + C
Data de inscrição : 28/02/2012
Reputação : 139
Número de Mensagens : 2211
Prêmios : [Problema] Com file_finds e outros Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Unity


http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Ir para o topo Ir para baixo

[Problema] Com file_finds e outros Empty Re: [Problema] Com file_finds e outros

Mensagem por luiz_eldorado Dom 21 Out 2012, 14:52

theguitarmester escreveu:já tive uns problemas com ele, sei que tenho, mas acho que não tá ativado mais.
ENTÃO ATIVE, dorgas.
theguitarmester escreveu:O que é isso?
O Sistema Operacional, a versão do Windows. Mas isso não importa.
theguitarmester escreveu:mas para quê serve o vbscript em seu código? ele é substituível? e como funciona esta váriavel, não tinha conhecimento: environment_get_variable
O VBScript vai extrair os arquivos do ZIP/GAME para uma pasta. Ele poderia ser substituído por uma DLL que fizesse isso, mas não achei nada mais simples para o que eu quero (somente descompactar). Essa função é usada para pegar uma variável do sistema (Aperte Windows (bandeirinha) + R, digite "cmd" depois Enter, digte "set" e verá as variáveis do sistema), no caso, a variável TEMP (pasta temporária do sistema).
theguitarmester escreveu:como isso é algo que me Interessa, vou ver se faço um novo seguindo o seu Script, praticamente Não consegui entender o Seu, me dê explicações como funciona, principalmente aqui, que é onde está o erro, qá que não existe o objeto, e nem criar a room
Esse é o problema, ele não quer achar os arquivos dentro das pastas (é um erro meu, eu sei, mas não sei onde está). Vou explicar o código:

Explicação escreveu:
Este programa vai ler um arquivo .game, que é um .zip com extensão mudada, nele terá o jogo inteiro, por pastas. Você pode abri-lo com o WinRar. Entre os loadings ele mostra uma mensagem do que está fazendo. O que ele faz:

  • Verifica se algum arquivo foi aberto com ele. Se foi, então será ele mesmo à abrir, caso não, ele pergunta sobre o arquivo;
  • Cria uma pasta "temp" no pasta do programa;
  • Copia o arquivo .game para o working_directory mas com a extensão .zip (o VBS só aceita .zip);
  • Cria um arquivo VBS com a instrução de descompactar o arquivo .zip para a pasta "temp" (e executa ele);
  • Deleta o arquivo .zip (já está tudo descompactado);
  • Carrega o arquivo "global_game_settings";
  • Cria os objetos que estão dentro de pastas (aqui, ele não abre nenhum objeto, mesmo tendo);
  • Cria as rooms (mesmo problema), suas instancias, background color e settings;
  • Deleta a pasta "temp" com VBScript e CMD;
  • Vai para a próxima room (que não existe).
Atélá's
luiz_eldorado
luiz_eldorado

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 30/07/2011
Reputação : 47
Número de Mensagens : 928
Prêmios : [Problema] Com file_finds e outros Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://luizpontes.tk/

Ir para o topo Ir para baixo

[Problema] Com file_finds e outros Empty Re: [Problema] Com file_finds e outros

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos