Partagez
Aller en bas
Azuma-01
Azuma-01
Membre

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

amelioration du script Area+_character de dricc Empty 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)
amelioration du script Area+_character de dricc Ac110

et quand ils sont pas dans une area (la map ici est nommer Kitmop, comme dans la démo de dricc)
amelioration du script Area+_character de dricc Ac210


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

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

amelioration du script Area+_character de dricc Empty 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?
Azuma-01
Azuma-01
Membre

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

amelioration du script Area+_character de dricc Empty Re: amelioration du script Area+_character de dricc

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

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

amelioration du script Area+_character de dricc Empty 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 .
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum