RPG Creator : créez votre MMORPG ou RPG sans aucune connaissance en programmation


Disponible le 4 Juin !




- Jouez à votre jeu sur tablettes tactiles, Smartphones et navigateurs Web
- Personnalisez vos menus
- Dessinez facilement et rapidement vos cartes
- Créez des actions pour le combat A-RPG


www.rpgcreator.net


Heures au format UTC + 1 heure [ Heure d’été ]


Règles du forum


Consultez la liste des Scripts : cliquez ici



Publier un nouveau sujet Répondre au sujet  [ 4 messages ] 
Auteur Message
 Sujet du message: Script mission
MessagePublié: 13 Sep 2006, 14:35 
Villageois (Nv 1)

Inscrit le: 14 Sep 2006, 00:00
Messages: 4
Points d'aide: 0/60

Créations :

Voir ses créations

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

1) Crez un script " Game_Quests "
Collez y
Code: Tout sélectionner
#==============================================================================
# ■ 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: Tout sélectionner
 #==============================================================================
# ■ 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 = Color.new(255,0,0)
else if $game_quests.etatID(@IDquest[i]) == 99
self.contents.font.color = Color.new(0,255,0)
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 = Color.new(255,0,0)

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

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: Tout sélectionner
 #==============================================================================
# ■ 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: Tout sélectionner
 #==============================================================================
# ■ 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




Haut
 Profil  
 
 Sujet du message: Re: Script mission
MessagePublié: 13 Sep 2006, 14:35 
Villageois (Nv 1)

Inscrit le: 14 Sep 2006, 00:00
Messages: 4
Points d'aide: 0/60

Créations :

Voir ses créations

Puis pour finir un " Window_QuestDetails "

Code: Tout sélectionner
#==============================================================================
# ■ 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 = Color.new(240, 240, 0, 255)
    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: Tout sélectionner
#==============================================================================
#==============================================================================
# ■ 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: Tout sélectionner
    Marshal.dump($game_quests.get_etat, file)


puis à " scene_Load "
entre les lignes 82 et 83
Code: Tout sélectionner
$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: Tout sélectionner
#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: Tout sélectionner
@nbre_quete = 4


Haut
 Profil  
 
 Sujet du message: Re: Script mission
MessagePublié: 13 Sep 2006, 14:36 
Villageois (Nv 1)

Inscrit le: 14 Sep 2006, 00:00
Messages: 4
Points d'aide: 0/60

Créations :

Voir ses créations

Pendant le jeu :

Pour changer l'Etat d'un quête : "insérer script"
Code: Tout sélectionner
$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: Tout sélectionner
$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
Image

Par exemple

Image

Image

Image

Image

[img]http://img116.imageshack.us/my.php?image=quests8nw.png[/img]

(par the_true_power)

Et une démo : http://www.megaupload.com/?d=N4IMM0TY


Haut
 Profil  
 
 Sujet du message: Re: Script mission
MessagePublié: 30 Mai 2011, 10:07 
Villageois (Nv 4)
Avatar de l’utilisateur

Inscrit le: 16 Déc 2009, 18:11
Messages: 71
Localisation: Sur un nuage douillet et confortable
Niveau RPG Maker: Bon
Point(s) Fort(s): Scénariste/Graphiste
Sexe: Masculin
Points d'aide: 0/60

Créations :

Voir ses créations

Désolé tu nécropost, mais il fallait bien rectifier le tir pour les prochains preneurs du script qui, comme moi, auraient eu des problèmes.

Dans votre Scene_Title, (En dessous de "$game_system=Game_System.new") il faut rajouter à la ligne 32:

Code: Tout sélectionner
$game_quests = Game_Quests.new



et

Si vous avez pris les scripts directement de la démo, il vous faut aussi remplacer la ligne 15 du script Window_QuestDetails

Code: Tout sélectionner
self.contents.font.color = gold_color


par cette ligne là:

Code: Tout sélectionner
self.contents.font.color = Color.new(240, 240, 0, 255)




Lorsqu'on presse ESCAPE pour sortir du livre de quêtes,
le menu s'ouvre. C'est pas forcément agréable. Si vous voulez changer ça, il suffit de
remplacer la ligne 78 du script Scene_Quests

Code: Tout sélectionner
$scene = Scene_Menu.new(6)


par

Code: Tout sélectionner
$scene = Scene_Map.new


(Lorsque vous quitterez le livre de quêtes, vous reviendrez sur la map)




Bonne continuation a tous

_________________
Image


Haut
 Profil  
 
Afficher les messages depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 4 messages ] 

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 2 invités


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Rechercher pour:
Sauter vers:  
cron
RPG Creative Forum version 5 ; Tous droits réservés
phpBB Group (Traduit par Xaphos)
Optimisé pour une résolution 1024*728