Partagez
Aller en bas
avatar
Master of Dragons
Membre

Nombre de messages : 200
Age : 26
Localisation : Toujours là (même absent)
Distinction : aucune
Date d'inscription : 28/07/2010

Script touches [résolu] gràca à dricc ^^

le Dim 12 Sep 2010 - 16:48
Voilà, je dispose de ce script :

Spoiler:
Ce script est l'oeuvre de General_Yorr (que les ailes du bonheur le porte vers la béatitude) et a été complété par berka (que ses deux Sphères Magiques nourrissent une femme aimante d'une profusion de descendants).

Vous faites F11, clique droit sur Main et "insérer" :
Portion de code:
module Keys
KEY_BACK = 0x08 # BACKSPACE Keys
KEY_TAB = 0x09 # TAB Keys
KEY_RETURN = 0x0D # ENTER Keys
KEY_SHIFT = 0x10 # SHIFT Keys
KEY_PAUSE = 0x13 # PAUSE Keys
KEY_CAPITAL = 0x14 # CAPS LOCK Keys
KEY_CAPSLOCK = 0x14 # CAPS LOCK Key
KEY_ESCAPE = 0x1B # ESC Keys
KEY_SPACE = 0x20 # SPACEBAR
KEY_PRIOR = 0x21 # PAGE UP Keys
KEY_NEXT = 0x22 # PAGE DOWN Keys
KEY_END = 0x23 # END Keys
KEY_HOME = 0x24 # HOME Keys
KEY_LEFT = 0x25 # LEFT ARROW Keys
KEY_UP = 0x26 # UP ARROW Keys
KEY_RIGHT = 0x27 # RIGHT ARROW Keys
KEY_DOWN = 0x28 # DOWN ARROW Keys
KEY_SELECT = 0x29 # SELECT Keys
KEY_PRINT = 0x2A # PRINT Keys
KEY_SNAPSHOT = 0x2C # PRINT SCREEN Keys
KEY_INSERT = 0x2D # INS Keys
KEY_DELETE = 0x2E # DEL Keys

KEY_0 = 0x30 # 0 Keys
KEY_1 = 0x31 # 1 Keys
KEY_2 = 0x32 # 2 Keys
KEY_3 = 0x33 # 3 Keys
KEY_4 = 0x34 # 4 Keys
KEY_5 = 0x35 # 5 Keys
KEY_6 = 0x36 # 6 Keys
KEY_7 = 0x37 # 7 Keys
KEY_8 = 0x38 # 8 Keys
KEY_9 = 0x39 # 9 Keys

KEY_A = 0x41 # A Keys
KEY_B = 0x42 # B Keys
KEY_C = 0x43 # C Keys
KEY_D = 0x44 # D Keys
KEY_E = 0x45 # E Keys
KEY_F = 0x46 # F Keys
KEY_G = 0x47 # G Keys
KEY_H = 0x48 # H Keys
KEY_I = 0x49 # I Keys
KEY_J = 0x4A # J Keys
KEY_K = 0x4B # K Keys
KEY_L = 0x4C # L Keys
KEY_M = 0x4D # M Keys
KEY_N = 0x4E # N Keys
KEY_O = 0x4F # O Keys
KEY_P = 0x50 # P Keys
KEY_Q = 0x51 # Q Keys
KEY_R = 0x52 # R Keys
KEY_S = 0x53 # S Keys
KEY_T = 0x54 # T Keys
KEY_U = 0x55 # U Keys
KEY_V = 0x56 # V Keys
KEY_W = 0x57 # W Keys
KEY_X = 0x58 # X Keys
KEY_Y = 0x59 # Y Keys
KEY_Z = 0x5A # Z Keys

KEY_LWIN = 0x5B # Left Windows Keys (Microsoft Natural Keysboard)
KEY_RWIN = 0x5C # Right Windows Keys (Natural Keysboard)
KEY_APPS = 0x5D # Applications Keys (Natural Keysboard)

KEY_NUMPAD0 = 0x60 # Numeric Keyspad 0 Keys
KEY_NUMPAD1 = 0x61 # Numeric Keyspad 1 Keys
KEY_NUMPAD2 = 0x62 # Numeric Keyspad 2 Keys
KEY_NUMPAD3 = 0x63 # Numeric Keyspad 3 Keys
KEY_NUMPAD4 = 0x64 # Numeric Keyspad 4 Keys
KEY_NUMPAD5 = 0x65 # Numeric Keyspad 5 Keys
KEY_NUMPAD6 = 0x66 # Numeric Keyspad 6 Keys
KEY_NUMPAD7 = 0x67 # Numeric Keyspad 7 Keys
KEY_NUMPAD8 = 0x68 # Numeric Keyspad 8 Keys
KEY_NUMPAD9 = 0x69 # Numeric Keyspad 9 Keys
KEY_MULTIPLY = 0x6A # Multiply Keys (*)
KEY_ADD = 0x6B # Add Keys (+)
KEY_SEPARATOR = 0x6C # Separator Keys
KEY_SUBTRACT = 0x6D # Subtract Keys (-)
KEY_DECIMAL = 0x6E # Decimal Keys
KEY_DIVIDE = 0x6F # Divide Keys (/)

KEY_F1 = 0x70 # F1 Keys
KEY_F2 = 0x71 # F2 Keys
KEY_F3 = 0x72 # F3 Keys
KEY_F4 = 0x73 # F4 Keys
KEY_F5 = 0x74 # F5 Keys
KEY_F6 = 0x75 # F6 Keys
KEY_F7 = 0x76 # F7 Keys
KEY_F8 = 0x77 # F8 Keys
KEY_F9 = 0x78 # F9 Keys
KEY_F10 = 0x79 # F10 Keys
KEY_F11 = 0x7A # F11 Keys
KEY_F12 = 0x7B # F12 Keys

KEY_NUMLOCK = 0x90 # NUM LOCK Keys
KEY_SCROLL = 0x91 # SCROLL LOCK Keys

KEY_LSHIFT = 0xA0 # Left SHIFT Keys
KEY_RSHIFT = 0xA1 # Right SHIFT Keys
KEY_LCONTROL = 0xA2 # Left CONTROL Keys
KEY_RCONTROL = 0xA3 # Right CONTROL Keys
KEY_L_ALT = 0xA4 # Left ALT Keys
KEY_R_ALT = 0xA5 # Right ALT Keys

KEY_SEP = 0xBC # , Keys
KEY_DASH = 0xBD # - Keys
KEY_DOTT = 0xBE # . Keys

#par berka -----------------------------------------

KEY_POURCENT = 0xC0 # % or ù Keys
KEY_DOLLARD = 0xBA # $ Keys
KEY_UNDER = 0xDD # ^ Keys
KEY_STAR = 0xDC # * or µ Keys
KEY_DDOTT = 0xBF # : keys
KEY_DEG = 0xDB # ) or ° keys
KEY_DOTTS = 0xDF # ! keys
KEY_SQUARD = 0xDE # ² key
for i in self.constants
attr_reader i
end

module_function

def each
for i in self.constants
yield self.const_get(i)
end
end
end


module Input

# Constants that need to be defined for overriding purposes
F5 = Keys::KEY_F5
F6 = Keys::KEY_F6
F7 = Keys::KEY_F7
F8 = Keys::KEY_F8
F9 = Keys::KEY_F9


UP = 1000
DOWN = 1001
LEFT = 1002
RIGHT = 1003

A = 2000
B = 2001
C = 2002

X = 3000
Y = 3001
Z = 3002

R = 4000
L = 4001

SHIFT = 5000
CTRL = 5001
ALT = 5002

for i in self.constants
attr_reader i
end

@KeysMap = Hash.new
@trigger = Hash.new(false)
@repeat = Hash.new(false)
@toggle = Hash.new(false)
@counts = Hash.new(0)

@delay = 5 # The number of frames in which repeat? will only return true once

# an array containing all the Keyss that correspond to the direction up, down,
# left, right, 'A', 'B', 'C', 'X', 'Y', 'Z', 'L', 'R', SHIFT, CTRL, and ALT,
# respectively.
@KeysMap[UP] = [KeysKEY_UP]
@KeysMap[DOWN] = [KeysKEY_DOWN]
@KeysMap[LEFT] = [KeysKEY_LEFT]
@KeysMap[RIGHT] = [KeysKEY_RIGHT]

@KeysMap[A] = [Keys::KEY_LSHIFT, Keys::KEY_RSHIFT, Keys::KEY_Z]
@KeysMap[B] = [Keys::KEY_ESCAPE, Keys::KEY_NUMPAD0, Keys::KEY_X]
@KeysMap[C] = [Keys::KEY_SPACE, Keys::KEY_RETURN, Keys::KEY_C]

@KeysMap[X] = [KeysKEY_A]
@KeysMap[Y] = [KeysKEY_S]
@KeysMap[Z] = [KeysKEY_D]

@KeysMap[L] = [KeysKEY_Q]
@KeysMap[R] = [KeysKEY_W]

@KeysMap[SHIFT] = [Keys::KEY_SHIFT, Keys::KEY_LSHIFT, Keys::KEY_RSHIFT]
@KeysMap[CTRL] = [Keys::KEY_LCONTROL, Keys::KEY_RCONTROL]
@KeysMap[ALT] = [Keys::KEY_L_ALT, Keys::KEY_R_ALT]

@KeyStates = 0.chr * 256

@getKeyStates = Win32API.new('user32', 'GetKeyboardState', ['P'], 'N')

for i in Keys
@trigger[i] = false
@repeat[i] = false
@counts[i] = 4
end

module_function

# Determines whether the button num was pressed agian at the last update.
# "Pressed again" is seen as time having passed between the button being not
# pressed and being pressed.
# If the button is being pressed, returns TRUE. If not, returns FALSE.
def trigger?(num)
if @KeysMap.has_key?(num)
for i in @KeysMap[num]
return true if @trigger[i]
end
return false
end

return @trigger[num]
end

alias triggered? trigger?

# Determines whether the button num was being pressed at the last update.
# Unlike trigger?, takes into account the repeat input of a button being held
# down continuously.
# If the button is being pressed, returns TRUE. If not, returns FALSE.
# Has a delay to prevent things from moving to fast, E.G. menu indecies.
def repeat?(num)

if @KeysMap.has_key?(num)
for i in @KeysMap[num]
return true if(@repeat[i] and @counts[i] == 0)
end
return false
end

return (@repeat[num] and @counts[i] == 0)
end

alias repeated? repeat?
alias repeating? repeat?

# Same as repeat without the delay
def press?(num)
if @KeysMap.has_key?(num)
for i in @KeysMap[num]
return true if @repeat[i]
end
return false
end

return @repeat[i]
end

alias pressed? press?

def toggle?(num)
if @KeysMap.has_key?(num)
return false if @KeysMap[num].size != 1
return @toggle[@KeysMap[num][0]]
end

return @toggle[num]
end

alias toggled? toggle?

# Checks the status of the directional buttons, translates the data into a
# specialized 4-direction input format, and returns the number pad equivalent
# (2, 4, 6, Cool.
# If no directional buttons are being pressed (or the equivalent), returns 0.
def dir4
dir = 0
for i in @KeysMap[UP]
if @repeat[i]
dir = 8
end
end

for i in @KeysMap[DOWN]
if @repeat[i]
if dir == 0
dir = 2
else
return 0
end
end
end

for i in @KeysMap[LEFT]
if @repeat[i]
if dir == 0
dir = 4
else
return 0
end
end
end

for i in @KeysMap[RIGHT]
if @repeat[i]
if dir == 0
dir = 6
else
return 0
end
end
end

return dir
end

# Checks the status of the directional buttons, translates the data into a
# specialized 8-direction input format, and returns the number pad equivalent
# (1, 2, 3, 4, 6, 7, 8, 9).
# If no directional buttons are being pressed (or the equivalent), returns 0.
def dir8
dir = dir4

if dir > 0
return dir
end

for i in @KeysMap[UP]
if @repeat[i]
dir = 8
end
end

for i in @KeysMap[LEFT]
if @repeat[i]
case dir
when 0, 4
dir = 4
when 7, 8
dir = 7
end
end
end

for i in @KeysMap[RIGHT]
if @repeat[i]
case dir == 0
when 0, 6
dir = 6
when 4, 9
dir = 9
else
return 0
end
end
end

for i in @KeysMap[DOWN]
if @repeat[i]
case dir
when 0, 2
dir = 2
when 3, 6
dir = 3
when 1, 4
dir = 1
else
return 0
end
end
end

return dir
end

# Updates input data. As a rule, this method is called once per frame.
def update
@getKeyStates.call(@KeyStates)

for i in Keys
@toggle[i] = (@KeyStates[i] & 0x01 == 0x01)
if (@KeyStates[i] & 0x80 > 0)
@trigger[i] = !@repeat[i]
@repeat[i] = true

@counts[i] += 1
@counts[i] %= @delay
else
@repeat[i] = false
@trigger[i] = false

@counts[i] = -1
end
end
end


# Additional functions of use
def getKeys(keyType)
if @KeysMap.has_key?(keyType)
return @KeysMap[keyType].dup
end
return [keyType]
end

def addKey(keyType, key)
legit = true
@KeysMap.each_key {| i | legit = remKey(i, key)}

return false if !legit

if @KeysMap.has_key?(keyType)
@KeysMap[keyType] = @KeysMap[keyType] | [key]
else
@KeysMap[KeyType] = [key]
end
return true
end

def addKeys(keyType, keys)
legits = Hash.new(false)

for i in keys
legits[i] = addKey(keyType, i)
end

return legits
end

def removeKey(keyType, key)
return true if !@KeysMap.has_key?(keyType)
return false if @KeysMap[keyType] == [key]
@KeysMap[keyType] -= key
return true
end

def removeKeys(keyType, keys)
return true if !@KeysMap.has_key?(keyType)
return false if @KeysMap[keyType].size <= keys.size

for i in keys
return false if !@KeysMap[keyType].include?(i)
end

for i in keys
@KeysMap[keyType].remove(i)
end
return true
end

alias remKey removeKey
alias remKeys removeKeys

def removeGroup(keyGroup)
return false if !@KeysMap.has_key?(keyGroup)
@KeysMap[keyGroup] = []

return true;
end

alias remGroup removeGroup

def removeGroups(keyGroups)
ligits = Hash.new(false)

for i in keyGroups
ligits[i] = removeGroup(i)
end

return legits
end
end


Pour vérifier si une touche est appuyée, mettez ca dans un script (ca peut aller dans un script d'event parallèle, par exemple) :
Portion de code:
if Input.trigger?(Keys::KEY_A)#si A est appuyé
#instruction
end


Ou encore
Portion de code:
if Input.toggle?(Keys::KEY_A)#(Toggle=Active/désactive A)
#instruction
end


Ou encore
Portion de code:
if Input.repeat?(Keys::KEY_A)#si A est répété
#instruction
end


Voilà !
Bon courage !

Mais il bug un peu (à moins que je n'ai pas compris le principe) quand j'essaye d'entrer une touche.

Merci d'avance.



Dernière édition par Master of Dragons le Mer 15 Sep 2010 - 20:11, édité 1 fois
avatar
Darky Face
Membre

Nombre de messages : 741
Age : 22
Localisation : Dans un tigre.
Distinction : Champion mondial paralympique au 100 m. roulettes
Grosse CMB (Grosse Contusion des Membres, Ballot)
Adepte de Chatroulette.
Adjuvant-chef du club masochiste de la commu'.
Date d'inscription : 22/07/2008

Re: Script touches [résolu] gràca à dricc ^^

le Dim 12 Sep 2010 - 16:53
Un manque flagrant de clarté dans ta demande.
"Il bugge un peu" signifie quoi ? Le jeu plante ? Il ne se passe rien ?
Étoffe un peu le tout, ajoute un screen si quelque chose se produit et qui peut être visuel.
avatar
Master of Dragons
Membre

Nombre de messages : 200
Age : 26
Localisation : Toujours là (même absent)
Distinction : aucune
Date d'inscription : 28/07/2010

Re: Script touches [résolu] gràca à dricc ^^

le Dim 12 Sep 2010 - 17:00
Donc, je disais, il se passe ça :

Spoiler:

quand je fais ça :

Spoiler:

ou si je mets le script en condition.
avatar
Master of Dragons
Membre

Nombre de messages : 200
Age : 26
Localisation : Toujours là (même absent)
Distinction : aucune
Date d'inscription : 28/07/2010

Re: Script touches [résolu] gràca à dricc ^^

le Lun 13 Sep 2010 - 19:39
🆙
avatar
Master of Dragons
Membre

Nombre de messages : 200
Age : 26
Localisation : Toujours là (même absent)
Distinction : aucune
Date d'inscription : 28/07/2010

Re: Script touches [résolu] gràca à dricc ^^

le Mer 15 Sep 2010 - 13:02
🆙

S'il vous plaît...

Ne cerais-ce que Berka qui réponde mais ça presse ><
avatar
dricc
Membre

Nombre de messages : 2756
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Re: Script touches [résolu] gràca à dricc ^^

le Mer 15 Sep 2010 - 17:11
C'est normal , tu utilises le script pas du tout comme il faut ...

Dans "commandes de l'evenement" , ajoute une nouvelle commande .
met "Condition.." .
Dans la fenetre "condition" qui s'ouvre , va sur le 4éme onglet , tu as "script" à la fin .
là , tu met :
Input.trigger?(Keys::KEY_SPACE)
décoche le "Executer autre chose si la ....." .
Tu appuie sur OK
Et tu met ton retour ecran titre dans la condition .
avatar
Master of Dragons
Membre

Nombre de messages : 200
Age : 26
Localisation : Toujours là (même absent)
Distinction : aucune
Date d'inscription : 28/07/2010

Re: Script touches [résolu] gràca à dricc ^^

le Mer 15 Sep 2010 - 20:10
Merciiiiiiiiii !!! ^^

Enfin quelqu'un de serviable !

Je te mettrais dans mon projet, promis.
avatar
dricc
Membre

Nombre de messages : 2756
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Re: Script touches [résolu] gràca à dricc ^^

le Jeu 16 Sep 2010 - 11:06
Te sens pas obligé ...

Je suis content que tu ais compris mes explications , c'était pas facile à expliquer Smile
avatar
Elisa'
Staffeux retraité

Nombre de messages : 2924
Age : 20
Localisation : Par là-bas !
Distinction : Mon héritière que je chéris
[Coco' Smile]
Plus que 2 ans avant d'épouser Coco' ! Compte à rebours lancé !
[Auto-distinction]

Adepte du "Je le savais" alors qu'elle le savait pas.
Date d'inscription : 30/05/2009

Re: Script touches [résolu] gràca à dricc ^^

le Jeu 16 Sep 2010 - 17:31
Résolu donc déplacé.

_________________


Cliquez ici pour voter pour la commu'
Contenu sponsorisé

Re: Script touches [résolu] gràca à dricc ^^

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