AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  




Partagez
 

 Optimisation de script

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
graille
Poulet carnivore Lv.2
Poulet carnivore Lv.2
graille


Avertissements : 3
Inscrit le : 10/02/2009
Messages : 23

Optimisation de script Empty
MessageSujet: Optimisation de script   Optimisation de script Icon_minitimeJeu 12 Fév 2009 - 14:37

Bonjour,

Voila j'ai ce script (trouver dans la rubrique du meme nom) :

Code:
#===========================================
#                      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

class Mouse
  @mouse_menu = 0
  def click?(button)
    return true if @keys.include?(button)
    return false
  end
  def press?(button)
    return true if @press.include?(button)
    return false
  end
  def 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 pixels
    return @pos == nil ? [0, 0] : @pos
  end
  def tiles
    return nil if @pos == nil
    x = @pos[0] / 32
    y = @pos[1] / 32
    return [x, y]
  end
  def set_pos(x_pos=0, y_pos=0)
    width, height = 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 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 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 pos
    @x, @y = screen_to_client(*global_pos)
    width, height = @width,@height
    if @x ==nil or @y== nil
      return 0,0
    end
    if (@x >= 0 and @y >= 0)
      @x = @x==nil ? 0 : @x
      @y = @y==nil ? 0 : @y
      return @x, @y
    else
      return 0,0
    end
  end
  def 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(hwnd, pos) != 0
      return pos.unpack('ll')
    else
      return nil
    end
  end
  def 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 client_size
    rect = [0, 0, 0, 0].pack('l4')
    Win32API.new('user32', 'GetClientRect', %w(l p), 'i').call(hwnd, rect)
    right, bottom = rect.unpack('l4')[2..3]
    return right, bottom
  end
  def client_pos
    rect = [0, 0, 0, 0].pack('l4')
    Win32API.new('user32', 'GetWindowRect', %w(l p), 'i').call(hwnd, rect)
    left, upper = rect.unpack('l4')[0..1]
    return left+4, upper+30
  end
  def 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
#===========================================
#                          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
#===========================================
#                      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
$mouse = Mouse.new

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

j'aimerais que quelqu'un le modifie pour que si le joueur veut il puisse jouer aussi avec les fleches et que celle ci ne servent pas a faire défiler la carte (je veux qu'elle defile toute seul)

et j'aimerais aussi que la souris s'affiche en plein ecran


J'aimerais aussi que quelqu'un me dise comment ajouter des sort dans le script de combat ABS et comment l'on tire a l'arc (je n'y arrive pas)

Merci d'avance
Revenir en haut Aller en bas
pattes
Templier Lv.15
Templier Lv.15
pattes


Masculin Age : 30
Inscrit le : 29/11/2008
Messages : 1272

Optimisation de script Empty
MessageSujet: Re: Optimisation de script   Optimisation de script Icon_minitimeJeu 12 Fév 2009 - 14:42

Pour l'ABS, tiens, il n'y as plus de problème dans celui-là ( pour l'arc, ce n'est pas très compliqué mais bon...) http://www.megaupload.com/?d=HOFUSB1T . Pour le reste, je ne te suis d'aucune utilité désolé^^.
Revenir en haut Aller en bas
graille
Poulet carnivore Lv.2
Poulet carnivore Lv.2
graille


Avertissements : 3
Inscrit le : 10/02/2009
Messages : 23

Optimisation de script Empty
MessageSujet: Re: Optimisation de script   Optimisation de script Icon_minitimeJeu 12 Fév 2009 - 16:35

pattes a écrit:
Pour l'ABS, tiens, il n'y as plus de problème dans celui-là ( pour l'arc, ce n'est pas très compliqué mais bon...) http://www.megaupload.com/?d=HOFUSB1T . Pour le reste, je ne te suis d'aucune utilité désolé^^.

la demo me met un message d'erreur :

player start location not set
Revenir en haut Aller en bas
Invité
Invité
avatar



Optimisation de script Empty
MessageSujet: Re: Optimisation de script   Optimisation de script Icon_minitimeJeu 12 Fév 2009 - 16:51

Sa veut dire "L'emplacement de départ du joueur n'est pas mis"
Revenir en haut Aller en bas
graille
Poulet carnivore Lv.2
Poulet carnivore Lv.2
graille


Avertissements : 3
Inscrit le : 10/02/2009
Messages : 23

Optimisation de script Empty
MessageSujet: Re: Optimisation de script   Optimisation de script Icon_minitimeJeu 12 Fév 2009 - 17:33

ok ça marche (il manquait le dossier graphic mais je l'ai rajouter) mais j'arrive toujours pas a tiré a l'arc
Revenir en haut Aller en bas
berka
Maire Lv.9
Maire Lv.9
berka


Masculin Age : 34
Inscrit le : 15/10/2008
Messages : 351

Optimisation de script Empty
MessageSujet: Re: Optimisation de script   Optimisation de script Icon_minitimeJeu 12 Fév 2009 - 18:19

C'est quand meme marrant que les entetes des scripts, mentionnant le nom de leur auteur, disparaisse toujours...

Mais, d'après l'auteur, ce script n'est pas fait pour correspondre avec un a-rpg... il va falloir que tu nous dises de quel script arpg tu parles et que tu nous donnes plus de précisions
Revenir en haut Aller en bas
http://rpgruby.olympe-network.com
pattes
Templier Lv.15
Templier Lv.15
pattes


Masculin Age : 30
Inscrit le : 29/11/2008
Messages : 1272

Optimisation de script Empty
MessageSujet: Re: Optimisation de script   Optimisation de script Icon_minitimeVen 13 Fév 2009 - 7:36

En fait, pour l'arc, il te suffit de créer un 21ème objet "Flèches" pour l'utiliser, après, c'est expliqué dans la démo...
Revenir en haut Aller en bas
graille
Poulet carnivore Lv.2
Poulet carnivore Lv.2
graille


Avertissements : 3
Inscrit le : 10/02/2009
Messages : 23

Optimisation de script Empty
MessageSujet: Re: Optimisation de script   Optimisation de script Icon_minitimeVen 13 Fév 2009 - 11:19

D'accord merci
Revenir en haut Aller en bas
Contenu sponsorisé




Optimisation de script Empty
MessageSujet: Re: Optimisation de script   Optimisation de script Icon_minitime

Revenir en haut Aller en bas
 

Optimisation de script

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

 Sujets similaires

-
» [Transformation VX] Script de quête => Script de Journal intime xD
» Tout les script Script Yanfly Engine Melody
» Problem script impute du script requiem ABS V4[Resolu]
» Script Lumière compatible avec le Script de temps
» [Script] Recherche d'un problème face à la modification d'un script [Résolu]

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Scripts :: Requêtes :: Archives-
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Cookies | Forum gratuit