Pagina 1 di 2

InternetResource DLL

Inviato: 07/12/2009, 18:43
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.

Re: InternetResrouce DLL

Inviato: 07/12/2009, 19:54
da maz85
Molto utile devo dire!!

Re: InternetResrouce DLL

Inviato: 07/12/2009, 20:26
da Filo
crediti?

Re: InternetResrouce DLL

Inviato: 07/12/2009, 20:35
da Homunculus
Sembra una ficata, ma il gioco si blocca fintanto che non é scaricata l'immagine?

Re: InternetResrouce DLL

Inviato: 07/12/2009, 22:22
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"

Re: InternetResrouce DLL

Inviato: 08/12/2009, 10:18
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:

Re: InternetResrouce DLL

Inviato: 08/12/2009, 14:40
da Sla
che ti ridi?

Re: InternetResrouce DLL

Inviato: 08/12/2009, 15:12
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?

Re: InternetResrouce DLL

Inviato: 08/12/2009, 17:48
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)

Re: InternetResrouce DLL

Inviato: 08/12/2009, 19:23
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:

Re: InternetResrouce DLL

Inviato: 08/12/2009, 23:05
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

Re: InternetResource DLL

Inviato: 09/12/2009, 18:19
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.

Re: InternetResrouce DLL

Inviato: 09/12/2009, 19:17
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:

Re: InternetResource DLL

Inviato: 09/12/2009, 19:40
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:

Re: InternetResource DLL

Inviato: 20/03/2010, 14:01
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);
}

Re: InternetResource DLL

Inviato: 15/02/2011, 21:52
da Tizzio
:uppa:
Riesumo perchè necessito di questa sacra dll
Vorrei salvare il sorgente di una pagina in una variabile... è possibile?
grazie.

Re: InternetResource DLL

Inviato: 15/02/2011, 22:02
da maz85
NetRead DLL

Re: InternetResource DLL

Inviato: 16/02/2011, 22:06
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

Re: InternetResource DLL

Inviato: 16/02/2011, 22:13
da maz85
Sorry, credevo non riuscisse a scaricarla e ti domandasse di ripostarla :spat:
Il collegamento è pure nello spazio del forum.

Re: InternetResource DLL

Inviato: 26/03/2011, 4:08
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?