Oniromancie: Scripts - Pack Formulaire V1.00 : Niveau avancé en scripting


Comment ça marche?

Aëdemphia
Par Sylvanor

Fighting Robots Quest
Par Boulon

Forstale
Par Ødd Clock

Geex
Par roys

Inexistence
Par Falco

La Légende d'Ibabou
Par Zaitan

Lije
Par Gaetz

LoveMaster
Par Cuddlefox

Sarcia
Par Kaëlar

Super Mario RPG - Lost Souls
Par Omegabowser

Jeux: Monster World RPG / Jeux: Pif et Hercule / News: Mise à jour de RPG Maker 2003 / Tutos: Création de charset / Jeux: FAYLINAWA /

Chat  (48 connectés)

Bienvenue
visiteur !






publicité RPG Maker!

Statistiques

Liste des
membres


Contact

105 connectés actuellement

9258996 visiteurs
depuis l'ouverture

41 visiteurs
aujourd'hui

Groupe Facebook

Barre de séparation

Partenaires




TOP
GAMEMAKING


Les 5 plus
visités

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Pixelandgame

Tashiroworld

HeyMakeGames

Au hasard

Le Blog d'Exaheva

HeyMakeGames

Off Game

Les deux derniers

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Nos autres partenaires

Devenir
partenaire


Barre de séparation

Un site du réseau
War Paradise

Annuaires référenceurs




Pack Formulaire V1.00 : Niveau avancé en scripting
Script pour RPG Maker XP
Ecrit par fenryo


Bonjour,

Bon chose promise chose dûe, voici le pack Formulaire V 1.0 conçu et codé par moi (Fenryo) en me servant des modules Keyboard et Mouse Ultime de Zeus81 (Merci en passant) :biere


UTILITES DU PACK FORMULAIRE :


image



Bon à quoi ça sert ?
- C'est pour les gros codeurs comme moi qui avons beaucoup de classes custom dans nos jeux, et qui avons besoins d'éditeurs pour nos objets personnels (les vaisseaux que vous creez, etc)
- Par exemple, vous avez créé une classe "Clip" qui doit animer des personnages en script
- Pour creer 25 clips il vous faudra 25 scripts qui crée chacun,
ou bien soufrir avec des windows_Input toute naze qui font 500 bugs par lignes
- Avec cet ensemble de classes vous gagner 80% du temps pour cette tâche, puisque vous pourrez
en utilisant ces éléments carrément vous creer une mini extension RMXP avec bouton cliquable,
ligne de valeur entière et booléenne, champ de saisie
de façon très ergonomique
- De plus les contrôles des valeurs de champs et les clics souris allègent le code au lieu d'utiliser
des fenêtres et des curseurs (dont il faut calculer la position et l'index !!).
:sriden


PRE-REQUIS :

Tout grand pouvoir implique de grandes responsabilités... euh pardon :p
Assurez vous d'avoir dans votre projet les fichiers RGSS100J.dll et RGSS102J.dll
pour faire marcher les modules Keyboard et Mouse de Zeus81 que voici, je les ai légèrement
retouché pour gerer quelque légers bugs, copier ces scripts au dessus de Main :




Portion de code:




# MADE BY ZEUS 81

Keys = ["", "Souris Gauche", "Souris Droit", "Cancel", "Souris Milieu",
"Souris X1", "Souris X2", "", "Retour", "Tab", "", "", "Clear", "Entrée", "", "",
"Maj", "Ctrl", "Alt", "Pause", "Verr Maj", "Kana / Hangul", "", "Junja", "Final",
"Hanja / Kanji", "", "Echap", "Convert", "Non Convert", "Accept", "Mode Change",
"Espace", "Page Up", "Page Down", "Fin", "Origine", "Flèche Gauche",
"Flèche Haut", "Flèche Droite", "Flèche Bas", "Select", "Print", "Execute",
"Impression Ecran", "Inser", "Suppr", "Help", "0", "1", "2", "3", "4", "5", "6",
"7", "8", "9", "", "", "", "", "", "", "", "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", "Windows Gauche", "Windows Droit", "Applications", "", "Sleep",
"Num 0", "Num 1", "Num 2", "Num 3", "Num 4", "Num 5", "Num 6", "Num 7", "Num 8",
"Num 9", "Num *", "Num +", "Num Separator", "Num -", "Num .", "Num /", "F1",
"F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "F13",
"F14", "F15", "F16", "F17", "F18", "F19", "F20", "F21", "F22", "F23", "F24", "",
"", "", "", "", "", "", "", "Verr Num", "Verr Défil", "OEM", "OEM", "OEM", "OEM",
"OEM", "", "", "", "", "", "", "", "", "", "Maj Gauche", "Maj Droit",
"Ctrl Gauche", "Ctrl Droit", "Alt Gauche", "Alt Droit", "Browser Back",
"Browser Forward", "Browser Refresh", "Browser Stop", "Browser Search",
"Browser Favorites", "Browser Start and Home", "Volume Mute", "Volume Down",
"Volume Up", "Media Next Track", "Media Previous Track", "Media Stop",
"Media Play/Pause", "Start Mail", "Start Media", "Start Application 1",
"Start Application 2", "", "", "OEM £ $ ¤", "OEM + = }", "OEM ? ,", "OEM",
"OEM . ;", "OEM / :", "OEM % ù", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "OEM °) ]", "OEM µ *",
"OEM ¨ ^", "OEM ²", "OEM § !", "", "OEM", "OEM < >", "OEM", "OEM", "Process",
"OEM", "Packet", "", "OEM", "OEM", "OEM", "OEM", "OEM", "OEM", "OEM", "OEM",
"OEM", "OEM", "OEM", "OEM", "OEM", "Attn", "CrSel", "ExSel", "Erase EOF", "Play",
"Zoom", "", "PA1", "Clear", ""]



# Faites Keyboard.update à chaque frame pour mettre à jour le clavier.
# Vous pouvez aussi mettre à jour juste certaines touches en faisant :
# Keyboard.update(tab), tab étant un tableau (Array) des touches.
# On retrouve les fonctions trigger?, press? et repeat? comme dans Input.
# Une fonction Keyboard.release?(key) pour voir si une touche vient d'être
# relachée et une fonction Keyboard.toggle?(key) pour voir si une touche comme
# Verr Maj, Verr Num ou Verr Défil est vérouillée.
# Vous pouvez aussi changer l'état d'appuie d'une touche avec :
# Keyboard.set_key_state(key, state), state = true ou false

module Keyboard

GetKeyboardState = Win32API.new('user32', 'GetKeyboardState', 'P', 'I')
SetKeyState = Win32API.new('user32', 'keybd_event', 'IIII', '')
@pos = Array.new(256, 0)
@pos_buffer = @pos.pack('C*')
@states = @pos.dup

def self.update(keys=0...256)
GetKeyboardState.call(@pos_buffer)
@pos = @pos_buffer.unpack('C*')
for key in keys
if @pos[key][7] == 1 ; @states[key] += 1
elsif @states[key] > 0; @states[key] = -1
else ; @states[key] = 0
end
end
end
def self.set_key_state(key, state)
SetKeyState.call(key, 0, (state ? 0 : 2), 0)
end
def self.toggle?(key)
if (key != nil) then
return (@states[key] and @pos[key][0] == 1)
end

end
def self.press?(key)
if (key != nil) then
return (@states[key] and @states[key] > 0)
end

end
def self.trigger?(key)
if (key != nil) then
return (@states[key] and @states[key] == 1)
end

end
def self.release?(key)
if (key!= nil) then
return (@states[key] and @states[key] == -1)
end
end
def self.repeat?(key)
if (key!= nil) then
return case @states[key]
when 1; true
when nil, -1, 0, 2...Graphics.frame_rate/10*4; false
else; (@states[key] % (Graphics.frame_rate/10) == 0)
end
end

end

end







voici le module Mouse pour gerer la souris


Portion de code:





# MADE BY ZEUS 81



# Il y a trois touches possibles : Mouse::LEFT, Mouse::RIGHT et Mouse::MIDDLE
# pour respectivement clic gauche, clic droit et clic milieu.
# Vous pouvez trouvez les fonctions trigger?, press? et repeat? comme dans Input
# Mais aussi Mouse.release?(key) pour voir si une touche est relachée
# et Mouse.double_trigger?(key) pour les double clics.
# On récupère les coordonnées du curseur avec Mouse.x et Mouse.y
# On peut aussi déplacer le curseur avec Mouse.x = new_x et Mouse.y = new_y
# Pour changer la visibilité du curseur : Mouse.visible = true ou false
# L'apparence du curseur peut être modifiée en mettant un fichier nommé
# "Cursor.png" dans "Graphics/Windowskins/"
# Enfin il ne faut pas oublier de faire un Mouse.update à chaque frame.

module Mouse

LEFT = 1
RIGHT = 2
MIDDLE = 4

open('Game.ini') {|file| file.read[/Title=(.+)\n/]}
HWnd = Win32API.new('user32', 'FindWindow', 'PP', 'L').call('RGSS Player', $1)
GetDoubleClickTime = Win32API.new('user32', 'GetDoubleClickTime', '', 'I')
GetCursorPos = Win32API.new('user32', 'GetCursorPos', 'P', 'I')
SetCursorPos = Win32API.new('user32', 'SetCursorPos', 'ii', 'I')
ScreenToClient = Win32API.new('user32', 'ScreenToClient', 'LP', 'I')
ShowCursor = Win32API.new('user32', 'ShowCursor', 'i', 'I' )
GetKeyState = Win32API.new('user32', 'GetKeyState', 'I', 'I')

Cursor = Sprite.new
Cursor.z = 0xFFFF
if FileTest.exist?('Graphics/Windowskins/Cursor.png')
Cursor.bitmap = RPG::Cache.windowskin('Cursor')
else
Cursor.bitmap = Bitmap.new(8, 8)
Cursor.bitmap.fill_rect(0, 0, 3, 7, Color.new(0,0,0))
Cursor.bitmap.fill_rect(0, 0, 7, 3, Color.new(0,0,0))
Cursor.bitmap.fill_rect(5, 5, 3, 3, Color.new(0,0,0))
Cursor.bitmap.fill_rect(1, 1, 1, 5, Color.new(255,255,255))
Cursor.bitmap.fill_rect(1, 1, 5, 1, Color.new(255,255,255))
Cursor.bitmap.fill_rect(6, 6, 1, 1, Color.new(255,255,255))
end

@pos = Array.new(2, 0)
@pos_buffer = @pos.pack('i*')
@states = {LEFT=>[0, 0], RIGHT=>[0, 0], MIDDLE=>[0, 0]}

def self.update
GetCursorPos.call(@pos_buffer)
@pos = @pos_buffer.unpack('i*')
ScreenToClient.call(HWnd, @pos_buffer)
Cursor.x, Cursor.y = @pos_buffer.unpack('i*')
time = Graphics.frame_count-GetDoubleClickTime.call*Graphics.frame_rate/1000
for key in @states.keys
if GetKeyState.call(key)[15] == 1; @states[key][0] += 1
elsif @states[key][0] > 0 ; @states[key][0] = -1
else ; @states[key][0] = 0
end
if @states[key][1] > time; @states[key][1] = -1 if @states[key][0] == 1
else; @states[key][1] = (@states[key][0] == 1 ? Graphics.frame_count : 0)
end
end
end

def self.press?(key)
return (@states[key][0] and @states[key][0] > 0)
end
def self.trigger?(key)
return (@states[key][0] and @states[key][0] == 1)
end
def self.double_trigger?(key)
return (@states[key][0] and @states[key][1] == -1)
end
def self.release?(key)
return (@states[key][0] and @states[key][0] == -1)
end
def self.repeat?(key)
return case @states[key][0]
when 1; true
when nil, -1, 0, 2...Graphics.frame_rate/10*4; false
else; (@states[key][0] % (Graphics.frame_rate/10) == 0)
end
end

def self.x
return Cursor.x
end
def self.x=(x)
@pos[0] += x - Cursor.x
Cursor.x = x
SetCursorPos.call(*@pos)
end
def self.y
return Cursor.y
end
def self.y=(y)
@pos[1] += y - Cursor.y
Cursor.y = y
SetCursorPos.call(*@pos)
end
def self.visible
return Cursor.visible
end
def self.visible=(visible)
loop {break if (visible ? ShowCursor.call(0) < 0 : ShowCursor.call(1) > 0)}
Cursor.visible = visible
end

end






Bon ensuite il faut une classe hyper importante pour le CSS du formulaire, copier
ce code au dessus de Main, en dessous des deux autres plus haut. En observant les commentaires
du script vous saurez où changer les éléments de l'aspect de vos textes de formulaires



Portion de code:





# classe CSS MADE BY FENRYO

class Css
#=========== declaration des variables

attr_accessor :nom
attr_accessor :police
attr_accessor :id
attr_accessor :taille
attr_accessor :bold
attr_accessor :italic
attr_accessor :couleur

def initialize

@couleur = [255, 255, 255, 255]
@nom = "default"
@police = "Verdana"
@id = 0
@taille = 0
@bold = false
@italic = false

end


def dispose
self.couleur = nil
self.id = nil
self.taille = nil
self.bold = nil
self.italic = nil
self.police = nil

end



end# fin de la classe



def css?(nom)

if ($css_database_formu != nil) then
k = $css_database_formu.size - 1
i= 0
trouv = 0

while (i <= k)
if ($css_database_formu.nom == nom) then
return i
end
i +=1
end
return nil
else
return nil
end

end




# ========== MODIFIER LES VALEURS DES CHAMPS POUR CHANGER LA POLICE =====================================#

# ==================== DU FORMULAIRE ====================



def create_css_formu1 #===== Police des libelés du formulaire

$css_database_formu = []

k = $css_database_formu.size
$css_database_formu[k] = Css.new

$css_database_formu[k].id = k
$css_database_formu[k].nom = "libele"
$css_database_formu[k].police = "Verdana"
$css_database_formu[k].couleur = [10, 10, 10, 255]
$css_database_formu[k].taille = 13
$css_database_formu[k].bold =true



end #====Fin create_css


def create_css_formu2 #===== Police des valeurs


k = $css_database_formu.size
$css_database_formu[k] = Css.new
$css_database_formu[k].id = k
$css_database_formu[k].nom = "valeur"
$css_database_formu[k].police = "Verdana"
$css_database_formu[k].couleur = [80, 10, 10, 255]
$css_database_formu[k].taille = 13




end #====Fin create_css




def creation_bd_css_formu

if ( $css_database != nil) then

for i in (0 .. $css_database.size-1)
$css_database_formu.dispose
end
$css_database_formu= nil

end

create_css_formu1
create_css_formu2



end




class Bitmap

def text_style2 (nom = "default")

if ($css_database_formu != nil) then
i = css?(nom)

if ( i != nil) then
aux = $css_database_formu
self.font.name = $css_database_formu.police
self.font.size = $css_database_formu.taille
self.font.color = Color.new( aux.couleur[0], aux.couleur[1], aux.couleur[2], aux.couleur[3])
self.font.bold = aux.bold
self.font.italic = aux.italic


else
print "erreur dans la classe Window_base"
print "le nom de css '" + nom + "' n'est pas valide"
end

else
print "erreur dans la classe BITMAP CSS en haut !!"
print "pas de base de donnée pour les css"
end
end

end

creation_bd_css_formu





Bon maintenant copier toutes ces petites images dans Graphics/Pictures de votre jeu

image image
renommer la première image "btn_copy" et celle en surbrillance "btn_copy_2"

image
renommer la première image "btn_moins" et celle en surbrillance "btn_moins_2"

image image
renommer la première image "btn_plus" et celle en surbrillance "btn_plus_2"



image image
renommer la première image "btn_erase" et celle en surbrillance "btn_erase_2"


image
image
renommer la première image "btn_next" et celle en surbrillance "btn_next_2"

image
image
renommer la première image "btn_prev" et celle en surbrillance "btn_prev_2"


image
image
renommer la première image "btn_save_text" et celle en surbrillance "btn_save_text_2"


image
image
renommer la première image "btn_write" et celle en surbrillance "btn_write_2"


image
image
renommer la première image "btn_paste" et celle en surbrillance "btn_paste_2"

Citation:


Voilà sinon vous pouvez toujours faire vos propres puce de 24 x 24 qui ont ces noms







LE CONTENU DU PACK:

Le pack est en fait consitué des 3 classes suivantes :

==============> 1) La classe Btn_clik
Qui vous permet de faire des boutons cliquables avec effet survolé textuel ou imagé.
Voici les boutons que vous devez mettre dans le dossier Picture pour que le script marche

>> Pour l'utiliser :
- tout est basé sur l'initialisation (voir les commentaires dans le script)
mais le plus important est que vous pourrez faire des tests dans vos script en faisant



Portion de code:




if (monbouton.press == true) then
#pour tester si le bouton est préssé
end

if (monbouton.trig == true) then
#pour tester si le bouton est appuyé simplement
end




Citation:


Il ne faudra pas oublier de faire monbouton.update dans la fenêtre ou scène qui va afficher votre bouton



- Copier le code de la classe au dessus de Main, en dessous des modules Keyboard, Mouse, et CSS plus haut


Voici le code de la classe :


Portion de code:






# PACK FORMULAIRE v1.0 par FENRYO !!! :::::: Bouton Clic

#classe pour bouton cliquable, faire un bouton.update à chaque frame
# après création.
# Tous se joue à l'initialisation


class Btn_clik < Sprite
attr_accessor :img_bak
attr_accessor :img_up
attr_accessor :txt
attr_accessor :txt_up
attr_accessor :survol
attr_accessor :press #-----> vérifié l'état pressé du bouton avec cet attribut
attr_accessor :trig
attr_accessor :active
attr_accessor :delai
attr_accessor :fstart


def initialize (xo, yo, larg, long, img_n, img_u = nil, txt_n= nil, txt_u= nil )

# DETAILS INITIALISATION

# xo et yo : les positions initiales du bouton à l'écran
# lar et long : largeur et longeur du bouton
# img_n : image normale du bouton à mettre dans Graphics/Picture
# img_u : image survolée du bouton à mettre dans Graphics/Picture
# txt_n : texte normal du bouton
# txt_u : texte survolé du bouton


super()
self.x = xo
self.y = yo
self.z = 5000
self.bitmap = Bitmap.new(larg, long);
@txt_up = txt_u
@txt = txt_n
@survol = false
@press = false
@trig = false
@active = true
@delai = 5
@fstart = Graphics.frame_count #commence à compter


if (img_n != nil) then
@img_bak = img_n
bitmap_src = RPG::Cache.picture ( @img_bak )
img_rect = Rect.new(0, 0, bitmap_src.width, bitmap_src.height)
self.bitmap.blt(0, 0, bitmap_src, img_rect)
end

if (@txt != nil) then
self.bitmap.text_style (nom = "description_shop")
self.bitmap.draw_text(0, 0, self.bitmap.width, self.bitmap.height, @txt)
end


if (img_u != nil) then
@img_up = img_u
end

end# fin initialise




def update

@press = self.press?
@trig = self.trigger?

deb = false
if ((self.survole?) and (@survol == false)) then #bouton survolé
@survol = true
if (@img_up != nil) then
bitmap_src = RPG::Cache.picture ( @img_up )
img_rect = Rect.new(0, 0, bitmap_src.width, bitmap_src.height)
self.bitmap.clear
deb = true
self.bitmap.blt(0, 0, bitmap_src, img_rect)
end

if (!deb) then
self.bitmap.clear
end

if (@txt_up != nil) then
self.bitmap.text_style (nom = "description_shop")
self.bitmap.draw_text(0, 0, self.bitmap.width, self.bitmap.height, @txt_up)
else
if (@txt != nil) then
self.bitmap.text_style (nom = "description_shop")
self.bitmap.draw_text(0, 0, self.bitmap.width, self.bitmap.height, @txt)
end
end
end



if ((self.survole? == false) and (@survol == true)) then #bouton non survolé
@survol = false
deb = false
if (@img_bak != nil) then
bitmap_src = RPG::Cache.picture ( @img_bak )
img_rect = Rect.new(0, 0, bitmap_src.width, bitmap_src.height)
self.bitmap.clear
deb = true
self.bitmap.blt(0, 0, bitmap_src, img_rect)
end

if (!deb) then
self.bitmap.clear
end

if (@txt != nil) then
self.bitmap.text_style (nom = "description_shop")
self.bitmap.draw_text(0, 0, self.bitmap.width, self.bitmap.height, @txt)
end

end

end # fin de update


def press?


ress = false
if (Mouse.press?(Mouse::LEFT))
if ((Mouse.x < (self.x + self.bitmap.width)) and (Mouse.x > self.x) ) then
if((Mouse.y < (self.y + self.bitmap.height)) and (Mouse.y > self.y) ) then

if ((Graphics.frame_count - @fstart) >= @delai) then #limiter la sensibilité du bouton
ress = true
@fstart = Graphics.frame_count
end

end
end
end
return ress
end #fin de press?


def trigger?

ress = false
if (Mouse.trigger?(Mouse::LEFT))
if ((Mouse.x < (self.x + self.bitmap.width)) and (Mouse.x > self.x) ) then
if((Mouse.y < (self.y + self.bitmap.height)) and (Mouse.y > self.y) ) then
ress = true
end
end
end
return ress
end #fin de trigger?


def survole?

oki = false
if ((Mouse.x < (self.x + self.bitmap.width)) and (Mouse.x > self.x) ) then
if((Mouse.y < (self.y + self.bitmap.height)) and (Mouse.y > self.y) ) then
oki = true
end
end
return oki
end

end # fin de classe








==============> 2) La classe Formuline

Cette classe a deux fonctionalités selon la façon de l'initialiser (regarder plus bas dans la partie EXEMPLE et aussi
dans les commentaires de script):


image
Une fonctionalité pour définir des valeurs entières en cliquant sur des boutons

image
Une fonctionalité pour définir des valeurs sur true ou false



Pour les nombre entier ça peut être intéressant lorsque vous voulez faire un formulaire où vous allez regler des détails analogiques, comme par exemple la position d'un rectangle de collision par rapport à un perso (c'est pour ça que je l'ai créé en fait). Je posterai un tuto la dessus un jour..




>> Pour l'utiliser :

- Définissez votre type de ligne au niveau de l'initialisation en faisant maligne = Formuline.new (XXXXXXXXX) avec la position, les dimensions, etc.
- Copier le code de la classe au dessus de Main, en dessous des modules Keyboard, Mouse, et CSS plus haut
- Cliquez sur les boutons pour changer les valeurs

- Si c'est une ligne de valeur entière, vous récuperez la valeur par script en faisant


Portion de code:




cequejeveux = maligne.val



- Si c'est une ligne de valeur booleene vous récuperez la valeur par script en faisant


Portion de code:




cequejeveux = maligne.valb



Citation:


Il ne faudra pas oublier de faire maligne.update dans la fenêtre ou la scène qui va afficher votre ligne de formulaire




Voici le code de la classe



Portion de code:






# PACK FORMULAIRE v1.0 par FENRYO !!! :::::: Ligne formulaire

#Cette classe vous permet de creer des lignes pour valeur entière ou booléene
# vous pouvez changez le "pas" d'augmentation pour augmenter/baisser plus vite .
# la valeur entière.
# quand vous aurez codé votre formulaire vous pourrez récuperer les valeurs
# entières dans val et les valeurs booléennes dans valb


class Formuline
attr_accessor :bakg
attr_accessor :libele
attr_accessor :val #====> valeur entière ici
attr_accessor :pas
attr_accessor :valb #====> valeur booléenne ici
attr_accessor :boltipe
attr_accessor :valtxt
attr_accessor :pastxt
attr_accessor :libtxt
attr_accessor :btnvalp
attr_accessor :btnvalm
attr_accessor :btnpasp
attr_accessor :btnpasm
attr_accessor :csslib
attr_accessor :cssval
attr_accessor :valimup #====> spécifiez la limite supérieure de la valeur entière
attr_accessor :valiminf #====> spécifiez la limite inférieure de la valeur entière

def initialize (xo, yo, larg, long, libel, boltip = false, valini = nil, valinib = false )

# DETAILS INITIALISATION

# xo et yo : les positions initiales de la ligne à l'écran
# lar et long : largeur et longeur de la ligne
# libel: Libelé de la ligne
# boltip : mettre à true à l'initialisation pour avoir un choix entre true et false
# valini : valeur entière initiale (pratique pour modifier un objet perso et voir ses anciens paramètres)
# valinib : Valeur initiale booléenne


@val = valini
@valb = valinib
@pas = 1
@libele = libel +" : "
@csslib = "libele"
@cssval = "valeur"
@boltipe = boltip
@valiminf = -50000
@valimup = -1

@bakg = Sprite.new
@bakg.x = xo
@bakg.y = yo
@bakg.z = 1000
@bakg.bitmap = Bitmap.new(larg, long)
couleur = Color.new(255, 255, 255, 100)
@bakg.bitmap.fill_rect(0, 0, larg, long, couleur)

@libtxt = Sprite.new
@libtxt.x = @bakg.x
@libtxt.y = @bakg.y - 3
@libtxt.z = 1100
@libtxt.bitmap = Bitmap.new(larg, 20)
@libtxt.bitmap.text_style2(@csslib)
@libtxt.bitmap.draw_text(8, 0, @libtxt.bitmap.width, @libtxt.bitmap.height, @libele)
@libtxt.bitmap.draw_text(0, 3, @libtxt.bitmap.width, 15, "_____________________________________________")

@posy = @bakg.y + 12

if (! @boltipe) then
#affichage mode non booléen
@valtxt = Sprite.new
@valtxt.x = @bakg.x + 5
@valtxt.y = @posy
@valtxt.z = 1150
@valtxt.bitmap = Bitmap.new(55, 25)
@valtxt.bitmap.text_style2(@cssval)
@valtxt.bitmap.draw_text(0, 0, @valtxt.bitmap.width, @valtxt.bitmap.height, @val.to_s)

@btnvalm = Btn_clik.new(@valtxt.x + 40, @valtxt.y+3, 16, 16, "btn_moins", "btn_moins_2", nil, nil)
@btnvalp = Btn_clik.new(@valtxt.x + 60, @valtxt.y+3, 16, 16, "btn_plus", "btn_plus_2", nil, nil)


@libpastxt = Sprite.new
@libpastxt.x = @btnvalp.x + @btnvalp.bitmap.width
@libpastxt.y = @posy
@libpastxt.z = 1150
@libpastxt.bitmap = Bitmap.new(40, 25)
@libpastxt.bitmap.text_style2(@csslib)
@libpastxt.bitmap.draw_text(0, 0, @libpastxt.bitmap.width, @libpastxt.bitmap.height, " | Pas : ")

@pastxt = Sprite.new
@pastxt.x = @libpastxt.x + 35
@pastxt.y = @posy
@pastxt.z = 1150
@pastxt.bitmap = Bitmap.new(40, 25)
@pastxt.bitmap.text_style2(@cssval)
@pastxt.bitmap.draw_text(0, 0, @pastxt.bitmap.width, @pastxt.bitmap.height, @pas.to_s)

@btnpasm = Btn_clik.new(@pastxt.x + 30, @valtxt.y+3, 16, 16, "btn_moins", "btn_moins_2", nil, nil)
@btnpasp = Btn_clik.new(@pastxt.x + 50, @valtxt.y+3, 16, 16, "btn_plus", "btn_plus_2", nil, nil)

else
# affichage mode booléen

@valtxt = Sprite.new
@valtxt.x = @libtxt.x + 10
@valtxt.y = @posy
@valtxt.z = 1150
@valtxt.bitmap = Bitmap.new(60, 25)
@valtxt.bitmap.text_style2(@csslib)
@valtxt.bitmap.draw_text(0, 0, @valtxt.bitmap.width, @valtxt.bitmap.height, @valb.to_s)

@btnvalm = Btn_clik.new(@valtxt.x + 40, @valtxt.y+3, 16, 16, "btn_prev", "btn_prev_2", nil, nil)
@btnvalp = Btn_clik.new(@valtxt.x + 60, @valtxt.y+3, 16, 16, "btn_next", "btn_next_2", nil, nil)

end

end #fin initialize




def dispose
@libtxt.dispose
@bakg.dispose
@valtxt.dispose
@btnvalm.dispose
@btnvalp.dispose


if (!@boltipe) then
@btnpasp.dispose
@btnpasm.dispose
@libpastxt.dispose
@pastxt.dispose
end

end # fin dispose




def update

@btnvalm.update
@btnvalp.update

if (!@boltipe) then
# update affichage non booléen
@btnpasm.update
@btnpasp.update

if (@btnvalm.press) and (@val > @valiminf) then
@val -= @pas
@valtxt.bitmap.clear
@valtxt.bitmap.draw_text(0, 0, @valtxt.bitmap.width, @valtxt.bitmap.height, @val.to_s)
end

if (@btnvalp.press) then
if (@valimup != -1) then
if (@val < @valimup) then
@val += @pas
@valtxt.bitmap.clear
@valtxt.bitmap.draw_text(0, 0, @valtxt.bitmap.width, @valtxt.bitmap.height, @val.to_s)
end
else
@val += @pas
@valtxt.bitmap.clear
@valtxt.bitmap.draw_text(0, 0, @valtxt.bitmap.width, @valtxt.bitmap.height, @val.to_s)
end
end

if (@btnpasp.press) then
case @pas
when 1
@pas = 10
when 10
@pas = 50
when 50
@pas = 100
when 100
@pas = 500
when 500
@pas = 1000
when 1000
@pas = 1 # effet terre ronde
end
@pastxt.bitmap.clear
@pastxt.bitmap.draw_text(0, 0, @pastxt.bitmap.width, @pastxt.bitmap.height, @pas.to_s)
end

if (@btnpasm.press) then
case @pas
when 1
@pas = 1000 # effet terre ronde
when 10
@pas = 1
when 50
@pas = 10
when 100
@pas = 50
when 500
@pas = 100
when 1000
@pas = 500
end
@pastxt.bitmap.clear
@pastxt.bitmap.draw_text(0, 0, @pastxt.bitmap.width, @pastxt.bitmap.height, @pas.to_s)
end


else
# update affichage booléen
if (@btnvalm.press) or (@btnvalp.press) then
@valb = !@valb
@valtxt.bitmap.clear
@valtxt.bitmap.draw_text(0, 0, @valtxt.bitmap.width, @valtxt.bitmap.height, @valb.to_s)
end
end


end # fin de update





end #fin de classe





==============> 3) La classe Champ_text

Le saint Graal de la customisation Scriptienne lol, c'est le champ de saisie

Comme son nom l'indique vous taperez un texte (ou un chiffre au clavier) et vous pourrez récupérez sa valeur
par script pour autre chose. Vous pouvez avoir deux type de champ de saisie



image
Champ de saisie simple pour du texte ou des nombres

image
Un champ de saisie avec intervalle de valeur, (le champ ne fait pas les contrôle pour vous, c'est juste une aide visuelle)



>> Pour l'utiliser :

- Initialisez votre champ de saisie pour avoir le type que vous voulez (voir DETAIL INITIALISATION dans le script ouEXEMPLE plus bas dans cette page) .

- Copier le code de la classe au dessus de Main, en dessous des modules Keyboard, Mouse, et CSS plus haut

- Voici la légende des boutons qui s'affichent (vous pouvez les redessinnez vous même, si les symboles ne sont pas clairs)


image



- Vous récuperez la valeur (qui est une chaîne de caractère) en faisant



Portion de code:




cequejeveux = monchamp.val.clone # important de cloner la chaîne sinon bug !!



- Si vous voulez récuperer une valeur entière tapée faites


Portion de code:




cequejeveux = monchamp.val.to_i



Citation:


Il ne faudra pas oublier de faire monchamp.update dans la fenêtre ou la scène qui va afficher votre ligne de formulaire




Voici le code de la classe


Portion de code:




# PACK FORMULAIRE v1.0 par FENRYO !!! :::::: Champ de saisie texte

# le must pour les gros codeurs, un champ de saisie pour taper vos valeurs!!
# vous cliquez sur le bouton du milleu pour commencer à saisir
# le bouton de gauche sert à faire un copier coller

class Champ_text
attr_accessor :bakg
attr_accessor :libele
attr_accessor :val #===> récuperez la valeur affichée ici, Attention ce sera un String !!
attr_accessor :valtxt
attr_accessor :libtxt
attr_accessor :btnwrite
attr_accessor :btnerase
attr_accessor :btncopypaste
attr_accessor :nonil # true si le champ est pas obligatoire
attr_accessor :focus
attr_accessor :csslib
attr_accessor :cssval
attr_accessor :valiminf
attr_accessor :valimup
attr_accessor :nonil #======> Pour spécifier si la valeur est un champ obligatoire
attr_accessor :limit #=====> pour faire apparaitre l'intervalle de la valeur
attr_accessor :delai
attr_accessor :keys_alpha
attr_accessor :keys_num
attr_accessor :modepaste

def initialize (xo, yo, larg, long, libel, valini, focs=false, nonill = false, lim=false, limup = -1, liminf = -50000 )

# DETAILS INITIALISATION

# xo et yo : les positions initiales du champ de saisie à l'écran
# lar et long : largeur et longeur du champ de saisie
# libel: Libelé du champ de saisie
# valini : valeur initiale en String vous pouvez exploitez ça pour voir
# les anciennes valeurs de vos objets à modifier
# focs : pour creer le champ directement en mode saisie
# nonill : mettre à true si le champ est pas obligatoire
# lim : valeur à intervalle ? mettre à true si oui
# limup : limite supérieure si c'est une valeur entière, à -1 pour dire qu'elle n'existes pas
# liminf: limite inférieure si c'est une valeur entière



# AJOUTER OU MODIFIER LES TOUCHES ALPHABETIQUE POSSIBLES ICI

@keys_alpha = ["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"]

@keys_num = ["Num 0", "Num 1", "Num 2", "Num 3", "Num 4", "Num 5", "Num 6", "Num 7", "Num 8",
"Num 9"]



@val = valini
@nonil = nonill
@focus = focs
@limit = lim
@delai = 5
@modepaste = false
@startcount = Graphics.frame_count
if (@nonil) then
@libele = libel + " (*) : "
else
@libele = libel + " : "
end



@csslib = "libele"
@cssval = "valeur"
@valiminf = liminf
@valimup = limup

@bakg = Sprite.new
@bakg.x = xo
@bakg.y = yo
@bakg.z = 1000
larg += 50 # pour avoir de la place pour les boutons
@bakg.bitmap = Bitmap.new(larg, long)
couleur = Color.new(240, 237, 188, 100)
@bakg.bitmap.fill_rect(0, 0, larg, long, couleur)

@libtxt = Sprite.new
@libtxt.x = @bakg.x
@libtxt.y = @bakg.y - 3
@libtxt.z = 1100
@libtxt.bitmap = Bitmap.new(larg, 20)
@libtxt.bitmap.text_style2(@csslib)
@libtxt.bitmap.draw_text(8, 0, @libtxt.bitmap.width, @libtxt.bitmap.height, @libele)
@libtxt.bitmap.draw_text(0, 5, @libtxt.bitmap.width, 15, "_____________________________________________")
@posy = @bakg.y + 15


if (!@limit) then
@valtxt = Sprite.new
@valtxt.x = @bakg.x + 5
@valtxt.y = @posy
@valtxt.z = 1150
@valtxt.bitmap = Bitmap.new(larg - 20, 15)
else
@valtxt = Sprite.new
@valtxt.x = @bakg.x + 60
@valtxt.y = @posy
@valtxt.z = 1150
@valtxt.bitmap = Bitmap.new(60, 15)

@limtxt = Sprite.new
@limtxt.x = @bakg.x + 3
@limtxt.y = @posy - 3
@limtxt.z = 1120
@limtxt.bitmap = Bitmap.new(170, 25)
textlim = @valiminf.to_s + " <= <=" + @valimup.to_s
@limtxt.bitmap.text_style2(@csslib)
@limtxt.bitmap.draw_text(0, 0, @limtxt.bitmap.width, @limtxt.bitmap.height, textlim)
end

self.refresh

if (!@focus) then
@btnwrite = Btn_clik.new(@bakg.x + @bakg.bitmap.width - 40, @bakg.y - 2, 16, 16, "btn_write", "btn_write_2", nil, nil)
else
@btnwrite = Btn_clik.new(@bakg.x + @bakg.bitmap.width - 40, @bakg.y - 2, 16, 16, "btn_save_text", "btn_save_text_2", nil, nil)
end

if ( $tmp_text_saisie == nil) then
@btncopypaste = Btn_clik.new(@bakg.x + @bakg.bitmap.width - 60, @bakg.y - 2, 16, 16, "btn_copy", "btn_copy_2", nil, nil)
@modepaste = false
else
@btncopypaste = Btn_clik.new(@bakg.x + @bakg.bitmap.width - 60, @bakg.y - 2, 16, 16, "btn_paste", "btn_paste_2", nil, nil)
@modepaste = true
end


@btnerase = Btn_clik.new(@bakg.x + @bakg.bitmap.width - 20, @bakg.y - 2, 16, 16, "btn_erase", "btn_erase_2", nil, nil)







end #fin initialize




def dispose
@libtxt.dispose
@bakg.dispose
@valtxt.dispose
@btnwrite.dispose
@btnerase.dispose
if (@limit) then
@limtxt.dispose
end
btncopypaste.dispose

end # fin dispose




def update

@btnwrite.update
@btnerase.update
@btncopypaste.update


if (@focus) then # en cours de saisie

max = @keys_alpha.size - 1
for i in (0 .. max)
if (Keyboard.press?(Keys.index(@keys_alpha))) and (Graphics.frame_count - @startcount >= @delai) then # ecoute des lettres
temp = @keys_alpha.clone
if (Keyboard.toggle?(Keys.index("Verr Maj"))) then
temp = temp.downcase # mise en minuscule si Maj est allumé
end
@startcount = Graphics.frame_count
self.ecris (temp)
end
end

max = @keys_num.size - 1
for i in (0 .. max)
if (Keyboard.press?(Keys.index(@keys_num))) and (Graphics.frame_count - @startcount >= @delai) then # ecoute des chiffres
temp = i.to_s
@startcount = Graphics.frame_count
self.ecris (temp)
end
end

if (Keyboard.press?(Keys.index("Espace"))) and (Graphics.frame_count - @startcount >= @delai) then # espace
temp = " "
@startcount = Graphics.frame_count
self.ecris (temp)
end

if (Keyboard.press?(Keys.index("8"))) and (Graphics.frame_count - @startcount >= @delai) then # barre du 8
temp = "_"
@startcount = Graphics.frame_count
self.ecris (temp)
end

if (Keyboard.press?(Keys.index("6"))) and (Graphics.frame_count - @startcount >= @delai) then # barre du 6
temp = "-"
@startcount = Graphics.frame_count
self.ecris (temp)
end

if (Keyboard.press?(Keys.index("Num /"))) and (Graphics.frame_count - @startcount >= @delai) then # barre du 6
temp = "/"
@startcount = Graphics.frame_count
self.ecris (temp)
end

if (Keyboard.press?(Keys.index("Suppr"))) or (Keyboard.press?(Keys.index("Retour"))) then # effaçage
if (Graphics.frame_count - @startcount >= @delai) then
@startcount = Graphics.frame_count
self.del
end
end

if (@btnwrite.trig) or (Keyboard.release?(Keys.index("Entrée"))) then #changement de bouton
@focus = false
@btnwrite = Btn_clik.new(@bakg.x + @bakg.bitmap.width - 40, @bakg.y - 2, 16, 16, "btn_write", "btn_write_2", nil, nil)
end

else #_____________________________________________ pas en mode saisie
if (@btnwrite.trig) then #changement de bouton
@focus = true
@btnwrite = Btn_clik.new(@bakg.x + @bakg.bitmap.width - 40, @bakg.y - 2, 16, 16, "btn_save_text", "btn_save_text_2", nil, nil)
end
end

if (@btnerase.trig) then
if (@modepaste) then # ici on efface le tampon
@modepaste = false
@btncopypaste = Btn_clik.new(@bakg.x + @bakg.bitmap.width - 60, @bakg.y - 2, 16, 16, "btn_copy", "btn_copy_2", nil, nil)
$tmp_text_saisie = nil
else
self.erase
end

end


if ($tmp_text_saisie != nil) and (!@modepaste) then
@btncopypaste = Btn_clik.new(@bakg.x + @bakg.bitmap.width - 60, @bakg.y - 2, 16, 16, "btn_paste", "btn_paste_2", nil, nil)
@modepaste = true
end

if ($tmp_text_saisie == nil) and (@modepaste) then
@btncopypaste = Btn_clik.new(@bakg.x + @bakg.bitmap.width - 60, @bakg.y - 2, 16, 16, "btn_copy", "btn_copy_2", nil, nil)
@modepaste = false
end



if (@btncopypaste.trig) then
if (@modepaste) then
self.coller
else
@modepaste = true
self.copier
end
end




end # fin de update


def copier
if (@val != nil) then
$tmp_text_saisie = @val.clone
end
end

def coller

if ($tmp_text_saisie != nil) then
@val = $tmp_text_saisie.clone
self.refresh
else
print "erreur tampon vide"
end

end



def erase
@val = nil
self.refresh
end

def del
if (@val != nil) then
if (@val.size <= 1) then
@val = nil
else
aux = ""
for i in (0 .. @val.size - 2)
aux.concat(@val)
end
@val = aux
end
self.refresh
end
end

def refresh
@valtxt.bitmap.clear
@valtxt.bitmap.text_style2(@cssval)
couleur = Color.new(250, 250, 250, 100)
@valtxt.bitmap.fill_rect(0, 0, @valtxt.bitmap.width, @valtxt.bitmap.height, couleur)
if (@val != nil) then
@valtxt.bitmap.draw_text(0, 0, @valtxt.bitmap.width, @valtxt.bitmap.height, @val)
end
end


def ecris (lettre)
if (@val == nil) then
# print "test = " lettre
@val = lettre
else
@val.concat(lettre)
end
self.refresh
end





end #fin de classe










EXEMPLE

Bon je suppose que vous êtes épuisés de copier coler et vous voulez voir
comment tout ça fonctionne de façon pratique. Voici une scène bien commentée
qui vous montre tous les types de fonctionnement (en me basant sur l'initialisation)




Portion de code:





# appelez cette scène sur un event en faisant $scene = Scene_test_formu.new
# on la ferme avec la croix en haut à droite


class Scene_test_formu

def initialize
@wintest = Window_Base.new(-16, -16, 800, 600)

@formul = Formuline.new (10, 10, 180, 30, "ligne pour chiffre", false, 9999, false )

@formul2 = Formuline.new (10, 80, 150, 30, "ligne Booléenne", true, 200, false )

@saizi = Champ_text.new(50, 140, 150, 30, "saizi avec intervalle", nil, false, false, true, 15000)
@saizi2 = Champ_text.new(50, 185, 150, 30, "saizi simple 1 ", nil, false, false)
@saizi3 = Champ_text.new(50, 230, 150, 30, "saizi simple 2 ", nil, false, false)

@sortie = Btn_clik.new (600, 10, 16, 16, "btn_erase", "btn_erase_2", nil, nil )

end

def main

Graphics.transition

loop do
Graphics.update
Input.update
Mouse.update # FAIRE UN MOUSE.UPDATE ET Keybord.update à chaque frame
Keyboard.update

update

if ($scene != self) then
break
end
end
Graphics.freeze
$scene = Scene_Map.new

end #=============> FIN DU MAIN



def update

@formul.update #faire un update de chaque élément du formulaire
@formul2.update
@saizi.update
@saizi2.update
@saizi3.update
@sortie.update

if (@sortie.trig) then
#On sort de la scène en cliquant sur la croix en haut à droite
# oubliez Input.press?(Input::B) traditionnel
# Puisque B fait partie des touches pour le champ de saisie
# Toujours prévoir un bouton de sortie sur vos scène de formulaires
@formul.dispose
@formul2.dispose
@saizi.dispose
@saizi2.dispose
@saizi3.dispose
@wintest.dispose
@sortie.dispose
$scene = Scene_Map.new
end


end


end









PETIT TUTO DE CREATION D'UN FORMULAIRE

Petit tuto pour vous montrer encore plus le côté pratique de ces scripts Supposons que vous avez un objet défini comme tel


Portion de code:





Class Vaisseau

attr_accessor :volant
attr_accessor :couleur
attr_accessor :nom
end




Voilà vous voulez faire des tas de vaisseau dans votre jeu en vérifiant rapidement ce que ça va donner visuellement et d'autres détails, Voici à peu près l'aspect de la fenêtre de vos rêves pour creer vos vaisseaux sans scripter du matin au soir sur les paramètres et faire des centaines de démarrages du jeu pour voir ce que cette nouvelle couleur donne


image

Citation:

Dans cette fenêtre (du moins le template) :D vous vooyez les nom de champ de formulaire, leur classe et leur position






supposons que cette fenêtre soit une classe Window_vaisseau on aurait un code algorithmique
à peu près comme ça



image



Bon là c'est une windows basique de formulaire en fouillant le code vous pourrez faire plus démentiel, comme voir la couleur du vaisseau changer en temps réel quand vous chagez les atrributs des couleurs. :joint

Citation:


Purée il est 23h56 j'écris ce script/tuto depuis 14h !! je suis crevé !! Que ce script vous permette de sauver athena!! allez avec tout mon cosmos !!!! :doute1




BON A SAVOIR QUAND MEME

- Les textes dans les champs saisis sont par défaut en majuscules, parce que le module Keyboard de Zeus81
prend par défaut les majuscules, donc en appuyant Verr.Maj vous les mettrez écrivez en minuscules
- Si vous activez plusieurs champ saisie, et que vous tapez au clavier, vous serez en train d'écrire dans
tous les champs activés j'ai laissé ça exprès, ça peut être pratique
- N'essayez pas de faire Crtl+C ou Crtl+p ou autre raccourci dans les champs de saisies, utilisez le boutonde Copy/Paste
- Si il y a des bugs écrivez moi sur Oniromancie !!
- Merci à Zeus81 pour ses modules Mouse et Keyboard Ultime !!








immudelki - posté le 11/01/2010 à 16:53:01. (3183 messages postés) - staff

Xnifurignien souriant

Je sens une inspiration ActionScript mais ça doit être à force de trop en faire :D
C'est du tout beau tout bon en tout cas, très utile en effet, je vais relire encore quelques fois pour m'assurer d'avoir tout capter :)

Achetez une licence RM, c'est le bien Mein Topic sur Oniro/Mein site pro/Mein Tumblr avec vos tronches/Mon cerveau


fenryo - posté le 11/01/2010 à 17:02:52. (153 messages postés)

Mi-Loup, Mi-homme je parcours le monde à la recherche de ma meute: Ceux qui savent...

====> Bouton MOINS

Bon vu que je n'avais pas la prévisualisation voici les boutons qui n'apparaissent pas en haut:

image image
Renommez l'image bouton_moins et celle en surbrillance bouton_moins_2 dans votre dossier Graphics/picture

Vous pouvez évidemment faire les votre, donnez juste les même noms :bob

-------- Le réalisme c'est trouver un moyen rationnel d'atteindre un but magnifique ----------------- Kiro'o Tale: Aurion, jeu d'un nouveau genre !! ==> Pour faire des formulaire sur RMXP:


zouglou - posté le 11/01/2010 à 17:07:02. (2197 messages postés)

OMG :surpris
J'ai rien compris :F

Sur ton premier screen, c'est normal que soit écrit "saizi ???


fenryo - posté le 11/01/2010 à 17:44:35. (153 messages postés)

Mi-Loup, Mi-homme je parcours le monde à la recherche de ma meute: Ceux qui savent...

===> POur Immudelki
Oui je me susi un peu inspiré de la logique de Flash pour ces champs de saisie et autre. On sent un connaisseur :D

====> Pour zouglou
Comme je disais c'est pas un code grand public. :cig Et pour le truc de "saizi" c'est fait exprès pour faire rire un peu

-------- Le réalisme c'est trouver un moyen rationnel d'atteindre un but magnifique ----------------- Kiro'o Tale: Aurion, jeu d'un nouveau genre !! ==> Pour faire des formulaire sur RMXP:


Zeus81 - posté le 11/01/2010 à 18:50:56. (11072 messages postés)

Portion de code : Tout sélectionner

1
2
3
temp = @keys_alpha[i].clone
if (Keyboard.toggle?(Keys.index("Verr Maj"))) then
    temp = temp.downcase


Suffit de rajouter un ! et ça inversera tes majuscules et minuscules.XD

Portion de code : Tout sélectionner

1
2
3
temp = @keys_alpha[i].clone
if (!Keyboard.toggle?(Keys.index("Verr Maj"))) then
    temp = temp.downcase


fenryo - posté le 11/01/2010 à 20:37:10. (153 messages postés)

Mi-Loup, Mi-homme je parcours le monde à la recherche de ma meute: Ceux qui savent...

mince, Zeus81 tu s le mangyakou sharingan du script ? damned tu as zoomé sur la ligne là dans toute cette bible? :sriden

TRROOOOOOOOOOP FOOOOOOOOOOT, c'est sur que ce mec il vois le ruby comme Neo voit la matrix :lol

En tout cas tu me dis si c'est aussi utile que je le crois

-------- Le réalisme c'est trouver un moyen rationnel d'atteindre un but magnifique ----------------- Kiro'o Tale: Aurion, jeu d'un nouveau genre !! ==> Pour faire des formulaire sur RMXP:


Åvygeil - posté le 11/01/2010 à 21:47:08. (2432 messages postés)

Et comment sont sauvegardés les données que tu rentres dans le formulaire ?
Si il faut se refarcir le remplissage du formulaire à chaque fois qu'on quitte RMXP, je vois pas vraiment l'intérêt.

"Concernant Avygeil > tu peux avoir l'opinion que tu veux de lui, la mienne est que ce n'est qu'un crétin à tendances misogynes et homophobes [...] et, surtout, sans la moindre éducation : il débat comme un morveux de 8 ans, "non ta gueule j'ai raison toi t'as trop tort lol tu pues t'es con haha !". Même les gens les plus diplomates et les plus calmes (genre Gaetz) se sont tapés son comportement de blaireau. - 27/07/2015" Nemau a brisé mon petit cœur :'(


fenryo - posté le 11/01/2010 à 21:58:28. (153 messages postés)

Mi-Loup, Mi-homme je parcours le monde à la recherche de ma meute: Ceux qui savent...

là mon vieux tu réfléchis...

c'est un outil il va pas faire toute le boulot pour vous :doute1

A toi de créer une fonction qui réagit au bouton valider en sauvegardant ton objet.
De plus, dans l'algo visuel j'ai bien précisé que tu peux créer les champs avec des valeurs initiales.

Bases de stratégies DPR (Diviser Pour Régner):[/]

- tu initialise ta fenêtre avec l'objet à modifier, si c'est nil alors tu cree un objet vide
- Si l'objet n'était pas nil, tu met toutes ses valeurs par défauts comme valeur initiale de chaque champ du formulaire correspondant
- Tu peux combiner ça avec une fenêtre de choix d'objet si tu es calé en script (c'est ce que je vais mettre dans le Pack V2.0 maybe)

J'espère que tu vois now :doute3

-------- Le réalisme c'est trouver un moyen rationnel d'atteindre un but magnifique ----------------- Kiro'o Tale: Aurion, jeu d'un nouveau genre !! ==> Pour faire des formulaire sur RMXP:


grog - posté le 11/01/2010 à 22:07:33. (7 messages postés)

Citation:

Et pour le truc de "saizi" c'est fait exprès pour faire rire un peu


J'ai ris un peu.


Åvygeil - posté le 11/01/2010 à 22:13:26. (2432 messages postés)

Bah moi, avec mes scripts, je fais :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
 
Database.create_table("Vaisseau") { |t|
  t.column :nom, Database::String
  t.column :volant, Database::Boolean
  t.column :rouge, Database::Integer
  t.column :vert, Database::Integer
  t.column :bleu, Database::Integer
}
 



Et par dessus mon script d'extension de base de données, j'ai un script qui me génère automatiquement le formulaire pour créer/remplir un "Vaisseau", et de quoi faire la sauvegarde de la base de données. Par contre les formulaires ne marchent qu'au clavier, pas à la souris, et ne gère pas (encore) les limitations genre la valeur doit etre comprise entre 0 et 255.

Graphiquement, c'est mieux que mon script. Fonctionnellement, c'est en retard.

"Concernant Avygeil > tu peux avoir l'opinion que tu veux de lui, la mienne est que ce n'est qu'un crétin à tendances misogynes et homophobes [...] et, surtout, sans la moindre éducation : il débat comme un morveux de 8 ans, "non ta gueule j'ai raison toi t'as trop tort lol tu pues t'es con haha !". Même les gens les plus diplomates et les plus calmes (genre Gaetz) se sont tapés son comportement de blaireau. - 27/07/2015" Nemau a brisé mon petit cœur :'(


fenryo - posté le 11/01/2010 à 22:33:26. (153 messages postés)

Mi-Loup, Mi-homme je parcours le monde à la recherche de ma meute: Ceux qui savent...

Åvygeil

Citation:

Par contre les formulaires ne marchent qu'au clavier, pas à la souris, et ne gère pas (encore) les limitations genre la valeur doit etre comprise entre 0 et 255.



justement l'avantage de la souris c'est la légèreté de ton code après

Tu n'écoute que des boutons et tu récupères toutes les valeurs qui t'intéressent. C'est plus ergonomique. Faire des formulaires à clavier c'était ma première idée, mais il fallait l'ergonomie.

En fait je donne des classes pour faire des formulaires, mais les windows et les scènes c'est à chacun de les créer sois même en fonction de ce que vous voulez faire.:)

Avygeil Je peux avoir un lien pour voir tes scripts ? histoire d'améliorer ceux ci :)

-------- Le réalisme c'est trouver un moyen rationnel d'atteindre un but magnifique ----------------- Kiro'o Tale: Aurion, jeu d'un nouveau genre !! ==> Pour faire des formulaire sur RMXP:


berka - posté le 12/01/2010 à 10:25:33. (493 messages postés)

planchant sur un script

bonjour,

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
  def survole?
  
   oki = false
      if ((Mouse.x < (self.x + self.bitmap.width)) and (Mouse.x > self.x) ) then
            if((Mouse.y < (self.y + self.bitmap.height)) and (Mouse.y > self.y)  ) then
             oki = true
           end
         end
        return oki 
  end



préfère la fonction between?, c'est plus propre. Cela réduit ta méthode à :

Portion de code : Tout sélectionner

1
2
3
  def survole?
    Mouse.x.between?(self.x, self.x + self.bitmap.width) && (Mouse.y.between?(self.y, self.y + self.bitmap.height)
  end

Twitter: Pensées politiques et juridiques. Réflexions informatiques


fenryo - posté le 12/01/2010 à 11:13:33. (153 messages postés)

Mi-Loup, Mi-homme je parcours le monde à la recherche de ma meute: Ceux qui savent...

ha ouais, j'avais pas vu la méthode dans les possibilités du Module Mouse:D

C'est cool, ça me permettra de faire des "add-ons" (les grands mots :lol) pour une V1.5 !!

-------- Le réalisme c'est trouver un moyen rationnel d'atteindre un but magnifique ----------------- Kiro'o Tale: Aurion, jeu d'un nouveau genre !! ==> Pour faire des formulaire sur RMXP:


berka - posté le 12/01/2010 à 11:24:18. (493 messages postés)

planchant sur un script

Nan, c'est pas une propriété de Mouse, mais une méthode du module Comparable de ruby (Mouse.x n'est rien d'autre qu'un objet Numeric. Or Numeric inclut Comparable)

Au niveau des valeur de retour des méthodes il faut savoir que:

Portion de code : Tout sélectionner

1
2
3
4
def test
a = 1
return a
end


est la meme chose que

Portion de code : Tout sélectionner

1
2
3
def test
a = 1
end



et que:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
def test
if a == 1
return true
else 
return false
end
end


est la meme chose que

Portion de code : Tout sélectionner

1
2
3
def test
a == 1
end


Plus simple, nan ?
Généralement on peut enlever le return à la fin des méthodes. la dernière valeur est retournée automatiquement.

Twitter: Pensées politiques et juridiques. Réflexions informatiques


fenryo - posté le 12/01/2010 à 15:00:05. (153 messages postés)

Mi-Loup, Mi-homme je parcours le monde à la recherche de ma meute: Ceux qui savent...

merci pour 'infos ça va me faire des codes plus légers.
Au fait il y a le trailer de la vielle version d'Aurion sur RM2003 pour ceux qui veulent avoir un aperçu de la version préhistorique de ce qui vous attend maintenat que je suis sous RMXP (héhéhéhé)

regardez et commentez ici :
http://www.rpg-maker.fr/index.php?page=forum&id=12390

-------- Le réalisme c'est trouver un moyen rationnel d'atteindre un but magnifique ----------------- Kiro'o Tale: Aurion, jeu d'un nouveau genre !! ==> Pour faire des formulaire sur RMXP:


Exemples - posté le 15/01/2010 à 16:39:16. (2019 messages postés)

Pff.

J'ai pas compris a quoi sa servait :F
J'ai dejà vu plein de trucs avec le mot "classe" dedant, mais dans RPG maker les seules classes que je connais sont Voleur, Mage, Guerrier etc... Et je ne crois pas que ça aie un rapport avec le script... enfin bon, tant pis :doute2

Bouh.


fenryo - posté le 16/01/2010 à 21:48:26. (153 messages postés)

Mi-Loup, Mi-homme je parcours le monde à la recherche de ma meute: Ceux qui savent...

Euh... en fait c'est un script pour gros codeurs en POO,
c'est un outil pour creer des extensions à RMXP en fait... les classes c'est par rapport à la POO:bob

-------- Le réalisme c'est trouver un moyen rationnel d'atteindre un but magnifique ----------------- Kiro'o Tale: Aurion, jeu d'un nouveau genre !! ==> Pour faire des formulaire sur RMXP:

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe

Plan du site:

Activité: Accueil | News | Forum | Flash-news | Chat | Commentaires | Galerie | Screen de la semaine | Sorties | Articles perso | Livre d'or | Recherche
Jeux: Index jeux séparés | Top Classiques | Top Originaux | Les autres | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Jeux complets | Proposer
Rubriques: Le Wiki | Collection Oniro | Tutoriaux | Scripts | Guides | Gaming-Live | Tests | Making-of | Interviews | Articles perso | OST | L'Annuaire | Divers | Palmarès
Hébergés: Aëdemphia | Fighting Robots Quest | Forstale | Geex | Inexistence | La Légende d'Ibabou | Lije | LoveMaster | Sarcia | Super Mario RPG - Lost Souls
Ressources: Jeux | Programmes | Packs de ressources | Midis | Eléments séparés | Sprites
RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis