|
| | Systeme De Mission ( Difficile ) BIEN SUIVRE ! | |
| | Auteur | Message |
---|
Mikashi Jongleur Itinérant
Nombre de messages : 79 Age : 30 Projet(s) en cours : La Main De Dieu Niveau Rpg Maker : Ca passe quoi, je sais tous ce qu'il y a a savoir, sauf le ruby . Jeux Préférés : Tales Of Symphonia, Final Fantasy , Ragnarok , Naruto 4 ... Date d'inscription : 15/07/2007
| Sujet: Systeme De Mission ( Difficile ) BIEN SUIVRE ! Ven 20 Juil 2007, 17:52 | |
| Bonjour et bonsoir a toutes et a tous ! Voici un script permettant de creer un systeme de mission . Bien qu'il y en ai eu un auparavent, voici une deuxieme version, plus difficile, mais bien plus belle . Veuillez suivre a la lettre les instructions donnees pour ne pas que vous ayez de problemes . Peu de personnes y arrivent ^^ . Soit : Auteur : "créé par Tonyryu, entièrement modifié et optimisé par Corwin " INSTRUCTIONS :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
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 | |
| | | Mikashi Jongleur Itinérant
Nombre de messages : 79 Age : 30 Projet(s) en cours : La Main De Dieu Niveau Rpg Maker : Ca passe quoi, je sais tous ce qu'il y a a savoir, sauf le ruby . Jeux Préférés : Tales Of Symphonia, Final Fantasy , Ragnarok , Naruto 4 ... Date d'inscription : 15/07/2007
| Sujet: Re: Systeme De Mission ( Difficile ) BIEN SUIVRE ! Ven 20 Juil 2007, 17:57 | |
| Maintenant les modifications des scripts déjà présents MODIFIER : 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)) FINI POUR LES SCRIPTS !!! 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 | |
| | | Mikashi Jongleur Itinérant
Nombre de messages : 79 Age : 30 Projet(s) en cours : La Main De Dieu Niveau Rpg Maker : Ca passe quoi, je sais tous ce qu'il y a a savoir, sauf le ruby . Jeux Préférés : Tales Of Symphonia, Final Fantasy , Ragnarok , Naruto 4 ... Date d'inscription : 15/07/2007
| Sujet: Re: Systeme De Mission ( Difficile ) BIEN SUIVRE ! Ven 20 Juil 2007, 18:02 | |
| 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 NORMALEIl 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 :: Par exemple (par the_true_power) Et une démo : http://www.megaupload.com/?d=N4IMM0TY ET VOILA ! | |
| | | Invité Invité
| Sujet: Re: Systeme De Mission ( Difficile ) BIEN SUIVRE ! Ven 20 Juil 2007, 18:03 | |
| O_______o' Merci dis donc, ca c'est du boulot ^^' |
| | | Mikashi Jongleur Itinérant
Nombre de messages : 79 Age : 30 Projet(s) en cours : La Main De Dieu Niveau Rpg Maker : Ca passe quoi, je sais tous ce qu'il y a a savoir, sauf le ruby . Jeux Préférés : Tales Of Symphonia, Final Fantasy , Ragnarok , Naruto 4 ... Date d'inscription : 15/07/2007
| Sujet: Re: Systeme De Mission ( Difficile ) BIEN SUIVRE ! Ven 20 Juil 2007, 18:06 | |
| XD . Le rediger etait tres long mais pour ceux qui veulent l'utiliser ce sera pire xD . Soit, il faut vraiment bien lire les consignes sinon ca peut faire foirer tous le projet ! | |
| | | Fs snake Acrobate
Nombre de messages : 119 Age : 31 Projet(s) en cours : Final Fantasy : Crystal Age ;) Niveau Rpg Maker : Script 2/10 // Graphisme 5/10 // Mapping 5/10 // Event 8/10 Jeux Préférés : Metal gear solid,Final Fantasy,etc... Date d'inscription : 09/07/2007
| Sujet: Re: Systeme De Mission ( Difficile ) BIEN SUIVRE ! Lun 23 Juil 2007, 14:27 | |
| Oula,c'est dangeureux comme script -_-' N'empêche,pour ceux qui n'ont pas froid aux yeux,ce script est vraiment pas mal,merci Mikashi pour ce partage ^^ | |
| | | kingofchaos Auguste Polichinelle
Nombre de messages : 1111 Age : 34 Jeux Préférés : Les hack n slash :P Date d'inscription : 05/07/2007
| Sujet: Re: Systeme De Mission ( Difficile ) BIEN SUIVRE ! Lun 23 Juil 2007, 16:37 | |
| Assez serviable ! Merci beaucoup ! | |
| | | Erevan Acrobate
Nombre de messages : 104 Age : 30 Projet(s) en cours : Erevan Niveau Rpg Maker : 1/20 Jeux Préférés : Erevan ^^ Date d'inscription : 29/07/2007
| Sujet: Re: Systeme De Mission ( Difficile ) BIEN SUIVRE ! Dim 29 Juil 2007, 23:01 | |
| Je conseil vivement de faire une sauvegarde de votre projet avant (copier/coller votre jeu) je me suis deja fait une grosse frayeur comme ca ^^ mon jeu bugguer mais je savait pas ou ! | |
| | | Hareck Fou du Roi
Nombre de messages : 848 Age : 31 Projet(s) en cours : Un rogue like Niveau Rpg Maker : Dieu ultime (no joke...), si on ne compte pas le ruby. Si on compte le ruby, juste Ultra bon. :) Jeux Préférés : LoL, The Binding of Isaac, la série des TES, les rogues en général, et tant d'autre! Date d'inscription : 25/07/2007
| Sujet: Re: Systeme De Mission ( Difficile ) BIEN SUIVRE ! Jeu 02 Aoû 2007, 09:57 | |
| Ouaa!! c trop cool tn script (par contre g mi 3 plomble pour réusir)!! par contre, si on réusi pas sa fait tout foiré. Mes 2 dernier projet on fini a la casse a cause de sa! | |
| | | Aktaan Jongleur Itinérant
Nombre de messages : 64 Age : 32 Projet(s) en cours : Star Dungeon, Aurora Sky Niveau Rpg Maker : Bon... Jeux Préférés : Morrowind, Oblivion, KOTOR, Hitman... Date d'inscription : 03/04/2007
| Sujet: Re: Systeme De Mission ( Difficile ) BIEN SUIVRE ! Jeu 02 Aoû 2007, 12:14 | |
| Ouais ce script est vraiment compliqué et prise de tête donc il est pas conseillé au nouveaux makers ^^ Moi j'avais pas réussi à le faire marcher au début... enfin ça reste je trouve le meilleur script de Quêtes car il n'utilise pas la fonction des objets et qu'il prend en compte l'affichage d'un livre. Trop classe :D C'est celui que j'utilise mais je l'ai un peu modifié | |
| | | Contenu sponsorisé
| Sujet: Re: Systeme De Mission ( Difficile ) BIEN SUIVRE ! | |
| |
| | | | Systeme De Mission ( Difficile ) BIEN SUIVRE ! | |
|
Sujets similaires | |
|
Sujets similaires | |
| |
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |
|