- grifdailMembre
- Nombre de messages : 51
Distinction : aucune
Date d'inscription : 18/04/2008
Systeme de quête avancée et bonus
Sam 26 Juin 2010 - 10:02
Bonjour tout le monde
Voici un grand script qui permet de faire des quêtes.
Seulement ?!?!?!?!?!?
Euh ouais ...
Mais par contre il gère presque tout.
Je pense que des screens seraient plus explicatifs
Vous avez pu remarquer qu'il y a plusieurs types de quêtes :
1 => vaincre tel monstre
2 => ramener un objet
3 => apporter un objet
4 => Tuer x monstre
5 => aller à tel endroit
6=> trouver quelqu'un
7 => avis de recherche
C'est l'une des fonctionnalités du script
Liste des fonctions :
☼ menu de quêtes
☼ fenêtre de quête gère automatiquement
☼scène_quête (screen 1 et 2)
☼mis à jour automatique du statut de la quête avec un seul interrupteur par quêtes
☼possibilité de créer des quêtes sans le scène_quête
☼les quêtes ont des types
...
Rien de plus simple
Créer une quête à accepter :
Dans un appel de script mettez ça :
$tipeq est le type de la quête selon cela :
$exp est l'expérience gagnée après la quête
$item est l'objet n1 gagné après la quête sous forme [a , b] ou a est le type de l'objet (1 objet 2 sort 3 armure 4 arme) et b l'id de l'objet
$item2 est l'objet n2 gagné après la quête sous forme [a , b] ou a est le type de l'objet (1 objet 2 sort 3 armure 4 arme) et b l'id de l'objet
$descri est une description de la quête entre guillemets
puis mettez ceci :
ou bien
ou id est l'id de l'interrupteur correspondant à la quête
Pour appeler la liste de quête ecrivez dans un appelle de script
Oups j'avais oublié le bonus :
Regardez amis scripteurs :
Cette méthode transforme les clés d'un hash en aray (utilisé sous forme pure dans mon script)
Cette méthode transforme les clés d'un hash en aray (utilisé sous forme pure dans mon script)
Voici un grand script qui permet de faire des quêtes.
Seulement ?!?!?!?!?!?
Euh ouais ...
Mais par contre il gère presque tout.
Je pense que des screens seraient plus explicatifs
- Spoiler:
Vous avez pu remarquer qu'il y a plusieurs types de quêtes :
1 => vaincre tel monstre
2 => ramener un objet
3 => apporter un objet
4 => Tuer x monstre
5 => aller à tel endroit
6=> trouver quelqu'un
7 => avis de recherche
C'est l'une des fonctionnalités du script
Liste des fonctions :
☼ menu de quêtes
☼ fenêtre de quête gère automatiquement
☼scène_quête (screen 1 et 2)
☼mis à jour automatique du statut de la quête avec un seul interrupteur par quêtes
☼possibilité de créer des quêtes sans le scène_quête
☼les quêtes ont des types
...
Rien de plus simple
Créer une quête à accepter :
Dans un appel de script mettez ça :
- Code:
$nonq = "maraudeur"
$tipeq = 7
$cible = 3
$cible2 = 0
$tarif = 100000
$exp = 0
$item = 0
$item2 = 0
$descri = "Attention criminel dangereux"
$tipeq est le type de la quête selon cela :
- Spoiler:
- 1 => vaincre tel monstre
2 => ramener un objet
3 => apporter un objet
4 => Tuer x monstre
5 => aller a tel endroit
6=> trouve quelqu'un
7 => avis de recherche
- Spoiler:
- l'id d'un monstre dans les types 1 , 4 et 7.
l'id d'un objet dans les types 2 et 3.
l'id d'une map dans le type 5.
un nom entre guillemets pour le cas 6.
- Spoiler:
- un non entre guillemet pour le cas 3
le nombre de fois ou il faut vaincre un monstre dans le type 4
$exp est l'expérience gagnée après la quête
$item est l'objet n1 gagné après la quête sous forme [a , b] ou a est le type de l'objet (1 objet 2 sort 3 armure 4 arme) et b l'id de l'objet
$item2 est l'objet n2 gagné après la quête sous forme [a , b] ou a est le type de l'objet (1 objet 2 sort 3 armure 4 arme) et b l'id de l'objet
$descri est une description de la quête entre guillemets
puis mettez ceci :
- Code:
$scene = Scene_Quete.new(id)
ou bien
- Code:
make_quete(id)
ou id est l'id de l'interrupteur correspondant à la quête
Pour appeler la liste de quête ecrivez dans un appelle de script
- Code:
$scene = Scene_quete__liste.new
- Spoiler:
- Code:
#############
#GRIFDAIL###
###########
##########
#########
########
#######
######
#####
####
###
##
#
=begin
créer une quête a accepté :
dans un appelle de scripte mettez ça
$nonq = "maraudeur"
$tipeq = 7
$cible = 3
$cible2 = 0
$tarif = 120
$exp = 100
$item = [1,1]
$item2 = [3,3]
$descri = "Attention criminel dangereux"
ou
$nonq est le non de la quête entre guillemet
$tipeq est le type de la quête selon cela
1 => vaincre tel monstre
2 => ramener un objet
3 => apporter un objet
4 => Tuer x monstre
5 => aller a tel endroit
6=> trouve quelle quelle qu'un
7 => avis de recherche
$cible est cible de la quête cela peut être
l'id d un monstre dans les types 1 , 4 et 7
l'id d'un objet dans les types 2 et 3
l'id d'une map dans le type 5
un non entre guillemet pour le cas 6
$cible2 est cible secondaire de la quête cela peut être
un non entre guillemet pour le cas 3
le nombre de fois ou il faut vaincre un monstre dans le type 4
$tarif est l'argent gagner après la quête
$exp est l'expérience gagner après la quête
$item est l'objet n1 gagner après la quête sous forme [a , b] ou a est le type de l'objet (1 objet 2 sort 3 armure 4 arme) et b l'id de l'objet
$item2 est l'objet n2 gagner après la quête sous forme [a , b] ou a est le type de l'objet (1 objet 2 sort 3 armure 4 arme) et b l'id de l'objet
$descri est une description de la quête entre guillemet
puis mettez ceci
[code]$scene = Scene_Quete.new(id)[/code]
ou id est l'id de l'interrupteur correspondant a la quête
ou bien
make_quete(id)[ si vous ne souhaiter pas le scène quête : la quête sera alors visible unique dans la liste
ou id est l'id de l'interrupteur correspondant a la quête
Pour appeler la liste de quête ecrivez dans un appelle de script
$scene = Scene_quete__liste.new
=end
#######
#################
############################
########################################
################################################
class Window_quette < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(x,y,id=0)
super(x,y, 480, 480/5*3-10)
@id = id
refresh
end
#--------------------------------------------------------------------------
# * Set Text
# text : character string displayed in window
# align : alignment (0..flush left, 1..center, 2..flush right)
#--------------------------------------------------------------------------
def refresh(id=@id)
@id = id
self.contents.clear
self.contents.font.color = Color.new(139,0,0)
self.contents.font.size = 34
if $tipeq != 7
self.contents.draw_text(0,0, self.width - 40, 34, "Quête",1)
self.contents.font.color = normal_color
self.contents.font.size = WLH
self.contents.draw_text(0,40, self.width - 40, 28, $nonq.to_s,1)
else
self.contents.draw_text(0,0, self.width - 40, 34, "Avis de recherche",1)
self.contents.font.color = normal_color
end
self.contents.font.size = 20
self.contents.draw_text(0, 68, self.width - 40, 28, chek_type)
self.contents.draw_text(0, 68+24, self.width - 40, 28, $descri)
self.contents.font.color = system_color
self.contents.draw_text(0, 124, self.width - 40, 28, "Récompense: ")
draw_icon(205, 0, 148) unless $tarif == 0
self.contents.font.color = normal_color
self.contents.draw_text(25, 148, self.width - 40, 28, $tarif) unless $tarif == 0
self.contents.font.color = system_color
self.contents.draw_text(120, 148, self.width - 40, 28, "Expérience:") unless $exp == 0
self.contents.font.color = normal_color
self.contents.draw_text(110+120, 148, self.width - 40, 28, $exp) unless $exp == 0
draw_recompense1 unless $item == 0
draw_recompense2 unless $item2 == 0
self.contents.draw_text(0, 148+48+24, self.width - 40, 28, "Acepter ?",1) unless $quete.include?(@id)
self.contents.draw_text(0, 148+48+24, self.width - 40, 28, "Quête deja acepter",1) if $quete.include?(@id) and $game_switches[@id] == false
self.contents.draw_text(0, 148+48+24, self.width - 40, 28, "Quête acomplie",1) if $quete.include?(@id) and $game_switches[@id]
Audio.se_play("Audio/SE/Chime2") if $quete.include?(@id) and $game_switches[@id]
end
=begin
Categorie
1 => gagne tel monstre
2 => ramene un objet
3 => aporte un objet
4 => Tue x monstre
5 => Va a tel endroi
6=> trouve quelle quelle qu'un
7 => gagne tel PNJ
=end
def draw_recompense1
if $item[0] ==1
draw_item_name($data_items[$item[1]], 0, 148+24)
elsif $item[0] == 2
draw_item_name($data_skills[$item[1]], 0, 148+24)
elsif $item[0] == 3
draw_item_name($data_armors[$item[1]], 0, 148+24)
elsif $item[0] == 4
draw_item_name($data_weapons[$item[1]], 0, 148+24)
end
end
def draw_recompense2
x = (self.width-32)/2
if $item2[0] ==1
draw_item_name($data_items[$item2[1]], x, 148+24)
elsif $item2[0] == 2
draw_item_name($data_skills[$item2[1]], x, 148+24)
elsif $item2[0] == 3
draw_item_name($data_armors[$item2[1]], x, 148+24)
elsif $item2[0] == 4
draw_item_name($data_weapons[$item2[1]], x, 148+24)
end
end
def chek_type
case $tipeq
when 1
a = "Vaincs " + $data_enemies[$cible].name + " !"
when 2
a = "Ramène moi " + $data_items[$cible].name + " !"
when 3
a = "Apporte " + $data_items[$cible].name + " à " + $cible2.to_s + " !"
when 4
a = "Vaincs " +$cible2.to_s+" " + $data_enemies[$cible].name + "s !"
when 5
map = load_data("Data/MapInfos.rvdata")
a = "Rends toi a ''"+map[$cible].name.to_s+"'' !"
when 6
a = "Trouve " + $cible.to_s+ " !"
when 7
a = "On recherche : " + $data_enemies[$cible].name + " !"
else
a = ""
end
return a
end
def draw_item_name(item, x, y, enabled = true)
if item != nil
draw_icon(item.icon_index, x, y, enabled)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(x + 24, y,160, WLH, item.name)
end
end
end
################################################
########################################
############################
#################
#######
#######
#################
############################
########################################
################################################
class Scene_Quete < Scene_Base
#--------------------------------------------------------------------------
# * Object Initialization
# menu_index : command cursor's initial position
#--------------------------------------------------------------------------
def initialize(id)
@id = id
end
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
@quete = Window_quette.new((544-384)/2,416/6,@id)
create_command_window unless $quete.include?(@id)
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@quete.dispose
@command_window.dispose unless $quete.include?(@id)
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
update_menu_background
@quete.update
@command_window.update unless $quete.include?(@id)
update_command_selection unless $quete.include?(@id)
update_command_quite if $quete.include?(@id)
end
#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
s1 = "Oui"
s2 = "Non"
@command_window = Window_Command.new(@quete.width, [s1, s2],2)
@command_window.y = (416/6)+ @quete.height
@command_window.x = @quete.x
@command_window.index = 0
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::C)
Sound.play_decision
if @command_window.index == 0
make_quete(@id)
@command_window.dispose
end
$scene = Scene_Map.new
end
end
def update_command_quite
if Input.trigger?(Input::C)
Sound.play_decision
$scene = Scene_Map.new
end
end
end
################################################
########################################
############################
#################
#######
#######
#################
############################
########################################
################################################
class Scene_quete__liste < Scene_Base
#--------------------------------------------------------------------------
# * Object Initialization
# menu_index : command cursor's initial position
#--------------------------------------------------------------------------
def initialize
end
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
@qlib = Window_Qlib.new
@quete = Window_quette.new(@qlib.width , 0)
@quete.visible = false
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@qlib.dispose
@quete.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
update_menu_background
update_command_selection
@qlib.update
end
#
#
#
#
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
end
retour_quete(@qlib.retour_key)
@quete.refresh(@qlib.retour_key)
@quete.visible = true
end
end
################################################
########################################
############################
#################
#######
#######
#################
############################
########################################
################################################
$quete = {}
def make_quete(id , importance = false)
$quete[id] = [$nonq, $tipeq , $cible , $cible2 , $descri , $tarif , $exp , $item , $item2 , importance]
# 0 1 2 3 4 5 6 7 8
end
def retour_quete(id)
$nonq = $quete[id][0]
$tipeq = $quete[id][1]
$cible = $quete[id][2]
$cible2 = $quete[id][3]
$descri = $quete[id][4]
$tarif = $quete[id][5]
$exp = $quete[id][6]
$item = $quete[id][7]
$item2= $quete[id][8]
end
################################################
########################################
############################
#################
#######
#######
#################
############################
########################################
class Window_Qlib < Window_Selectable
attr_reader :commands
def initialize
super(0, 0, 160, 416)
@item_max = $quete.size
refresh
self.index = 0
@indexn = 1
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
a= []
$quete.each_key do |@key_index|
a = a + @key_index.to_a
end
for i in 0...a.size
draw_item(i,a)
end
@tab =a
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
# enabled : enabled flag. When false, draw semi-transparently.
#--------------------------------------------------------------------------
def draw_item(index, tab)
rect = item_rect(index)
rect.x += 4
rect.width -= 8
self.contents.clear_rect(rect)
key_p = tab[index]
self.contents.font.color = normal_color unless $quete[key_p][9]
self.contents.font.color = Color.new(139,0,0) if $quete[key_p][9]
self.contents.draw_text(rect, $quete[key_p][0])
end
def retour_key
a = @tab[self.index]
return a
end
end
################################################
########################################
############################
#################
#######
#######
#################
############################
########################################
class Scene_File < Scene_Base
def write_save_data(file)
characters = []
for actor in $game_party.members
characters.push([actor.character_name, actor.character_index])
end
$game_system.save_count += 1
$game_system.version_id = $data_system.version_id
@last_bgm = RPG::BGM::last
@last_bgs = RPG::BGS::last
Marshal.dump(characters, file)
Marshal.dump(Graphics.frame_count, file)
Marshal.dump(@last_bgm, file)
Marshal.dump(@last_bgs, file)
Marshal.dump($game_system, file)
Marshal.dump($game_message, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
Marshal.dump($quete, file)
end
def read_save_data(file)
characters = Marshal.load(file)
Graphics.frame_count = Marshal.load(file)
@last_bgm = Marshal.load(file)
@last_bgs = Marshal.load(file)
$game_system = Marshal.load(file)
$game_message = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_actors = Marshal.load(file)
$game_party = Marshal.load(file)
$game_troop = Marshal.load(file)
$game_map = Marshal.load(file)
$game_player = Marshal.load(file)
$quete = Marshal.load(file)
if $game_system.version_id != $data_system.version_id
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
end
end
################################################
########################################
############################
#################
#######
Oups j'avais oublié le bonus :
Regardez amis scripteurs :
- Spoiler:
- Code:
def hk_to_a(hash)
a= []
hash.each_key do |key_index|
a = a + key_index.to_a
return a
end
end
Cette méthode transforme les clés d'un hash en aray (utilisé sous forme pure dans mon script)
- Spoiler:
- Code:
def hv_to_a(hash)
a= []
hash.each_value do |value_index|
a = a + value_index.to_a
return a
end
end
Cette méthode transforme les clés d'un hash en aray (utilisé sous forme pure dans mon script)
- grifdailMembre
- Nombre de messages : 51
Distinction : aucune
Date d'inscription : 18/04/2008
Re: Systeme de quête avancée et bonus
Sam 26 Juin 2010 - 20:56
Atention
Tres important ce script a un bug (au niveau des sauvegarde )
heuresement je l'ai corriger si quelle qu'un la deja pris et utiliser alors prener le nouveau ou rajouter ca a la fin du scripte
- Spoiler:
- Code:
#######
#################
############################
########################################
class Scene_File < Scene_Base
def write_save_data(file)
characters = []
for actor in $game_party.members
characters.push([actor.character_name, actor.character_index])
end
$game_system.save_count = 1
$game_system.version_id = $data_system.version_id
@last_bgm = RPG::BGM::last
@last_bgs = RPG::BGS::last
Marshal.dump(characters, file)
Marshal.dump(Graphics.frame_count, file)
Marshal.dump(@last_bgm, file)
Marshal.dump(@last_bgs, file)
Marshal.dump($game_system, file)
Marshal.dump($game_message, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
Marshal.dump($quete, file)
end
def read_save_data(file)
characters = Marshal.load(file)
Graphics.frame_count = Marshal.load(file)
@last_bgm = Marshal.load(file)
@last_bgs = Marshal.load(file)
$game_system = Marshal.load(file)
$game_message = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_actors = Marshal.load(file)
$game_party = Marshal.load(file)
$game_troop = Marshal.load(file)
$game_map = Marshal.load(file)
$game_player = Marshal.load(file)
$quete = Marshal.load(file)
if $game_system.version_id != $data_system.version_id
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
end
end
################################################
########################################
############################
#################
#######
- Dudu'Staffeux retraité
- Nombre de messages : 2060
Age : 33
Distinction : Apprenti KGB-boy en avenir
[Coco' ]
Hamsterphile de service ^^
[Balby' le Fake]
Grand prof de la MA
[Skillo]
Ce grand programmateur, mon coeur, ma vie ! [Hamu']
Date d'inscription : 22/06/2009
Re: Systeme de quête avancée et bonus
Dim 27 Juin 2010 - 11:03
et hop voici donc une version que je vous conseille de prendre pour n meilleur fonctionnement
notamment pour avoir une compatibilité avec les script de sauvegarde^^
notamment pour avoir une compatibilité avec les script de sauvegarde^^
- Code:
#############
#GRIFDAIL###
###########
##########
#########
########
#######
######
#####
####
###
##
#
#optimisé par adurna (crédite non obligatoire mais bienvenue)
=begin
créer une quête a accepté :
dans un appelle de scripte mettez ça
$nonq = "maraudeur"
$tipeq = 7
$cible = 3
$cible2 = 0
$tarif = 120
$exp = 100
$item = [1,1]
$item2 = [3,3]
$descri = "Attention criminel dangereux"
ou
$nonq est le non de la quête entre guillemet
$tipeq est le type de la quête selon cela
1 => vaincre tel monstre
2 => ramener un objet
3 => apporter un objet
4 => Tuer x monstre
5 => aller a tel endroit
6=> trouve quelle quelle qu'un
7 => avis de recherche
$cible est cible de la quête cela peut être
l'id d un monstre dans les types 1 , 4 et 7
l'id d'un objet dans les types 2 et 3
l'id d'une map dans le type 5
un non entre guillemet pour le cas 6
$cible2 est cible secondaire de la quête cela peut être
un non entre guillemet pour le cas 3
le nombre de fois ou il faut vaincre un monstre dans le type 4
$tarif est l'argent gagner après la quête
$exp est l'expérience gagner après la quête
$item est l'objet n1 gagner après la quête sous forme [a , b] ou a est le type de l'objet (1 objet 2 sort 3 armure 4 arme) et b l'id de l'objet
$item2 est l'objet n2 gagner après la quête sous forme [a , b] ou a est le type de l'objet (1 objet 2 sort 3 armure 4 arme) et b l'id de l'objet
$descri est une description de la quête entre guillemet
puis mettez ceci
[code]$scene = Scene_Quete.new(id)[/code]
ou id est l'id de l'interrupteur correspondant a la quête
ou bien
make_quete(id)[ si vous ne souhaiter pas le scène quête : la quête sera alors visible unique dans la liste
ou id est l'id de l'interrupteur correspondant a la quête
Pour appeler la liste de quête ecrivez dans un appelle de script
$scene = Scene_quete__liste.new
=end
#######
#################
############################
########################################
################################################
class Window_quette < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(x,y,id=0)
super(x,y, 385, 480/5*3-10)
@id = id
refresh
end
#--------------------------------------------------------------------------
# * Set Text
# text : character string displayed in window
# align : alignment (0..flush left, 1..center, 2..flush right)
#--------------------------------------------------------------------------
def refresh(id=@id)
@id = id
self.contents.clear
self.contents.font.color = Color.new(139,0,0)
self.contents.font.size = 34
if $tipeq != 7
self.contents.draw_text(0,0, self.width - 40, 34, "Quête",1)
self.contents.font.color = normal_color
self.contents.font.size = WLH
self.contents.draw_text(0,40, self.width - 40, 28, $nonq.to_s,1)
else
self.contents.draw_text(0,0, self.width - 40, 34, "Avis de recherche",1)
self.contents.font.color = normal_color
end
self.contents.font.size = 20
self.contents.draw_text(0, 68, self.width - 40, 28, chek_type)
self.contents.draw_text(0, 68+24, self.width - 40, 28, $descri)
self.contents.font.color = system_color
self.contents.draw_text(0, 124, self.width - 40, 28, "Récompense: ")
draw_icon(205, 0, 148) unless $tarif == 0
self.contents.font.color = normal_color
self.contents.draw_text(25, 148, self.width - 40, 28, $tarif) unless $tarif == 0
self.contents.font.color = system_color
self.contents.draw_text(120, 148, self.width - 40, 28, "Expérience:") unless $exp == 0
self.contents.font.color = normal_color
self.contents.draw_text(110+120, 148, self.width - 40, 28, $exp) unless $exp == 0
draw_recompense1 unless $item == 0
draw_recompense2 unless $item2 == 0
self.contents.draw_text(0, 148+48+24, self.width - 40, 28, "Acepter ?",1) unless $quete.include?(@id)
self.contents.draw_text(0, 148+48+24, self.width - 40, 28, "Quête deja acepter",1) if $quete.include?(@id) and $game_switches[@id] == false
self.contents.draw_text(0, 148+48+24, self.width - 40, 28, "Quête acomplie",1) if $quete.include?(@id) and $game_switches[@id]
Audio.se_play("Audio/SE/Chime2") if $quete.include?(@id) and $game_switches[@id]
end
=begin
Categorie
1 => gagne tel monstre
2 => ramene un objet
3 => aporte un objet
4 => Tue x monstre
5 => Va a tel endroi
6=> trouve quelle quelle qu'un
7 => gagne tel PNJ
=end
def draw_recompense1
if $item[0] ==1
draw_item_name($data_items[$item[1]], 0, 148+24)
elsif $item[0] == 2
draw_item_name($data_skills[$item[1]], 0, 148+24)
elsif $item[0] == 3
draw_item_name($data_armors[$item[1]], 0, 148+24)
elsif $item[0] == 4
draw_item_name($data_weapons[$item[1]], 0, 148+24)
end
def draw_recompense2
x = (self.width-32)/2
if $item2[0] ==1
draw_item_name($data_items[$item2[1]], x, 148+24)
elsif $item2[0] == 2
draw_item_name($data_skills[$item2[1]], x, 148+24)
elsif $item2[0] == 3
draw_item_name($data_armors[$item2[1]], x, 148+24)
elsif $item2[0] == 4
draw_item_name($data_weapons[$item2[1]], x, 148+24)
end
end
end
def chek_type
case $tipeq
when 1
a = "Vaincs " + $data_enemies[$cible].name + " !"
when 2
a = "Ramène moi " + $data_items[$cible].name + " !"
when 3
a = "Apporte " + $data_items[$cible].name + " à " + $cible2.to_s + " !"
when 4
a = "Vaincs " +$cible2.to_s+" " + $data_enemies[$cible].name + "s !"
when 5
map = load_data("Data/MapInfos.rvdata")
a = "Rends toi a ''"+map[$cible].name.to_s+"'' !"
when 6
a = "Trouve " + $cible.to_s+ " !"
when 7
a = "On recherche : " + $data_enemies[$cible].name + " !"
else
a = ""
end
return a
end
def draw_item_name(item, x, y, enabled = true)
if item != nil
draw_icon(item.icon_index, x, y, enabled)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(x + 24, y,160, WLH, item.name)
end
end
end
################################################
########################################
############################
#################
#######
#######
#################
############################
########################################
################################################
class Scene_Quete < Scene_Base
#--------------------------------------------------------------------------
# * Object Initialization
# menu_index : command cursor's initial position
#--------------------------------------------------------------------------
def initialize(id)
@id = id
end
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
@quete = Window_quette.new((544-384)/2,416/6,@id)
create_command_window unless $quete.include?(@id)
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@quete.dispose
@command_window.dispose unless $quete.include?(@id)
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
update_menu_background
@quete.update
@command_window.update unless $quete.include?(@id)
update_command_selection unless $quete.include?(@id)
update_command_quite if $quete.include?(@id)
end
#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
s1 = "Oui"
s2 = "Non"
@command_window = Window_Command.new(@quete.width, [s1, s2],2)
@command_window.y = (416/6)+ @quete.height
@command_window.x = @quete.x
@command_window.index = 0
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::C)
Sound.play_decision
if @command_window.index == 0
make_quete(@id)
@command_window.dispose
end
$scene = Scene_Map.new
end
end
def update_command_quite
if Input.trigger?(Input::C)
Sound.play_decision
$scene = Scene_Map.new
end
end
end
################################################
########################################
############################
#################
#######
#######
#################
############################
########################################
################################################
class Scene_quete__liste < Scene_Base
#--------------------------------------------------------------------------
# * Object Initialization
# menu_index : command cursor's initial position
#--------------------------------------------------------------------------
def initialize
end
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
@qlib = Window_Qlib.new
@quete = Window_quette.new(@qlib.width , 0)
@quete.visible = false
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@qlib.dispose
@quete.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
update_menu_background
update_command_selection
@qlib.update
end
#
#
#
#
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
end
retour_quete(@qlib.retour_key)
@quete.refresh(@qlib.retour_key)
@quete.visible = true
end
end
################################################
########################################
############################
#################
#######
#######
#################
############################
########################################
################################################
$quete = {}
def make_quete(id , importance = false)
$quete[id] = [$nonq, $tipeq , $cible , $cible2 , $descri , $tarif , $exp , $item , $item2 , importance]
# 0 1 2 3 4 5 6 7 8
end
def retour_quete(id)
$nonq = $quete[id][0]
$tipeq = $quete[id][1]
$cible = $quete[id][2]
$cible2 = $quete[id][3]
$descri = $quete[id][4]
$tarif = $quete[id][5]
$exp = $quete[id][6]
$item = $quete[id][7]
$item2= $quete[id][8]
end
################################################
########################################
############################
#################
#######
#######
#################
############################
########################################
class Window_Qlib < Window_Selectable
attr_reader :commands
def initialize
super(0, 0, 160, 416)
@item_max = $quete.size
refresh
self.index = 0
@indexn = 1
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
a= []
$quete.each_key do |@key_index|
a = a + @key_index.to_a
end
for i in 0...a.size
draw_item(i,a)
end
@tab =a
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
# enabled : enabled flag. When false, draw semi-transparently.
#--------------------------------------------------------------------------
def draw_item(index, tab)
rect = item_rect(index)
rect.x += 4
rect.width -= 8
self.contents.clear_rect(rect)
key_p = tab[index]
self.contents.font.color = normal_color unless $quete[key_p][9]
self.contents.font.color = Color.new(139,0,0) if $quete[key_p][9]
self.contents.draw_text(rect, $quete[key_p][0])
end
def retour_key
a = @tab[self.index]
return a
end
end
################################################
########################################
############################
#################
#######
#######
#################
############################
########################################
class Scene_File < Scene_Base
alias adurna_write write_save_data
alias adurna_read read_save_data
def write_save_data(file)
adurna_write (file)
Marshal.dump($quete, file)
end
def read_save_data(file)
adurna_read (file)
$quete = Marshal.load(file)
end
end
################################################
########################################
############################
#################
#######
- filenMembre
- Nombre de messages : 14
Distinction : aucune
Date d'inscription : 08/07/2010
Re: Systeme de quête avancée et bonus
Mar 20 Juil 2010 - 21:19
c'est super mais je veux savoir comment en mette le chois de plusieurs quête
- Dudu'Staffeux retraité
- Nombre de messages : 2060
Age : 33
Distinction : Apprenti KGB-boy en avenir
[Coco' ]
Hamsterphile de service ^^
[Balby' le Fake]
Grand prof de la MA
[Skillo]
Ce grand programmateur, mon coeur, ma vie ! [Hamu']
Date d'inscription : 22/06/2009
Re: Systeme de quête avancée et bonus
Mar 20 Juil 2010 - 22:01
grifdail a écrit:
Voici un grand script qui permet de faire des quêtes.
Seulement ?!?!?!?!?!?
Euh ouais ...
Mais par contre il gère presque tout.
Je pense que des screens seraient plus explicatifs
- Spoiler:
Vous avez pu remarquer qu'il y a plusieurs types de quêtes :
1 => vaincre tel monstre
2 => ramener un objet
3 => apporter un objet
4 => Tuer x monstre
5 => aller à tel endroit
6=> trouver quelqu'un
7 => avis de recherche
C'est l'une des fonctionnalités du script
Liste des fonctions :
☼ menu de quêtes
☼ fenêtre de quête gère automatiquement
☼scène_quête (screen 1 et 2)
☼mis à jour automatique du statut de la quête avec un seul interrupteur par quêtes
☼possibilité de créer des quêtes sans le scène_quête
☼les quêtes ont des types
...
Rien de plus simple
Créer une quête à accepter :
Dans un appel de script mettez ça :
$nonq est le nom de la quête entre guillemets.
- Code:
$nonq = "maraudeur"
$tipeq = 7
$cible = 3
$cible2 = 0
$tarif = 100000
$exp = 0
$item = 0
$item2 = 0
$descri = "Attention criminel dangereux"
$tipeq est le type de la quête selon cela :$cible est la cible de la quête, cela peut être :
- Spoiler:
1 => vaincre tel monstre
2 => ramener un objet
3 => apporter un objet
4 => Tuer x monstre
5 => aller a tel endroit
6=> trouve quelqu'un
7 => avis de recherche$cible2 est la cible secondaire de la quête, cela peut être :
- Spoiler:
l'id d'un monstre dans les types 1 , 4 et 7.
l'id d'un objet dans les types 2 et 3.
l'id d'une map dans le type 5.
un nom entre guillemets pour le cas 6.$tarif est l'argent gagné après la quête
- Spoiler:
un non entre guillemet pour le cas 3
le nombre de fois ou il faut vaincre un monstre dans le type 4
$exp est l'expérience gagnée après la quête
$item est l'objet n1 gagné après la quête sous forme [a , b] ou a est le type de l'objet (1 objet 2 sort 3 armure 4 arme) et b l'id de l'objet
$item2 est l'objet n2 gagné après la quête sous forme [a , b] ou a est le type de l'objet (1 objet 2 sort 3 armure 4 arme) et b l'id de l'objet
$descri est une description de la quête entre guillemets
puis mettez ceci :
où id est l'id de l'interrupteur correspondant à la quête
- Code:
$scene = Scene_Quete.new(id)
ou bien
si vous ne souhaitez pas le scène quête : la quête sera alors visible uniquement dans la liste
- Code:
make_quete(id)
ou id est l'id de l'interrupteur correspondant à la quête
Pour appeler la liste de quête ecrivez dans un appelle de script
- Code:
$scene = Scene_quete__liste.new
voila c'est pas compliqué^^
- LlednarMembre
- Nombre de messages : 11
Distinction : aucune
Date d'inscription : 09/04/2011
Re: Systeme de quête avancée et bonus
Lun 2 Mai 2011 - 0:02
Script qui ne fonctionne pas desolé en plus j'aurais aimé m'en servir
- grifdailMembre
- Nombre de messages : 51
Distinction : aucune
Date d'inscription : 18/04/2008
Re: Systeme de quête avancée et bonus
Lun 2 Mai 2011 - 13:33
Necro de pres d'un an non?
Sinon desoler pour toi mai j'ai aretter le making donc je vais pas pouvoire t'aider
Si tu y tien vraiment MP moi je verais ce que je peut faire
Sinon desoler pour toi mai j'ai aretter le making donc je vais pas pouvoire t'aider
Si tu y tien vraiment MP moi je verais ce que je peut faire
- LlednarMembre
- Nombre de messages : 11
Distinction : aucune
Date d'inscription : 09/04/2011
Re: Systeme de quête avancée et bonus
Lun 2 Mai 2011 - 17:03
ouais deso pour le necro en fait j'ai une erreur ligne 134
- LlednarMembre
- Nombre de messages : 11
Distinction : aucune
Date d'inscription : 09/04/2011
Re: Systeme de quête avancée et bonus
Jeu 5 Mai 2011 - 18:31
Non je vois ou est MON erreur
- MasoufMembre
- Nombre de messages : 284
Age : 30
Localisation : Rennes
Distinction : aucune
Date d'inscription : 24/12/2008
Re: Systeme de quête avancée et bonus
Jeu 5 Mai 2011 - 21:18
Bonjour tout le monde,
Alors voila le script fonctionne bien avec moi mais je ne sais pas comment faire pour valider la quête (on encore on ne peut pas voir l’avancement de la quête par exemple : je dois tuer 10 monstres j’en tue 1 sa aurai été bien que l’on me dise combien il m’en reste à tuer soit 9). J’aurai aussi aimé que le se script soir aussi compatible avec le Requiem ABS 9 de vlad, pour que lorsque l’on tue un monstres sur la carte il soit compté comme mort dans un combat.
Voila c’est tout.
Alors voila le script fonctionne bien avec moi mais je ne sais pas comment faire pour valider la quête (on encore on ne peut pas voir l’avancement de la quête par exemple : je dois tuer 10 monstres j’en tue 1 sa aurai été bien que l’on me dise combien il m’en reste à tuer soit 9). J’aurai aussi aimé que le se script soir aussi compatible avec le Requiem ABS 9 de vlad, pour que lorsque l’on tue un monstres sur la carte il soit compté comme mort dans un combat.
Voila c’est tout.
- LlednarMembre
- Nombre de messages : 11
Distinction : aucune
Date d'inscription : 09/04/2011
Re: Systeme de quête avancée et bonus
Ven 6 Mai 2011 - 21:22
re testé et approuvé je m'était trompé dans l'ordre des etapes:lol!: mais c normal que la que soit acceptée tout de suite??
- Elisa'Staffeux retraité
- Nombre de messages : 2924
Age : 26
Localisation : Par là-bas !
Distinction : Mon héritière que je chéris
[Coco' ]
Plus que 2 ans avant d'épouser Coco' ! Compte à rebours lancé !
[Auto-distinction]
Adepte du "Je le savais" alors qu'elle le savait pas.
Date d'inscription : 30/05/2009
Re: Systeme de quête avancée et bonus
Sam 7 Mai 2011 - 12:23
Llednar, merci de faire attention à éviter les abréviations comme "c" à la place de "c'est". Les nécroposts sont interdits, pour les problèmes il y a la section entraide. La prochaine fois c'est l'avertissement.
Bonne journée
Bonne journée
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|