Entrar
Últimos assuntos
» Problema ao entrar por uma porta e voltar por elapor 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
Página 1 de 1
[Problema] Com file_finds e outros
Estou tentando criar o ".game Executer", mas algo está dando errado. Antes de tudo, code:
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).
- 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();
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).
Re: [Problema] Com file_finds e outros
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.
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.
Re: [Problema] Com file_finds e outros
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: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?
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?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.
Até's
Re: [Problema] Com file_finds e outros
já tive uns problemas com ele, sei que tenho, mas acho que não tá ativado mais.Só se seu PC não tiver o VBS, o que eu creio que é meio impossível. Todo Windows tem VBS,
O que é isso?que SO está usando?
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.
Re: [Problema] Com file_finds e outros
ENTÃO ATIVE, dorgas.theguitarmester escreveu:já tive uns problemas com ele, sei que tenho, mas acho que não tá ativado mais.
O Sistema Operacional, a versão do Windows. Mas isso não importa.theguitarmester escreveu:O que é isso?
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: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
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: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
Atélá'sExplicaçã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).
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos