InternetResource DLL

Gex, Dll, DyLib, Js e ogni tipo di estensione per GameMaker
Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

InternetResource DLL

Messaggio da Sla »

Salve a tutti :salut:
Vi presento una idea molto simpatica, dll che permette di scaricare file da interet,e in particolare utilizzandoli per caricare le vostre risorse (per ora sono caricabili sprite e background).
Funzioni presenti nella DLL:
DownloadFile(file_address,output_fname)
-Scarica un qualunque file da internet, specificando
sotto file_address il suo indirizzo, come "http://www.splash.it/icone/grafica-background.png"
e sotto output_fname il nome del file che verrà salvato sul vostro computer.
LoadSprite(file_address,imgnumb,precise,transparent,smooth,preload,xorigin,yorigin)
-Restituisce una sprite, caricata da internet. Per file_address mettete pure quello
che ho spiegato sopra, mentre per gli altri argomenti seguite quanto spiegato per la
funzione sprite_add nel manuale.
LoadBackground(file_address,transparent,smooth,preload)
-Uguale alla funzione precedente solo che restituisce un background.

Potreste magari utilizzarlo per caricare immagini nei vostri one script game, o per
distribuire molto velocemente i vostri giochi:
date solo l'exe che utilizza le risorse da internet. (senza quindi dover distribuire anche le risorse insieme all'exe)

edit: Dimenticavo, la dll! :lol:

[L’estensione zip è stata disattivata e non può essere visualizzata.]

Dentro c'è anche un file progetto di esempio.
Ultima modifica di Sla il 09/12/2009, 13:50, modificato 1 volta in totale.
eppure mi sembra tutto giusto...

Avatar utente
maz85
Admin
Messaggi: 8287
Iscritto il: 07/02/2004, 15:57
Specialità: Nientologo
Località: Oblio
Contatta:

Re: InternetResrouce DLL

Messaggio da maz85 »

Molto utile devo dire!!

Filo
GMI Honor
Messaggi: 6097
Iscritto il: 09/08/2008, 14:31
Contatta:

Re: InternetResrouce DLL

Messaggio da Filo »

crediti?

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: InternetResrouce DLL

Messaggio da Homunculus »

Sembra una ficata, ma il gioco si blocca fintanto che non é scaricata l'immagine?

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: InternetResrouce DLL

Messaggio da Sla »

@Filo: per i crediti, sicuramente non mi da fastidio vederli, ma non voglio mettere obblighi.
@Homunculus: sì purtroppo si blocca, ciclo while, per questo consiglio di non limitarsi a caricare sotto risorsa di gm il file, quando è grande il mio
suggerimento è, dopo un controllo file_exists(..), di salvarlo sul computer per caricarlo esternamente quando il gioco viene riaperto in modo da non doverlo riscaricare.
edit: Aggiunto script per caricare suoni:
LoadSound(file_address,kind,preload)
(file_address già spiegato prima, kind e preload spiegate dal manuale sotto sound_add)

Codice: Seleziona tutto

var fname,i,return_value,format;
format = string_copy(argument0,string_length(argument0)-3,4);
fname = "temp."+format;
i = 0;
while file_exists(fname)
{
    i += 1;
    fname = "temp"+string(i)+format;
}
DownloadFile(argument0,fname);
return_value = sound_add(fname,argument1,argument2)
file_delete(fname);
return return_value;
Qui vi posto un esempio di suono che ho trovato cazzeggiando:
"http://www.anpi.it/canzoniere/Bella_ciao.mp3"
eppure mi sembra tutto giusto...

Avatar utente
Peppo95
GMI Advanced
Messaggi: 1613
Iscritto il: 05/11/2008, 19:10
Specialità: C Sharp - GML - C
Contatta:

Re: InternetResrouce DLL

Messaggio da Peppo95 »

Super_Slascio ha scritto: Qui vi posto un esempio di suono che ho trovato cazzeggiando:
"http://www.anpi.it/canzoniere/Bella_ciao.mp3"
:lol:
Solite liste mie:
1) QUESTO POST NON E' FLAME


Chi lo riterrà tale verrà aspirato da un calamaro gigante.Esattamente questa notte... Muhahaha.

Immagine
Immagine

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: InternetResrouce DLL

Messaggio da Sla »

che ti ridi?
eppure mi sembra tutto giusto...

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: InternetResrouce DLL

Messaggio da Homunculus »

Slascio non ho ben capito il motivo di quel ciclo while... Senza di quello la funzione DownloadFile blocca comunque l'esecuzione del programma fintanto che il file non é stato scaricato?

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: InternetResrouce DLL

Messaggio da Sla »

Il ciclo while è utilizzato per leggere i byte del file da scaricare, certo se usassi ad esempio un ciclo for il gioco immagino non si interromperebbe.
Potrei far ritornare 0 dalla funzione finchè il file non è stato scaricato completamente ed 1 quando invece lo è, così lo script DownloadFile verrebbe da eseguire in step
simile a questo:

Codice: Seleziona tutto

var i;
if !variable_local_exists("i") i = 0;
if i = 1 exit;
i = chiamata_funzione_download_dalla_dll("blabla.estensione",destinazione)
eppure mi sembra tutto giusto...

Avatar utente
BaronVsCorsar
GMI VIP
Messaggi: 4699
Iscritto il: 14/02/2004, 12:05
Specialità: Saccenza
Uso: GameMaker 8.1
Località: Ferrara
Contatta:

Re: InternetResrouce DLL

Messaggio da BaronVsCorsar »

Super_Slascio ha scritto:LoadSound(file_address,kind,preload)
Hai sempre delle belle idee Slascio! Ma più che per fornire un download snello (per poi avere un primo lancio da tempi biblici...) lo vedo utile per fornire aggiornamenti.

A questo fine l'unico vero script gml che sarebbe molto comodo per fare quanto hai detto è uno script che scarica un file txt con una serie di righe, una per ogni risorsa scaricabile, che oltre all'url ed al nome file comunica tutti i parametri GM con cui deve essere importato - quando è scaricato legge file per file e (se non già esistenti) li scarica per poi importarli (sempre).
Devi prevedere a video una forma di output (forzandone la scrittura a video) in % tra download file attuale e % avanzamento numero file, e la possibilità (aggiornando lo I/O buffer) di interrompere il download.
Per aggiornare il resource pack, basta aggiornare il file txt sul server e fornire le nuove risorse, alla prima partita il gioco si autoaggiorna...

Ovvio poi che per gestire le risorse interne si deve assegnare loro un numero progressivo (in automatico) perchè il porgramma le possa riconoscere
ad esempio:
risorsa_aggiornata[12]= id_di_risorsa_aggiornata_12_ottenuta_all'atto_dell'importazione;

poi il programmatore, che ovviamente deve anche rendere "aggiornabili" le mappe / livelli del gioco in maniera analoga riferendosi alle varie risorse tramite questo identificativo di update con il numero 12 (seguendo l'esempio sopra), e ricavare il vero id corrispondente con
risorsa_aggiornata[12];
ma questo poi spetta al programmatore che fa uso di contenuti aggiornabili automaticamente :sisisi:

mmmm... credo che nessuno si imbarcherà in una impresa del genere... magari Maz per apecar :lol:
ImmagineSchiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?

Avatar utente
Peppo95
GMI Advanced
Messaggi: 1613
Iscritto il: 05/11/2008, 19:10
Specialità: C Sharp - GML - C
Contatta:

Re: InternetResrouce DLL

Messaggio da Peppo95 »

Super_Slascio ha scritto:che ti ridi?
"Bella ciao" mi ricorda tante cose... :lol: Ma non stiamo a sindacalizzare...
Appunto per quello che ho detto sopra: Hai sbagliato il titolo del topic (credo): InternetResrouce DLL
Solite liste mie:
1) QUESTO POST NON E' FLAME


Chi lo riterrà tale verrà aspirato da un calamaro gigante.Esattamente questa notte... Muhahaha.

Immagine
Immagine

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: InternetResource DLL

Messaggio da Sla »

Quanto la fai lunga Baron, per dei giochi amatoriali!
E va bene, quando ho tempo e voglia faccio una seconda versione che non interrompe il gioco e che restituisce con una funzione la dimensione del file da scaricare
e quanto è stato scaricato fino al momento.
Peppe, hai ragione :oops: , corretto.
eppure mi sembra tutto giusto...

bellazio
Membro d'elite
Messaggi: 1167
Iscritto il: 06/06/2008, 17:49
Località: Normandy
Contatta:

Re: InternetResrouce DLL

Messaggio da bellazio »

Peppo95 ha scritto:
Super_Slascio ha scritto: Qui vi posto un esempio di suono che ho trovato cazzeggiando:
"http://www.anpi.it/canzoniere/Bella_ciao.mp3"
:lol:
Non si ride della canzoni sacre :furioso:

:mrgreen:
Immagine

Avatar utente
Peppo95
GMI Advanced
Messaggi: 1613
Iscritto il: 05/11/2008, 19:10
Specialità: C Sharp - GML - C
Contatta:

Re: InternetResource DLL

Messaggio da Peppo95 »

Super_Slascio ha scritto:Quanto la fai lunga Baron, per dei giochi amatoriali!
E va bene, quando ho tempo e voglia faccio una seconda versione che non interrompe il gioco e che restituisce con una funzione la dimensione del file da scaricare
e quanto è stato scaricato fino al momento.
Peppe, hai ragione :oops: , corretto.
Peppe è peppinoas, io peppo :mrgreen: ( Per essere pignoli è... :lol: )


@Bellazio : :lol: :attention:
Solite liste mie:
1) QUESTO POST NON E' FLAME


Chi lo riterrà tale verrà aspirato da un calamaro gigante.Esattamente questa notte... Muhahaha.

Immagine
Immagine

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: InternetResource DLL

Messaggio da Sla »

Visto che ultimamente ho fatto questo lavoro per peppo, lo posto.
(ovviamente si usa la mia dll).
Quello di cui sto parlando consiste nell'ottenere tutti i link a un determinato sito (ad esempio tutti i link a un filmato su megavideo) di una pagina, e nel memorizzare questi insieme al nome con cui vengono visualizzati in una struttura di dati.
Per farlo si usa questa funzione:
HTML_GetLinks(pagina_web,link_da_trovare)
code:

Codice: Seleziona tutto

DownloadFile(argument0,temp_directory+"\ciaosssss.htm")
var fname,address,map_links,file,html_code;
fname = temp_directory+"\ciaosssss.htm";
address = argument1;
html_code = "";
map_links = ds_map_create();
file = file_text_open_read(fname);
while !file_text_eof(file)
{
    html_code += file_text_read_string(file);
    file_text_readln(file); 
}
file_text_close(file);
file_delete(fname);
var i;
for(i=1;i<=string_count(address,html_code);i+=1)
{
    var pos;
    pos = string_pos(address,html_code);
    var pos2;
    pos2 = pos+1;
    while(string_char_at(html_code,pos2)!='"')
    pos2 += 1;
    link = string_copy(html_code,pos,pos2-pos);
    while(string_copy(html_code,pos2,4)!="</a>")
    pos2 += 1;
    pos = pos2-1;
    while(string_char_at(html_code,pos)!=">")
    pos -= 1;
    name = string_copy(html_code,pos+1,pos2-(pos+1));
    ds_map_add(map_links,ds_map_size(map_links)+1,link+"|"+name);
    html_code = string_copy(html_code,pos2,string_length(html_code));
}
return map_links;
I link con i loro nomi di visualizzazione sono classificati in una struttura di dati ritornata da questa funzione. Se volete potete aggiungere anche questi script per ottenere relativamente a un numero (la posizione nella struttura) il link e il nome.
Links_GetLink(links,numero)

Codice: Seleziona tutto

var value;
value = ds_map_find_value(argument0,argument1);
var pos;
pos = string_pos("|",value);
return string_copy(value,0,pos-1);
Links_GetName(links,numero)

Codice: Seleziona tutto

var value;
value = ds_map_find_value(argument0,argument1);
var pos;
pos = string_pos("|",value);
return string_copy(value,pos+1,string_length(value));
e infine Links_GetNum(links) //ritorna il numero di links salvati nella struttura di dati.

Codice: Seleziona tutto

return ds_map_size(argument0);
un esempio di utilizzo è:

Codice: Seleziona tutto

links = HTM_GetLinks("http://filmstreamingdb-a.blogspot.com/","http://www.megavideo.com");
for(i=1;i<Links_GetNum(links);i+=1)
{
    link[i] = Links_GetLink(links,i);
    name[i] = Links_GetName(links,i);
}
eppure mi sembra tutto giusto...

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: InternetResource DLL

Messaggio da Tizzio »

:uppa:
Riesumo perchè necessito di questa sacra dll
Vorrei salvare il sorgente di una pagina in una variabile... è possibile?
grazie.

Avatar utente
maz85
Admin
Messaggi: 8287
Iscritto il: 07/02/2004, 15:57
Specialità: Nientologo
Località: Oblio
Contatta:

Re: InternetResource DLL

Messaggio da maz85 »

NetRead DLL

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: InternetResource DLL

Messaggio da Sla »

oppure, con la mia
DownloadFile("http://google.it","google.it.htm");
--> apri google.it.htm con i file testuali e leggine il contenuto in una variabile
eppure mi sembra tutto giusto...

Avatar utente
maz85
Admin
Messaggi: 8287
Iscritto il: 07/02/2004, 15:57
Specialità: Nientologo
Località: Oblio
Contatta:

Re: InternetResource DLL

Messaggio da maz85 »

Sorry, credevo non riuscisse a scaricarla e ti domandasse di ripostarla :spat:
Il collegamento è pure nello spazio del forum.

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: InternetResource DLL

Messaggio da Tizzio »

Super_Slascio ha scritto:oppure, con la mia
DownloadFile("http://google.it","google.it.htm");
--> apri google.it.htm con i file testuali e leggine il contenuto in una variabile
:uppa:
slascio questo processo blocca il gioco?

ho letto sopra che c'era un modo per non farlo bloccare...allora?

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti