Sujet n°4589
Posté par Peter le 24 Juil - 17:07 (2009)
Titre : Bug de la variable 5000
J'ai réussis à localiser ce bug est je me suis rendu compte que dans TOUT les scripts avec une variable 5000 bug.
C'est à dire PC,baie,...
J'ai donc essayer plusieur solution dont celle de suprimer toute les ligne avec la variable 5000 et la plus de bug mais ca marche plus.
Note:j'ai remis les script de 4g+ après et ca bug toujour.

Posté par Pαlвσlѕку le 24 Juil - 19:32 (2009)
Tout les nouveaux systèmes de PSP4G+ utilisent la variable 5000.
Si les différents systèmes de PSP4G+ sont mal initialisés, il est possible que ça bug.

Ca t'affiche quoi comme bug, en faite ?

Posté par Peter le 24 Juil - 20:07 (2009)


LE SCRIPT/
Spoiler
# {STADE => POURCENTAGE}
TPS_STADES = {
0 => 5, # Passage entre le stade 0 et le stade 1
1 => 15, # Passage entre le stade 1 et le stade 2
2 => 30, # Passage entre le stade 2 et le stade 3
3 => 50, # Passage entre le stade 3 et le stade 4
}

# {"TYPE" => [id,[h,m,s], nb_baies_max, nb_arrosages]}
BAIE = {
"BAIE CERIZ" => [ 1, [12, 0, 0], 5, 3],
"BAIE MARRON" => [ 2, [12, 0, 0], 5, 3],
"BAIE PECHA" => [ 3, [12, 0, 0], 5, 3],
"BAIE FRAIVE" => [ 4, [12,0,0], 5, 3],
"BAIE WILLIA" => [ 5, [12,0,0], 5, 3],
# "BAIE MEPO" => [ 6, [16,0,0], 5, 4],
"BAIE ORAN" => [ 7, [16,0,0], 5, 4],
# "BAIE KIKA" => [ 8, [16,0,0], 5, 4],
# "BAIE PRINE" => [ 9, [48,0,0], 5, 12],
# "BAIE SITRUS" => [10, [32,0,0], 5, 8],
# "BAIE FIGUY" => [11, [20,0,0], 5, 5],
# "BAIE WIKI" => [12, [20,0,0], 5, 5],
}

class Baie
attr_accessor :type
attr_accessor :id_type
attr_accessor :id_baies
attr_accessor :date
attr_accessor :temps
attr_accessor :dt_st_sv
attr_accessor :pousse
attr_accessor :joie
attr_accessor :baies
attr_accessor :stade
attr_accessor :arrosage
def initialize(type)
clock = Time.now
@type = type
@id_type = BAIE[@type][0]
@id_baies = $baie_id
$baie_id = 0
@date = [$game_variables[99],clock.hour,clock.min,clock.sec]
@arrosage = 0
@stade = 0
@temps = BAIE[type][1].dup
for i in 0... @temps.size
@temps[i] *= TPS_STADES[@stade] / 100.0
end
tps = @temps[0] * 3600
tps += @temps[1] * 60
tps += @temps[2]
tps = tps.to_i
@dt_st_sv = [
@date[0] + tps / 86400,
@date[1] + (tps % 86400) / 3600,
@date[2] + (tps % 3600) / 60,
@date[3] + tps % 60
]
@pousse = false
@joie = 0
@baies = 1
end

def maj
clock = Time.new
date = [$game_variables[99],clock.hour,clock.min,clock.sec]
for i in 0..3
if date[i] > @dt_st_sv[i]
retour = true
break
elsif date[i] == @dt_st_sv[i]
next
else
retour = false
break
end
end
if retour
@stade += 1 if @stade < 4
@pousse = (@stade == 4)
if @stade <= 3
@temps = BAIE[type][1]
for i in 0...@temps.size
@temps[i] *= TPS_STADES[@stade] / 100.0
end
tps = @temps[0] * 3600
tps += @temps[1] * 60
tps += @temps[2]
tps = tps.to_i
date = [$game_variables[99],clock.hour,clock.min,clock.sec]
@dt_st_sv = [
date[0] + tps / 86400,
date[1] + (tps % 86400) / 3600,
date[2] + (tps % 3600) / 60,
date[3] + tps % 60
]
end
end
end

def arroser
@arrosage += 1
if BAIE[type][3] >= @arrosage
@joie += 3
@baies += (rand(@joie) / 5)
else
@joie -= rand(5)
@baies -= (rand(50) / 20)
end
@baies = (@baies > BAIE[type][2] ? BAIE[type][2] : (@baies < 1 ? 1 : @baies))
tps = @dt_st_sv[0] * 86400
tps += @dt_st_sv[1] * 3600
tps += @dt_st_sv[2] * 60
tps += @dt_st_sv[3]
tps = tps.to_i
tps -= 60
@dt_st_sv = [
tps / 86400,
(tps % 86400) / 3600,
(tps % 3600) / 60,
tps % 60
]
end
end

class Game_Map
alias baie_refresh refresh
def refresh
if @map_id > 0
baie_refresh
if not(@events.empty?) and $game_variables[5000].type == Hash and $game_variables[5000]["baies"] != nil and $game_variables[5000]["baies"][@map_id] != nil
for i in @events.keys
if $game_variables[5000]["baies"][@map_id][i] != nil
maj_baie
stade = $game_variables[5000]["baies"][@map_id][i].stade
if stade == 0
@events[i].character_name = "baie_00.png"
@events[i].direction = 2
else
@events[i].character_name = "baie_" + sprintf("%02d",$game_variables[5000]["baies"][@map_id][i].id_type) + ".png"
@events[i].direction = 2 * stade
end
elsif $game_variables[5000]["baies"][@map_id][i] == nil and @events[i].event.name == "BAIE"
@events[i].character_name = "blanc"
@events[i].direction = 2
end
end
end
end
end

def maj_baie
for i in 1..@events.size
if $game_variables[5000]["baies"][@map_id][i] != nil
$game_variables[5000]["baies"][@map_id][i].maj
end
end
end
end

class Interpreter
def planter_baie
scene = Pokemon_Item_Bag.new([4,0], 100, "planter")
scene.main
Graphics.transition
return scene.return_data
end

def init_baies(map = $game_map.map_id, no_arbre = @event_id, baie = "BAIE CERIZ", nbre = BAIE[baie][2])
$baie_id = Item.id(baie)
$game_variables[5000]["baies"][map] = [] if $game_variables[5000]["baies"][map] == nil
$game_variables[5000]["baies"][map][no_arbre] = Baie.new(baie)
$game_variables[5000]["baies"][map][no_arbre].stade = 4
$game_variables[5000]["baies"][map][no_arbre].baies = nbre
end
end

Le log
Spoiler
---------- Erreur de script : Interpreter Bis ----------
----- Type
TypeError

----- Message
Section187:172:in `[]'cannot convert String into Integer

----- Position dans Interpreter Bis
Ligne 452

----- Backtrace
Script : Interpreter Bis | Ligne : 452 | Méthode : in `command_355'
Script : Baies | Ligne : 172 | Méthode : in `init_baies'
Script : Loading | Ligne : 1 | Méthode : in `command_355'
Script : Interpreter 2 | Ligne : 215 | Méthode : in `eval'
Script : Interpreter Bis | Ligne : 452 | Méthode : in `command_355'
Script : Interpreter 2 | Ligne : 215 | Méthode : in `execute_command'
Script : Interpreter 1 | Ligne : 199 | Méthode : in `update'
Script : Interpreter 1 | Ligne : 113 | Méthode : in `loop'
Script : Interpreter 1 | Ligne : 204 | Méthode : in `update'
Script : Game_Event | Ligne : 221 | Méthode : in `update'
Script : Game_Map | Ligne : 393 | Méthode : in `update'
Script : Game_Map | Ligne : 392 | Méthode : in `each'
Script : Game_Map | Ligne : 392 | Méthode : in `update'
Script : Scene_Title | Ligne : 140 | Méthode : in `alias_command_new_game'
Script : Scene_Title | Ligne : 560 | Méthode : in `command_new_game'
Script : Scene_Title | Ligne : 381 | Méthode : in `update'
Script : Scene_Title | Ligne : 339 | Méthode : in `wachunga_autofontinstall_st_main'
Script : Scene_Title | Ligne : 336 | Méthode : in `loop'
Script : Scene_Title | Ligne : 343 | Méthode : in `wachunga_autofontinstall_st_main'
Script : Autofont_Install | Ligne : 115 | Méthode : in `main'
Script : Main | Ligne : 49

c'est le bug pour les baie,mais il y en a d'autre qui donne les même ligne sur d'autre script avec la variable5000 comme le PC.

Posté par Pαlвσlѕку le 24 Juil - 22:34 (2009)
Quand tu programmes les événements des baies, n'utilise pas d'event' en processus parallèle^^.

Je ne suis pas sûr que ça soit ça, cependant.

Posté par Peter le 24 Juil - 22:49 (2009)
tu veut dire le script que dit qu'elle baie sera sur l'évent x parceque si c'est ca oui mon script est en event comun.
sinon j'ai fait ca et en effet ca bug plus sur les baie seul ique on voit pas l'arbre c'est normal?
Quand au Pc ca bug toujour voila ce qui bug
Spoiler
#-----------------------------------------------------------------------------
# run_computer
# Appel de PC
#-----------------------------------------------------------------------------
def run_computer
unless $game_variables[5000]["compteurs"] == nil
if $game_variables[5000]["compteurs"] != nil and
$game_variables[5000]["compteurs"][0].tourne
bool = $game_variables[5000]["compteurs"][1]
$game_variables[5000]["compteurs"][0].arreter
$game_variables[5000]["compteurs"][1] = bool
end
end
$scene = Pokemon_Computer.new
@wait_count = 2
return false
end
alias demarrer_pc run_computer

def enable_pokedex
$data_pokedex[0] = true
end
alias activer_pokedex enable_pokedex

il me dit bug ligne 107

Posté par Sphinx le 25 Juil - 09:26 (2009)
le 2° bug est déjà corrigé, cf la liste des corrections manuelles.


Et en effet, la variable 5000 est INDISPENSABLE à 4G+, il ne faut pas y toucher si on ne sait pas ce qu'on fait... Ton premier bug se déclenche sur une sauvegarde ou sur une nouvelle partie ?

Posté par Peter le 25 Juil - 10:31 (2009)
Les deux.
Mais j'ai fait ce que ma dit Palbolsky et ca bug plus mis a part qu'ont ne voit pas l'arbre.
Sinon je vais corriger le deusième bug,je vais voir la corection manuel mais esce que la dernière version de 4g+ est mis à jour?

Posté par Sphinx le 25 Juil - 10:36 (2009)
la 4G+C4 (qui reprendra les différents correctifs pour C3 publiés sur le board, ainsi que 2-3 petits trucs du genre les surnoms des pokémons des dresseurs, bref que des choses que vous pourrez ajouter manuellement) sortira bientôt. Actuellement, la C3 ne contient pas les derniers correctifs publiés (j'ai daté exprès chaque élément du topic de corrections pour que vous puissiez vous repérer).


>> Tu peux me donner les détails de ton bug à baies depuis le début stp ?

Posté par Peter le 25 Juil - 10:50 (2009)
bon,d'accor.
Parametre sur map:
script:
Spoiler

Event baie:
Spoiler

Je rentre sur la map:


Le script:
Spoiler
Code:
# {STADE => POURCENTAGE}
TPS_STADES = {
              0 => 5, # Passage entre le stade 0 et le stade 1
              1 => 15, # Passage entre le stade 1 et le stade 2
              2 => 30, # Passage entre le stade 2 et le stade 3
              3 => 50, # Passage entre le stade 3 et le stade 4
             }

# {"TYPE" => [id,[h,m,s], nb_baies_max, nb_arrosages]}
BAIE = {
        "BAIE CERIZ"  => [ 1, [12, 0, 0],  5,  3],
        "BAIE MARRON"  => [ 2, [12, 0, 0],  5,  3],
        "BAIE PECHA"  => [ 3, [12, 0, 0],  5,  3],
        "BAIE FRAIVE" => [ 4, [12,0,0],  5,  3],
        "BAIE WILLIA" => [ 5, [12,0,0],  5,  3],
#        "BAIE MEPO"   => [ 6, [16,0,0],  5,  4],
        "BAIE ORAN"   => [ 7, [16,0,0],  5,  4],
#        "BAIE KIKA"   => [ 8, [16,0,0],  5,  4],
#        "BAIE PRINE"  => [ 9, [48,0,0],  5, 12],
#        "BAIE SITRUS" => [10, [32,0,0],  5,  8],
#        "BAIE FIGUY"  => [11, [20,0,0],  5,  5],
#        "BAIE WIKI"   => [12, [20,0,0],  5,  5],
       }

class Baie
  attr_accessor :type
  attr_accessor :id_type
  attr_accessor :id_baies
  attr_accessor :date
  attr_accessor :temps
  attr_accessor :dt_st_sv
  attr_accessor :pousse
  attr_accessor :joie
  attr_accessor :baies
  attr_accessor :stade
  attr_accessor :arrosage
  def initialize(type)
    clock     = Time.now
    @type     = type
    @id_type  = BAIE[@type][0]
    @id_baies = $baie_id
    $baie_id  = 0
    @date     = [$game_variables[99],clock.hour,clock.min,clock.sec]
    @arrosage = 0
    @stade    = 0
    @temps    = BAIE[type][1].dup
    for i in 0... @temps.size
      @temps[i] *= TPS_STADES[@stade] / 100.0
    end
    tps = @temps[0] * 3600
    tps += @temps[1] * 60
    tps += @temps[2]
    tps = tps.to_i
    @dt_st_sv = [
                 @date[0] + tps / 86400,
                 @date[1] + (tps % 86400) / 3600,
                 @date[2] + (tps % 3600) / 60,
                 @date[3] + tps % 60
                ]
    @pousse   = false
    @joie     = 0
    @baies    = 1
  end
 
  def maj
    clock = Time.new
    date = [$game_variables[99],clock.hour,clock.min,clock.sec]
    for i in 0..3
      if date[i] > @dt_st_sv[i]
        retour = true
        break
      elsif date[i] == @dt_st_sv[i]
        next
      else
        retour = false
        break
      end
    end
    if retour
      @stade += 1 if @stade < 4
      @pousse = (@stade == 4)
      if @stade <= 3
        @temps    = BAIE[type][1]
        for i in 0...@temps.size
          @temps[i] *= TPS_STADES[@stade] / 100.0
        end
        tps = @temps[0] * 3600
        tps += @temps[1] * 60
        tps += @temps[2]
        tps = tps.to_i
        date = [$game_variables[99],clock.hour,clock.min,clock.sec]
        @dt_st_sv = [
                     date[0] + tps / 86400,
                     date[1] + (tps % 86400) / 3600,
                     date[2] + (tps % 3600) / 60,
                     date[3] + tps % 60
                    ]
      end
    end
  end
 
  def arroser
    @arrosage += 1
    if BAIE[type][3] >= @arrosage
      @joie += 3
      @baies += (rand(@joie) / 5)
    else
      @joie -= rand(5)
      @baies -= (rand(50) / 20)
    end
    @baies = (@baies > BAIE[type][2] ? BAIE[type][2] : (@baies < 1 ? 1 : @baies))
    tps = @dt_st_sv[0] * 86400
    tps += @dt_st_sv[1] * 3600
    tps += @dt_st_sv[2] * 60
    tps += @dt_st_sv[3]
    tps = tps.to_i
    tps -= 60
    @dt_st_sv = [
                 tps / 86400,
                 (tps % 86400) / 3600,
                 (tps % 3600) / 60,
                 tps % 60
                ]
  end
end

class Game_Map
  alias baie_refresh refresh
  def refresh
    if @map_id > 0
      baie_refresh
      if not(@events.empty?) and $game_variables[5000].type == Hash and $game_variables[5000]["baies"] != nil and $game_variables[5000]["baies"][@map_id] != nil
        for i in @events.keys
          if $game_variables[5000]["baies"][@map_id][i] != nil
            maj_baie
            stade = $game_variables[5000]["baies"][@map_id][i].stade
            if stade == 0
              @events[i].character_name = "baie_00.png"
              @events[i].direction = 2
            else
              @events[i].character_name = "baie_" + sprintf("%02d",$game_variables[5000]["baies"][@map_id][i].id_type) + ".png"
              @events[i].direction = 2 * stade
            end
          elsif $game_variables[5000]["baies"][@map_id][i] == nil and @events[i].event.name == "BAIE"
            @events[i].character_name = "blanc"
            @events[i].direction = 2
          end
        end
      end
    end
  end
 
  def maj_baie
    for i in 1..@events.size
      if $game_variables[5000]["baies"][@map_id][i] != nil
        $game_variables[5000]["baies"][@map_id][i].maj
      end
    end
  end
end
 
class Interpreter
  def planter_baie
    scene = Pokemon_Item_Bag.new([4,0], 100, "planter")
    scene.main
    Graphics.transition
    return scene.return_data
  end
 
  def init_baies(map = $game_map.map_id, no_arbre = @event_id, baie = "BAIE CERIZ", nbre = BAIE[baie][2])
    $baie_id = Item.id(baie)
    $game_variables[5000]["baies"][map] = [] if $game_variables[5000]["baies"][map] == nil
    $game_variables[5000]["baies"][map][no_arbre] = Baie.new(baie)
    $game_variables[5000]["baies"][map][no_arbre].stade = 4
    $game_variables[5000]["baies"][map][no_arbre].baies = nbre
  end
end

Le log:
Spoiler
---------- Erreur de script : Interpreter Bis ----------
----- Type
TypeError

----- Message
Section187:172:in `[]'cannot convert String into Integer

----- Position dans Interpreter Bis
Ligne 452

----- Backtrace
Script : Interpreter Bis | Ligne : 452 | Méthode : in `command_355'
Script : Baies | Ligne : 172 | Méthode : in `init_baies'
Script : Loading | Ligne : 1 | Méthode : in `command_355'
Script : Interpreter 2 | Ligne : 215 | Méthode : in `eval'
Script : Interpreter Bis | Ligne : 452 | Méthode : in `command_355'
Script : Interpreter 2 | Ligne : 215 | Méthode : in `execute_command'
Script : Interpreter 1 | Ligne : 199 | Méthode : in `update'
Script : Interpreter 1 | Ligne : 113 | Méthode : in `loop'
Script : Interpreter 1 | Ligne : 204 | Méthode : in `update'
Script : Game_Event | Ligne : 221 | Méthode : in `update'
Script : Game_Map | Ligne : 393 | Méthode : in `update'
Script : Game_Map | Ligne : 392 | Méthode : in `each'
Script : Game_Map | Ligne : 392 | Méthode : in `update'
Script : Scene_Title | Ligne : 140 | Méthode : in `alias_command_new_game'
Script : Scene_Title | Ligne : 560 | Méthode : in `command_new_game'
Script : Scene_Title | Ligne : 381 | Méthode : in `update'
Script : Scene_Title | Ligne : 339 | Méthode : in `wachunga_autofontinstall_st_main'
Script : Scene_Title | Ligne : 336 | Méthode : in `loop'
Script : Scene_Title | Ligne : 343 | Méthode : in `wachunga_autofontinstall_st_main'
Script : Autofont_Install | Ligne : 115 | Méthode : in `main'
Script : Main | Ligne : 49

Note:Bug en proces para,bloque l'image si en démarage auto,ne bug pas en contact ou touche action mais arbre non existant.

Posté par Sphinx le 25 Juil - 11:17 (2009)
Tu as une map d'id 28 déjà ? (je suppose que oui =))


Ok, juste avant la ligne qui bugge tu vas mettre ca :

Code:
file = File.open("baies_inspect_to_Sphinx.txt", "w")
file.write($game_variables[5000].inspect)
file.close


et tu me copieras ensuite le contenu du fichier baies_inspect_to_Sphinx.txt que ca va te créer.

Posté par Peter le 25 Juil - 11:20 (2009)
0 :voila ce qui a écrit.

Posté par Sphinx le 25 Juil - 11:21 (2009)
tu as modifié d'une quelconque facon la valeur de la variable 5000 ?

Posté par Peter le 26 Juil - 16:13 (2009)
Non,j'ai pris la démo de 4g+,je l'ai renomé ,suprimer toute les map puis commencer mon projet c'est tout.J'ai pas toucher au script pour le moment.

Edit:Pour le pc,j'ai pas trouvé la corection de ce bug.

Edit:Le topic des correction manuel pour psp4g+ est inacéssible,à chaque fois que je veut y aller j'ai une fenetre d'erreur et ca ferme internet.