Partagez
Aller en bas
UltimaSasuke
UltimaSasuke
Membre

Nombre de messages : 88
Age : 24
Localisation : France, 05
Distinction : aucune
Date d'inscription : 27/07/2011

[RGSS3] Script de gestion des Zones pour les PNJs et Joueur Empty [RGSS3] Script de gestion des Zones pour les PNJs et Joueur

le Dim 18 Déc 2011 - 21:56
Voilà le 1er script que je traduit pour rpgmakervx-fr.com , et que je traduit tout court.
Je continuerais à en traduire pour la communauté.

Tout d'abord désolé des fautes, je ne comprend pas toutes les notions en anglais. Je poste donc la version Traduite et la Version Original.

Nom du script original : MOVE RESTRICT RÉGION

Auteur : Yanfly

Version du script :1.0

Principe du script : Ce script permet de faire la gestion de zones permetant la restriction d'accés pour les PNJs et le Joueur.
(Plus compliqué à dire que à voir)

Instructions : Les Instructions sont sur le script.

Screens :

Screens en Anglais en attendant la version finale et traduite en FR.

Spoiler:
[RGSS3] Script de gestion des Zones pour les PNJs et Joueur Mrr-01

Spoiler:
[RGSS3] Script de gestion des Zones pour les PNJs et Joueur Mrr-02

Script :

Version Traduite.
Code:
#==============================================================================
#
# ▼ Yanfly Engine Ace - Restriction de Zone v1.00
# -- Last Updated: 2011.12.15
# -- Level: Normal
# -- Requires: n/a
#
#==============================================================================

$imported = {} if $imported.nil?
$imported["YEA-MoveRestrictRegion"] = true

#==============================================================================
# ▼ Mise à Jour
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2011.12.15 - Commencement et fin du script.
#
#==============================================================================
# ▼ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Tout le monde ne veut pas que les PNJs se balade un peut partout. Avec se
# script vous pouvez définir des zones auquelles les PNJs ne devrons pas
# dépassé. Il suffi juste de créer un contour de zone avec la nouvelle option
# de zone de combat. Ce système permet aussi d'empêcher le joueur de passer.
#
#==============================================================================
# ▼ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Pour installer se script, copiez/coller le en dessous de ▼ Materials et
# surtout au dessus de  ▼ Main
#
# -----------------------------------------------------------------------------
# Mots Clé - Ces mots clé sont à mettre dans la déscription de la carte
# dans les propriété de la carte.
#
# -----------------------------------------------------------------------------
# <npc restrict: x>
# <npc restrict: x, x>
# Les PNJs serons incapable d'aller au-delà de la région x sauf si ils ont
# le "Passemuraille" (Traverse tout) activé. Déssinez la zone qui enfermera
# les PNJs avec l'option de Zone, et les PNJs serons incapable de passer au-delà
# de n'importe quelle Tiles marqué par la région x.
#
# <player restrict: x>
# <player restrict: x, x>
# Ceci est la même chose que pour les PNJs sauf que c'est une limitation pour
# le joueur. Il ne pourra pas franchir la zone marqué par la région x.
# Il pourra tout de même le traversé si l'option "Passemuraille" (Traverse tout)
# est activé pour le joueur.
#
#==============================================================================
# ▼ Compatibilité
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Ce script est fait uniquement pour RPG Maker Vx Ace, il est peut probable
# qu'il fonction sous RPG Maker VX.
#
#==============================================================================

module YEA
  module MOVE_RESTRICT
   
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Region restreinte pour le joueur par défaut -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # Si vous voulez qu'il y ait toujour un ID de région qui va interdir le
    # joueur de passer, inséré le dans le tableau ci-dessous.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    DEFAULT_PLAYER = [62]
   
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Region restrainte pour les PNJs par défaut -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # Si vous voulez qu'il y ait toujour un ID de région qui va interdir le
    # PNJ de passer, inséré le dans le tableau ci-dessous.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    DEFAULT_NPC = [63]
   
  end # MOVE_RESTRICT
end # YEA

#==============================================================================
# ▼ L'auteur du script avait écrit en résumé de ne pas éditer cette partie du
# script sinon vous pouviez tomber dans le coma et/ou mourrir, etc...
# Bonne touche d'humour en tout cas.
#==============================================================================

module YEA
  module REGEXP
  module MAP
   
    NPC_RESTRICT =
      /<(?:NPC_RESTRICT|npc restrict):[ ]*(\d+(?:\s*,\s*\d+)*)>/i
    PLAYER_RESTRICT =
      /<(?:PLAYER_RESTRICT|player restrict):[ ]*(\d+(?:\s*,\s*\d+)*)>/i
   
  end # NPC
  end # REGEXP
end # YEA

#==============================================================================
# ■ RPG::Map
#==============================================================================

class RPG::Map
 
  #--------------------------------------------------------------------------
  # Variables d'instance publique
  #--------------------------------------------------------------------------
  attr_accessor :npc_restrict_regions
  attr_accessor :player_restrict_regions
 
  #--------------------------------------------------------------------------
  # common cache: load_notetags_mrr
  #--------------------------------------------------------------------------
  def load_notetags_mrr
    @npc_restrict_regions = YEA::MOVE_RESTRICT::DEFAULT_NPC.clone
    @player_restrict_regions = YEA::MOVE_RESTRICT::DEFAULT_PLAYER.clone
    #---
    self.note.split(/[\r\n]+/).each { |line|
      case line
      #---
      when YEA::REGEXP::MAP::NPC_RESTRICT
        $1.scan(/\d+/).each { |num|
        @npc_restrict_regions.push(num.to_i) if num.to_i > 0 }
      when YEA::REGEXP::MAP::PLAYER_RESTRICT
        $1.scan(/\d+/).each { |num|
        @player_restrict_regions.push(num.to_i) if num.to_i > 0 }
      #---
      end
    } # self.note.split
    #---
  end
 
end # RPG::Map

#==============================================================================
# ■ Game_Map
#==============================================================================

class Game_Map
 
  #--------------------------------------------------------------------------
  # alias method: setup
  #--------------------------------------------------------------------------
  alias game_map_setup_mrr setup
  def setup(map_id)
    game_map_setup_mrr(map_id)
    @map.load_notetags_mrr
  end
 
  #--------------------------------------------------------------------------
  # Nouvelle method: npc_restrict_regions
  #--------------------------------------------------------------------------
  def npc_restrict_regions
    return @map.npc_restrict_regions
  end
 
  #--------------------------------------------------------------------------
  # Nouvelle method: player_restrict_regions
  #--------------------------------------------------------------------------
  def player_restrict_regions
    return @map.player_restrict_regions
  end
 
end # Game_Map

#==============================================================================
# ■ Game_CharacterBase
#==============================================================================

class Game_CharacterBase
 
  #--------------------------------------------------------------------------
  # alias method: passable?
  #--------------------------------------------------------------------------
  alias game_characterbase_passable_mrr passable?
  def passable?(x, y, d)
    return false if npc_forbid?(x, y, d)
    return game_characterbase_passable_mrr(x, y, d)
  end
 
  #--------------------------------------------------------------------------
  # Nouvelle method: npc_forbid?
  #--------------------------------------------------------------------------
  def npc_forbid?(x, y, d)
    return false unless self.is_a?(Game_Event)
    return false if @through
    region = 0
    case d
    when 1; region = $game_map.region_id(x-1, y+1)
    when 2; region = $game_map.region_id(x+0, y+1)
    when 3; region = $game_map.region_id(x+1, y+1)
    when 4; region = $game_map.region_id(x-1, y+0)
    when 5; region = $game_map.region_id(x+0, y+0)
    when 6; region = $game_map.region_id(x+1, y+0)
    when 7; region = $game_map.region_id(x-1, y-1)
    when 8; region = $game_map.region_id(x+0, y-1)
    when 9; region = $game_map.region_id(x+1, y-1)
    end
    return $game_map.npc_restrict_regions.include?(region)
  end
 
end # Game_CharacterBase

#==============================================================================
#
# ▼ Fin du Script
#
#==============================================================================

BugFix du Joueur et de la réstriction :
Le system MOVE RESTRICT RÉGION bloque pas le joueur: les régions ne sont pas véréfier pour Game_Player
à cause du code
Code:
def npc_forbid?(x, y, d)
    return false unless self.is_a?(Game_Event)
...

En français ça dit: retourne faux (doc passable) à moins que self (le personnage) soit un event.

Le code que j'ai fait ajoute la vérification de "passabillité" pour le joueur.
En bref c'est BugFix.

Voici le code de Azuma-01 :
class Game_CharacterBase

Code:
  #--------------------------------------------------------------------------
  # alias method: passable?
  #--------------------------------------------------------------------------
  def passable?(x, y, d)
    return false if npc_forbid?(x, y, d)
    return false if player_forbid?(x, y, d)
    return game_characterbase_passable_mrr(x, y, d)
  end
 
  #--------------------------------------------------------------------------
  # new method: forward_region_id
  #--------------------------------------------------------------------------
  def forward_region_id(d)
    case d
    when 1; $game_map.region_id(@x-1, @y+1)
    when 2; $game_map.region_id(@x+0, @y+1)
    when 3; $game_map.region_id(@x+1, @y+1)
    when 4; $game_map.region_id(@x-1, @y+0)
    when 5; $game_map.region_id(@x+0, @y+0)
    when 6; $game_map.region_id(@x+1, @y+0)
    when 7; $game_map.region_id(@x-1, @y-1)
    when 8; $game_map.region_id(@x+0, @y-1)
    when 9; $game_map.region_id(@x+1, @y-1)
    end
  end
 
  #--------------------------------------------------------------------------
  # new method: npc_forbid?
  #--------------------------------------------------------------------------
  def npc_forbid?(x, y, d)
    return false unless self.is_a?(Game_Event)
    return false if @through
    return $game_map.npc_restrict_regions.include?(forward_region_id(d))
  end
  #--------------------------------------------------------------------------
  # new method: player_forbid?
  #--------------------------------------------------------------------------
  def player_forbid?(x, y, d)
    return false unless self.is_a?(Game_Player)
    return false if @through
    return $game_map.player_restrict_regions.include?(forward_region_id(d))
  end
 
end # Game_CharacterBase




Coco' : +1 point ~


Dernière édition par UltimaSasuke le Mer 25 Jan 2012 - 17:55, édité 2 fois
Coco'
Coco'
Staffeux retraité

Nombre de messages : 6577
Age : 26
Localisation : Nord/Douai
Distinction : EL DICTATOR COCO'
Coco-Dieu en puissance

[RGSS3] Script de gestion des Zones pour les PNJs et Joueur Magikarpe 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
http://www.rpgmakervx-fr.com

[RGSS3] Script de gestion des Zones pour les PNJs et Joueur Empty Re: [RGSS3] Script de gestion des Zones pour les PNJs et Joueur

le Dim 18 Déc 2011 - 22:03
Pas mal ce script ^^ Par contre, essaies de corriger un minimum tes fautes d'orthographe Wink


+1 point !
UltimaSasuke
UltimaSasuke
Membre

Nombre de messages : 88
Age : 24
Localisation : France, 05
Distinction : aucune
Date d'inscription : 27/07/2011

[RGSS3] Script de gestion des Zones pour les PNJs et Joueur Empty Re: [RGSS3] Script de gestion des Zones pour les PNJs et Joueur

le Dim 18 Déc 2011 - 22:11
Je les corrigeraient dès que la version finale de Ace sort en FR comme ça je ferais une démo + screens + correction.

Merci Wink
kilam1110
kilam1110
Membre

Nombre de messages : 181
Distinction : Amateur de jeux de mots pourris [RGSS3] Script de gestion des Zones pour les PNJs et Joueur 522164
[TTT]
et plus, il en fait et plus ça plane haut [RGSS3] Script de gestion des Zones pour les PNJs et Joueur 522164
[Balb']
Date d'inscription : 17/05/2011

[RGSS3] Script de gestion des Zones pour les PNJs et Joueur Empty Re: [RGSS3] Script de gestion des Zones pour les PNJs et Joueur

le Lun 19 Déc 2011 - 0:16
Ah ouais, ça peut vraiment être utile comme script. Merci. :p
Radiuss11
Radiuss11
Membre

Nombre de messages : 48
Age : 28
Localisation : France, Moselle
Distinction : aucune
Date d'inscription : 27/04/2008

[RGSS3] Script de gestion des Zones pour les PNJs et Joueur Empty Re: [RGSS3] Script de gestion des Zones pour les PNJs et Joueur

le Lun 19 Déc 2011 - 8:23
Merci pour cette trad! En effet un script qui va plaire a ceux qui aiment donner une vie plus réaliste a leurs PNJs !
+1
Dishi
Dishi
Membre

Nombre de messages : 632
Age : 21
Localisation : Marseille
Distinction : Alias Dichie
Aussi alias Sherifa Luna de la commu' (je suis dichie et d'ailleurs )

Co-créateur du Nyan Xak
[Tétété]

Apprenti Pedobear
[Mémé nova]

Keupiteur de ponctuation.
[un sombre inconnu.]
Date d'inscription : 07/07/2011
https://github.com/paul-roman

[RGSS3] Script de gestion des Zones pour les PNJs et Joueur Empty Re: [RGSS3] Script de gestion des Zones pour les PNJs et Joueur

le Lun 19 Déc 2011 - 8:58
C'la peut être sympa...
Je ne sais pas si je l"utiliserai, mais merci du partage (:
Contenu sponsorisé

[RGSS3] Script de gestion des Zones pour les PNJs et Joueur Empty Re: [RGSS3] Script de gestion des Zones pour les PNJs et Joueur

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