Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
| Sujet: [VX] Debug avec valeur STRING (avec puts et gets) Mar 22 Déc 2009 - 14:15 | |
| Ok. Je me demande pourquoi ça n'a pas été publier, c'est un vieux script qui fonctionne bien. Pour les développeur et les scripteurs, c'est définitivement un MUST à avoir. Ce script permet aux développeurs une version amélioré du débug ainsi que deux fonctions ruby supplémentaires : puts et gets. Auteurs : puts : MirainoHikari (mais franchement, ce n'est pas digne de mention) gets : Berka (vraiment, félicitation pour celle là) (légèrement édité par Hikari (léger bug)) Debug : La Meche et MirainoHikari (collaboration) Comme je crois que Puts et Gets ont seulement été publier pour le cours de script, je republie ici puisque gets est nécessaire pour le bon fonctionnement. Donc voici le script pour puts et gets. Ce script DOIT ÊTRE LE PREMIER DE LA LISTE (j'espère que c'est assez clair comme ça). En effet, ce script doit être le premier en haut de la liste de TOUS les scripts. Je vous suggère de vous créer une section «▼ Interface» avant la section «▼ Modules» puis d'y insérer le script «Puts & Gets». Voici ce script. - Code:
-
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # Fonction puts Rgss2 # par mirainohikari #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= def self.puts(val) print "#{val}\n" end
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # Fonction gets Rgss2 # par berka #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Getkeystate=Win32API.new("user32","GetAsyncKeyState",'i','i') Getprivatestring=Win32API.new('kernel32','GetPrivateProfileString','pppplp','l') Findwindow=Win32API.new('user32','FindWindow','pp','i') Createwindow=Win32API.new("user32","CreateWindowEx",'lpplllllllll','l') Destroywindow=Win32API.new('user32','DestroyWindow','p','l') Getwindowtext=Win32API.new('user32','GetWindowText','npn','l') Getwindowrect=Win32API.new('user32','GetWindowRect','lp','i') Updatewindow=Win32API.new('user32','UpdateWindow','p','i') Setwindowtext=Win32API.new('user32','SetWindowText','pp','i') Showwindow=Win32API.new('user32','ShowWindow','ll','l') def handle title="\0"*256 Getprivatestring.call("Game","Title","",title,256,".//Game.ini") title.delete!("\0") return Findwindow.call("RGSS Player",title) end def gets (Destroywindow.call(@fen);@fen=nil;return) if !@fen.nil? @fen=Createwindow.call((0x00000100|0x00000200),'edit','',( (0x4000000|0x80000000|0)|0x02000000),dim[0],dim[3],dim[2]-dim[0],24,handle,0,0,0) Showwindow.call(@fen,1) res=" "*0x100 loop{Graphics.update;Updatewindow.call(@fen) break if Getkeystate.call(0x0D)&0x01==1 return if Getkeystate.call(0x74)&0x01==1} Getwindowtext.call(@fen,res,0x100) Destroywindow.call(@fen);@fen=nil return res.delete!("\0").strip end def dim rect=[0,0,0,0].pack('l4') Getwindowrect.call(handle,rect) x,y,w,h=rect.unpack('l4') return x,y,w,h end Pour ceux qui ont pris les cours de ruby, cela vous ajoute simplement la fonction puts (à utiliser comme print) et gets (nom_var = gets). Si vous n'êtes pas scripteur, l'utilisation de ce script n'a pas à être connu. Cependant, vous en avez besoin pour faire fonctionner le script principal. Maintenant, pour les développeurs de jeu. On sait tous à quel point les variables de contrôles sont limitantes avec leurs entiers. Bien qu'il soit possible de mettre autre chose dans les variables, lorsqu'on entre en mode Debug, le jeu plante lorsqu'on essaye d'éditer les valeur... Ce temps est révolu. La Meche et moi avons concocter un petit script lorsque ce cher La Meche suivait son cours. Il s'agissait d'un exercice qui a plutôt bien tourné. Je n'ai corrigé que la partie des entiers qui n'étaient plus gérés. Maintenant, grâce à nos efforts combinés, lorsque vous modifié une variable, une petite fenêtre blanche apparaîtra sous la fenêtre de jeu. Entrez simplement la valeur puis appuyez sur ENTER. S'il s'agit d'un entier, il sera mis sous l'ancien format, s'il s'agit d'une chaîne, il sera enregistrer comme tel. Ainsi, plus de jeu qui plante sans raison. Notez que les flottants sont considéré comme string mais qu'une simple conversion dans votre jeu permet de les récupérer au format voulu. Ce script s'insère normalement DANS LA SECTION MATERIAL AU DESSUS DU MAIN - Code:
-
#============================================================================== # ** Scene_Debug #------------------------------------------------------------------------------ # This class performs debug screen processing. #==============================================================================
class Scene_Debug < Scene_Base #-------------------------------------------------------------------------- # * Update Left Window Input #-------------------------------------------------------------------------- def update_left_input if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new return elsif Input.trigger?(Input::C) Sound.play_decision wlh = 24 if @left_window.mode == 0 text1 = "C (Enter) : ON / OFF" @help_window.contents.draw_text(4, 0, 336, wlh, text1) else text1 = "C (Enter) : Gets Value" text2 = "Enter your value" text3 = "Press Enter" text4 = "Can be String or Integer" @help_window.contents.draw_text(4, wlh * 0, 336, wlh, text1) @help_window.contents.draw_text(4, wlh * 1, 336, wlh, text2) @help_window.contents.draw_text(4, wlh * 2, 336, wlh, text3) @help_window.contents.draw_text(4, wlh * 3, 336, wlh, text4) end @left_window.active = false @right_window.active = true @right_window.index = 0 end end #-------------------------------------------------------------------------- # * Update Right Window Input #-------------------------------------------------------------------------- def update_right_input if Input.trigger?(Input::B) Sound.play_cancel @left_window.active = true @right_window.active = false @right_window.index = -1 @help_window.contents.clear else current_id = @right_window.top_id + @right_window.index if @right_window.mode == 0 if Input.trigger?(Input::C) Sound.play_decision $game_switches[current_id] = (not $game_switches[current_id]) @right_window.refresh end elsif @right_window.mode == 1 if Input.trigger?(Input::C) tmp = gets $game_variables[current_id] = ((tmp.to_i).to_s != tmp.to_s) ? tmp.to_s : tmp.to_i @right_window.draw_item(@right_window.index) end end end end end
Et voici en image le résultat
Dernière édition par MirainoHikari le Mer 23 Déc 2009 - 14:38, édité 1 fois |
|
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
| Sujet: Re: [VX] Debug avec valeur STRING (avec puts et gets) Mar 22 Déc 2009 - 20:12 | |
| Ouais notre script ! J'espère qu'il va être utile pour certaine personne... |
|
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
| Sujet: Re: [VX] Debug avec valeur STRING (avec puts et gets) Mer 23 Déc 2009 - 14:39 | |
| Je viens de corriger un petit bug qu'il y avait dans le gets. Désolé du désagrément. |
|
Va-nu-pieds Lv.4
Age : 27 Avertissements : 1 Inscrit le : 03/01/2011 Messages : 55
| Sujet: Re: [VX] Debug avec valeur STRING (avec puts et gets) Sam 29 Jan 2011 - 14:07 | |
| On doit appuyé sur quelle touche pour le faire marcher ? |
|
| Sujet: Re: [VX] Debug avec valeur STRING (avec puts et gets) | |
| |
|