Revan Ancien staffeux
Messages postés : 578 Date d'inscription : 01/11/2013 Jauge LPC :
| Sujet: Problème de script Mar 28 Oct 2014 - 10:08 | |
| Aujourd'hui je me bute a un problème gênant. Un script faisant partie du Luna Engine a dut être mal codé, du coup impossible de quitter "proprement une partie à partir du menu (à la limite c'est pas le pire), et impossible de charger une partie depuis l'écran titre... ce qui est extrêmement gênant ! Si un spécialiste en script passe par là... - Lunatic Background:
# name background bitmap file as [Animated X Y]Filename for animated background # with X is number of frames, Y is delay between frame change. # the name sequences will have "_FRAME" as suffix # for example: # Frame1: [Animated 5 4]Menu_Background.png # Frame2: [Animated 5 4]Menu_Background_2.png # Frame3: [Animated 5 4]Menu_Background_3.png # Frame4: [Animated 5 4]Menu_Background_4.png # Frame5: [Animated 5 4]Menu_Background_5.png
$imported = {} if $imported.nil? $imported["YEL-MenuLuna-Background"] = true
module MenuLuna module Addon # Can use multi background, below background will be above upper # background. # Filename will be eval'ed, so you can use filename like below: # $bitmap[Folder, \"Filename_\"+actor.actor.id.to_s] # This will load Filename_ActorID base on current actor ID # Only work on Skill/Equip/Status menu # replace $bitmap[Folder, \"Filename\"] with $map_bg for map snapshot. # replace $bitmap[Folder, \"Filename\"] with $color[R, G, B] # for solid color background # replace $bitmap[Folder, \"Filename\"] with $horgrad[R1, G1, B1, R2, G2, B2] # for gradient color background horizontal # replace $bitmap[Folder, \"Filename\"] with $vergrad[R1, G1, B1, R2, G2, B2] # for gradient color background vertical #["$bitmap[Folder, \"FileName\"]", Opacity, Blend_mode, [Plane X, Plane Y]], # Blend_mode can be 0, 1, 2 for normal, addition and substraction # Use Plane X and Plane Y for loop speed by X and Y coordinates # Blend_mode and [Plane X, Plane Y] can be removed.
module BaseMenu # Base background for all menu scene BACKGROUND = [ ["$map_bg", 255], ] end module MainMenu BACKGROUND = [ ["$bitmap[System, \"MainMenu\"]", 255, 0], ] end module ItemMenu BACKGROUND = [
] end module SkillMenu BACKGROUND = [
] end module EquipMenu BACKGROUND = [
] end module StatusMenu BACKGROUND = [
] end module SaveMenu BACKGROUND = [ ] end module ShopMenu BACKGROUND = [
] end end end
#============================================================================== # Editing anything past the engine's configuration script may potentially # result in causing computer damage, incontinence, explosion of user's head, # coma, death, and/or halitosis so edit at your own risk. # We're not liable for the risks you take should you pass this sacred grounds. #==============================================================================
#============================================================================== # ■ Plane_Luna #==============================================================================
class Plane_Luna < Plane #-------------------------------------------------------------------------- # set_scroll #-------------------------------------------------------------------------- def set_scroll(x, y) @scroll_x = x @scroll_y = y end #-------------------------------------------------------------------------- # update #-------------------------------------------------------------------------- def update return if self.bitmap.nil? || self.bitmap.disposed? @scroll_x ||= 0 @scroll_y ||= 0 self.ox = self.ox + @scroll_x self.oy = self.oy + @scroll_y super rescue nil end end
#============================================================================== # ■ Scene_Base #==============================================================================
class Scene_Base #-------------------------------------------------------------------------- # new method: create_luna_background #-------------------------------------------------------------------------- def create_luna_background setting = background_setting setting.each { |bg| text = bg[0]; opacity = bg[1] blend = bg[2] || 0; plane = !bg[3].nil? sprite = plane ? Plane_Luna.new : Sprite.new sprites = nil bitmap = Bitmap.new(Graphics.width, Graphics.height) if text =~ /\$bitmap\[(.*)\]/i value = $1.scan(/[^, ]+[^,]*/i) if value[1] =~ /\[ANIMATED (\d+) (\d+)\].*/i sprites = [] index = @background_sprite.size @background_frame[index] = 0 @background_max[index] = $1.to_i @background_tick[index] = $2.to_i @background_delay[index] = $2.to_i (0...@background_max[index]).each do |i| sprite = plane ? Plane_Luna.new : Sprite.new bitmap = Bitmap.new(Graphics.width, Graphics.height) name = i == 0 ? eval(value[1]) : eval(value[1]) + "_#{i+1}" cache = Cache.cache_extended(value[0], name) bitmap.blt(0, 0, cache, cache.rect.clone, opacity) sprite.bitmap = bitmap sprite.set_scroll(bg[3][0], bg[3][1]) if plane sprite.blend_type = blend sprite.visible = false if i > 0 sprites.push(sprite) end else cache = Cache.cache_extended(value[0], eval(value[1])) bitmap.blt(0, 0, cache, cache.rect.clone, opacity) end elsif text =~ /\$map_bg/i cache = SceneManager.background_bitmap bitmap.blt(0, 0, cache, cache.rect.clone, opacity) elsif text =~ /\$color\[(.*)\]/i value = $1.scan(/\d+/) value.collect! { |i| i.to_i } cache = Bitmap.new(Graphics.width, Graphics.height) cache.fill_rect(cache.rect, Color.new(value[0], value[1], value[2])) bitmap.blt(0, 0, cache, cache.rect.clone, opacity) elsif text =~ /\$(.*)grad\[(.*)\]/i vertical = $1.downcase == "hor" ? false : true value = $2.scan(/\d+/) value.collect! { |i| i.to_i } color1 = Color.new(value[0], value[1], value[2]) color2 = Color.new(value[3], value[4], value[5]) cache = Bitmap.new(Graphics.width, Graphics.height) cache.gradient_fill_rect(cache.rect, color1, color2, vertical) bitmap.blt(0, 0, cache, cache.rect.clone, opacity) end #--- if sprites @background_sprite.push(sprites) else sprite.bitmap = bitmap sprite.set_scroll(bg[3][0], bg[3][1]) if plane sprite.blend_type = blend @background_sprite.push(sprite) end } end #-------------------------------------------------------------------------- # new method: update_luna_background #-------------------------------------------------------------------------- def update_luna_background return unless @background_sprite if @background_sprite.is_a?(Sprite) @background_sprite.update elsif @background_sprite.is_a?(Array) @background_sprite.each do |sprite| sprite.is_a?(Array) ? sprite.each {|s| s.update} : sprite.update end end end #-------------------------------------------------------------------------- # new method: update_background_animated #-------------------------------------------------------------------------- def update_background_animated return unless @background_tick @background_tick.each do |key, val| @background_tick[key] -= 1 if @background_tick[key] <= 0 @background_tick[key] = @background_delay[key] @background_frame[key] = @background_frame[key] + 1 @background_frame[key] = @background_frame[key] % @background_max[key] @background_sprite[key].each_with_index do |sprite, index| if @background_frame[key] == index sprite.visible = true else sprite.visible = false end # endif end # endeach end # endif end # endeach end #-------------------------------------------------------------------------- # new method: dispose_luna_background #-------------------------------------------------------------------------- def dispose_luna_background return unless @background_sprite if @background_sprite.is_a?(Sprite) @background_sprite.bitmap.dispose @background_sprite.dispose end if @background_sprite.is_a?(Array) @background_sprite.each do |sprite| if sprite.is_a?(Array) sprite.each do |s| s.bitmap.dispose s.dispose end else sprite.bitmap.dispose sprite.dispose end end @background_sprite.clear end end end # Scene_Base
#============================================================================== # ■ Scene_MenuBase #==============================================================================
class Scene_MenuBase < Scene_Base #-------------------------------------------------------------------------- # alias method: create_background #-------------------------------------------------------------------------- alias menu_luna_bg_create_background create_background def create_background return menu_luna_bg_create_background unless background_setting @background_sprite = [] @background_frame = {} @background_max = {} @background_tick = {} @background_delay = {} create_luna_background end #-------------------------------------------------------------------------- # alias method: update #-------------------------------------------------------------------------- alias menu_luna_background_update_basic update_basic def update_basic menu_luna_background_update_basic update_background_animated update_luna_background end #-------------------------------------------------------------------------- # overwrite method: dispose_background #-------------------------------------------------------------------------- def dispose_background dispose_luna_background end #-------------------------------------------------------------------------- # new method: background_setting #-------------------------------------------------------------------------- def background_setting default = MenuLuna::Addon::BaseMenu::BACKGROUND case self.class.name when "Scene_Menu"; bmodule = "MainMenu" when "Scene_Item"; bmodule = "ItemMenu" when "Scene_Skill"; bmodule = "SkillMenu" when "Scene_Equip"; bmodule = "EquipMenu" when "Scene_Status"; bmodule = "StatusMenu" when "Scene_Save"; bmodule = "SaveMenu" when "Scene_Load"; bmodule = "SaveMenu" when "Scene_Shop"; bmodule = "ShopMenu" end return [] + default unless bmodule return default + eval("MenuLuna::Addon::#{bmodule}::BACKGROUND") end #-------------------------------------------------------------------------- # new method: actor #-------------------------------------------------------------------------- def actor @actor || $game_party.menu_actor end #-------------------------------------------------------------------------- # alias method: next_actor #-------------------------------------------------------------------------- alias luna_menu_background_next_actor next_actor def next_actor luna_menu_background_next_actor change_background_luna end #-------------------------------------------------------------------------- # alias method: prev_actor #-------------------------------------------------------------------------- alias luna_menu_background_prev_actor prev_actor def prev_actor luna_menu_background_prev_actor change_background_luna end #-------------------------------------------------------------------------- # new method: change_background_luna #-------------------------------------------------------------------------- def change_background_luna dispose_background create_background update_basic end end # Scene_Menu
#============================================================================== # ■ Scene_End #==============================================================================
class Scene_End < Scene_MenuBase #-------------------------------------------------------------------------- # overwrite method: create_background #-------------------------------------------------------------------------- def create_background super @background_sprite.tone.set(0, 0, 0, 128) if @background_sprite end end # Scene_End
(erreur en chargement depuis l'écran titre) ligne 162 method 'rect' for nil:NilClass (erreur pour quitter la partie en jeu depuis le menu) ligne 358 method 'tone' for [# ]:Array
Pour info ce script met en défaut les deux problèmes abordés, et même sur la version d'origine ce qui enlève la théorie d'incompatibilité. Si je l'enlève tout fonctionne, mais mon menu perd la partie graphique bien sûr ^^
Je vais essayer de contacter au passage les créateurs du moteur sur le forum officiel. (je suis une bille en anglais )
Merci de jeter un oeil |
|
Revan Ancien staffeux
Messages postés : 578 Date d'inscription : 01/11/2013 Jauge LPC :
| Sujet: Re: Problème de script Mer 29 Oct 2014 - 11:27 | |
| J'ai créer trois comptes sur le site officiel et je reçois jamais la validation du compte, du coup je peux pas faire un billet à Archéa :/ Quelqu'un à un compte et pourrai faire l'intermédiaire de mon problème sur ce thread : Le même problème que le mien signalé mais sur la démo. Il faudrait dire en gros que vous avez acheter le luna engine, et que la version factory bug avec les erreurs cité sur le post précédent. Un problème relativement gênant pour un moteur payant. Merci au volontaire EDIT : Sinon la personne avec un compte rpgmakerweb peut éventuellement me le prêter temporairement. |
|
Revan Ancien staffeux
Messages postés : 578 Date d'inscription : 01/11/2013 Jauge LPC :
| Sujet: Re: Problème de script Ven 31 Oct 2014 - 8:40 | |
| Problème en partie réglé avec Archeia, faisant partie du groupe de création du moteur. Donc problème réglé.
Un GRANNNNNNND merci à Kioresse pour son aide <3 |
|
Zexion Administrateur
Messages postés : 6228 Date d'inscription : 04/01/2012 Jauge LPC :
| Sujet: Re: Problème de script Ven 31 Oct 2014 - 10:39 | |
| Okay, je classe + des points pour Kioresse. |
|
Contenu sponsorisé
| Sujet: Re: Problème de script | |
| |
|