Pokémon Script Project Forum Index

Manuel | Search
 Information des admins 
Si vous désirez parler de PSP ou obtenir du soutient là dessus, merci d'aller faire un tour sur https://pokemonworkshop.com/forum/index.php Imbécile heureux

[Script] Lecteur de GIF

 
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Ressources techniques -> Scripts
Previous topic :: Next topic   
Author Message
Angi-MK
Membre


Joined: 29 Oct 2008
Posts: 2,303
Localisation: Québec
Masculin

PostPosted: Sun 25 Oct - 06:52 (2009)    Post subject: [Script] Lecteur de GIF

Je ne comprends pas bien la technique, mais dans essential ils arrivent à afficher des gifs avec une DLL (http://www.sendspace.com/file/vex1u8) et ce code.

a qui veut tenter de déchiffrer cette chose... Coupable
Code:
module GifLibrary
  @@loadlib=Win32API.new("Kernel32.dll","LoadLibrary",'p','')
  if FileTest.exist?("gif.dll")
   PngDll=@@loadlib.call("gif.dll")
   GifToPngFiles=Win32API.new("gif.dll","GifToPngFiles",'pp','l')
   GifToPngFilesInMemory=Win32API.new("gif.dll","GifToPngFilesInMemory",'plp','l')
   CopyDataString=Win32API.new("gif.dll","CopyDataString",'lpl','l')
   FreeDataString=Win32API.new("gif.dll","FreeDataString",'l','')
  else
   PngDll=nil
  end
  def self.getDataFromResult(result)
   datasize=CopyDataString.call(result,"",0)
   ret=nil
   if datasize!=0
    data="0"*datasize
    CopyDataString.call(result,data,datasize)
    ret=data.unpack("V*")
   end
   FreeDataString.call(result)
   return ret
  end
end

class GifSprite
 # Creates a sprite from a GIF file with the specified
 # optional viewport.  Can also load non-animated bitmaps.
 def initialize(file,viewport=nil)
  @gifbitmaps=[]
  @gifdelays=[]
  @totalframes=0
  @framecount=0
  @sprite=Sprite.new(viewport)
  bitmap=nil
  filestring=pbGetFileString(file)
  filestring=pbGetFileString(file+".gif") if !filestring
  filestring=pbGetFileString(file+".png") if !filestring
  filestring=pbGetFileString(file+".jpg") if !filestring
  filestring=pbGetFileString(file+".bmp") if !filestring
  if filestring && filestring[0]!=0x47
   begin
    bitmap=BitmapCache.load_bitmap(file)
   rescue
    bitmap=nil
   end
  end
  if bitmap
   # Have a regular non-animated bitmap
   @totalframes=1
   @framecount=0
   @gifbitmaps=[bitmap]
   @gifdelays=[1]
   @sprite.bitmap=@gifbitmaps[0]
  else
   if filestring && GifLibrary::PngDll
    result=GifLibrary::GifToPngFilesInMemory.call(filestring,filestring.length,File.basename(file))
   else
    result=0
   end
   if result>0
    @gifdelays=GifLibrary.getDataFromResult(result)
    @totalframes=@gifdelays.pop
    for i in 0... @gifdelays.length
     @gifdelays[i]=[@gifdelays[i],1].max
     bmfile=sprintf("%s%d.png",File.basename(file),i);
     if FileTest.exist?(bmfile)
       @gifbitmaps.push(Bitmap.new(bmfile))
       File.delete(bmfile)
     else
       @gifbitmaps.push(Bitmap.new(1,1))
     end
     @sprite.bitmap=@gifbitmaps[0]
    end
   end
  end
 end
 def bitmap
  @totalframes<=0 ? nil : @gifbitmaps[0]
 end
 def totalframes
  @totalframes
 end
 def currentframe
  @totalframes<=0 ? 0 : @framecount%@totalframes
 end
 def disposed?
  @sprite.disposed?
 end
 def viewport
  @sprite.viewport
 end
 def width
  @gifbitmaps.length==0 ? 0 : @gifbitmaps[0].width
 end
 def height
  @gifbitmaps.length==0 ? 0 : @gifbitmaps[0].height
 end
 # This function must be called in order to animate
 # the GIF image.
 def update
  @sprite.update
  if @gifbitmaps.length>0
   @framecount+=2
   frame=@totalframes<=0 ? 0 : @framecount%@totalframes
   frametoshow=0
   for i in 0... @gifdelays.length
    frametoshow=i if @gifdelays[i]<=frame
   end
   @sprite.bitmap=@gifbitmaps[frametoshow]
  end
 end
 def dispose
  @sprite.dispose
  for i in @gifbitmaps
   i.dispose
  end
 end
 def flash(*arg); sprite.flash(*arg); end
 %w[
   x y z ox oy visible zoom_x zoom_y
   angle mirror bush_depth opacity blend_type
   color tone
 ].each do |s|
  eval <<-__END__
   def #{s}; @sprite.#{s}; end
   def #{s}=(value); @sprite.#{s}=value; end
  __END__
 end
end
Back to top
Visit poster’s website
Contenu Sponsorisé






PostPosted: Today at 17:47 (2020)    Post subject: [Script] Lecteur de GIF

Back to top
Rbzproject
Membre


Joined: 20 Apr 2008
Posts: 427
Localisation: Nante

PostPosted: Sun 25 Oct - 10:55 (2009)    Post subject: [Script] Lecteur de GIF

Ah,non essential n'utilise pas de GIF,pour faire une image animé, il prenne
une image comme celle-ci :

puis ils s'utilise un code pour découper l'image,enfin je crois. :D
Back to top
Angi-MK
Membre


Joined: 29 Oct 2008
Posts: 2,303
Localisation: Québec
Masculin

PostPosted: Sun 25 Oct - 22:41 (2009)    Post subject: [Script] Lecteur de GIF

Non non, les gifs marchent, testé et fonctionnel (sur essential)
Back to top
Visit poster’s website
Rbzproject
Membre


Joined: 20 Apr 2008
Posts: 427
Localisation: Nante

PostPosted: Mon 26 Oct - 00:11 (2009)    Post subject: [Script] Lecteur de GIF

Whaow ils sont de la chance.XD
Beh tu fais image par image c'est pareils.^^ par exemple=montrer img1,effacer img1 et montrer img2
non sérieux j'en sais rien pour le script la, dsl.
Back to top
Nuri Yuri
Team SDK


Joined: 15 Oct 2008
Posts: 6,383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

PostPosted: Mon 26 Oct - 13:42 (2009)    Post subject: [Script] Lecteur de GIF

Et on met quel code pour afficher  le fichier Gif ?
On fait comme RMXP ?
Back to top
Facebook Twitter
Angi-MK
Membre


Joined: 29 Oct 2008
Posts: 2,303
Localisation: Québec
Masculin

PostPosted: Mon 26 Oct - 16:15 (2009)    Post subject: [Script] Lecteur de GIF

Ouais, afficher image mais a la place d'un PNG, tu choisi ton gif.
Et ça marche nickel, je vous fais un exemple ce soir.
Back to top
Visit poster’s website
PiVa
Guest





PostPosted: Mon 26 Oct - 16:52 (2009)    Post subject: [Script] Lecteur de GIF

Oh, hâte de voir ça.
Back to top
Dark Palkia
Membre


Joined: 10 Jul 2009
Posts: 302

PostPosted: Mon 26 Oct - 22:38 (2009)    Post subject: [Script] Lecteur de GIF

sa marche sur RMXP sans PSP ?!?
Back to top
Angi-MK
Membre


Joined: 29 Oct 2008
Posts: 2,303
Localisation: Québec
Masculin

PostPosted: Tue 27 Oct - 04:57 (2009)    Post subject: [Script] Lecteur de GIF



provenant de :



ps: ne me demandez pas pourquoi le sol change de couleur... ?!
Back to top
Visit poster’s website
PiVa
Guest





PostPosted: Tue 27 Oct - 09:36 (2009)    Post subject: [Script] Lecteur de GIF

Le sol change de couleur car dans les fichiers gifs c'est pas la même palette de couleur ! Et donc je pense que ça influence tous la map active quand le gif est présent.

Je ne suis pas sûr mais je pense que c'est ça.
Ouvre un Gif, avec Paint, ouvre un sprite pokémon (par exemple ça pourrait être autre chose), copie colle le sprite pokémon dans la fenêtre paint du gif, normalement, j'ai pas tester, les couleurs vont automatiquement changer.

Edit : Bein enfaite non, ce que je viens de dire ne donne pas le résultat que je veux, pourtant j'ai déjà eu des trucs semblable avec paint quand on copie colle d'un autre format vers un gif, tant pis.

Une chose est sûr c'est le gif qui fais changer la couleur du sol.
Back to top
Angi-MK
Membre


Joined: 29 Oct 2008
Posts: 2,303
Localisation: Québec
Masculin

PostPosted: Tue 27 Oct - 14:33 (2009)    Post subject: [Script] Lecteur de GIF

une autre chose est sûr, le lecteur marche.
Back to top
Visit poster’s website
Display posts from previous:   
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Ressources techniques -> Scripts All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  

Index | Free forum | Free support forum | Free forums directory | Report a violation | Cookies | Charte | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Thème par Thomas et l'équipe de la refonte PSP 2012 (version 1.0)