Accueil du SiteAccueil du Site  AccueilAccueil  Dernières imagesDernières images  RechercherRechercher  ConnexionConnexion  S'enregistrerS'enregistrer  



-50%
Le deal à ne pas rater :
-50% Baskets Nike Air Huarache
64.99 € 129.99 €
Voir le deal

Partagez
 

 Déplacement par la souris

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Teraglehn
Ancien staffeux
Ancien staffeux
Teraglehn

Masculin
Messages postés : 3628
Date d'inscription : 23/09/2010
Jauge LPC :
Déplacement par la souris 89152714007 / 1007 / 100Déplacement par la souris 8915271400

Déplacement par la souris Membre15
Déplacement par la souris Travai10
Déplacement par la souris Action10
Déplacement par la souris Mythe_10
Déplacement par la souris Collec10
Déplacement par la souris Collec11
Déplacement par la souris Collec12
Déplacement par la souris Connar10
Déplacement par la souris Connar10
Déplacement par la souris Connar10


Déplacement par la souris Empty
MessageSujet: Déplacement par la souris   Déplacement par la souris EmptyMar 28 Sep 2010 - 21:15

Pour RM VX (marche peu être sur XP)
Auteur : RPG-Man sur les base de SephirothSpawn
Ne marche pas en mode grand écran (en faite il y a une solution pour ce faire afficher la souris en grand écran mais bon...)

Ce script permet avec un clique gauche de se déplacer sur la map.

Trois code a placer respectivement dans cette ordre dans la liste de script au dessus du script main

Portion de Code :
Citation :

#===========================================
# Module Keyboard/Mouse
# par SephirothSpawn
#===========================================

module Keyboard
@keys = []
@pressed = []
Mouse_Left = 1
Mouse_Right = 2
State = Win32API.new("user32","GetKeyState",['i'],'i')
Key = Win32API.new("user32","GetAsyncKeyState",['i'],'i')
def Keyboard.getstate(key)
return true unless State.call(key).between?(0, 1)
return false
end
def Keyboard.testkey(key)
Key.call(key) & 0x01 == 1
end
def Keyboard.update
@keys = []
@keys.push(Keyboard::Mouse_Left) if Keyboard.testkey(Keyboard::Mouse_Left)
@keys.push(Keyboard::Mouse_Right) if Keyboard.testkey(Keyboard::Mouse_Right)
@pressed = []
@pressed.push(Keyboard::Mouse_Left) if Keyboard.getstate(Keyboard::Mouse_Left)
@pressed.push(Keyboard::Mouse_Right) if Keyboard.getstate(Keyboard::Mouse_Right)
end
def Keyboard.trigger?(key)
return true if @keys.include?(key)
return false
end
def Keyboard.pressed?(key)
return true if @pressed.include?(key)
return false
end
end

module Mouse
@mouse_menu = 0
def Mouse.click?(button)
return true if @keys.include?(button)
return false
end
def Mouse.press?(button)
return true if @press.include?(button)
return false
end
def Mouse.area?(x, y, width=32, height=32)
return false if @pos == nil
return true if @pos[0] >= x and @pos[0] <= (x+width) and @pos[1] >= y and @pos[1] <= (y+height)
return false
end
def Mouse.pixels
return @pos == nil ? [0, 0] : @pos
end
def Mouse.tiles
return nil if @pos == nil
x = @pos[0] / 32
y = @pos[1] / 32
return [x, y]
end
def Mouse.set_pos(x_pos=0, y_pos=0)
width, height = Mouse.client_size
if (x_pos.between?(0, width) && y_pos.between?(0, height))
x = Mouse.client_pos[0] + x_pos; y = Mouse.client_pos[1] + y_pos
Win32API.new('user32', 'SetCursorPos', 'NN', 'N').call(x, y)
end
end
def Mouse.update
@pos = Mouse.pos
@keys, @press = [], []
@keys.push(1) if Win32API.new("user32","GetAsyncKeyState",['i'],'i').call(1) & 0X01 == 1
@keys.push(2) if Win32API.new("user32","GetAsyncKeyState",['i'],'i').call(2) & 0X01 == 1
@keys.push(3) if Win32API.new("user32","GetAsyncKeyState",['i'],'i').call(4) & 0X01 == 1
@press.push(1) if Win32API.new("user32","GetKeyState",['i'],'i').call(1) & 0X01 == 1
@press.push(2) if Win32API.new("user32","GetKeyState",['i'],'i').call(2) & 0X01 == 1
@press.push(3) if Win32API.new("user32","GetKeyState",['i'],'i').call(4) & 0X01 == 1
end
def Mouse.global_pos
pos = [0, 0].pack('ll')
if Win32API.new('user32', 'GetCursorPos', 'p', 'i').call(pos) != 0
return pos.unpack('ll')
else
return nil
end
end
def Mouse.pos
x, y = Mouse.screen_to_client(*Mouse.global_pos)
width, height = Mouse.client_size
begin
if (x >= 0 and y >= 0 and x < width and y < height)
return x, y
else
return nil
end
rescue
return nil
end
end
def Mouse.screen_to_client(x, y)
return nil unless x and y
pos = [x, y].pack('ll')
if Win32API.new('user32', 'ScreenToClient', %w(l p), 'i').call(Mouse.hwnd, pos) != 0
return pos.unpack('ll')
else
return nil
end
end
def Mouse.hwnd
game_name = "\0" * 256
Win32API.new('kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l').call('Game','Title','',game_name,255,".\\Game.ini")
game_name.delete!("\0")
return Win32API.new('user32', 'FindWindowA', %w(p p), 'l').call('RGSS Player',game_name)
end
def Mouse.client_size
rect = [0, 0, 0, 0].pack('l4')
Win32API.new('user32', 'GetClientRect', %w(l p), 'i').call(Mouse.hwnd, rect)
right, bottom = rect.unpack('l4')[2..3]
return right, bottom
end
def Mouse.client_pos
rect = [0, 0, 0, 0].pack('l4')
Win32API.new('user32', 'GetWindowRect', %w(l p), 'i').call(Mouse.hwnd, rect)
left, upper = rect.unpack('l4')[0..1]
return left+4, upper+30
end
def Mouse.grid
return nil if @pos == nil
offsetx = $game_map.display_x / 8
offsety = $game_map.display_y / 8
x = (@pos[0] + offsetx) / 32
y = (@pos[1] + offsety) / 32
return [x, y]
end
end

Portion de Code :
Citation :

#===========================================
# Pathfinding
# par SephirothSpawn
#===========================================
class Game_Character
alias nf_pf_game_character_initialize initialize
alias nf_pf_game_character_update update
attr_accessor :map
attr_accessor :runpath
def initialize
nf_pf_game_character_initialize
@map = nil
@runpath = false
end
def update
run_path if @runpath == true
nf_pf_game_character_update
end
def run_path
return if moving?
step = @map[@x,@y]
if step == 1
@map = nil
@runpath = false
return
end
dir = rand(2)
case dir
when 0
move_right if @map[@x+1,@y] == step - 1 and step != 0
move_down if @map[@x,@y+1] == step - 1 and step != 0
move_left if @map[@x-1,@y] == step -1 and step != 0
move_up if @map[@x,@y-1] == step - 1 and step != 0
when 1
move_up if @map[@x,@y-1] == step - 1 and step != 0
move_left if @map[@x-1,@y] == step -1 and step != 0
move_down if @map[@x,@y+1] == step - 1 and step != 0
move_right if @map[@x+1,@y] == step - 1 and step != 0
end
end
def find_path(x,y)
sx, sy = @x, @y
result = setup_map(sx,sy,x,y)
@runpath = result[0]
@map = result[1]
@map[sx,sy] = result[2] if result[2] != nil
end
def clear_path
@map = nil
@runpath = false
end
def setup_map(sx,sy,ex,ey)
map = Table.new($game_map.width, $game_map.height)
map[ex,ey] = 1
old_positions = []
new_positions = []
old_positions.push([ex, ey])
depth = 2
depth.upto(100){|step|
loop do
break if old_positions[0] == nil
x,y = old_positions.shift
return [true, map, step] if x == sx and y+1 == sy
if $game_player.passable?(x, y) and map[x,y + 1] == 0
map[x,y + 1] = step
new_positions.push([x,y + 1])
end
return [true, map, step] if x-1 == sx and y == sy
if $game_player.passable?(x, y) and map[x - 1,y] == 0
map[x - 1,y] = step
new_positions.push([x - 1,y])
end
return [true, map, step] if x+1 == sx and y == sy
if $game_player.passable?(x, y) and map[x + 1,y] == 0
map[x + 1,y] = step
new_positions.push([x + 1,y])
end
return [true, map, step] if x == sx and y-1 == sy
if $game_player.passable?(x, y) and map[x,y - 1] == 0
map[x,y - 1] = step
new_positions.push([x,y - 1])
end
end
old_positions = new_positions
new_positions = []
}
return [false, nil, nil]
end
end
class Game_Map
alias pf_game_map_setup setup
def setup(map_id)
pf_game_map_setup(map_id)
$game_player.clear_path
end
end

Portion de Code :

Citation :

#===========================================
# Mouvement par souris
# par berka
#===========================================
#
# clic gauche: definir le point d'arrivée
# clic droit: suivre/ne pas suivre le héros
# touche directionnelles: deplacer la map
#===========================================


Vitesse = 8 #vitesse du scroll de la map

class Scene_Map
alias scroll_update update
def update
Keyboard.update
Mouse.update
if Keyboard.trigger?(Keyboard::Mouse_Left)
$game_player.find_path(Mouse.grid[0], Mouse.grid[1])
end
scroll_update
end
end
class Game_Player < Game_Character
alias scroll_init initialize
def initialize
scroll_init
@scroll = false
end
def update
last_real_x = @real_x
last_real_y = @real_y
last_moving = moving?
move_by_input
super
if Keyboard.trigger?(Keyboard::Mouse_Right)
if @scroll == false
$game_player.center($game_player.x, $game_player.y)
@scroll = true
else
@scroll = false
end
end
@scroll = false if Input.dir4 != 0
$game_player.update_scroll(last_real_x, last_real_y) if @scroll == true
update_vehicle
update_nonmoving(last_moving)
end
def move_by_input
return unless movable?
return if $game_map.interpreter.running?
case Input.dir4
when 2; $game_map.start_scroll(2, 1, Vitesse)
when 4; $game_map.start_scroll(4, 1, Vitesse)
when 6; $game_map.start_scroll(6, 1, Vitesse)
when 8; $game_map.start_scroll(8, 1, Vitesse)
end
end
end
Revenir en haut Aller en bas
http://www.terazaky.fr https://twitter.com/teraglehn https://www.facebook.com/korg.grimm https://pinterest.com/teraglehn
Elekami
Fondateur
Fondateur
Elekami

Masculin
Messages postés : 19071
Date d'inscription : 19/07/2008
Jauge LPC :
Déplacement par la souris 8915271400100 / 100100 / 100Déplacement par la souris 8915271400

Déplacement par la souris Pater_10
Déplacement par la souris Staffe10
Déplacement par la souris Mythe_10
Déplacement par la souris Membre11
Déplacement par la souris Doyen10
Déplacement par la souris Scanar10
Déplacement par la souris Compos10
Déplacement par la souris Testeu10
Déplacement par la souris Membre15
Déplacement par la souris Partag10
Déplacement par la souris Projet10
Déplacement par la souris Projet16
Déplacement par la souris Riche_10
Déplacement par la souris Travai10
Déplacement par la souris Collec10
Déplacement par la souris Collec11
Déplacement par la souris Collec12
Déplacement par la souris Collec13
Déplacement par la souris Connar10


Déplacement par la souris Empty
MessageSujet: Re: Déplacement par la souris   Déplacement par la souris EmptyMer 29 Sep 2010 - 15:11

Très bien, merci beaucoup Bastien!
Continues comme ça Smile
Revenir en haut Aller en bas
https://www.ledijonshow.fr https://twitter.com/EleKoptes
Teraglehn
Ancien staffeux
Ancien staffeux
Teraglehn

Masculin
Messages postés : 3628
Date d'inscription : 23/09/2010
Jauge LPC :
Déplacement par la souris 89152714007 / 1007 / 100Déplacement par la souris 8915271400

Déplacement par la souris Membre15
Déplacement par la souris Travai10
Déplacement par la souris Action10
Déplacement par la souris Mythe_10
Déplacement par la souris Collec10
Déplacement par la souris Collec11
Déplacement par la souris Collec12
Déplacement par la souris Connar10
Déplacement par la souris Connar10
Déplacement par la souris Connar10


Déplacement par la souris Empty
MessageSujet: Re: Déplacement par la souris   Déplacement par la souris EmptyMer 29 Sep 2010 - 17:02

De rien de rien Embarassed ce n'est qu'un début si je trouve des bon script je vous les passerais ne vous inquiétez pas.

Je vais commencer par regarder dans les script que j'utilise si il y en as que vous n'avez pas déjà ^^
Revenir en haut Aller en bas
http://www.terazaky.fr https://twitter.com/teraglehn https://www.facebook.com/korg.grimm https://pinterest.com/teraglehn
Elekami
Fondateur
Fondateur
Elekami

Masculin
Messages postés : 19071
Date d'inscription : 19/07/2008
Jauge LPC :
Déplacement par la souris 8915271400100 / 100100 / 100Déplacement par la souris 8915271400

Déplacement par la souris Pater_10
Déplacement par la souris Staffe10
Déplacement par la souris Mythe_10
Déplacement par la souris Membre11
Déplacement par la souris Doyen10
Déplacement par la souris Scanar10
Déplacement par la souris Compos10
Déplacement par la souris Testeu10
Déplacement par la souris Membre15
Déplacement par la souris Partag10
Déplacement par la souris Projet10
Déplacement par la souris Projet16
Déplacement par la souris Riche_10
Déplacement par la souris Travai10
Déplacement par la souris Collec10
Déplacement par la souris Collec11
Déplacement par la souris Collec12
Déplacement par la souris Collec13
Déplacement par la souris Connar10


Déplacement par la souris Empty
MessageSujet: Re: Déplacement par la souris   Déplacement par la souris EmptyMar 12 Oct 2010 - 12:56

Ok, c'est bien il nous en faut des scripts^^
Revenir en haut Aller en bas
https://www.ledijonshow.fr https://twitter.com/EleKoptes
Contenu sponsorisé




Déplacement par la souris Empty
MessageSujet: Re: Déplacement par la souris   Déplacement par la souris Empty

Revenir en haut Aller en bas
 
Déplacement par la souris
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [XP / VX]Déplacement 8 directions
» Infiltration et déplacement prédéfini
» Déplacement horizontal RMVXAce
» [Résolu]Rendre le déplacement précis.
» Jouer à la souris

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Le Palais Créatif :: ~ PARTAGE ~ :: Scripts et plugins :: RPG Maker VX :: Autres-
Sauter vers: