Voilà, j'ai eu un bug que je persiste à résoudre et que je n'arrive pas à résoudre. Quand je vais dans les hautes herbes pour faire un combat, mon personnage ne bouge plus et un message d'erreur apparaît :
Voici mon scenemap actuel :
#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
# マップ画面の処理を行うクラスです。
#==============================================================================
class Scene_Map
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
def main
# スプライトセットを作成
@spriteset = Spriteset_Map.new
# メッセージウィンドウを作成
@message_window = Window_Message.new
# トランジション実行
Graphics.transition
# メインループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update
# 画面が切り替わったらループを中断
if $scene != self
break
end
end
# トランジション準備
Graphics.freeze
# スプライトセットを解放
@spriteset.dispose
# メッセージウィンドウを解放
@message_window.dispose
# タイトル画面に切り替え中の場合
if $scene.is_a?(Scene_Title)
# 画面をフェードアウト
Graphics.transition
Graphics.freeze
end
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
# ループ
loop do
# マップ、インタプリタ、プレイヤーの順に更新
# (この更新順序は、イベントを実行する条件が満たされているときに
# プレイヤーに一瞬移動する機会を与えないなどの理由で重要)
$game_map.update
$game_system.map_interpreter.update
$game_player.update
# システム (タイマー)、画面を更新
$game_system.update
$game_screen.update
# プレイヤーの場所移動中でなければループを中断
unless $game_temp.player_transferring
break
end
# 場所移動を実行
transfer_player
# トランジション処理中の場合、ループを中断
if $game_temp.transition_processing
break
end
end
# スプライトセットを更新
@spriteset.update
# メッセージウィンドウを更新
@message_window.update
# ゲームオーバーの場合
if $game_temp.gameover
# ゲームオーバー画面に切り替え
$scene = Scene_Gameover.new
return
end
# タイトル画面に戻す場合
if $game_temp.to_title
# タイトル画面に切り替え
$scene = Scene_Title.new
return
end
# トランジション処理中の場合
if $game_temp.transition_processing
# トランジション処理中フラグをクリア
$game_temp.transition_processing = false
# トランジション実行
if $game_temp.transition_name == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$game_temp.transition_name)
end
end
# メッセージウィンドウ表示中の場合
if $game_temp.message_window_showing
return
end
# エンカウント カウントが 0 で、エンカウントリストが空ではない場合
if $game_player.encounter_count == 0 and $game_map.encounter_list != []
# イベント実行中かエンカウント禁止中でなければ
unless $game_system.map_interpreter.running? or
$game_system.encounter_disabled
# トループを決定
n = rand($game_map.encounter_list.size)
troop_id = $game_map.encounter_list[n]
# トループが有効なら
if $data_troops[troop_id] != nil
# バトル呼び出しフラグをセット
$game_temp.battle_calling = true
$game_temp.battle_troop_id = troop_id
$game_temp.battle_can_escape = true
$game_temp.battle_can_lose = false
$game_temp.battle_proc = nil
end
end
end
# B ボタンが押された場合
if Input.trigger?(Input::B)
# イベント実行中かメニュー禁止中でなければ
unless $game_system.map_interpreter.running? or
$game_system.menu_disabled
# メニュー呼び出しフラグと SE 演奏フラグをセット
$game_temp.menu_calling = true
$game_temp.menu_beep = true
end
end
# デバッグモードが ON かつ F9 キーが押されている場合
if $DEBUG and Input.press?(Input::F9)
# デバッグ呼び出しフラグをセット
$game_temp.debug_calling = true
end
# プレイヤーの移動中ではない場合
unless $game_player.moving?
# 各種画面の呼び出しを実行
if $game_temp.battle_calling
call_battle
elsif $game_temp.shop_calling
call_shop
elsif $game_temp.name_calling
call_name
elsif $game_temp.menu_calling
call_menu
elsif $game_temp.save_calling
call_save
elsif $game_temp.debug_calling
call_debug
end
end
end
#--------------------------------------------------------------------------
# ● バトルの呼び出し
#--------------------------------------------------------------------------
def call_battle
# バトル呼び出しフラグをクリア
$game_temp.battle_calling = false
# メニュー呼び出しフラグをクリア
$game_temp.menu_calling = false
$game_temp.menu_beep = false
# エンカウント カウントを作成
$game_player.make_encounter_count
# マップ BGM を記憶し、BGM を停止
$game_temp.map_bgm = $game_system.playing_bgm
$game_system.bgm_stop
# バトル開始 SE を演奏
$game_system.se_play($data_system.battle_start_se)
# バトル BGM を演奏
$game_system.bgm_play($game_system.battle_bgm)
# プレイヤーの姿勢を矯正
$game_player.straighten
# バトル画面に切り替え
$scene = Scene_Battle.new
end
#--------------------------------------------------------------------------
# ● ショップの呼び出し
#--------------------------------------------------------------------------
def call_shop
# ショップ呼び出しフラグをクリア
$game_temp.shop_calling = false
# プレイヤーの姿勢を矯正
$game_player.straighten
# ショップ画面に切り替え
$scene = Scene_Shop.new
end
#--------------------------------------------------------------------------
# ● 名前入力の呼び出し
#--------------------------------------------------------------------------
def call_name
# 名前入力呼び出しフラグをクリア
$game_temp.name_calling = false
# プレイヤーの姿勢を矯正
$game_player.straighten
# 名前入力画面に切り替え
$scene = Scene_Name.new
end
#--------------------------------------------------------------------------
# ● メニューの呼び出し
#--------------------------------------------------------------------------
def call_menu
# メニュー呼び出しフラグをクリア
$game_temp.menu_calling = false
# メニュー SE 演奏フラグがセットされている場合
if $game_temp.menu_beep
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# メニュー SE 演奏フラグをクリア
$game_temp.menu_beep = false
end
# プレイヤーの姿勢を矯正
$game_player.straighten
# メニュー画面に切り替え
$scene = Scene_Menu.new
end
#--------------------------------------------------------------------------
# ● セーブの呼び出し
#--------------------------------------------------------------------------
def call_save
# プレイヤーの姿勢を矯正
$game_player.straighten
# セーブ画面に切り替え
$scene = Scene_Save.new
end
#--------------------------------------------------------------------------
# ● デバッグの呼び出し
#--------------------------------------------------------------------------
def call_debug
# デバッグ呼び出しフラグをクリア
$game_temp.debug_calling = false
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# プレイヤーの姿勢を矯正
$game_player.straighten
# デバッグ画面に切り替え
$scene = Scene_Debug.new
end
#--------------------------------------------------------------------------
# ● プレイヤーの場所移動
#--------------------------------------------------------------------------
def transfer_player
# プレイヤー場所移動フラグをクリア
$game_temp.player_transferring = false
# 移動先が現在のマップと異なる場合
if $game_map.map_id != $game_temp.player_new_map_id
# 新しいマップをセットアップ
$game_map.setup($game_temp.player_new_map_id)
end
# プレイヤーの位置を設定
$game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
# プレイヤーの向きを設定
case $game_temp.player_new_direction
when 2 # 下
$game_player.turn_down
when 4 # 左
$game_player.turn_left
when 6 # 右
$game_player.turn_right
when 8 # 上
$game_player.turn_up
end
# プレイヤーの姿勢を矯正
$game_player.straighten
# マップを更新 (並列イベント実行)
$game_map.update
# スプライトセットを再作成
@spriteset.dispose
@spriteset = Spriteset_Map.new
# トランジション処理中の場合
if $game_temp.transition_processing
# トランジション処理中フラグをクリア
$game_temp.transition_processing = false
# トランジション実行
Graphics.transition(20)
end
# マップに設定されている BGM と BGS の自動切り替えを実行
$game_map.autoplay
# フレームリセット
Graphics.frame_reset
# 入力情報を更新
Input.update
end
end
J'ai déjà essayé de le remplacer par celui ci :
#==============================================================================
# ■ Scene_Map
# Pokemon Script Project - Krosk
# 18/07/07
#-----------------------------------------------------------------------------
# Scène à ne pas modifier de préférence
#-----------------------------------------------------------------------------
# Variables appelées:
# $random_encounter
# Défini les monstres rencontrés sur la map et la fréquence d'apparition
# A définir de manière automatique par le logiciel, ou de manière manuelle
# en processus parallèle sur chaque map comme ci:
# set_encounter(rate, list1, list2, list3, list4)
# 'rate' correspond à la fréquence d'apparition
# 'listx' correspond à la liste de Pokémons, défini comme:
# x = tag terrain
# listx = [écart, [id, level, rareté locale] , [id, level, rl] , ... ]
#
# $random_encounter[0] = rate
# $random_encounter[1] = list1
# $random_encounter[2] = list2
# $random_encounter[3] = list3
# $random_encounter[4] = list4
#-----------------------------------------------------------------------------
class Scene_Map
attr_accessor :spriteset
def call_menu
# Redéfinition
$game_temp.menu_calling = false
if $game_temp.menu_beep
$game_system.se_play($data_system.decision_se)
$game_temp.menu_beep = false
end
$game_player.straighten
$scene = POKEMON_S::Pokemon_Menu.new
end
def call_save
$game_player.straighten
$scene = POKEMON_S::Pokemon_Save.new
end
def update
loop do
$game_map.update
$game_map.refresh
$game_system.map_interpreter.update
$game_player.update
$game_system.update
$game_screen.update
unless $game_temp.player_transferring
break
end
transfer_player
if $game_temp.transition_processing
break
end
end
$use_rec_item = false
@spriteset.update
@message_window.update
if $game_temp.gameover
$scene = Scene_Gameover.new
return
end
if $game_temp.to_title
$scene = Scene_Title.new
return
end
if $game_temp.transition_processing
$game_temp.transition_processing = false
if $game_temp.transition_name == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$game_temp.transition_name)
end
end
if $game_temp.message_window_showing
return
end
# Comptage Rencontre aléatoire
if $random_encounter != [0] and $game_player.encounter_count == 0
tag = $game_player.terrain_tag
unless $game_system.map_interpreter.running? or
$game_system.encounter_disabled or
tag == 0
enemy_list = $random_encounter[tag]
if enemy_list != nil and enemy_list.length > 1
$game_temp.battle_calling = true
end
end
end
if Input.trigger?(Input::B)
unless $game_system.map_interpreter.running? or
$game_system.menu_disabled
$game_temp.menu_calling = true
$game_temp.menu_beep = true
end
end
if Input.trigger?(Input::A)
unless $game_system.map_interpreter.running? or
$rec_item_id == nil
$use_rec_item = true
end
end
if $DEBUG and Input.press?(Input::F9)
$game_temp.debug_calling = true
end
# Map monde
if $game_map.map_id == POKEMON_S::_WMAPID
$game_temp.menu_calling = false
$game_temp.menu_beep = false
$game_temp.debug_calling = false
if Input.trigger?(Input::B)
$game_temp.back_calling = true
end
if Input.dir4 == 2 or Input.dir4 == 4 or Input.dir4 == 6 or
Input.dir4 == 8
$game_temp.world_map_event_checking = true
end
unless $game_player.moving?
$game_player.check_world_map
end
end
unless $game_player.moving?
if $game_temp.battle_calling
call_battle
elsif $game_temp.shop_calling
call_shop
elsif $game_temp.name_calling
call_name
elsif $game_temp.menu_calling
call_menu
elsif $game_temp.save_calling
call_save
elsif $game_temp.debug_calling
call_debug
elsif $game_temp.back_calling
call_back_world_map
elsif $use_rec_item
int = Interpreter.new
int.utiliser($rec_item_id)
end
$pokemon_party.maj_quetes
end
end
#---------------------------------------------------
# Reset de la variable $random_encounter
# au changement de map
#---------------------------------------------------
def transfer_player
# Raz Random Encounter
$random_encounter = [0]
# Indicateur Force
$on_strength = false
$game_temp.player_transferring = false
if $game_map.map_id != $game_temp.player_new_map_id
$game_map.setup($game_temp.player_new_map_id)
end
# Random Encounter
if $game_map.encounter_list != []
for i in 1..7
if $random_encounter[i] == nil
$random_encounter[i] = []
end
end
update_encounter
end
$game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
case $game_temp.player_new_direction
when 2 # 下
$game_player.turn_down
when 4 # 左
$game_player.turn_left
when 6 # 右
$game_player.turn_right
when 8 # 上
$game_player.turn_up
end
$game_player.straighten
$game_map.update
@spriteset.dispose
@spriteset = Spriteset_Map.new
if $game_temp.transition_processing
$game_temp.transition_processing = false
Graphics.transition(20)
end
$game_map.autoplay
Graphics.frame_reset
Input.update
end
def update_encounter
# Fréquence
$random_encounter[0] = (2880 / (16.0 * $game_map.encounter_step)).to_i
# Liste
for list_id in $game_map.encounter_list
tag = $data_encounter[list_id][0]
switch_id = $data_encounter[list_id][3]
# Vérification de switch
if (switch_id == 0 or $game_switches[switch_id]) and tag > 0
$random_encounter[tag] = $data_encounter[list_id][2]
end
end
end
def call_battle
tag = $game_player.terrain_tag
$game_temp.battle_calling = false
$game_temp.menu_calling = false
$game_temp.menu_beep = false
$game_player.make_encounter_count
x = rand(100)
undist_rate = 100
call = false
pokemon = nil
number = 0
for i in 1..$random_encounter[tag].length-1
if $random_encounter[tag][i] == nil
number += 1
elsif $random_encounter[tag][i][2] == nil and $random_encounter[tag][i][20] == nil
number += 1
else
undist_rate -= $random_encounter[tag][i][2]
end
end
until pokemon != nil
for i in 1..$random_encounter[tag].length-1
if call
next
end
if number != 0
x -= undist_rate/number
end
if x < 0
level = $random_encounter[tag][i][1]
id = $random_encounter[tag][i][0]
level -= rand($random_encounter[tag][0])
if level < 1
level = 1
end
pokemon = POKEMON_S::Pokemon.new(id, level)
call = true
# Paramètres optionnels
# Moveset
if $random_encounter[tag][i][5] != nil
j = 0
for skill in $random_encounter[tag][i][5]
if skill.type == Fixnum and skill > 0
pokemon.skills_set[j] = POKEMON_S::Skill.new(skill)
elsif skill.type == String
pokemon.skills_set[j] = POKEMON_S::Skill.new(POKEMON_S::Skill_Info.id(skill))
end
if skill == "AUCUN"
pokemon.skills_set[j] = nil
end
j += 1
end
pokemon.skills_set.compact!
end
# Stats avancées
if $random_encounter[tag][i][4] != nil and $random_encounter[tag][i][4].length == 6
pokemon.dv_modifier($random_encounter[tag][i][4])
end
# Genre
if $random_encounter[tag][i][6] != nil
pokemon.set_gender($random_encounter[tag][i][6])
end
# Forme
if $random_encounter[tag][i][7] != nil
pokemon.form = $random_encounter[tag][i][7]
end
# Shiny
if $random_encounter[tag][i][8] != nil
pokemon.shiny = $random_encounter[tag][i][8]
end
# Table stats
if $random_encounter[tag][i][9] != nil
pokemon.table_stats = $random_encounter[tag][i][9]
end
# Table types
if $random_encounter[tag][i][10] != nil
pokemon.table_type = $random_encounter[tag][i][10]
end
# Skill types
if $random_encounter[tag][i][11] != nil
pokemon.table_skill_type = $random_encounter[tag][i][11]
end
# Nature
if $random_encounter[tag][i][12].type == String
for i in 0...POKEMON_S::NATURE.size
if POKEMON_S::NATURE[i][0] == $random_encounter[tag][i][12]
pokemon.nature = POKEMON_S::NATURE[i]
break
end
end
elsif $random_encounter[tag][i][12].type == Array and $random_encounter[tag][i][12].size == 6
pokemon.nature = $random_encounter[tag][i][12]
end
end
end
end
if $pokemon_party.repel_count > 0 and level < $pokemon_party.max_level
$game_player.make_encounter_count
return
end
$game_temp.map_bgm = $game_system.playing_bgm
$game_system.bgm_stop
$game_system.se_play($data_system.battle_start_se)
$game_player.straighten
$scene = POKEMON_S::Pokemon_Battle_Wild.new($pokemon_party, pokemon)
end
end
J'espère que vous pourrez m'aidez à le résoudre !
k: