Partagez
Aller en bas
Berka
Berka
Administrateur

Nombre de messages : 1831
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

Le grenier de Berka Empty Le grenier de Berka

le Ven 27 Fév 2009 - 23:37
Bonsoir à tous !

J'ai décidé sous ce pompeux titre (je m'en excuse mais je ne suis pas très inspiré ce soir), de déposer ici tous mes petits scripts.
Programmes trop petits pour faire l'objet d'un topic, ils ne seront peut etre pas utiles a tous, mais bon... pour éviter qu'ils soient perdus, je me lance :

Hack de la fonction require:
Spoiler:
Comme vous l'avez peut etre remarqué, enterbrain a protégé sa methode require, permettant d'importer des fichiers .rb dans rm.
voici comment contourner cette protection:
code:
Code:
def require(dll)
  $LOAD_PATH<<"./"
  Kernel.send(:require,dll)
end
appel:
Code:
require 'mon_fichier'

Détecter l'appui de n'importe quelle touche:
Spoiler:
Cette fonction renvoie true si une des touches de rm est pressée
code:
Code:
module Input
  def self.all_keys?
    self.update
    self.constants.each{|i|return true if Input.trigger?(eval(i))}
    return false
  end
end
appel:
Code:
p 'ok' if Input.all_keys?

Ouvrir le navigateur web:
Spoiler:
Cette fonction ouvre votre navigateur web par défaut selon l'adresse indiquée:
code:
Code:
def siteweb(url)
  url='http://'<<url if url[0..6]!='http://'
  Thread.new{system("explorer",url)}
end
appel:
Code:
siteweb('www.rpgmakervx-fr.com')

Conversion d'un Array vers un Hash:
Spoiler:
Transforme chaque valeur d'un tableau en une clé de hash. La donnée en argument est optionnelle, elle représente la valeur du hash, par défaut, nil
code:
Code:
class Array
  def to_hash(val=nil)
    return Hash[*self.collect{|v|[v,val]}.flatten]
  end
end
appel:
Code:
tab=["clé1","clé2","clé3"]
tab.to_hash(1)

Conversion de clés de Hash de la chaine au symbole:
Spoiler:
Cette fonction permet de convertir l'ensemble des chaines clés d'un hash vers des symboles.
code:
Code:
class Hash
   def string_to_sym
      inject({}){|m,(k,v)|m[k.to_sym]=v;m}
   end
end

appel:
Code:
h = {"valeur1" => 1, "valeur2" => 5}
h.string_to_sym
=> {:valeur1 = > 1, :valeur2 => 5}


Arrondi des coins d'un Bitmap:
Spoiler:
Permet d'arrondir facilement les coins d'un bitmap suivant un rayon donné. Ne pas utiliser en boucle, le processus étant très lourd.
code:
Code:
class Bitmap
  def coins(r=20,c=Color.new(0,0,0,0))
    for x in -r..0;for y in 0..-(r**2-x**2)**0.5+r
      self.set_pixel(x+r,y,c);self.set_pixel(self.width-y,(self.height-r)-x,c)
    end;end
    for x in 0..r;for y in 0..-(r**2-x**2)**0.5+r
      self.set_pixel(x+(self.width-r),y,c);self.set_pixel(y,x+(self.height-r),c)
    end;end
  end
end
appel:
Code:
@mon_bitmap.coins(rayon)

Sauver tous les scripts d'un rvdata en ruby pur:
Spoiler:
Permet de décrypter tous les scripts d'un fichier rvdata vers des fichiers séprarés en ruby. (Ne comptez pas sur moi pour vous montrer comment faire avec un fichier rgss2a)
code:
Code:
require "zlib"
$scripts={}
File.open("Scripts.rvdata","rb"){|f|Marshal.load(f).each{|s|$scripts[s[1]]=Zlib::Inflate.inflate(s[2])}}
Dir.mkdir("Scripts")rescue nil
$scripts.each_pair{|k,v|File.open("Scripts/#{k}.txt","wb")<<v}
appel:
Code:
lancez le fichier .rb placé dans le répertoire du fichier Scripts.rvdata

Arrondi à x chiffres après la virgule
Spoiler:
Permet de préciser le nombre de chiffres après la virgule lors d'un arrondi classique d'un décimal (float). Par défaut, arrondi à l'unité.
code:
Code:
class Float<Numeric
  alias :f_round :round unless $@
  def round(r=0)
    eval sprintf("%.#{r}f",self)
  end
end
appel:
Code:
3,14159265.round(3) #3 chiffres après la virgule

Parseur de chaîne
Spoiler:
Permet d'extraire le contenu de balises imbriquées. Retourne un tableau de chaines
code:
Code:
class String
   def parse(a="<>")
      s1,s2=*a.split(//)
      l,i,t=0,0,[]
      @preg||=eval("/\\#{s1}(.*?)\\#{s2}/")
      self.each_char{|c|l-=1 if c==s2   
         (t[i]||="";t[i]<<c)if l!=0
         (i+=1 if l==0;l+=1)if c==s1}
      t.compact.each{|l|t<<l.parse(a)if l[@preg]}
      t.compact
   end
end
appel:
Code:
t="ruby est (un) (super (hyper (voire plus) encore) grand) langage (!)"
t.parse("()") # arg: délimitateur
=> ["un", "super (hyper (voire plus) encore) grand", "!", ["hyper (voire plus) encore", ["voire plus"]]]

Ecrire à l'envers
Spoiler:
Indispensable: permet d'écrire à la kikoolol dans tous vos textes. Ce script n'est pas de moi, l'auteur est inconnu, mais il fallait que je le publie ! Je n'ai fait que le remanier à ma sauce.
code:
Code:
class String
   $KCODE="u"
   MAP=Hash.new{|h,k|k}
   {'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghiklmnopqrstuvwxyz'=>
      '∀ᗺↃᗡƎℲ⅁HIᒋʞ⅂ƜNOdԾᖈS⊥ႶΛMX⅄Zɐqɔpǝɟɓɥᴉʞ│ɯuodbɹsʇnʌʍxʎz',
      '123456890~!@$%^&*()_+{}:|<>?"#`[],./-='=>'|ᘔᗴhᔕ9860~¡Ꭷ$%⋁⅋*)(‾+}{:|><¿„#ˎ][‘˙/-='
   }.each{|o,d|o.split(//).zip(d.split(//)).each{|f,t|MAP[f]=t}}
   def flip
      MAP.values_at(*self.split(//).reverse).join
   end
end
appel:
Code:
p "Ruby peut etre un langage tres marrant !".flip
=> "¡ ʇuɐɹɹɐɯ sǝɹʇ ǝɓɐɓuɐ│ un ǝɹʇǝ ʇnǝd ʎqnᖈ"

Groupement d'éléments de tableau
Spoiler:
Pour combler la défaillance intellectuelle du précédent script, voici un autre plus intéressant qui permet de grouper les éléments d'un tableau.
code:
Code:
class Array
  def groupe_par(n);t=[]
    each_with_index{|a,b|t<<[]if b%n==0;t.last<<a};t
  end
end
appel:
Code:
p ["un","deux","trois","quatre","cinq","six","sept"].groupe_par(3)
=> [["un", "deux", "trois"], ["quatre", "cinq", "six"], ["sept"]]


Couleur hexadécimale vers objet Color Rgss (RGBA)
Spoiler:
Il peut arriver que l'on souhaite convertir des chaines de caractères représentant une couleur hexadécimale ("#3FE532") vers un objet Color de Rgss : Color.new(63, 229, 50).
code:
Code:
class String
  def to_rgb
    gsub!("#","")
    Color.new(*scan(/../).map{|c|c.to_i(16)})
  end
end
appel:
Code:
p "#3FE532".to_rgb
=> Color.new(63, 229, 50)

Symboles mathématiques en ruby
Spoiler:
Certains symboles mathématiques tels que le Sigma ou la Racine carrée peuvent raccourcir considérablement vos programmes. Voici un petit bout de code vous permettant de les utiliser. C'est du Ruby pur, je ne pense pas qu'il soit possible d'utiliser cela via Rgss.
code:
Code:
#!/usr/bin/env ruby -wKU
# la ligne précédente est à placer en début de fichier rb
module Kernel
  def ∑(*a);eval a.join('+');end
  def √(a);Math.sqrt(a);end
  def π;Math::PI;end
  def ∞;1.0/0;end
end
appel:
Code:
p ∑(1, 5, -4)
=> 2
p √(81)
=> 9
p π
=> 3.14159265358979
p ∞
=> Infinity

J'espère que ça vous servira !

berka


Dernière édition par Berka le Dim 29 Mai 2011 - 0:31, édité 23 fois
©SD-Arius
©SD-Arius
Membre

Nombre de messages : 495
Age : 43
Localisation : Khelonys...
Distinction :
Graphiste surdoué
Pieuvre multi-fonctions
Créateur hyperactif

Date d'inscription : 03/03/2008
http://www.sd-arius.over-blogcom/

Le grenier de Berka Empty Re: Le grenier de Berka

le Sam 28 Fév 2009 - 0:29
Merci, ça peut être utile à beaucoup de monde...
wilkyo
wilkyo
Membre

Nombre de messages : 316
Age : 28
Localisation : Loiret
Distinction : Sauveur de miches // Chou (l)

[Coco' Smile]

Adepte de Pedobear // Lécheur de lolis

[Mist' Wink]

Personnage Colorée // Instructeur de boulet

[Wax Rolling Eyes]
Date d'inscription : 01/09/2008
http://www.wilkyo.com

Le grenier de Berka Empty Re: Le grenier de Berka

le Sam 28 Fév 2009 - 20:43
Merci mon cher Berka !
Il me fallait justement de quoi ouvrir un site depuis mon projet !
Je te remercie fièrement et je teste tout de suite (j'édite après)

Edit1: Pour le moment, ça ne fonctionne pas... Le jeu se fige et le pc rame à mort...
!!! Au moment où j'écris, je viens de voir s'ouvrir une fenêtre... 5 minutes c'est long pour ouvrir. De plus ça l'a pas ouvert avec mon bon navigateur... Ça ouvre Internet Explorer... (comment faire ?)
Je tiendrais au courant
Berka
Berka
Administrateur

Nombre de messages : 1831
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

Le grenier de Berka Empty Re: Le grenier de Berka

le Mar 3 Mar 2009 - 20:05
nouvelle commande !

berka
Berka
Berka
Administrateur

Nombre de messages : 1831
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

Le grenier de Berka Empty Re: Le grenier de Berka

le Ven 20 Mar 2009 - 18:47
nouvelle commande !

berka
wilkyo
wilkyo
Membre

Nombre de messages : 316
Age : 28
Localisation : Loiret
Distinction : Sauveur de miches // Chou (l)

[Coco' Smile]

Adepte de Pedobear // Lécheur de lolis

[Mist' Wink]

Personnage Colorée // Instructeur de boulet

[Wax Rolling Eyes]
Date d'inscription : 01/09/2008
http://www.wilkyo.com

Le grenier de Berka Empty Re: Le grenier de Berka

le Ven 20 Mar 2009 - 20:36
Cher Berka,
Tu n'as pas répondu à mon problème.
En clair, j'aimerais savoir si on peut ouvrir Firefox.
Merci.
Berka
Berka
Administrateur

Nombre de messages : 1831
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

Le grenier de Berka Empty Re: Le grenier de Berka

le Ven 20 Mar 2009 - 21:45
Hélas, c'est le seul moyen de faire ca... Je ne sais pas si firefox est par défaut chez toi, mais normalement, cette commande ouvre le navigateur par defaut.

berka

Edit: une toute petite correction censée améliorer la rapidité de lancement... essaye pour voir !
wilkyo
wilkyo
Membre

Nombre de messages : 316
Age : 28
Localisation : Loiret
Distinction : Sauveur de miches // Chou (l)

[Coco' Smile]

Adepte de Pedobear // Lécheur de lolis

[Mist' Wink]

Personnage Colorée // Instructeur de boulet

[Wax Rolling Eyes]
Date d'inscription : 01/09/2008
http://www.wilkyo.com

Le grenier de Berka Empty Re: Le grenier de Berka

le Sam 21 Mar 2009 - 11:53
En effet, c'est plus rapide. (sur mon vieil ordi environ 1 minute, c'est beaucoup mieux)
Mais je suis désolé de le redire, mais c'est Internet Explorer qui s'ouvre...
Alors que firefox est mon navigateur par défaut...

De plus, le jeu se fige dès le moment où je lance le lien.
Mais ça c'est pas très grave...
Au pire j'ajouterais un $scene = nil

Merci encore pour les améliorations....
Peut être que j'ai un problème chez moi.
Faut que je test sur l'autre ordi puis je te redis ça.

Edit: J'ai testé sur l'autre ordi.
La vitesse se remarque !
Mais ça ouvre encore et toujours Internet Explorer...
Et le jeu fige, même après l'ouverture.
elementsquestproject
elementsquestproject
Membre

Nombre de messages : 57
Age : 23
Localisation : St-jean-sur-richelieu, QC
Distinction : aucune
Date d'inscription : 05/09/2009

Le grenier de Berka Empty Re: Le grenier de Berka

le Mar 8 Sep 2009 - 1:59
J'ai rien compris Neutral
Un peut d'aide s'il vous plait :jncpcqtvd:
Berka
Berka
Administrateur

Nombre de messages : 1831
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

Le grenier de Berka Empty Re: Le grenier de Berka

le Mar 8 Sep 2009 - 19:33
Un peu de précision s'il te plait ?
elementsquestproject
elementsquestproject
Membre

Nombre de messages : 57
Age : 23
Localisation : St-jean-sur-richelieu, QC
Distinction : aucune
Date d'inscription : 05/09/2009

Le grenier de Berka Empty Re: Le grenier de Berka

le Mer 9 Sep 2009 - 0:08
Bah juste tout! Le script sert a quoi??
zoneneutre
zoneneutre
Membre

Nombre de messages : 129
Age : 31
Distinction : aucune
Date d'inscription : 17/03/2008

Le grenier de Berka Empty Re: Le grenier de Berka

le Mer 9 Sep 2009 - 1:01
Il y a plusieurs script et c'est plutot pour les expert en script je crois ^^
elementsquestproject
elementsquestproject
Membre

Nombre de messages : 57
Age : 23
Localisation : St-jean-sur-richelieu, QC
Distinction : aucune
Date d'inscription : 05/09/2009

Le grenier de Berka Empty Re: Le grenier de Berka

le Ven 11 Sep 2009 - 0:11
D'accord parce que moi, j'ai rien compris :p
AnthO'
AnthO'
Membre

Nombre de messages : 2202
Age : 26
Localisation : Orléans
Distinction : Panda d'élite

[Wax Rolling Eyes]
Date d'inscription : 05/01/2008
http://anthonybourgouin.fr

Le grenier de Berka Empty Re: Le grenier de Berka

le Sam 12 Sep 2009 - 0:21
C'est seulement pour ajouter des fonctions totalement inutiles ^^'
Mais ça peut rester utile Very Happy
Berka
Berka
Administrateur

Nombre de messages : 1831
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

Le grenier de Berka Empty Re: Le grenier de Berka

le Sam 12 Sep 2009 - 19:24
Ha nan ! Je t'arrete tout de suite AnthO Laughing ces fonctions là sont compltement utiles, voire indispensables.

berka
Soket
Soket
Membre

Nombre de messages : 200
Age : 24
Localisation : Devant mon écran
Distinction : aucune
Date d'inscription : 27/06/2009

Le grenier de Berka Empty Re: Le grenier de Berka

le Sam 12 Sep 2009 - 21:07
Même si c'est inutile, c'est indispensable ... :P
avatar
Az'
Membre

Nombre de messages : 3318
Age : 74
Date d'inscription : 22/12/2007

Le grenier de Berka Empty Re: Le grenier de Berka

le Sam 12 Sep 2009 - 21:13
C'est très utile, surtout la méthode pour récupérer les scripts en fichiers .rb x)
Berka
Berka
Administrateur

Nombre de messages : 1831
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

Le grenier de Berka Empty Re: Le grenier de Berka

le Ven 9 Avr 2010 - 23:58
Ajout d'une nouvelle fonction
Berka
Berka
Administrateur

Nombre de messages : 1831
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

Le grenier de Berka Empty Re: Le grenier de Berka

le Sam 23 Oct 2010 - 14:15
Hop, ajout d'un nouveau bout de code: un parseur de chaine.
Berka
Berka
Administrateur

Nombre de messages : 1831
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

Le grenier de Berka Empty Re: Le grenier de Berka

le Dim 24 Oct 2010 - 14:40
Ajout de plusieurs codes (indispensables, bien entendu). Réorganisation de la mise en page.
Berka
Berka
Administrateur

Nombre de messages : 1831
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

Le grenier de Berka Empty Re: Le grenier de Berka

le Jeu 5 Mai 2011 - 22:51
Nouveau bout de code permettant l'utilisation des symboles mathématiques en ruby, tels que ∑ et √.
Berka
Berka
Administrateur

Nombre de messages : 1831
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

Le grenier de Berka Empty Re: Le grenier de Berka

le Dim 29 Mai 2011 - 0:32
Hop, ajout de la conversion de couleur hexa en couleur rgss Color (RGBA)
Contenu sponsorisé

Le grenier de Berka Empty Re: Le grenier de Berka

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum