- Kira'hMembre
- Nombre de messages : 588
Age : 29
Localisation : Devant mon écran... Si pas, dans mon jeu^^
Distinction : aucune
Date d'inscription : 25/02/2012
[Résolu]Fusion de script RingMenu + Quêtes
Sam 1 Juin 2013 - 17:56
Salut tout le monde =)
C'est un petit problème et là je m'adresse à tout ceux qui s'y connaissent bien en RGSS2
J'utilise le script de Syvkal sauf qu'il a été un peu retoucher et je compte y insérer un menu de quête mais voilà:
-Lorsque j'installe seulement le script de Syvkal(Ring menu) voilà ça le fait assez bien
Voici le script de Syvkal que j'utilise
Merci d'avance à qui voudra bien m'aider
C'est un petit problème et là je m'adresse à tout ceux qui s'y connaissent bien en RGSS2
J'utilise le script de Syvkal sauf qu'il a été un peu retoucher et je compte y insérer un menu de quête mais voilà:
-Lorsque j'installe seulement le script de Syvkal(Ring menu) voilà ça le fait assez bien
- Spoiler:
- Spoiler:
Voici le script de Syvkal que j'utilise
- Code:
#==============================================================================
# ** Ring Menu
#-------------------------------------------------------------------------------
# by Syvkal
# Version 1.1
# 06-23-08
#==============================================================================
#===================================================#
# ** C O N F I G U R A T I O N S Y S T E M ** #
#===================================================#
# Amount of frames for Startup Animation
STARTUP_FRAMES = 20
# Amount of frames for Movement Animation
MOVING_FRAMES = 15
# Radius of the Menu Ring
RING_R = 75
# Disabled icon to display when disabled
ICON_DISABLE= Cache::picture('Icon_Disable')
#-------------D-O---N-O-T---T-O-U-C-H---------------#
class Scene_Title < Scene_Base
alias game_objects_original create_game_objects
def create_game_objects
game_objects_original
#-------------D-O---N-O-T---T-O-U-C-H---------------#
# As this script allows you to make a custom Menu I thought to make it easier
# I would make it possible to add extra Menu Options from here
# All you need to do is specify the Text to display, the icon and the command
# The command must be in a STRING
# Simply add to the array below :
$game_ring_menu = [
# Menu Option 0 eg. Item
[Vocab::item, Cache::picture('Icon_Items'), "$scene = Scene_Item.new"],
# Menu Option 1 eg. Status
[Vocab::status, Cache::picture('Icon_Status'), "$scene = Scene_Status.new"],
#---------------------------------------------------#
# ** I N S E R T M O R E H E R E ** #
#---------------------------------------------------#
# Preferably Insert your custom Menu Options Here
# Otherwise the existing Menu Options will return to wrong point on the Menu
# Menu Option 2 eg. Quest Log
["Quest", Cache::picture('Icon_journal'), "$scene = Scene_Quest.new"],
# Menu Option 3 eg. record log
["Records", Cache::picture('Icon_record'), "$scene = Custom_List.new(0, 0, false)"],
# Menu Option 4 eg. Bestiary
["Party", Cache::picture('Icon_party'), "$scene = Scene_PartyChanger.new"],
# Menu Option 5 eg. Save
["Save Game", Cache::picture('Icon_Save'), "$scene = Scene_File.new(true, false, false)"],
# Menu Option 6 eg. Load
["Load Game", Cache::picture('Icon_Load'), "$scene = Scene_File.new(false, false, false)"],
# Menu Option 7 eg. End Game
[Vocab::game_end, Cache::picture('Icon_End'), "$scene = Scene_End.new"],
] # <--- Do no Delete This
#===================================================#
# ** E N D C O N F I G U R A T I O N ** #
#===================================================#
end
end
#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
# Edited to add Ring Menu
#==============================================================================
class Scene_Menu < Scene_Base
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias initialize_original initialize
alias start_selection_original start_actor_selection
alias end_selection_original end_actor_selection
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(menu_index = 0, move = true)
@move = move
initialize_original(menu_index)
end
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
create_command_window
@gold_window = Window_Gold.new(0, 360)
@location_window = Window_location.new(0, 0)
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@command_window.dispose
@gold_window.dispose
@status_window.dispose if @status_window
@location_window.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
update_menu_background
@command_window.update
@gold_window.update
@status_window.update if @status_window
@location_window.update
if @command_window.active
update_command_selection
elsif @status_window.active
update_actor_selection
end
end
#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
commands = []
for i in 0...$game_ring_menu.size
commands.push($game_ring_menu[i][0])
end
icons = []
for i in 0...$game_ring_menu.size
icons.push($game_ring_menu[i][1])
end
@command_window = Window_RingMenu.new(232, 164, commands, icons, @move, @menu_index)
if $game_party.members.size == 0
@command_window.disable_item(0)
@command_window.disable_item(1)
@command_window.disable_item(2)
@command_window.disable_item(3)
end
if $game_system.save_disabled
@command_window.disable_item(5)
end
if $game_switches[200]
@command_window.disable_item(0)
end
if $game_switches[201]
@command_window.disable_item(1)
end
if $game_switches[202]
@command_window.disable_item(2)
end
if $game_switches[203]
@command_window.disable_item(3)
end
if $game_switches[204]
@command_window.disable_item(4)
end
if $game_switches[205]
@command_window.disable_item(5)
end
if $game_switches[206]
@command_window.disable_item(6)
end
if $game_switches[207]
@command_window.disable_item(7)
end
if $game_switches[208]
@command_window.disable_item(8)
end
end
#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_status_window
names = []
chars = []
for i in 0...$game_party.members.size
names[i] = $game_party.members[i].name
chars[i] = $game_party.members[i]
end
@status_window = Window_RingMenu.new(255, 200, names, chars, true, $game_party.last_actor_index, true)
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 5
Sound.play_buzzer
return
elsif $game_switches[200] and @command_window.index == 0
Sound.play_buzzer
return
elsif $game_switches[201] and @command_window.index == 1
Sound.play_buzzer
return
elsif $game_switches[202] and @command_window.index == 2
Sound.play_buzzer
return
elsif $game_switches[203] and @command_window.index == 3
Sound.play_buzzer
return
elsif $game_switches[204] and @command_window.index == 4
Sound.play_buzzer
return
elsif $game_switches[205] and @command_window.index == 5
Sound.play_buzzer
return
elsif $game_switches[206] and @command_window.index == 6
Sound.play_buzzer
return
elsif $game_switches[207] and @command_window.index == 7
Sound.play_buzzer
return
end
Sound.play_decision
eval($game_ring_menu[@command_window.index][2])
end
end
#--------------------------------------------------------------------------
# * Start Actor Selection
#--------------------------------------------------------------------------
def start_actor_selection
@command_window.active = false
@command_window.visible = false
create_status_window
if $game_party.last_actor_index < @status_window.item_max
@status_window.index = $game_party.last_actor_index
else
@status_window.index = 0
end
end
#--------------------------------------------------------------------------
# * End Actor Selection
#--------------------------------------------------------------------------
def end_actor_selection
@command_window.active = true
@command_window.visible = true
@status_window.dispose if @status_window
@status_window = nil
end
#--------------------------------------------------------------------------
# * Update Actor Selection
#--------------------------------------------------------------------------
def update_actor_selection
if Input.trigger?(Input::B)
Sound.play_cancel
end_actor_selection
elsif Input.trigger?(Input::C)
$game_party.last_actor_index = @status_window.index
Sound.play_decision
eval($game_ring_menu[@command_window.index][3])
end
end
end
#==============================================================================
# ** Scene_File
#------------------------------------------------------------------------------
# Edited to return to the menu properly when loading
#==============================================================================
class Scene_File
alias return_scene_original return_scene
def return_scene
if @from_title
$scene = Scene_Title.new
elsif @from_event
$scene = Scene_Map.new
else
if @saving
$scene = Scene_Menu.new($game_ring_menu.size - 3)
else
$scene = Scene_Menu.new($game_ring_menu.size - 2)
end
end
end
end
#==============================================================================
# ** Scene_End
#------------------------------------------------------------------------------
# Edited to return to the menu properly due to loading being added
#==============================================================================
class Scene_End
alias return_scene_original return_scene
def return_scene
$scene = Scene_Menu.new($game_ring_menu.size - 1)
end
end
#==============================================================================
# ** Window_Location
#------------------------------------------------------------------------------
# This class shows the current map name.
#==============================================================================
class Window_location < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, 160, (WLH*2) + 32)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
$maps = load_data("Data/MapInfos.rvdata")
@map_id = $game_map.map_id
@currmap = $maps[@map_id].name
self.contents.font.color = system_color
self.contents.draw_text(0, -4, 128, 32, "Location :")
self.contents.font.color = normal_color
self.contents.draw_text(0, -4+WLH, 128, 32, @currmap, 1)
end
end
#==============================================================================
# ** Window_RingMenu
#------------------------------------------------------------------------------
# This Window creates a Ring Menu system
#==============================================================================
class Window_RingMenu < Window_Base
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :index
attr_reader :item_max
#--------------------------------------------------------------------------
# * Refresh Setup
#--------------------------------------------------------------------------
START = 1
WAIT = 2
MOVER = 3
MOVEL = 4
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(center_x, center_y, commands, items, move = true, index = 0, character = false)
super(0, 0, 544, 416)
self.contents = Bitmap.new(width-32, height-32)
self.opacity = 0
@move = move
@char = character
@startup = STARTUP_FRAMES
@commands = commands
@item_max = commands.size
@index = index
@items = items
@disabled = []
for i in 0...commands.size-1
@disabled[i] = false
end
@cx = center_x
@cy = center_y
start_setup
refresh
end
#--------------------------------------------------------------------------
# * Start Setup
#--------------------------------------------------------------------------
def start_setup
@mode = START
@steps = @startup
end
#--------------------------------------------------------------------------
# * Disable index
# index : item number
#--------------------------------------------------------------------------
def disable_item(index)
@disabled[index] = true
end
#--------------------------------------------------------------------------
# * Determines if is moving
#--------------------------------------------------------------------------
def animation?
return @mode != WAIT
end
#--------------------------------------------------------------------------
# * Determine if cursor is moveable
#--------------------------------------------------------------------------
def cursor_movable?
return false if (not visible or not active)
return false if (@opening or @closing)
return false if animation?
return true
end
#--------------------------------------------------------------------------
# * Move cursor right
#--------------------------------------------------------------------------
def cursor_right
@index -= 1
@index = @items.size - 1 if @index < 0
@mode = MOVER
@steps = MOVING_FRAMES
end
#--------------------------------------------------------------------------
# * Move cursor left
#--------------------------------------------------------------------------
def cursor_left
@index += 1
@index = 0 if @index >= @items.size
@mode = MOVEL
@steps = MOVING_FRAMES
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
if self.active
if cursor_movable?
last_index = @index
if Input.repeat?(Input::DOWN) or Input.repeat?(Input::RIGHT)
cursor_right
end
if Input.repeat?(Input::UP) or Input.repeat?(Input::LEFT)
cursor_left
end
if @index != last_index
Sound.play_cursor
end
end
refresh
end
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
case @mode
when START
refresh_start
when WAIT
refresh_wait
when MOVER
refresh_move(1)
when MOVEL
refresh_move(0)
end
rect = Rect.new(18, 196, self.contents.width-32, 32)
self.contents.draw_text(rect, @commands[@index], 1)
end
#--------------------------------------------------------------------------
# * Refresh Start Period
#--------------------------------------------------------------------------
def refresh_start
d1 = 2.0 * Math::PI / @item_max
d2 = 1.0 * Math::PI / @startup
for i in 0...@item_max
j = i - @index
if @move
r = RING_R - 1.0 * RING_R * @steps / @startup
d = d1 * j + d2 * @steps
else
r = RING_R
d = d1 * j
end
x = @cx + ( r * Math.sin( d ) ).to_i
y = @cy - ( r * Math.cos( d ) ).to_i
draw_item(x, y, i)
end
@steps -= 1
if @steps < 1
@mode = WAIT
end
end
#--------------------------------------------------------------------------
# * Refresh Wait Period
#--------------------------------------------------------------------------
def refresh_wait
d = 2.0 * Math::PI / @item_max
for i in 0...@item_max
j = i - @index
x = @cx + ( RING_R * Math.sin( d * j ) ).to_i
y = @cy - ( RING_R * Math.cos( d * j ) ).to_i
draw_item(x, y, i)
end
end
#--------------------------------------------------------------------------
# * Refresh Movement Period
#--------------------------------------------------------------------------
def refresh_move( mode )
d1 = 2.0 * Math::PI / @item_max
d2 = d1 / MOVING_FRAMES
d2 *= -1 if mode != 0
for i in 0...@item_max
j = i - @index
d = d1 * j + d2 * @steps
x = @cx + ( RING_R * Math.sin( d ) ).to_i
y = @cy - ( RING_R * Math.cos( d ) ).to_i
draw_item(x, y, i)
end
@steps -= 1
if @steps < 1
@mode = WAIT
end
end
#--------------------------------------------------------------------------
# * Draw Item
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# index : item number
#--------------------------------------------------------------------------
def draw_item(x, y, index)
if @char
if @index == index
draw_character(@items[index].character_name, @items[index].character_index , x, y)
if @mode == WAIT
draw_actor_hp_ring(@items[index], @cx, @cy-16, 50, 6, 84, 270, true)
draw_actor_mp_ring(@items[index], @cx, @cy-16, 50, 6, 84, 180, false)
draw_actor_exp_ring(@items[index], @cx, @cy-16, 50, 6, 155, 12, false)
end
else
draw_character(@items[index].character_name, @items[index].character_index , x, y, false)
end
else
rect = Rect.new(0, 0, @items[index].width, @items[index].height)
if @index == index
self.contents.blt( x, y, @items[index], rect )
if @disabled[@index]
self.contents.blt( x, y, ICON_DISABLE, rect )
end
else
self.contents.blt( x, y, @items[index], rect, 128 )
end
end
end
end
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
# Edited to allow disabled character icons
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# * Draw Character Graphic
#--------------------------------------------------------------------------
def draw_character(character_name, character_index, x, y, enabled = true)
return if character_name == nil
bitmap = Cache.character(character_name)
sign = character_name[/^[\!\$]./]
if sign != nil and sign.include?('$')
cw = bitmap.width / 3
ch = bitmap.height / 4
else
cw = bitmap.width / 12
ch = bitmap.height / 8
end
n = character_index
src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect, enabled ? 255 : 128)
end
end
- Code:
## All this does is make the quest menu be accessible from the menu, you ##
## have to use this ##
#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
# This class performs the menu screen processing.
#==============================================================================
class Scene_Menu < Scene_Base
#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = QUEST_CONFIG::MENUNAME
s6 = Vocab::save
s7 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
@command_window.index = @menu_index
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(5, false) # Disable save
end
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 5
Sound.play_buzzer
return
end
Sound.play_decision
case @command_window.index
when 0 # Item
$scene = Scene_Item.new
when 1,2,3 # Skill, equipment, status
start_actor_selection
when 4 # Quests
$scene = Scene_Quest.new
when 5 # Save
$scene = Scene_File.new(true, false, false)
when 6 # End Game
$scene = Scene_End.new
end
end
end
end
Merci d'avance à qui voudra bien m'aider
- Kira'hMembre
- Nombre de messages : 588
Age : 29
Localisation : Devant mon écran... Si pas, dans mon jeu^^
Distinction : aucune
Date d'inscription : 25/02/2012
Re: [Résolu]Fusion de script RingMenu + Quêtes
Sam 1 Juin 2013 - 19:06
Désoler du double-post mais je devais vous annoncez que je viens de RÉGLER mon problème
Héhé comme quoi faut tout donner dans un problème!!
Bon allez je tape ce topic en Résolus
Héhé comme quoi faut tout donner dans un problème!!
Bon allez je tape ce topic en Résolus
- KorndorStaffeux retraité
- Nombre de messages : 4959
Age : 111
Localisation : Erem Vehyx
Distinction : Champion de boxe et au lit ! :O [Wax]
Être Mythique [Mister]
Papi Korndor qui a l'ostéoporose [Skillo]
Soldat Ikéa [Coco']
Un bonhomme, un vrai ! [Neresis]
Vieillard acariâtre [Didier Gustin]
Date d'inscription : 16/12/2007
Re: [Résolu]Fusion de script RingMenu + Quêtes
Sam 1 Juin 2013 - 19:08
Merci, mais tu peux nous partager ta solution au cas où d'autres recherchent ce problème ?
J'ai édité le titre de ton topic pour qu'il soit plus éloquent
J'ai édité le titre de ton topic pour qu'il soit plus éloquent
- Kira'hMembre
- Nombre de messages : 588
Age : 29
Localisation : Devant mon écran... Si pas, dans mon jeu^^
Distinction : aucune
Date d'inscription : 25/02/2012
Re: [Résolu]Fusion de script RingMenu + Quêtes
Sam 1 Juin 2013 - 19:22
C'est ultra simple mais il faut savoir de base que le script de Ring menu me provient d'un projet qui a été fait pour
être ouvert et renferme une tonne de script bien utile dont celui-ci. L'auteur a fait en sorte de préparer le
script Ring menu de sorte à ce que chacun puissent le modifier à sa guise
Et donc, il faut placer cette ligne
de cette ligne "la 55" du script Ring menu.
PS: Il faut savoir que je n'ai poster ici qu'une partie du script de quête, et il est nécessaire d'avoir l'autre
pour qu'il fonctionne. Je pourrais bien poster le script entièrement mais je pense, nan je suis même sur que ce
script à déjà été proposer =)
être ouvert et renferme une tonne de script bien utile dont celui-ci. L'auteur a fait en sorte de préparer le
script Ring menu de sorte à ce que chacun puissent le modifier à sa guise
Et donc, il faut placer cette ligne
- Code:
$scene = Scene_Quest.new
de cette ligne "la 55" du script Ring menu.
- Code:
["Quest", Cache::picture('Icon_journal'), "$scene = Scene_Quest.new"],
PS: Il faut savoir que je n'ai poster ici qu'une partie du script de quête, et il est nécessaire d'avoir l'autre
pour qu'il fonctionne. Je pourrais bien poster le script entièrement mais je pense, nan je suis même sur que ce
script à déjà été proposer =)
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|