Partagez
Aller en bas
avatar
Azuma-01
Membre

Nombre de messages : 94
Age : 26
Localisation : Amos
Distinction : aucune
Date d'inscription : 22/09/2009

amelioration du script Area+_character de dricc

le Jeu 15 Oct 2009 - 20:08
grâce à ce scripts les PNJ disent le nom de la map quand ils sont hors des areas Very Happy
fini les "Nulle part".

Détail:
Ce script fonctionne grâce au nom des aréa et le nom des map .La seul chose que vous avez à faire est dans l'event de PNJ de faire cette appelle de script: set_var_area_name(x) où x est id d'une variable.Ensuite dans le message du personnage vous insérez \v[90] là où doit parraitre le nom en question.

le script s'insère dans au dessus le main.
Spoiler:
Code:
##################################################
### Area character V1.1
### script d'origine crée par dricc
###Légèrement modifié par Azuma-01
##################################################

# Gere les deplacements aléatoires des personnages
# mettez [AREA] dans le nom de l'evenement et celui-ci ne pourra pas sortir de la zone ou il est
#nouveauté: Quand les characters sont hors des aeras ils disent le nom de la map plutôt que Nulle part

################################################################################
#===================================================================
# class Game_Map
class Game_Map
 attr_accessor :show_name
  alias azuma_map_name_window_setup setup

  def setup(map_id)
    azuma_map_name_window_setup(map_id)
    @show_name = true
  end

  def name
    map_infos = load_data("Data/MapInfos.rvdata")
    name = map_infos[@map_id].name
    name.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
    return name
  end
end
#===================================================================
#class Game_Character
class Game_Event
 attr_reader    :name
  alias dricc_area initialize

  def initialize(map_id, event)
    @name = event.name
    dricc_area(map_id, event)
  end
#--------------------------------------------------------------------------
  # * Move at Random
  #--------------------------------------------------------------------------
  def move_random
if  @name.index('[AREA]') != nil
    case rand(4)
    when 0;  move_down(false) if area_name(@x,@y) == area_name(@x,@y + 1) and AREA::area_info(area_name(@x,@y + 1))[0]
    when 1;  move_left(false) if area_name(@x,@y) == area_name(@x - 1,@y ) and AREA::area_info(area_name(@x- 1,@y))[0]
    when 2;  move_right(false) if area_name(@x,@y) == area_name(@x + 1,@y) and AREA::area_info(area_name(@x + 1,@y))[0]
    when 3;  move_up(false) if area_name(@x,@y) == area_name(@x,@y - 1) and AREA::area_info(area_name(@x,@y - 1))[0]
    end
else
    case rand(4)
    when 0;  move_down(false) if AREA::area_info(area_name(@x,@y + 1))[0]
    when 1;  move_left(false) if AREA::area_info(area_name(@x- 1,@y))[0]
    when 2;  move_right(false) if AREA::area_info(area_name(@x + 1,@y))[0]
    when 3;  move_up(false) if AREA::area_info(area_name(@x,@y - 1))[0]
    end
  end
  end

  #--------------------------------------------------------------------------
  # * 1 Step Forward
  #--------------------------------------------------------------------------
  def move_forward
if  @name.index('[AREA]') != nil
    case @direction
    when 2;  move_down(false) if area_name(@x,@y) == area_name(@x,@y + 1) and AREA::area_info(area_name(@x,@y + 1))[0]
    when 4;  move_left(false) if area_name(@x,@y) == area_name(@x - 1,@y ) and AREA::area_info(area_name(@x- 1,@y))[0]
    when 6;  move_right(false) if area_name(@x,@y) == area_name(@x + 1,@y) and AREA::area_info(area_name(@x + 1,@y))[0]
    when 8;  move_up(false) if area_name(@x,@y) == area_name(@x,@y - 1) and AREA::area_info(area_name(@x,@y - 1))[0]
    end
else
    case @direction
    when 2;  move_down(false)  if AREA::area_info(area_name(@x,@y + 1))[0]
    when 4;  move_left(false) if AREA::area_info(area_name(@x- 1,@y))[0]
    when 6;  move_right(false) if AREA::area_info(area_name(@x + 1,@y))[0]
    when 8;  move_up(false) if AREA::area_info(area_name(@x,@y - 1))[0]
end
      end
  end
 
  def  area_name_cur
    return area_name(@x,@y)
  end
 
    #--------------------------------------------------------------------------
  # * Determine if in Area
  #    area : Area data (RPG::Area)
  #--------------------------------------------------------------------------
  def in_area?(area,x,y)
    return false if area == nil
    return false if $game_map.map_id != area.map_id
    return false if x < area.rect.x
    return false if y < area.rect.y
    return false if x >= area.rect.x + area.rect.width
    return false if y >= area.rect.y + area.rect.height
    return true
  end
 
    def area_name(x,y)
    curr_area = nil
    for area in $data_areas.values
        if in_area?(area,x,y)
            if curr_area == nil then
              curr_area = area.name
            end
        end
      end
      return curr_area
    end
   
end
 
class Game_Interpreter

  def area_name_cur
    event = get_character(0)
    return event.area_name_cur
  end

  def set_var_area_name(var_id)
    $game_variables[var_id] = area_name_cur
    if  $game_variables[var_id]  == 0
      id = $game_map.map_id
      if area_name_cur != nil
      $game_variables[var_id]  = $Data_Maps.values[id].name
    else
      $game_variables[var_id]  = $game_map.name
        end
      end
  end
 end
quand les persos sont sur une area (ici nommer Rue du roi)


et quand ils sont pas dans une area (la map ici est nommer Kitmop, comme dans la démo de dricc)


Dernière édition par Azuma-01 le Lun 2 Nov 2009 - 16:12, édité 6 fois
avatar
ZangtherOld
Membre

Nombre de messages : 1711
Date d'inscription : 07/08/2009

Re: amelioration du script Area+_character de dricc

le Jeu 15 Oct 2009 - 20:44
C'est gentil mais avec des screens, une meilleure présentation et plus d'explications seraient pas mal non?
Du genre comment on l'utilise et des truc du genre.

PS : Sinon je sais que c'est pas mes affaires mais t'a demandé l'autorisation à Dricc pour publier une version modifiée de son script?
avatar
Azuma-01
Membre

Nombre de messages : 94
Age : 26
Localisation : Amos
Distinction : aucune
Date d'inscription : 22/09/2009

Re: amelioration du script Area+_character de dricc

le Lun 19 Oct 2009 - 17:59
Voilà! j' espère que c'est plus clair.
avatar
dricc
Membre

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

Re: amelioration du script Area+_character de dricc

le Mar 20 Oct 2009 - 14:14
Et pas d'inquiétude pour les problemes d'autorisation ... Mon script est 100% dispo .
Contenu sponsorisé

Re: amelioration du script Area+_character de dricc

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