Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.


 
AccueilSiteDernières imagesRechercherS'enregistrerConnexion
-40%
Le deal à ne pas rater :
-40% sur le Pack Gaming Mario PDP Manette filaire + Casque filaire ...
29.99 € 49.99 €
Voir le deal

 

 Script mission

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Auteur Message
Anubis
Villageois (Nv 1)
Villageois (Nv 1)
Anubis

Nombre de messages : 4
Niveau RPG Maker : Grande connaissance en RPG : plus de 30 script et 1800 ressources
Date d'inscription : 13/09/2006

Script mission Vide
MessageSujet: Script mission   Script mission Icon_minitimeMer 13 Sep 2006 - 15:35

Auteur : "créé par Tonyryu, entièrement modifié et optimisé par Corwin "

1) Crez un script " Game_Quests "
Collez y
Code:
#==============================================================================
# ■ Game_Quests
# créé par Tonyryu, entièrement modifié et optimisé par Corwin
#------------------------------------------------------------------------------

class Game_Quests
#--------------------------------------------------------------------------
# ● intialize
#--------------------------------------------------------------------------
def initialize
@etat = []
@addr_quete = []
# nombre de quetes
@nbre_quete = 4

@quete_declenche = 0

# données des quétes
# format : [ nbreEtat, NomQuete, DescriptionEtat1,...,DescriptionEtat2]
#
@quete = [
#quete n°1
1,"Achats", "Aller en ville pour effectuer des achats divers.",

#quete n°2
2,"Recherche", "Il faut aller voir par-là bas si j'y suis et si j'y suis pas et bien tant pis... on va aller chercher ailleur",  "et bien je dois chercher encore",

#quete n°3
4,"Pierres", "A récupérer les pierre Saintes", "les pierres sont dans les repaires des méchants pas bô", "Et bien... encore une seule pierre et j'ai tout un sac, cool !", "... et c'est vrai, c'est la 4ème partie de la quête !",



#quete n°...
2,"Liste des quêtes...","Il est possible de trouver dans le présent grimoire une liste des différentes quêtes à résoudre", "--"


# attention, la dernière quête ne doit pas avoir de virgule à la fin !

]

# initialisation du tableau de recherche rapide des données de quête
@offset = 0
for i in 0..(@nbre_quete - 1 )
@etat[i] = 0
@addr_quete[i] = @offset

@offset += (@quete[@offset] + 2)
end

end
#--------------------------------------------------------------------------
# ● etatID
# quest_id : ID de la quete dont on veut connaitre l'etat
#--------------------------------------------------------------------------
def etatID(quest_id)
quest_id -= 1
if quest_id <= @nbre_quete and @etat[quest_id] != nil
return @etat[quest_id]
else
return 0
end
end
#--------------------------------------------------------------------------
# ● changer_etat
# quest_id : ID de la quete dont on veut changer l'etat
# neo_etat : nouvel etat de la quete
#--------------------------------------------------------------------------
def changer_etat(quest_id, neo_etat)
quest_id -= 1
if quest_id <= @nbre_quete
@etat[quest_id] = neo_etat
end
end

#--------------------------------------------------------------------------
# ● nom
# quest_id : ID de la quete dont on veut connaitre le nom
#--------------------------------------------------------------------------
def nom(quest_id)
quest_id -= 1
if quest_id <= @nbre_quete
return @quete[ ( @addr_quete[quest_id] + 1 ) ]
end
end

#--------------------------------------------------------------------------
# ● etatNom
# quest_id : ID de la quete dont on veut connaitre l'etat d'avancement
#--------------------------------------------------------------------------
def etatNom(quest_id)
quest_id -= 1
if quest_id <= @nbre_quete
return @quete[ ( @addr_quete[quest_id] + 1 + @etat[quest_id] ) ]
end
end

#--------------------------------------------------------------------------
# ● nbreQuete
# quest_id : ID de la quete dont on veut connaitre l'etat
#--------------------------------------------------------------------------
def nbreQuete()
return @nbre_quete
end

#--------------------------------------------------------------------------
# ● set_etat
# tout_etat : table des etats à rentrer (load)
#--------------------------------------------------------------------------
def set_etat(tout_etat)
@etat = tout_etat
end

#--------------------------------------------------------------------------
# ● get_etat
#--------------------------------------------------------------------------
def get_etat
return @etat
end

#--------------------------------------------------------------------------
# ● set_quete_declenche
# quete_ID :
#--------------------------------------------------------------------------
def set_quete_declenche( quest_id )
@quete_declenche = quest_id
end

#--------------------------------------------------------------------------
# ● get_quete_declenche
#--------------------------------------------------------------------------
def get_quete_declenche
return @quete_declenche
end

#--------------------------------------------------------------------------
# ● declencher
#--------------------------------------------------------------------------
def declencher
changer_etat(@quete_declenche, 1)
end

#--------------------------------------------------------------------------
# ● b_quete_echoue
#--------------------------------------------------------------------------
def b_quete_echoue(quest_id)
return (etatID(quest_id) == -1 )
end

#--------------------------------------------------------------------------
# ● b_quete_reussi
#--------------------------------------------------------------------------
def b_quete_reussi(quest_id)
return (etatID(quest_id) == 99 )
end

#--------------------------------------------------------------------------
# ● b_quete_termine
#--------------------------------------------------------------------------
def b_quete_termine(quest_id)
return (b_quete_echoue(quest_id) or b_quete_reussi(quest_id) )
end

#--------------------------------------------------------------------------
# ● b_quete_commence
#--------------------------------------------------------------------------
def b_quete_commence(quest_id)
return (etatID(quest_id) != 0)
end

#--------------------------------------------------------------------------
# ● b_quete_inconu
#--------------------------------------------------------------------------
def b_quete_inconu(quest_id)
return (etatID(quest_id) == 0)
end

#--------------------------------------------------------------------------
# ● finir_quete
#--------------------------------------------------------------------------
def finir_quete(quest_id)
changer_etat(quest_id, 99)
end

#--------------------------------------------------------------------------
# ● echouer_quete
#--------------------------------------------------------------------------
def echouer_quete(quest_id)
changer_etat(quest_id, -1)
end

end # fin de la classe


ensuite un " Window_Quests "
Code:
 #==============================================================================
# ■ Window_Quests
# créé par Tonyryu, entièrement modifié et optimisé par Corwin
#------------------------------------------------------------------------------
#  Permet de visualiser les quêtes en cours
#==============================================================================

class Window_Quests < Window_Selectable
#--------------------------------------------------------------------------
# ● initialize
#--------------------------------------------------------------------------
def initialize

super(54, 104, 260, 330)

refresh

self.index = 0
self.active = true
self.opacity = 0

end

#--------------------------------------------------------------------------
# ● refresh
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil

end



@IDquest = []
@nbreQuestActive = 0

for i in 0...$game_quests.nbreQuete()
if $game_quests.etatID(i) != 0
@IDquest[@nbreQuestActive] = (i)
@nbreQuestActive += 1
end
end

@item_max = (@nbreQuestActive == 0 ? 1 : @nbreQuestActive)

self.contents = Bitmap.new(width - 32, @item_max * 32)
self.contents.font.name = $fontfaceQuest
self.contents.font.size = $fontsizeQuest
self.contents.font.color = normal_color

if @nbreQuestActive != 0
for i in 0...(@nbreQuestActive)
 
if $game_quests.etatID(@IDquest[i]) == -1
self.contents.font.color = red_color
else if $game_quests.etatID(@IDquest[i]) == 99
self.contents.font.color = green_color
else
self.contents.font.color = normal_color 
end
end



self.contents.draw_text(4, i * 32, 600, 32, $game_quests.nom(@IDquest[i]))
end


end
end


#--------------------------------------------------------------------------
# ● update_help
#--------------------------------------------------------------------------
def update_help
if @nbreQuestActive != 0
if $game_quests.etatID(@IDquest[self.index]) == -1
text = "Quête lamentablement échouée."
@help_window.contents.font.color = red_color

else
if $game_quests.etatID(@IDquest[self.index]) == 99
text = "Quête terminée avec succés !"
@help_window.contents.font.color = green_color

else
text = $game_quests.etatNom(@IDquest[self.index])
@help_window.contents.font.color = normal_color
end
end
else
text = "Aucune quête en cours..."
@help_window.contents.font.color = normal_color
end

@help_window.set_text(text)


end
end


Ensuite un " Scene_Quests "
Code:
 #==============================================================================
# ■ Scene_Quests
# créé par Tonyryu, entièrement modifié et optimisé par Corwin
#------------------------------------------------------------------------------
#  Permet de gérer l'affichage des quêtes
#==============================================================================

class Scene_Quests
#--------------------------------------------------------------------------
# ● main
#--------------------------------------------------------------------------
def main
# Prèparation des fenêtre

@quest_book= Sprite.new
@quest_book.bitmap = RPG::Cache.picture("quests")
@quest_book.z = 9999
@quest_book.visible = true
@quest_book.opacity = 120

# ---  @help_window = Window_Help.new
@help_window = Window_QuestsMsge.new
@quest_window = Window_Quests.new
# Définir une fenêtre d'aide
@quest_window.help_window = @help_window


@quest_details_window = Window_QuestDetails.new





# Boucle de transition, mise à jour graphique et entré clavier
Graphics.transition
# boucle
loop do
# Mise à jour graphique
Graphics.update
# Mise à jour des entrées clavier
Input.update
# Mise à jour de la class
update

# Si la scene n'existe plus, alors sortir de la boucle
if $scene != self
break
end
end
# figer les graphiques
Graphics.freeze
# destruction des objets



@help_window.dispose
@quest_window.dispose
@quest_details_window.dispose
@quest_book.dispose


end
#--------------------------------------------------------------------------
# ● update
#--------------------------------------------------------------------------
def update
# Mise à jour de la fenêtre aide
@help_window.update

# Mise à jour de la fenêtre quete
@quest_window.update
# Gestion des entrées clavier
# Si B est appuyé
if Input.trigger?(Input::B)
# jouer le son d'annulation
$game_system.se_play($data_system.cancel_se)
# Revenir au menu sur l'élément 6
$scene = Scene_Menu.new(6)
return
end
end
end


puis un " Window_QuestsMsge "
Code:
 #==============================================================================
# ■ Window_QuestsMsge
# créé par Corwin
#------------------------------------------------------------------------------
#==============================================================================


class Window_QuestsMsge < Window_Base
  def initialize
    #super(0, 0, 640, 64)
    super(330, 104, 270, 348)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $fontfaceQuest
    self.contents.font.size = $fontsizeQuest
 self.opacity = 0
    end

  def set_text(text, align = 0)
    # テキストとアラインメントの少なくとも一方が前回と違っている場合 
    if text != @text or align != @align
      # テキストを再描画
      self.contents.clear
   
 
# -- test check lgueur ligne

    self.contents.font.size= $fontsizeQuest -4
    height = contents.text_size("Pg").height  #pour avoir une hauteur type
    line_length = 220 #longueur de la ligne
    line = 0
    lgueur_text = text.length
     
   
  #  for i in 0...lgueur_text
     
      pos = lgueur_text
     
      while contents.text_size(text).width > line_length

        pos_nulle = 0
        pos = 0
       
   
   
    # on affiche tant que le texte n'est pas trop long...

          while contents.text_size(text[0, pos]).width < line_length && pos < lgueur_text
            pos += 1
          end     
       
      # on cherche une position nulle à venir
          pos_nulle = pos
         
          while pos_nulle > 0
            if text[pos_nulle] == 32
              break
            end
            pos_nulle -= 1
          end
         
         
          #on a trouvé une position nulle (space), on affiche le texte jusqu'à la pos. nulle
          if pos_nulle == 0
            self.contents.draw_text(4, 2+line*height, self.width - 40,height, text[0,pos])
            text = text[pos, lgueur_text]
          else
            self.contents.draw_text(4, 2+line*height, self.width - 40,height, text[0,pos_nulle])
            text = text[pos_nulle+1, lgueur_text]
          end
         
          line += 1  # permet de descendre d'une ligne pour afficher la suite
         
         
     
      end
     
      if ( text.length > 0 )
          self.contents.draw_text(4, 2+line*height, self.width - 40,height, text[0,pos])
        line += 1
        end
       
        line += 1
     
 #    end


# -- fin check lgeur ligne
     
     

     
      # -- self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
      @text = text
      @align = align
      @actor = nil

    end
    self.visible = true

   
  end
 

  def set_actor(actor)
    if actor != @actor
      self.contents.clear
      draw_actor_name(actor, 4, 0)
      draw_actor_state(actor, 140, 0)
      draw_actor_hp(actor, 284, 0)
      draw_actor_sp(actor, 460, 0)
      @actor = actor
      @text = nil
      self.visible = true
    end
  end

  def set_enemy(enemy)
    text = enemy.name
    state_text = make_battler_state_text(enemy, 112, false)
    if state_text != ""
      text += "  " + state_text
    end
    set_text(text, 1)
  end
end




Dernière édition par le Mer 13 Sep 2006 - 15:41, édité 1 fois
Revenir en haut Aller en bas
Anubis
Villageois (Nv 1)
Villageois (Nv 1)
Anubis

Nombre de messages : 4
Niveau RPG Maker : Grande connaissance en RPG : plus de 30 script et 1800 ressources
Date d'inscription : 13/09/2006

Script mission Vide
MessageSujet: Re: Script mission   Script mission Icon_minitimeMer 13 Sep 2006 - 15:35

Puis pour finir un " Window_QuestDetails "

Code:
#==============================================================================
# ■ Window_QuestDetails
# créé par Corwin
#------------------------------------------------------------------------------

class Window_QuestDetails < Window_Base

  def initialize
    #super(0, 0, 640, 64)
    super(0, 0, 640, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.opacity = 0
    self.contents.font.name = $fontfaceQuest
    self.contents.font.size = $fontsizeQuest+12
    self.contents.font.color = gold_color
    self.contents.draw_text(0, -8, self.width - 40, 36, "Grimoire des Quêtes...", 1)
  end

 
  end





Maintenant les modifications des scripts déjà présents

Main
Code:
#==============================================================================
#==============================================================================
# ■ Main
#------------------------------------------------------------------------------
#  各クラスの定義が終わった後、ここから実際の処理が始まります。
#==============================================================================

Font.default_name = "Comic Sans MS"
Font.default_color = Color.new(255,255,255,255)
$defaultfontsize = 28
$defaultfonttype = "Comic Sans MS"
begin
  # Change the $fontface variable to change the font style
  $fontface = "Comic Sans MS"
  # Change the $fontsize variable to change the font size
  $fontsize = 28
  # トランジション準備
  Graphics.freeze
  # シーンオブジェクト (タイトル画面) を作成
  $scene = Scene_Title.new
  # $scene が有効な限り main メソッドを呼び出す
  # définition du type de police d'écriture pour l'affichage des Quêtes
$fontfaceQuest = "Comic Sans MS"
$fontsizeQuest = 28 


  while $scene != nil
    $scene.main
  end
  # フェードアウト
  Graphics.transition(20)
rescue Errno::ENOENT
  # 例外 Errno::ENOENT を補足
  # ファイルがオープンできなかった場合、メッセージを表示して終了する
  filename = $!.message.sub("Ne trouve pas le fichier ou le répertoire - ", "")
  print("Le ficher #{filename} n'a pas été trouvé.")
end

(sachez qu'il contient à peu près tout)

puis dans " scene_save "
vers la fin entre les lignes 82 et 83
Code:
    Marshal.dump($game_quests.get_etat, file)

puis à " scene_Load "
entre les lignes 82 et 83
Code:
$game_quests.set_etat( Marshal.load(file))

Et voila fini pour les scripts[/code]

Maintenant ATTENTION car c'est là que 90% des erreurs vont subvenir !

Tout va se passer dans "game_quest"

observons
Code:
#quete n°1
1,"Achats", "Aller en ville pour effectuer des achats divers.",

1 représente le nombre d'état de la quête

"achats" et le titre

"aller en ville ..." est un état

Remarquer qu'à la fin il y a toujours une virgule !Si elle n'y est pas vous verrez apparaître une erreur à la quête suivante.

Pour changer les états, changer 1 et rajoutez (dans ce cas mais ça peut-être aussi enlevez) une description entre ""

Pour rajouter ou enlever une quête à la ligne 14 modifier le 4 en fonction de ce que vous voulez faire
Code:
@nbre_quete = 4
Revenir en haut Aller en bas
Anubis
Villageois (Nv 1)
Villageois (Nv 1)
Anubis

Nombre de messages : 4
Niveau RPG Maker : Grande connaissance en RPG : plus de 30 script et 1800 ressources
Date d'inscription : 13/09/2006

Script mission Vide
MessageSujet: Re: Script mission   Script mission Icon_minitimeMer 13 Sep 2006 - 15:36

Pendant le jeu :

Pour changer l'Etat d'un quête : "insérer script"
Code:
$game_quests.changer_etat(X,Y)
X étant le numéros de la quête et Y l'état à mettre

Pour faire échouer la quête Y = -1
Pour faire réussir la quête Y = 99

Pour consulter le livre de quête : "insérer script"
Code:
$scene = Scene_Quests.new

ATTENTION SI CA NE MARCHE PAS C'EST NORMALE

Il faut crée un fond à ce livre de quête : crez une image nommé " quests.png " et mettez le dans pictures

il doit être construit comme ceci
Script mission Image19et

Par exemple

Script mission Grim1

Script mission Grim2

Script mission Grim3

Script mission Grim4

Script mission My.php?image=quests8nw

(par the_true_power)

Et une démo : http://www.megaupload.com/?d=N4IMM0TY
Revenir en haut Aller en bas
Contenu sponsorisé




Script mission Vide
MessageSujet: Re: Script mission   Script mission Icon_minitime

Revenir en haut Aller en bas
 

Script mission

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum: Vous ne pouvez pas répondre aux sujets dans ce forum
 :: Partage de scripts :: Systèmes -
|
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Forum gratuit