Jump to content
Rpg²S Forum

*Upload e Download con RGSS


fanton95
 Share

Recommended Posts

Upload e Download con RGSS

Descrizione

 

Naturalmente funziona con una rete internet. Permette di collegarsi ad un sito web e scaricare un componente di questo (Banner, loghi etc..). Utile per sistemi come gli extra infatti le immagini vengono scaricate direttamente nella cartella del gioco.

Autore


Berka


Allegati

 

La Demo non è in italiano ma è comprensibilissima


Net Module

 

 

#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# Download & Upload Files with RGSS
# par berka v 2.1 rgss 1
# http://www.rpgmakervx-fr.com
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# thanks to: http://www.66rpg.com for documentation on wininet
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# ! do not use ftp which contains privates data
# ! this scripts need ftp account information !
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# Ftp :
# ââ€" ¼ receive :
# Net::Ftp.download("dir_on_ftp/file.zip","./Graphics")
# ââ€" ¼ send :
# Net::Ftp.upload("./Graphics/file.zip","Â §dir_on_ftp/file.zip")
# ââ€" ¼ make directory :
# Net::Ftp.mkdir("/dir_on_ftp")
# Http :
# ââ€" ¼ receive :
# Net::Http.download("url","./Graphics")
# ââ€" ¼ total octets downloaded :
# Net::HTTP.dloaded
# ââ€" ¼ size of file :
# Net::HTTP.size("test.zip")
# ââ€" ¼ % dl progress :
# Net::HTTP.progress("test.zip")
# ââ€" ¼ transfer time:
# Net::HTTP.temps("test.zip")
# ââ€" ¼ list files :
# Net::HTTP.transfers
# ââ€" ¼ file loaded? :
# Net::HTTP.loaded?("test.zip")
# ââ€" ¼ octets transfered :
# Net::HTTP.transfered
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
module Berka
	module NetError
		ErrConIn="Unable to connect to Internet"
		ErrConFtp="Unable to connect to Ftp"
		ErrConHttp="Unable to connect to the Server"
		ErrNoFFtpIn="The file to be download doesn't exist"
		ErrNoFFtpEx="The file to be upload doesn't exist"
		ErrTranHttp="Http Download is failed"
		ErrDownFtp="Ftp Download is failed"
		ErrUpFtp="Ftp Upload is failed"
		ErrNoFile="No file to be download"
		ErrMkdir="Unable to create a new directory"
	end
end
module Net
	W='wininet'
	SPC=Win32API.new('kernel32','SetPriorityClass','pi','i').call(-1,128)
	IOA=Win32API.new(W,'InternetOpenA','plppl','l').call('',0,'','',0)
	IC=Win32API.new(W,'InternetConnectA','lplpplll','l')
	print(Berka::NetErrorErr::ConIn)if IOA==0
	module FTP
		FSCD=Win32API.new(W,'FtpSetCurrentDirectoryA','lp','l')
		FGF=Win32API.new(W,'FtpGetFileA','lppllll','l')
		FPF=Win32API.new(W,'FtpPutFile','lppll','l')
		FCD=Win32API.new(W,'FtpCreateDirectoryA','lp','l')
		module_function
		def init
			#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-#
			ftp="ftp.server.com" #
			port=21 # A modifier !
			identifiant="user" #
			motdepasse="password" #
			#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-#
			@fb=IC.call(IOA,ftp,port,identifiant,motdepasse,1,0,0)
			ftp,port,identifiant,motdepasse=[nil]*4 # efface les ids par sécurité
			(print(Berka::NetError::ErrConFtp))if @fb==0
		end
		def download(ext,int='./')
			init if @fb.nil?
			c=ext.split('/').pop
			if FSCD.call(@fb,ext.gsub(c,''))!=0
				print(Berka::NetErrorErr::ErrDownFtp)if FGF.call(@fb,c,"#{int}/#{c}",0,32,2,0)==0
			else
				print(Berka::NetErrorErr::ErrNoFFtpIn)
			end
		end
		def mkdir(rep)
			init if @fb.nil?
			print(Berka::NetErrorErr::ErrMkdir)if FCD.call(@fb,rep)==0
		end
		def upload(int,ext)
			init if @fb.nil?
			if FSCD.call(@fb,ext)&&File.exist?(int)
				print(Berka::NetErrorErr::ErrUpFtp)if FPF.call(@fb,int,ext,2,0)==0
			else
				print(Berka::NetErrorErr::ErrNoFFtpEx)
			end
		end
	end
	#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
	module HTTP
		IOU=Win32API.new(W,'InternetOpenUrl','lppllp','l')
		IRF=Win32API.new(W,'InternetReadFile','lpip','l')
		ICH=Win32API.new(W,'InternetCloseHandle','l','l')
		HQI=Win32API.new(W,'HttpQueryInfo','llppp','i')
		module_function
		def sizeloaded(i='');@read[i];end
			def transfered;@dloaded;end
				def transfers;@dls;end
					def progress(i='');(@read[i].to_f/@size[i]*100);end
						def loaded?(i='');@read[i]>=@size[i]rescue nil;end
							def temps(i='');@tps[i]if loaded?(i);end
								def size(i='');@size[i];end
									def download(url,int='./')
										@dloaded||=0;@dls||={};@i||=-1;@size||={};@read||={};@tps={}
										a=url.split('/');serv,root,fich=a[2],a[3..a.size].join('/'),a[-1]
										print(Berka::NetErrorErr::ErrNoFile)if fich.nil?
										@dls[fich]=Thread.start(url,int){|url,int|txt='';t=Time.now
										Berka::NetErrorErr::ErrConHttp if(e=IC.call(IOA,serv,80,'','',3,1,0))==0
										f=IOU.call(IOA,url,nil,0,0,0)
										HQI.call(f,5,k="\0"*1024,[k.size-1].pack('l'),nil)
										@read[fich],@size[fich]=0,k.delete!("\0").to_i
										loop do
											buf,n=' '*1024,0
											r=IRF.call(f,buf,1024,o=[n].pack('i!'))
											n=o.unpack('i!')[0]
											break if r&&n==0
											txt << buf[0,n]
											@read[fich]=txt.size
										end
										(File.open(int+fich,'wb')<
										@dloaded+=@read[fich]
										ICH.call(f);sleep(0.01)
										@tps[fich]=Time.now-t}
									end
								end
							end

 



Scene di esempio:

 

 

 

#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# Téléchargement de fichiers en Rgss
# par berka v 2.1 rgss 1
# www.rpgmakervx-fr.com
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# EXEMPLES !
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
class Window_Barre
	def initialize
		super(100,50,440,380)
		self.contents=Bitmap.new(width-32,height-32)
		self.contents.font.name=$fontface
		self.contents.font.size=$fontsize
		# on initialise un tableau de téléchargement
		@dls=Net::HTTP.transfers
		refresh
	end
	def refresh
		i=0
		self.contents.clear
		self.contents.font.size=22
		self.contents.draw_text(-16,0,self.width,24,"Http: Gestionnaire de téléchargement",1)
		self.contents.font.size=20
		# pour chaque téléchargement
		@dls.each_key{|file|
		self.contents.draw_text(0,56*(i+=1),200,24,"--> #{file}")
		self.contents.fill_rect(131,56*i+25,202,10,Color.new(0,0,0,150))
		self.contents.font.size=14
		# on récupere le pourcentage du téléchargement
		pr=Net::HTTP.progress(file)/100
		# on écrit le rapport: octets téléchargés / taille totale
		rat="#{Net::HTTP.sizeloaded(file)/1024}/#{Net::HTTP.size(file)/1024} ko"
		self.contents.draw_text(132,56*i+32,150,24,rat,1)
		# on récupère le temps de téléchargement du fichier
		s=Net::HTTP.temps(file)
		# on l'écrit
		self.contents.draw_text(20,56*i+20,self.width,24,"Fait en #{s} secs")
		# on écrit le pourcentage de progression
		self.contents.draw_text(342,56*i+26,self.width,24,"#{(pr*100).to_i}%")rescue nil
		# et on trace la barre
		self.contents.fill_rect(132,56*i+26,pr*200,8,Color.new(0,255,0))
		self.contents.font.size=20}
	end
end
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
class Scene_Download
	def main
		@fond=Spriteset_Map.new
		# chargement des fichiers
		Net::HTTP.download('http://download59.mediafire.com/313lzxpdytpg/gyok0vgmm2m/hero+creator.zip')
		Net::HTTP.download('http://www.google.fr/intl/fr_fr/images/logo.gif')
		Net::HTTP.download('http://www.rpgrevolution.com/forums/banner3.gif')
		Net::HTTP.download('http://i42.servimg.com/u/f42/12/32/03/86/bannie11.jpg')
		#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
		@barre=Window_Barre.new
		Graphics.transition
		loop do
			Input.update
			Graphics.update
			update
			break if $scene != self
		end
		Graphics.freeze
		@fond.dispose
		@barre.dispose
	end
	def update
		@barre.refresh
		$scene=Scene_Map.new if Input.trigger?(Input::B)
	end
end

 



Bugs e Conflitti Noti

La prima volta che lo ho lanciato ha dato errore poi lo ho eseguito dal progetto ed è andato tutto bene

Altri Dettagli

 

Lo script scaricherà il logo di google e il banner del forum dove è stato postato, niente di pericoloso non preoccupatevi. A presto lo script anche per il VX.

Edited by Dilos
Script monoriga sistemato.

"Oh perché dobbiamo essere così, noi? – ci domandiamo talvolta allo specchio - con questa faccia, con questo corpo? – alziamo una mano, nell'incoscienza; e il gesto ci resta sospeso. Ci pare strano che l'abbiamo fatto noi. Ci vediamo vivere. […] In certi momenti di silenzio interiore, in cui l'anima nostra si spoglia di tutte le funzioni abituali, e gli occhi nostri diventano più acuti e più penetranti, noi vediamo noi stessi nella vita, e in se stessa la vita, quasi in una modalità arida, inquietante; ci sentiamo assaltare da una strana impressione, come se, in un baleno, ci si chiarisse una realtà diversa da quella che normalmente percepiamo, una realtà vivente oltre la vista umana, fuori delle forme dell'umana ragione." [L.P.]

 

http://img43.imageshack.us/img43/4231/vgmiud3f.png

 

 

http://rpg2s.net/gif/SCContest1Oct.gif http://www.rpg2s.net/img/fablecontest3rd.png http://rpg2s.net/gif/SCContest1Oct.gif

 

RPG by forum

 

 

 

 

 

 

 

 

 

 

http://img59.imageshack.us/img59/6/av2w.png

Nome: Erech (In elfico "lancia solitaria", da er (ereb) = "solitario" e ech = "lancia")

 

Età: 19

 

Razza: Umani

 

Descrizione: Erech è un ragazzo alto e slanciato, dalla corporatura tonica e scattante. Ha capelli lunghi e violacei come gli occhi che però sono spesso coperti in parte da un elegante cappello nero. Veste con uno stile classico, una camicetta bianca sotto una giacca nera e un fiocco al collo ornato con un'immancabile piuma azzurra. Gli piace leggere e scrivere e ama tradurre testi in lingue antiche.

 

Carattere: Il ragazzo ha un carattere chiuso e introverso, è di poche parole e preferisce i fatti alle parole. Non si relaziona spesso con i coetanei o se lo fa significa che si fida cecamente della persona che ha davanti; è diffidente e tende a non raccontare fatti del suo passato, belli o brutti che siano.

 

 

Link to comment
Share on other sites

No non ho capito a che serve ò_o

 

Editato il primo post adesso è più chiaro

"Oh perché dobbiamo essere così, noi? – ci domandiamo talvolta allo specchio - con questa faccia, con questo corpo? – alziamo una mano, nell'incoscienza; e il gesto ci resta sospeso. Ci pare strano che l'abbiamo fatto noi. Ci vediamo vivere. […] In certi momenti di silenzio interiore, in cui l'anima nostra si spoglia di tutte le funzioni abituali, e gli occhi nostri diventano più acuti e più penetranti, noi vediamo noi stessi nella vita, e in se stessa la vita, quasi in una modalità arida, inquietante; ci sentiamo assaltare da una strana impressione, come se, in un baleno, ci si chiarisse una realtà diversa da quella che normalmente percepiamo, una realtà vivente oltre la vista umana, fuori delle forme dell'umana ragione." [L.P.]

 

http://img43.imageshack.us/img43/4231/vgmiud3f.png

 

 

http://rpg2s.net/gif/SCContest1Oct.gif http://www.rpg2s.net/img/fablecontest3rd.png http://rpg2s.net/gif/SCContest1Oct.gif

 

RPG by forum

 

 

 

 

 

 

 

 

 

 

http://img59.imageshack.us/img59/6/av2w.png

Nome: Erech (In elfico "lancia solitaria", da er (ereb) = "solitario" e ech = "lancia")

 

Età: 19

 

Razza: Umani

 

Descrizione: Erech è un ragazzo alto e slanciato, dalla corporatura tonica e scattante. Ha capelli lunghi e violacei come gli occhi che però sono spesso coperti in parte da un elegante cappello nero. Veste con uno stile classico, una camicetta bianca sotto una giacca nera e un fiocco al collo ornato con un'immancabile piuma azzurra. Gli piace leggere e scrivere e ama tradurre testi in lingue antiche.

 

Carattere: Il ragazzo ha un carattere chiuso e introverso, è di poche parole e preferisce i fatti alle parole. Non si relaziona spesso con i coetanei o se lo fa significa che si fida cecamente della persona che ha davanti; è diffidente e tende a non raccontare fatti del suo passato, belli o brutti che siano.

 

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...