coder en ruby directement dans le jeu !
Lun 3 Nov 2008 - 22:32
Qui n'a jamais rêvé de modifier les scripts en jouant ?
je crois que c'est possible maintenant, via une sorte de console
Echap pour fermer la console.
Entrée pour valider.
Rapport d'erreur
a coller au dessus de main:
je crois que c'est possible maintenant, via une sorte de console
Echap pour fermer la console.
Entrée pour valider.
Rapport d'erreur
a coller au dessus de main:
- Code:
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Window_Irb
# par berka v0.1 Rgss2
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#===============================================================
#
# rpgmakervx.1fr1.net
#
#===============================================================
class Window_Irb < Window_Base
def initialize
super(0,416+52,544,80)
self.contents = Bitmap.new(width - 32, height - 32)
self.opacity=150
self.z=6000
@script=""
refresh
update
end
def refresh
self.contents.clear
self.contents.draw_text(0,0, 544, 24, @script.to_s)
self.contents.draw_text(0,0, 544, 24, @result.to_s) if !@result.nil?
end
def dispose
while self.y<416+52
self.y+=4
Graphics.update
end
super
end
def update
loop do
self.y-=4 if self.y>416-52
Graphics.update
Keys.update
refresh
break if trigger?("esc")
@script += " " if trigger?("space")
if repeat?("del")
text = ""
(for i in 0...@script.size-1 do text+=@script[i].chr end) if @script.size != 0
@script = text
end
if press?("lmaj") || press?("rmaj") || active?("caps lock")
@script+= "A" if trigger?("a")
@script+= "B" if trigger?("b")
@script+= "C" if trigger?("c")
@script+= "D" if trigger?("d")
@script+= "E" if trigger?("e")
@script+= "F" if trigger?("f")
@script+= "G" if trigger?("g")
@script+= "H" if trigger?("h")
@script+= "I" if trigger?("i")
@script+= "J" if trigger?("j")
@script+= "K" if trigger?("k")
@script+= "L" if trigger?("l")
@script+= "M" if trigger?("m")
@script+= "N" if trigger?("n")
@script+= "O" if trigger?("o")
@script+= "P" if trigger?("p")
@script+= "Q" if trigger?("q")
@script+= "R" if trigger?("r")
@script+= "S" if trigger?("s")
@script+= "T" if trigger?("t")
@script+= "U" if trigger?("u")
@script+= "V" if trigger?("v")
@script+= "W" if trigger?("w")
@script+= "X" if trigger?("x")
@script+= "Y" if trigger?("y")
@script+= "Z" if trigger?("z")
@script+= "0" if trigger?("à")
@script+= "1" if trigger?("&")
@script+= "2" if trigger?("é")
@script+= "3" if trigger?('"')
@script+= "4" if trigger?("'")
@script+= "5" if trigger?("(")
@script+= "6" if trigger?("-")
@script+= "7" if trigger?("è")
@script+= "8" if trigger?("_")
@script+= "9" if trigger?("ç")
@script+= "°" if trigger?(")")
@script+= "+" if trigger?("=")
@script+= "¨" if trigger?("^")
@script+= "£" if trigger?("$")
@script+= "%" if trigger?("ù")
@script+= "µ" if trigger?("*")
@script+= ">" if trigger?("<")
@script+= "?" if trigger?(",")
@script+= "." if trigger?(";")
@script+= "/" if trigger?(":")
@script+= "§" if trigger?("!")
elsif press?("lalt") || press?("ralt")
@script+= "@" if trigger?("à")
@script+= "~" if trigger?("é")
@script+= '#' if trigger?('"')
@script+= "{" if trigger?("'")
@script+= "[" if trigger?("(")
@script+= "|" if trigger?("-")
@script+= "`" if trigger?("è")
@script+= "\\" if trigger?("_")
@script+= "^" if trigger?("ç")
@script+= "]" if trigger?(")")
@script+= "}" if trigger?("=")
else
@script+= "a" if trigger?("a")
@script+= "b" if trigger?("b")
@script+= "c" if trigger?("c")
@script+= "d" if trigger?("d")
@script+= "e" if trigger?("e")
@script+= "f" if trigger?("f")
@script+= "g" if trigger?("g")
@script+= "h" if trigger?("h")
@script+= "i" if trigger?("i")
@script+= "j" if trigger?("j")
@script+= "k" if trigger?("k")
@script+= "l" if trigger?("l")
@script+= "m" if trigger?("m")
@script+= "n" if trigger?("n")
@script+= "o" if trigger?("o")
@script+= "p" if trigger?("p")
@script+= "q" if trigger?("q")
@script+= "r" if trigger?("r")
@script+= "s" if trigger?("s")
@script+= "t" if trigger?("t")
@script+= "u" if trigger?("u")
@script+= "v" if trigger?("v")
@script+= "w" if trigger?("w")
@script+= "x" if trigger?("x")
@script+= "y" if trigger?("y")
@script+= "z" if trigger?("z")
@script+= "à" if trigger?("à")
@script+= "&" if trigger?("&")
@script+= "é" if trigger?("é")
@script+= '"' if trigger?('"')
@script+= "'" if trigger?("'")
@script+= "(" if trigger?("(")
@script+= "-" if trigger?("-")
@script+= "è" if trigger?("è")
@script+= "_" if trigger?("_")
@script+= "ç" if trigger?("ç")
@script+= ")" if trigger?(")")
@script+= "=" if trigger?("=")
@script+= "^" if trigger?("^")
@script+= "$" if trigger?("$")
@script+= "ù" if trigger?("ù")
@script+= "*" if trigger?("*")
@script+= "<" if trigger?("<")
@script+= "," if trigger?(",")
@script+= ";" if trigger?(";")
@script+= ":" if trigger?(":")
@script+= "!" if trigger?("!")
end
@script+= "0" if trigger?("0")
@script+= "1" if trigger?("1")
@script+= "2" if trigger?("2")
@script+= "3" if trigger?("3")
@script+= "4" if trigger?("4")
@script+= "5" if trigger?("5")
@script+= "6" if trigger?("6")
@script+= "7" if trigger?("7")
@script+= "8" if trigger?("8")
@script+= "9" if trigger?("9")
@script+= "+" if trigger?("+")
@script+= "-" if trigger?("n-")
@script+= "/" if trigger?("/")
@script+= "*" if trigger?("n*")
@script+= "." if trigger?(".")
execution if trigger?("enter")
refresh
end
dispose
end
def execution
begin
eval(@script)
rescue Exception
msg = "Type d'Erreur:\n\t#{$!.class}\n\n"
line = $!.message[7, 1].to_i
msg += "Numéro de ligne de l'Erreur:\n\t#{line}\n\n"
lines = @script.split(/\n/)
msg += "Ligne de l'Erreur:\n\t#{lines[(line - 1)]}\n\n"
msg += "Script exécuté:\n\t#{@script}"
print(msg)
end
return true
end
end
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#par lordrik et TLN
Key = Win32API.new("user32","GetAsyncKeyState",['i'],'i')
State = Win32API.new("user32","GetKeyState",['i'],'i')
GetPress = Win32API.new('user32', 'keybd_event', ['i', 'i', 'i'], ' ')
Alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
Chiffre = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
Commande = ["enter", "space", "esc", "shift", "ctrl", "alt"]
Fleche = ["left", "right", "up", "down"]
Fonction = ["F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12"]
Souris = ["click gauche", "click droit", "click milieu"]
def press?(n);R[n][0];end
def trigger?(n);R[n][1]==1;end
def dbtrigger(n);R[n][1]==2;end
def repeat?(n);R[n][2] %= 4;R[n][2].zero? && R[n][0];end
def hold(n);(R[n][2]%20).zero? && R[n][0];end
def release?(n);R[n][1]==-1;end
def active?(n);State.call(TAB_KEY[n]) & 1==1;end
def getpress(n)
GetPress.call(TAB_KEY[n], 0, 0)
GetPress.call(TAB_KEY[n], 0, 2)
end
class Keys
def Keys.update(*tab)
if tab != []
tab.each do |n|
m = R[n][0]
pr = Key.call(TAB_KEY[n]) != 0
tr = m == pr ? 0 : (pr ? (R[n][2].between?(1, 9) ? 2 : 1) : -1)
count = tr > 0 ? 0 : [R[n][2]+1, 20].min
R[n] = [pr, tr, count]
end
else
TAB_KEY.keys.each do |n|
m = R[n][0]
pr = Key.call(TAB_KEY[n]) != 0
tr = m == pr ? 0 : (pr ? (R[n][2].between?(1, 9) ? 2 : 1) : -1)
count = tr > 0 ? 0 : [R[n][2]+1, 20].min
R[n] = [pr, tr, count]
end
end
end
end
TAB_KEY = {
"click gauche" => 1, "sg" => 1, "click droit" => 2, "sd" => 2, "click milieu" => 4, "sm" => 4, "del" => 8, "tab" => 9, "enter" => 13, "shift" => 16, "ctrl" => 17,
"alt" => 18, "pause" => 19, "caps lock" => 20, "esc" => 27, "space" => 32, "pg up" => 33, "pg down" => 34, "end" => 35, "home" => 36, "left" => 37, "up" => 38,
"right" => 39, "down" => 40, "impr" => 44, "insert" => 45, "suppr" => 46, "à" => 48, "&" => 49, "é" => 50, '"' => 51, "'" => 52, "(" => 53, "-" => 54, "è" => 55,
"_" => 56, "ç" => 57, "a" => 65, "b" => 66, "c" => 67, "d" => 68, "e" => 69, "f" => 70, "g" => 71, "h" => 72, "i" => 73, "j" => 74, "k" => 75, "l" => 76, "m" => 77,
"n" => 78, "o" => 79, "p" => 80, "q" => 81, "r" => 82, "s" => 83, "t" => 84, "u" => 85, "v" => 86, "w" => 87, "x" => 88, "y" => 89, "z" => 90, "lwin" => 91, "rwin" => 92,
"fn" => 93, "altgr" => 95, "0" => 96,"1" => 97, "2" => 98, "3" => 99, "4" => 100, "5" => 101, "6" => 102, "7" => 103, "8" => 104, "9" => 105, "n*" => 106, "+" => 107,
"num" => 108, "n-" => 109, "." => 110, "/" => 111, "F1" => 112, "F2" => 113, "F3" => 114, "F4" => 115, "F5" => 116, "F6" => 117, "F7" => 118, "F8" => 119,
"F9" => 120, "F10" => 121, "F11" => 122, "F12" => 123, "vernum" => 144, "verdefil" => 145, "lmaj" => 160, "rmaj" => 161, "lctrl" => 162, "rctrl" => 163,
"lalt" => 164, "ralt" => 165, "$" => 186, "=" => 187, "," => 188, ";" => 190, ":" => 191, "ù" => 192, ")" => 219, "*" => 220, "^" => 221, "²" => 222, "!" => 223, "<" => 226
}
R = TAB_KEY.clone
R.keys.each { |k| R[k] = [false, false, 10]}
- ArayashikiMembre
- Nombre de messages : 655
Age : 34
Localisation : Trois lettres me demangent. Oserai-je ?
Distinction : FUCKING nouveau dieu du mal. Gros connard en chef.
Date d'inscription : 18/08/2008
Re: coder en ruby directement dans le jeu !
Lun 3 Nov 2008 - 23:04
Bon j'admets que c'est génial mais je ne vois pas trop l'utilité en fait ^^"
- Coco'Staffeux retraité
- Nombre de messages : 6578
Age : 31
Localisation : Nord/Douai
Distinction : EL DICTATOR COCO'
Coco-Dieu en puissance
Grand gourou suppléant de la secte des MAGIKARP
Leader charismatique des 2beStaffieux
N°1 du forum
Président, vice-présidents et membres honoraires de la cour suprême du forum
Président de l'association des grosses distinctions CMB
Date d'inscription : 02/07/2008
Re: coder en ruby directement dans le jeu !
Lun 3 Nov 2008 - 23:39
C'est ça le truc que je t'ai fait venir en te parlant tout à l'heure?
C'est sympa et ça peux être utile
C'est sympa et ça peux être utile
- ElscortoMembre
- Nombre de messages : 486
Age : 39
Localisation : Dans sa tombe en ce moment
Distinction : Homme de goût en chef.
Date d'inscription : 10/07/2008
Re: coder en ruby directement dans le jeu !
Mar 4 Nov 2008 - 9:52
Sympa mais comme dit Aray,ça peut servir à quoi?
Re: coder en ruby directement dans le jeu !
Mar 4 Nov 2008 - 9:58
Moi non plus, si ce n'est pour donner au joueur le choix d'actionner des Scripts et de les faire beuger
par la même occasion ^^'
Là je voie pas trop....
par la même occasion ^^'
Là je voie pas trop....
Re: coder en ruby directement dans le jeu !
Mar 4 Nov 2008 - 18:14
Aray ? c'est toi qui me demande a quoi ca sert ?
imagine, tu veux activer un interrupteur, modifier une variable, tester une methode, ouvrir une fenetre séparément d'une scene...
imagine, tu veux activer un interrupteur, modifier une variable, tester une methode, ouvrir une fenetre séparément d'une scene...
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum