You should consider joining our Discord to ask for support.

We created a support channel using the new Discord Forum feature!

You can also visit our new website, it has a help section in English and French

0 like 0 dislike
446 views
in Crash by (390 points)
closed by

Yop !

Dans ma tentative désespérée de modif le hook "PSDK trainer messages" qui fait crash le jeu, j'ai noté un petit détail qui permettrait peut-être de trouver la source du problème.

Une vidéo vaut 1000 mots donc voici un lien: https://www.youtube.com/watch?v=vjnosNVxh7M

Les opérations que je fais:

  • Je lance le jeu une première fois sans aucune modification, je perds le combat et je suis bien ramené au Centre Pokémon
  • Ensuite, côté monkeypatch, j'utilise la commande remove du Hook et je copie-colle le même Hook que celui de PSDK
  • Cette fois-ci, en perdant le combat, le jeu crash

Le petit détail en question : sur le run qui marche les messages qui s'affichent sont d'abord le message de défaite PUIS "joeyw n'a plus de Pokémon en forme"/"joeyw perd X$"/"joeyw est hors-jeu", tandis que sur le run qui échoue, c'est d'abord "joeyw n'a plus de Pokémon en forme"/"joeyw perd X$"/"joeyw est hors-jeu" puis le message de défaite.

Pour le coup je suis un peu perdu parce que comme dit, même en faisant un copier-coller du script qui marche, le jeu plante encore.

Côté log, celui-ci est aussi plus long que d'habitude et on peut noter une espèce de "boucle" avec les lignes relatives à 00010 Hooks.rb et autour.

J'espère que ça aidera, merci ! :)

================================Erreur de script================================

Message :

display_message was called inside display_message. Please fix your scene update.

Type : ScriptError

Script : 01450 Systems/00004 Message/00003 GamePlay/00001 DisplayMessage.rb (PSDK)

Ligne : 66

Date : 16/08/2022 22:04:42

Game Version : 278

Logiciel : Pokémon SDK 26.2

===================================Backtraces===================================

[40] : 01450 Systems/00004 Message/00003 GamePlay/00001 DisplayMessage.rb (PSDK) | ligne 66 display_message

[39] : 01600 Alpha 25 Battle Engine/00200 Battle_Logic/00001 Handlers/01011 BattleEndHandler.rb (PSDK) | ligne 44 player_loose_sequence

[38] : 01600 Alpha 25 Battle Engine/00002 Battle_Visual/00200 Visual.rb (PSDK) | ligne 100 lock

[37] : 01600 Alpha 25 Battle Engine/00200 Battle_Logic/00001 Handlers/01011 BattleEndHandler.rb (PSDK) | ligne 43 player_loose_sequence

[36] : 01600 Alpha 25 Battle Engine/00200 Battle_Logic/00001 Handlers/01011 BattleEndHandler.rb (PSDK) | ligne 284 <class:Logic>

[35] : 01600 Alpha 25 Battle Engine/00200 Battle_Logic/00001 Handlers/01011 BattleEndHandler.rb (PSDK) | ligne 84 register

[34] : 00010 Hooks.rb (PSDK) | ligne 57 instance_exec

[33] : 00010 Hooks.rb (PSDK) | ligne 57 exec_hooks

[32] : 00010 Hooks.rb (PSDK) | ligne 55 each

[31] : 00010 Hooks.rb (PSDK) | ligne 55 exec_hooks

[30] : 01600 Alpha 25 Battle Engine/00200 Battle_Logic/00001 Handlers/01011 BattleEndHandler.rb (PSDK) | ligne 13 process

[29] : 01600 Alpha 25 Battle Engine/00001 Battle_Scene/00103 Scene Battle Phase.rb (PSDK) | ligne 38 battle_end

[28] : 01600 Alpha 25 Battle Engine/00001 Battle_Scene/00100 Scene.rb (PSDK) | ligne 83 next_update_process

[27] : 01600 Alpha 25 Battle Engine/00001 Battle_Scene/00100 Scene.rb (PSDK) | ligne 73 update

[26] : 01450 Systems/00004 Message/00003 GamePlay/00001 DisplayMessage.rb (PSDK) | ligne 148 message_update_scene

[25] : 01450 Systems/00004 Message/00003 GamePlay/00001 DisplayMessage.rb (PSDK) | ligne 72 display_message

[24] : 01450 Systems/00004 Message/00003 GamePlay/00001 DisplayMessage.rb (PSDK) | ligne 89 display_message_and_wait

[23] : 04000 Prisme/01000 Gains_combats_musique_fin.rb (user) | ligne 39 <class:Logic>

[22] : 04000 Prisme/01000 Gains_combats_musique_fin.rb (user) | ligne 35 each

[21] : 04000 Prisme/01000 Gains_combats_musique_fin.rb (user) | ligne 35 each_with_index

[20] : 04000 Prisme/01000 Gains_combats_musique_fin.rb (user) | ligne 35 <class:Logic>

[19] : 01600 Alpha 25 Battle Engine/00200 Battle_Logic/00001 Handlers/01011 BattleEndHandler.rb (PSDK) | ligne 84 register

[18] : 00010 Hooks.rb (PSDK) | ligne 57 instance_exec

[17] : 00010 Hooks.rb (PSDK) | ligne 57 exec_hooks

[16] : 00010 Hooks.rb (PSDK) | ligne 55 each

[15] : 00010 Hooks.rb (PSDK) | ligne 55 exec_hooks

[14] : 01600 Alpha 25 Battle Engine/00200 Battle_Logic/00001 Handlers/01011 BattleEndHandler.rb (PSDK) | ligne 13 process

[13] : 01600 Alpha 25 Battle Engine/00001 Battle_Scene/00103 Scene Battle Phase.rb (PSDK) | ligne 38 battle_end

[12] : 01600 Alpha 25 Battle Engine/00001 Battle_Scene/00100 Scene.rb (PSDK) | ligne 83 next_update_process

[11] : 01600 Alpha 25 Battle Engine/00001 Battle_Scene/00100 Scene.rb (PSDK) | ligne 73 update

[10] : 01450 Systems/00000 General/00003 GamePlay__Base/00000 GamePlay__Base.rb (PSDK) | ligne 260 main_process

[9] : 01450 Systems/00000 General/00003 GamePlay__Base/00000 GamePlay__Base.rb (PSDK) | ligne 153 main

[8] : tools/GameLoader/Z_main.rb (PSDK) | ligne 17 <top (required)>

[7] : tools/GameLoader/3_load_extensions.rb (PSDK) | ligne 54 rgss_main

[6] : tools/GameLoader/50_load_game_uncompiled.rb (PSDK) | ligne 45 <top (required)>

[5] : ScriptLoad.rb (PSDK) | ligne 189 require

[4] : ScriptLoad.rb (PSDK) | ligne 189 load_tool

[3] : tools/GameLoader/Z_load_uncompiled.rb (PSDK) | ligne 14 <top (required)>

[2] : ScriptLoad.rb (PSDK) | ligne 189 require

[1] : ScriptLoad.rb (PSDK) | ligne 189 load_tool

[0] : Game.rb (RMXP) | ligne 11 <main>

===================================Fin du log===================================

closed with the note: Answered

1 Answer

1 like 0 dislike
by (28.0k points)
selected by
 
Best answer

Le problème vient du fait que la téléportation s'exécute avant les message du dresseur à mon avis. Tu devrais tenter d'ajouter un 

handler.scene.visual.lock do
# tout le code après return
end

Dans le hook. Si ça fonctionne pas faut réordonner les hook ou faire en sorte à ce que PSDK exécute le hook de fin de fin à la fin plutôt que dans l'ordre des autres hooks.

by (390 points)
Effectivement, c'était plutôt un souci d'ordre !

J'ai réussi à régler le problème ainsi :

module Battle
    class Logic

                Hooks.remove(BattleEndHandler, :battle_end, 'PSDK trainer messages')
        Hooks.remove(BattleEndHandler, :battle_end, 'PSDK send player back to Pokemon Center')

                BattleEndHandler.register('PSDK trainer messages') do |handler|
                      <hook>
                end

                BattleEndHandler.register('PSDK send player back to Pokemon Center') do |handler|
                      <hook>
                end

       end
end

Tout se lance correctement dans le bon ordre, merci pour le coup de main :D
by (28.0k points)
Super :)
Faudra surement qu'on recrée un hook pour gérer ça correctement x)
...