Partagez
Aller en bas
avatar
Noxsis
Membre

Nombre de messages : 17
Age : 35
Distinction : aucune
Date d'inscription : 04/06/2010

Lvl up ah non [résolu]

le Mar 7 Déc 2010 - 3:17
Bonjour les amis,
j'essaie de faire un projet mais voila j'ai un problème car a chaque fois que je monte un lvl dans mon projet
cela me met une erreur :

Script'Scene complête c'line 83: NoMethodError occured.
undefined method update for nil: NilClass


j'aimerais votre aide s'il vous plaît
avatar
dricc
Membre

Nombre de messages : 2756
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Re: Lvl up ah non [résolu]

le Mar 7 Déc 2010 - 10:12
Bonjour ,
Donne nous le code de "Scene complête c" . pas standard , ça , c'est un truc que tu as ajouté .
avatar
Noxsis
Membre

Nombre de messages : 17
Age : 35
Distinction : aucune
Date d'inscription : 04/06/2010

Re: Lvl up ah non [résolu]

le Mar 7 Déc 2010 - 19:45
Voila le script complet pour plus d'info :
je donne apres la ligne qui ne va pas.


Spoiler:

#==============================================================================
# ** Scene_Report
#------------------------------------------------------------------------------
# Scene qui gère le rapport de combat
#==============================================================================
class Scene_Report < Scene_Base
def initialize(exp,gold,drop)
@exp = exp
@gold = gold
@drop = drop
end
#--------------------------------------------------------------------------
# * Commencement de la scene
#--------------------------------------------------------------------------
def start
super
create_menu_background if Config_Report::Utiliser_background == true
create_command_window
afficher_information
end

#--------------------------------------------------------------------------
# * Crèe les fenêtres
#--------------------------------------------------------------------------
def create_command_window
@help_window = Window_Help.new
@heros_window = []
@level_up = []
y=55 ; i=0
for actor in $game_party.members
last_level = actor.level
actor.gain_exp(@exp,false)
@heros_window[i] = Heros_Window.new(actor,y,@exp)
if actor.level > last_level
RPG::SE.new('Recovery',80).play
@level_up[i] = Level_up.new(y)
end
y +=74; i += 1
end
@gold_exp_window = Gold_Exp_Window.new(@gold,@exp)
@butin_window = Drop_Window.new(@drop)
Input.update
end

#--------------------------------------------------------------------------
# * Affiche les informations
#--------------------------------------------------------------------------
def afficher_information
@help_window.set_text("Rapport de Combat",1)
end


#--------------------------------------------------------------------------
# * Si on appuye sur entrée, revenir à la map
#--------------------------------------------------------------------------
def update
super
update_menu_background
@help_window.update
for i in 0...@heros_window.size
@heros_window[i].update
end
if @level_up != []
for i in 0...@level_up.size
@level_up[i].update
end
end
if Input.trigger?(Input::C) and @level_up == []
@help_window.dispose
for i in 0...@heros_window.size
@heros_window[i].dispose
end
@gold_exp_window.dispose
@butin_window.dispose
dispose_menu_background if Config_Report::Utiliser_background == true
if $BTEST
$scene = nil
else
$scene = Scene_Map.new
end
end # Fin de C

if Input.trigger?(Input::C)
for i in 0...@level_up.size
Sound.play_decision
@level_up[i].dispose
end
@level_up = []
end

end # Fin methode

end # Fin de classe

#==============================================================================
# ** Level_up
#------------------------------------------------------------------------------
# Affiche "Level up!"
#==============================================================================
class Level_up < Window_Base
def initialize(y)
super(90,y,110,50)
self.contents.draw_text(0,-5,100,WLH,"Level up!")
end
end


#==============================================================================
# ** Gold_Exp_Window
#------------------------------------------------------------------------------
# Affiche l'argent et l'exp obtenus
#==============================================================================
class Gold_Exp_Window < Window_Base
def initialize(gold,exp)
super(0,350,200,65)
self.contents.draw_text(0,-6,200,WLH,"Exp : " + exp.to_s)
self.contents.draw_text(0,14,200,WLH,"Gils : " + gold.to_s)
end
end

#==============================================================================
# ** Heros_Window
#------------------------------------------------------------------------------
# Affiche les informations d'exp sur les héros
#==============================================================================
class Heros_Window < Window_Base
def initialize(actor,y,exp)
super(0,y,200,75)
@actor =actor
@exp = exp
afficher_info
end

#--------------------------------------------------------------------------
# * Affiche les informations
#--------------------------------------------------------------------------
def afficher_info
draw_character(@actor.character_name, @actor.character_index, 20, 40)
draw_actor_exp_meter(@actor,40,20)
self.contents.draw_text(40,0, 60, WLH, @actor.name)
self.contents.draw_text(110,0,60,WLH,"Niv. " + @actor.level.to_s)
end


#--------------------------------------------------------------------------
# * Couleur 1 de la barre
#--------------------------------------------------------------------------
def exp_gauge_color1
return text_color(30)
end

#--------------------------------------------------------------------------
# * Couleur 1 de la barre
#--------------------------------------------------------------------------
def exp_gauge_color2
return text_color(31)
end

#--------------------------------------------------------------------------
# * Dessine la barre d'exp
#-------------------------------------------------------------------------
def draw_actor_exp_meter(actor, x, y, width = 100)
if actor.next_exp != 0
exp = actor.now_exp
else
exp = 1
end
gw = width * exp / [actor.next_exp, 1].max
gc1 = exp_gauge_color1
gc2 = exp_gauge_color2
self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 30, WLH, "Exp")
self.contents.font.color = normal_color
xr = x + width
self.contents.draw_text(xr - 60, y, 60, WLH, actor.next_rest_exp_s, 2)
end
end




#==============================================================================
# ** Drop_Window
#------------------------------------------------------------------------------
# Affiche les objets obtenus
#==============================================================================
class Drop_Window < Window_Base
def initialize(drop)
super(200,55,344,360)
@drop = drop
if @drop != []
trier_drop
regrouper
afficher_drop
donner_drop
else
afficher_mess
end
end

#--------------------------------------------------------------------------
# * Trie le drop en fonction du type d'objet
#-------------------------------------------------------------------------
def trier_drop
@armes = []
@armures = []
@items = []
for item in @drop
if item.is_a?(RPG::Item)
@items.push(item)
end
if item.is_a?(RPG::Armor)
@armures.push(item)
end
if item.is_a?(RPG::Weapon)
@armes.push(item)
end
end
end

#--------------------------------------------------------------------------
# * Regroupe les objets par nombre
#-------------------------------------------------------------------------
def regrouper
#-------------------------------------------------------
# Pour les objets
#------------------------------------------------------
if @items != []
@items_unique = @items.uniq
@regroupement_item = {}
for item in @items_unique
@regroupement_item[item] = 0
end
for item in @items
if @regroupement_item.include?(item)
@regroupement_item[item] += 1
end
end
end

#-------------------------------------------------------
# Pour les armures
#------------------------------------------------------
if @armures != []
@armure_unique = @armures.uniq
@regroupement_armures = {}
for armure in @armure_unique
@regroupement_armures[armure] = 0
end
for armure in @armures
if @regroupement_armures.include?(armure)
@regroupement_armures[armure] += 1
end
end
end

#-------------------------------------------------------
# Pour les armes
#------------------------------------------------------
if @armes != []
@armes_unique = @armes.uniq
@regroupement_armes = {}
for arme in @armes_unique
@regroupement_armes[arme] = 0
end
for arme in @armes
if @regroupement_armes.include?(arme)
@regroupement_armes[arme] += 1
end
end
end
end

#--------------------------------------------------------------------------
# * Affiche les objets
#-------------------------------------------------------------------------
def afficher_drop
y=0 # Initialisation de la coordonée y
#-------------------------------------------------------
# Pour les objets
#------------------------------------------------------
if @items != []
self.contents.draw_text(0,y,200,WLH,"Objets trouvés :")
y += 25
for item in @regroupement_item
draw_icon(item[0].icon_index, 0, y)
if item[1] > 1
quantite = " x" + item[1].to_s
else
quantite = ""
end
self.contents.draw_text(24, y, 172, WLH, item[0].name + quantite)
y+=25
end
end

y += 5 if @items.nil? == false # Si les objets on été affiché augmenter y de 5

#-------------------------------------------------------
# Pour les armures
#------------------------------------------------------
if @armures != []
self.contents.draw_text(0,y,200,WLH,"Armures trouvées :")
y += 25
for armure in @regroupement_armures
draw_icon(armure[0].icon_index, 0, y)
if armure[1] > 1
quantite = " x" + armure[1].to_s
else
quantite = ""
end
self.contents.draw_text(24, y, 172, WLH, armure[0].name + quantite)
y +=25
end
end

y += 5 if @armures.nil? == false # Si les armures on été affichées augmenter y de 5

#-------------------------------------------------------
# Pour les armes
#------------------------------------------------------
if @armes != []
self.contents.draw_text(0,y,200,WLH,"Armes trouvées :")
y += 25
for arme in @regroupement_armes
draw_icon(arme[0].icon_index, 0, y)
if arme[1] > 1
quantite = " x" + arme[1].to_s
else
quantite = ""
end
self.contents.draw_text(24, y, 172, WLH, arme[0].name + quantite)
y +=25
end
end
end

#-------------------------------------------------------
# Afficher un message si pas de drop
#------------------------------------------------------
def afficher_mess
self.contents.draw_text(0,0,360,WLH,"Aucun objet trouvé.")
end

#-------------------------------------------------------
# Donne le drop à l'équipe
#------------------------------------------------------
def donner_drop
for item in @drop
$game_party.gain_item(item, 1)
end
end

end
#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
# Scene qui gère les combats
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# * Processus de victoire
#--------------------------------------------------------------------------
def process_victory
@info_viewport.visible = false
@message_window.visible = false
RPG::BGM.stop
$game_system.battle_end_me.play
unless $BTEST
$game_temp.map_bgm.play
$game_temp.map_bgs.play
end
@exp =$game_troop.exp_total
@gold = $game_troop.gold_total
@drop = $game_troop.make_drop_items
$scene = Scene_Report.new(@exp,@gold,@drop)
battle_end(0)
end

#--------------------------------------------------------------------------
# * Fin du combat
#--------------------------------------------------------------------------
def battle_end(result)
if result == 2 and not $game_troop.can_lose
call_gameover
else
$game_party.clear_actions
$game_party.remove_states_battle
$game_troop.clear
if $game_temp.battle_proc != nil
$game_temp.battle_proc.call(result)
$game_temp.battle_proc = nil
end
unless $BTEST
$game_temp.map_bgm.play
$game_temp.map_bgs.play
end
$scene = Scene_Map.new if result == 1
@message_window.clear
Graphics.fadeout(30)
end
$game_temp.in_battle = false
end

#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
def terminate
super
dispose_info_viewport
@message_window.dispose
@spriteset.dispose
unless $scene.is_a?(Scene_Gameover)
$scene = Scene_Report.new(@exp,@gold,@drop) if $BTEST
end
end

end


#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
# Gére les données système sur les héros.
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# * Calcul de l'exp accumulée
#--------------------------------------------------------------------------
def now_exp
return @exp - @exp_list[@level]
end

#--------------------------------------------------------------------------
# * Calcul de l'exp a avoir pour gagner un niveau
#--------------------------------------------------------------------------
def next_exp
return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
end
end

Voila la ligne de l'erreur :

83: @level_up[i].update


j'espere avoir donner les info qu'il faut Suspect je suis pas super fort^^
avatar
dricc
Membre

Nombre de messages : 2756
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Re: Lvl up ah non [résolu]

le Mer 8 Déc 2010 - 11:33
Eh bien , ça marche trés bien chez moi !
J'ai bien eu le rapport de combat avec les "level up" .
(en passant , je trouve ça pas trés joli mais c'est mon avis personnel)

Bon , tu ne m'avais pas tout refilé visiblement , il manque une classe "Config_Report" . j'ai mis en commentaire .

ça sent le probleme de compatibilité entre scripts .
Alors maintenant , ce qu'il faut que tu fasses , c'est enlever tout les scripts que tu as ajouté un par un et retester entre 2 à chaque fois . Y'a que comme ça que tu identifieras ou est le probleme .
avatar
Noxsis
Membre

Nombre de messages : 17
Age : 35
Distinction : aucune
Date d'inscription : 04/06/2010

Re: Lvl up ah non [résolu]

le Jeu 9 Déc 2010 - 15:42
Merci Beaucoup dricc pour ton aide

oh boulot Wink
avatar
Balbereith
Staffeux retraité

Nombre de messages : 4129
Age : 26
Localisation : dans l'ombre...
Distinction : Péripatéticienne à temps perdu
Helly n°666 [Coco' ;D]
mon ptit balbounet p'tit jardinier en herbe(les râteaux ça le connait) [tonton Adurna]
Cultivateur professionnel de la commu' (il a de bons outils en de nombreux exemplaires ) [Coco' Smile]
Date d'inscription : 13/05/2009

Re: Lvl up ah non [résolu]

le Lun 22 Aoû 2011 - 15:09
Résolu. MAis le membre n'est pas repasser assez souvent depuis donc pas d'averto.
Contenu sponsorisé

Re: Lvl up ah non [résolu]

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum