Partagez
Aller en bas
avatar
Varkan
Membre

Nombre de messages : 292
Distinction : aucune
Date d'inscription : 27/01/2010

Script Magasin de compétence [Résolu]

le Jeu 29 Juil 2010 - 18:17
Yop yop !!

Je viens ici car j'ai trouvé un problème sur le script suivant que j'utilise :

Spoiler:
#==============================================================================
# Skill Shop for RMVX Ver 3.1
#==============================================================================
#MediaFire Hosting# By Nechigawara Sanzenin
# WARNING!! : This script can use on RPG Maker VX Only!! (XP Not Support)
#==============================================================================
# Buy Skill Option For RMVX
#==============================================================================
#Version Log
#==============================================================================
#2.0 Add Level requirement - Change Hero Select Window
#3.0 Change How to set Price , Add wait Level Up option
#3.0 Fixed Bug, Edit Price Key Word
#==============================================================================
=begin

Comment l'utiliser:

Vous allez ajouter "$ skill_shop = [Id of Skill]"
Pour appel de script pour définir "id" de compétences pour les vendre.
Vous allez ajouter "$ scene = Scene_Skill_Shop.new"
To Call Shop Skill Windows.

Exemple:
skill_shop = $ [1,2,3,6,7]
scène $ = Scene_Skill_Shop.new

Vous pouvez activer l'option / off sous "# Setting".
Vous pouvez définir un texte à utiliser dans le magasin de compétences sous la rubrique «Apprendre # Texte".
Vous pouvez ajouter «[p-Prix-]" pour l'ensemble de compétences des prix à la note en compétences de base de données.
Exemple: Pour l'ensemble des prix à 150

[p150]

Vous pouvez définir des compétences que le combattant chaque personne peut apprendre sous "# Hero données".

Vous aurez la mise ressembler à cela dans Hero de données
[ID d'habileté, d'exigence de niveau pour apprendre]

Exemple: si vous voulez acteur id 1 peuvent apprendre des compétences id 1 à Lv 4
et je peux apprendre des compétences id 2 chez LV 3. Vous aurez la mise ressembler à ceci

1 => [code d'identification de Acteur

[1,4], [2,3],

],

=end
#==============================================================================
#module SKILL_SHOP
#==============================================================================

module SKILL_SHOP
# Setting
Wait_Lv_Up = true # Wait 1 Lv up for use skill from buy
Show_cha = true # Show Charactor Graphic in Select Window

# Learn Text
How_Learn = "À quel héros ?"
Can_Learn = "Peut apprendre"
Can_Learn_Lv = "Il faut le Niv."
Cant_Learn = ""
Learnt = "Appris"
Teach = "Apprendre"
Cancel = "Annuler"
Next_Lv = "Prochain Niv."
Can_use = "%s peut employer maintenant !"

# Price Data For Non Set
PRICE = 200
# Hero Data
SKILL_BUY = {
# Add what skill can hero buy Here
# [ID of skill,Level]

1 => [ #Virginn

[1,1],[2,4],[3,6,],[4,0],

],

2 => [ #Kiara

[1,1],[2,4],[3,6,],[116,0],

],

5 => [ #Éqween

[1,1],[2,4],[3,6,],[4,0],[33,10]
],

7 => [ #Britany

[1,1],[2,4],[3,6,],[4,0],[110,10]

],

# End
}
# Add Price
def self.skill_price(id)
text = $data_skills[id].note
text.scan(/\[p([0-9]+)\]/)
if $1.to_i != 0 then
price = $1.to_i
else
price = PRICE
end
return price
end
# Add Hero id
def self.skill_buy(id)
if SKILL_BUY.include?(id)
return SKILL_BUY[id]
else
return []
end
end
end

#==============================================================================
#class Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
def setup(actor_id)
actor = $data_actors[actor_id]
@actor_id = actor_id
@name = actor.name
@character_name = actor.character_name
@character_index = actor.character_index
@face_name = actor.face_name
@face_index = actor.face_index
@class_id = actor.class_id
@weapon_id = actor.weapon_id
@armor1_id = actor.armor1_id



@armor2_id = actor.armor2_id
@armor3_id = actor.armor3_id
@armor4_id = actor.armor4_id
@level = actor.initial_level
@exp_list = Array.new(101)
make_exp_list
@exp = @exp_list[@level]
@skills = []
@le_skills = []
@le = []
for i in self.class.learnings
learn_skill(i.skill_id) if i.level <= @level
end
clear_extra_values
recover_all
end
#--------------------------------------------------------------------------
def le_skills
result = []
for i in @le_skills
result.push($data_skills[i])
end
return result
end
#--------------------------------------------------------------------------
def learn_le_skill(skill_id)
unless skill_learn?($data_skills[skill_id])
@le_skills.push(skill_id)
@le_skills.sort!
end
end
#--------------------------------------------------------------------------
def forget_skill(skill_id)
@skills.delete(skill_id)
@le_skills.delete(skill_id)
end
#--------------------------------------------------------------------------
def skill_learn?(skill)
if @skills.include?(skill.id)
return true
elsif @le_skills.include?(skill.id)
return true
else
return false
end
end
#--------------------------------------------------------------------------
def le_learn_skill(skill_id)
unless @skills.include?(skill_id)
@skills.push(skill_id)
@skills.sort!
end
end
#--------------------------------------------------------------------------
def skill_can_use?(skill)
return false if @le_skills.include?(skill.id)
return false unless skill_learn?(skill)
return super
end
#--------------------------------------------------------------------------
def learn?(skill)
learn = skill_learn?(skill)
if learn == true
return false
else
return true
end
end
#--------------------------------------------------------------------------
def le_skill?(skill)
return @le_skills.include?(skill.id)
end
#--------------------------------------------------------------------------
def display_level_up(new_skills)
$game_message.new_page
text = sprintf(Vocab::LevelUp, @name, Vocab::level, @level)
$game_message.texts.push(text)
for skill in new_skills
unless @le.include?(skill.id)
text = sprintf(Vocab::ObtainSkill, skill.name)
$game_message.texts.push(text)
end
end
for i in 0...@le.size
id = @le[i]
name = $data_skills[id].name
text = sprintf(SKILL_SHOP::Can_use, name)
$game_message.texts.push(text)
end
@le = []
end
#--------------------------------------------------------------------------
alias inc_level_up level_up
def level_up
inc_level_up
@le = []
for i in 0...@le_skills.size
id = @le_skills[i]
le_learn_skill(id)
@le.push(id)
end
@le_skills = []
end
end

#==============================================================================
#class Window_Skill_ShopBuy
#==============================================================================

class Window_Skill < Window_Selectable
#--------------------------------------------------------------------------
def refresh
@data = []
for skill in @actor.skills
@data.push(skill)
if skill.id == @actor.last_skill_id
self.index = @data.size - 1
end
end
for skill in @actor.le_skills
@data.push(skill)
end
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#--------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
skill = @data[index]
if skill != nil
rect.width -= 4
enabled = @actor.skill_can_use?(skill)
draw_item_name(skill, rect.x, rect.y, enabled)
if @actor.le_skill?(skill)
text = SKILL_SHOP::Next_Lv
else
text = @actor.calc_mp_cost(skill)
end
self.contents.draw_text(rect, text, 2)
end
end
end

#==============================================================================
#class Window_Skill_ShopBuy
#==============================================================================

class Window_Skill_ShopBuy < Window_Selectable
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, 304, 304)
@skill_shop_goods = $skill_shop
refresh
self.index = 0
end
#--------------------------------------------------------------------------
def skill
return @data[self.index]
end
#--------------------------------------------------------------------------
def refresh
@data = []
for i in 0...@skill_shop_goods.size
skill = $data_skills[@skill_shop_goods[i]]
if skill != nil
@data.push(skill)
end
end
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#--------------------------------------------------------------------------
def draw_item(index)
skill = @data[index]
price = SKILL_SHOP.skill_price(skill.id)
enabled = (price <= $game_party.gold)
rect = item_rect(index)
self.contents.clear_rect(rect)
draw_item_name(skill, rect.x, rect.y, enabled)
rect.width -= 4
self.contents.draw_text(rect, price, 2)
end
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(skill == nil ? "" : skill.description)
end
end

#==============================================================================
#class Window_Skill_ShopStatus
#==============================================================================

class Window_Skill_ShopStatus < Window_Selectable
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, 240, 304)
@item = nil
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.members.size
if @item != nil
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 200, WLH, SKILL_SHOP::How_Learn)
for actor in $game_party.members
x = 4
y = WLH * (2 + actor.index * 2)
draw_actor_can_learn(actor, x, y)
end
end
end
#--------------------------------------------------------------------------
def draw_actor_can_learn(actor, x, y)
can = false
lv = false
ac_lv = 0
can_learn = SKILL_SHOP.skill_buy(actor.id)
id = @item.id
for i in 0...can_learn.size
if can_learn[i][0] == id
can = true
if can_learn[i][1] <= actor.level
lv = true
else
lv = false
ac_lv = can_learn[i][1]
end
break
else
can = false
end
end
enabled = (can and lv and actor.learn?(@item))
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
if SKILL_SHOP::Show_cha
name = actor.character_name
index = actor.character_index
size = contents.text_size(actor.name).width
draw_character(name, index, x + 20 + size , y + 30)
end
self.contents.draw_text(x, y, 200, WLH, actor.name)
if can == false
text = SKILL_SHOP::Cant_Learn
elsif can == true and lv == false
ac = ac_lv.to_s
text = SKILL_SHOP::Can_Learn_Lv + " " + ac + "+"
elsif actor.learn?(@item) == false
text = SKILL_SHOP::Learnt
else
text = SKILL_SHOP::Can_Learn
end
self.contents.draw_text(x, y, 200, WLH, text, 2)
end
#--------------------------------------------------------------------------
def item=(item)
if @item != item
@item = item
refresh
end
end
#--------------------------------------------------------------------------
def update_cursor
if @index < 0
self.cursor_rect.empty
elsif @index < @item_max
y = WLH * (2 + @index * 2)
unless SKILL_SHOP::Show_cha
self.cursor_rect.set(0, y , contents.width, WLH)
else
self.cursor_rect.set(0, y - 4, contents.width,34)
end
end
end
end

#==============================================================================
#class Scene_Skill_Shop
#==============================================================================

class Scene_Skill_Shop < Scene_Base
#--------------------------------------------------------------------------
def start
super
create_menu_background
create_command_window
@viewport = Viewport.new(0, 0, 544, 416)
@help_window = Window_Help.new
@gold_window = Window_Gold.new(384, 56)
@dummy_window = Window_Base.new(0, 112, 544, 304)
@buy_window = Window_Skill_ShopBuy.new(0, 112)
@buy_window.active = false
@buy_window.visible = false
@buy_window.help_window = @help_window
@status_window = Window_Skill_ShopStatus.new(304, 112)
@status_window.visible = false
@status_window.active = false
end
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
dispose_command_window
@help_window.dispose
@gold_window.dispose
@dummy_window.dispose
@buy_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
def update
super
update_menu_background
@help_window.update
@command_window.update
@gold_window.update
@dummy_window.update
@buy_window.update
@status_window.update
if @command_window.active
update_command_selection
elsif @buy_window.active
update_buy_selection
elsif @status_window.active
update_target_selection
end
end
#--------------------------------------------------------------------------
def create_command_window
s1 = SKILL_SHOP::Teach
s2 = SKILL_SHOP::Cancel
@command_window = Window_Command.new(384, [s1, s2], 2)
@command_window.y = 56
end
#--------------------------------------------------------------------------
def dispose_command_window
@command_window.dispose
end
#--------------------------------------------------------------------------
def update_command_selection
@help_window.set_text("")
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
case @command_window.index
when 0
Sound.play_decision
@command_window.active = false
@dummy_window.visible = false
@buy_window.active = true
@buy_window.visible = true
@buy_window.refresh
@status_window.visible = true
when 1
Sound.play_decision
$scene = Scene_Map.new
end
end
end
#--------------------------------------------------------------------------
def update_buy_selection
@status_window.item = @buy_window.skill
if Input.trigger?(Input::B)
Sound.play_cancel
@command_window.active = true
@dummy_window.visible = true
@buy_window.active = false
@buy_window.visible = false
@status_window.visible = false
@status_window.item = nil
return
end
if Input.trigger?(Input::C)
@item = @buy_window.skill
@price = SKILL_SHOP.skill_price(@item.id)
enabled = (@price <= $game_party.gold)
if not enabled
Sound.play_buzzer
else
Sound.play_decision
show_target_window
end
end
end
#--------------------------------------------------------------------------
def update_target_selection
if Input.trigger?(Input::B)
Sound.play_cancel
hide_target_window
elsif Input.trigger?(Input::C)
@actor = $game_party.members[@status_window.index]
can = false
lv = false
can_learn = SKILL_SHOP.skill_buy(@actor.id)
id = @item.id
for i in 0...can_learn.size
if can_learn[i][0] == id
can = true
if can_learn[i][1] <= @actor.level
lv = true
else
lv = false
end
break
else
can = false
end
end
enabled = (can and lv and @actor.learn?(@item))
if not enabled
Sound.play_buzzer
else
learn_target(@item.id)
end
end
end
#--------------------------------------------------------------------------
def learn_target(skill_id)
Sound.play_shop
unless SKILL_SHOP::Wait_Lv_Up
@actor.learn_skill(skill_id)
else
@actor.learn_le_skill(skill_id)
end
$game_party.lose_gold(@price)
@buy_window.refresh
@gold_window.refresh
@status_window.refresh
hide_target_window
end
#--------------------------------------------------------------------------
def show_target_window
@buy_window.active = false
@status_window.active = true
@status_window.index = 0
end
#--------------------------------------------------------------------------
def hide_target_window
@buy_window.active = true
@status_window.active = false
@status_window.index =- 1
end
end

Voici le bug que sa me fait une fois la compétence achetée :



La compétence peut être utilisé en combat mais bon cette affichage n'est pas très propre on va dire...

Merci d'avance pour votre aide.


Dernière édition par Varkan le Ven 10 Sep 2010 - 15:13, édité 1 fois
avatar
Black'
Membre

Nombre de messages : 352
Localisation : Far, far away
Distinction : aucune
Date d'inscription : 19/04/2010

Re: Script Magasin de compétence [Résolu]

le Ven 30 Juil 2010 - 16:30
Je connaît pas de solution en script, mais peut-être que le problème vient de la taille du nom de ta compétence, [mode_Yoda] après mon initiation au RGSS, viendrait te voir je ferait (DONG) [/Mode_Yoda]


avatar
Varkan
Membre

Nombre de messages : 292
Distinction : aucune
Date d'inscription : 27/01/2010

Re: Script Magasin de compétence [Résolu]

le Ven 30 Juil 2010 - 16:33
Re =D

Non même avec les compétences qui ont un nom plus court ^^
avatar
Balbereith
Staffeux retraité

Nombre de messages : 4129
Age : 25
Localisation : dans l'ombre...
Distinction : Péripatéticienne à temps perdu
Helly n°666 [Coco' ;D]
mon ptit balbounet p'tit jardinier en herbe(les râteaux ça le connait) [tonton Adurna]
Cultivateur professionnel de la commu' (il a de bons outils en de nombreux exemplaires ) [Coco' Smile]
Date d'inscription : 13/05/2009

Re: Script Magasin de compétence [Résolu]

le Ven 30 Juil 2010 - 17:48
Code:
Next_Lv = "Prochain Niv."

Change c'est çà qui pose problème ton indiquation de niveau et trop grand, met une truc du genre :
Code:
Next_LV = "Niv.+"
Le script n'a aucun problème c'est juste que le texte est trop long ^^
avatar
Varkan
Membre

Nombre de messages : 292
Distinction : aucune
Date d'inscription : 27/01/2010

Re: Script Magasin de compétence [Résolu]

le Ven 30 Juil 2010 - 17:58
En fait le soucis c'est que ça ne devrait pas écrire "proch. niv" car la compétence je les mis pour le lvl 4 et là je suis lvl 5.


Code:
1 => [ #Virginn

[1,1],[2,4],[3,6,],[4,0],

le premier chiffre c'est l'ID du skill et le 2ème, le niveau ou je peux l'apprendre.

Et là c'est 2,4 ce qui veut dire le skill 2 (celui qui est en image) et le niv. 4
avatar
Blockade
Membre

Nombre de messages : 194
Age : 26
Distinction : aucune
Date d'inscription : 06/09/2008

Re: Script Magasin de compétence [Résolu]

le Ven 30 Juil 2010 - 19:10
Erreur dans ton bout de code regarde t'a une virgule en trop :
Code:
1 => [ #Virginn

[1,1],[2,4],[3,6,<=],[4,0],

Essaye avec ca p'tet :
Code:
1 => [ #Virginn

[1,1],[2,4],[3,6],[4,0],
avatar
Varkan
Membre

Nombre de messages : 292
Distinction : aucune
Date d'inscription : 27/01/2010

Re: Script Magasin de compétence [Résolu]

le Mar 3 Aoû 2010 - 17:50
Re blockade ^^

Alors je viens d'essayer et ce n'est malheureusement pas ça.
avatar
Balbereith
Staffeux retraité

Nombre de messages : 4129
Age : 25
Localisation : dans l'ombre...
Distinction : Péripatéticienne à temps perdu
Helly n°666 [Coco' ;D]
mon ptit balbounet p'tit jardinier en herbe(les râteaux ça le connait) [tonton Adurna]
Cultivateur professionnel de la commu' (il a de bons outils en de nombreux exemplaires ) [Coco' Smile]
Date d'inscription : 13/05/2009

Re: Script Magasin de compétence [Résolu]

le Mer 18 Aoû 2010 - 12:58
Résolu ou non ?
avatar
Varkan
Membre

Nombre de messages : 292
Distinction : aucune
Date d'inscription : 27/01/2010

Re: Script Magasin de compétence [Résolu]

le Mar 31 Aoû 2010 - 7:11
Non malheureusement

Edit : Une personne aurait la solution ?
avatar
Arkhanos
Membre

Nombre de messages : 66
Age : 24
Localisation : Derrière toi!
Distinction : aucune
Date d'inscription : 25/08/2010

Re: Script Magasin de compétence [Résolu]

le Mar 31 Aoû 2010 - 10:59
Et ceci?
Spoiler:
module SKILL_SHOP
# Setting
Wait_Lv_Up = true # Wait 1 Lv up for use skill from buy
Show_cha = true # Show Charactor Graphic in Select Window
Mets Wait_Lv_Up = false pour voir, il semble que cette partie du script te demande de monter un niveau pour utiliser un skill que tu viens d'acheter
avatar
Varkan
Membre

Nombre de messages : 292
Distinction : aucune
Date d'inscription : 27/01/2010

Re: Script Magasin de compétence [Résolu]

le Ven 10 Sep 2010 - 15:12
Merci c'est réglé, en fait je cherchais compliqué.... bref merci à vous tous.
avatar
Dudu'
Staffeux retraité

Nombre de messages : 2060
Age : 27
Distinction : Apprenti KGB-boy en avenir
[Coco' Smile]
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: Script Magasin de compétence [Résolu]

le Ven 10 Sep 2010 - 20:17
résolu donc je déplace
Contenu sponsorisé

Re: Script Magasin de compétence [Résolu]

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum