Vagabond Lv.5
Age : 41 Inscrit le : 25/12/2009 Messages : 89
| Sujet: [RESOLU] Problème sur un event Lun 28 Déc 2009 - 22:22 | |
| Bonsoir tout le monde ^^ Eh oui, je suis pas super doué, vous avez pas fini de lire mes problèmes, désolé T__T Problème dans : Evènement commun en rapport avec un skill Description : Suivant le tuto pour le skill de vol d'argent sur les ennemis, j'ai essayé de créer un skill de vol d'objets...ça marche nickel, sauf que...ça marche tout le temps (genre les Slime ils ont 7658609798 potions sur eux -__-) ! J'aimerais savoir si y a un moyen (et si vous le connaissez, et si vous voulez bien me le donner ) pour que, une fois l'objet volé, le vol ne fonctionne plus sur le même ennemi (comme dans n'importe quel FF qui a un skill de vol quoi). Arigato gozaimasu d'avance T__T
Dernière édition par Mobius le Mar 29 Déc 2009 - 16:58, édité 1 fois |
|
Maître des Duels
Age : 32 Inscrit le : 29/07/2009 Messages : 7841
| Sujet: Re: [RESOLU] Problème sur un event Lun 28 Déc 2009 - 22:41 | |
| Hum, c'est simple. Tu fais en sorte que ton attaque inflige le statut volé. Statut que tu vas aller créer dans la BDD. Et dans ton event pour voler, tu mets Condition : Si ennemi est sous l'effet du statut Volé Afficher un message : Ennemi déjà volé. Sinon [ là tu mets ton évent de vol ] Si ca ne marche pas / tu ne comprend pas, je t'invite a poster le screen de ton évent afin que je puisse mieux comprendre comment t'as fait ^^ PS : Tant que les demandes sont correctements formulées et pas sur des sujets bidons ( genre comment on fait un combat ? ) ça ne me dérange pas de répondre ^^ Raito-san : +2 en aide à la vie du forum |
|
Vagabond Lv.5
Age : 41 Inscrit le : 25/12/2009 Messages : 89
| Sujet: Re: [RESOLU] Problème sur un event Lun 28 Déc 2009 - 23:06 | |
| Ca marche pas T__T Le pire, c'est que je sais pourquoi, mais j'ai aucune idée de comment résoudre le problème... En fait, en causant le statut volé avec le skill, et en mettant la condition "Si ennemi est sous l'état volé alors rien à voler", ça peut a priori pas marcher : le skill inflige le statut volé, et donc la condition est remplie...donc le vol n'a pas lieu T__T Voilà quand même le screen, des fois que j'me sois planté : |
|
Vagabond Lv.5
Age : 31 Inscrit le : 04/12/2008 Messages : 94
| Sujet: Re: [RESOLU] Problème sur un event Lun 28 Déc 2009 - 23:59 | |
| Essaie d'utiliser une variable du genre : Lorsque ton héros utilise la compétence vol, la variable "Vol" augmente de 1. Puis tu mets une condition de telle sorte que ton event donne ça : > Modifier une variable : "Vol objet" aléatoire entre 0 et 5> Condition : Si la variable "Vol" est égale à 2mm> alorsmm> Message : "Rien à voler" mm> sinonmm> Condition : Si la variable "Vol objet" = 0 mmmm> alorsmmmm> Objet "Potion" +1mmmm> Variable "Vol" +1 mmmm> sinonmmmm> Vol raté Normalement tu peux voler jusqu'à 2 potions, alors si tu veux mettre un certain nombre de potion qui puisse être volée, il faudra modifier la deuxième condition. Faudra aussi mettre un event sur chaque map qui rende la variable "Vol" égale à 0. Raito-san : +2 en aide à la vie du forum aussi |
|
Vagabond Lv.5
Age : 41 Inscrit le : 25/12/2009 Messages : 89
| Sujet: Re: [RESOLU] Problème sur un event Mar 29 Déc 2009 - 10:25 | |
| Je vais laisser tomber je crois, y a rien qui marche -__- Ca me soule déjà, alors que j'ai à peine commencé mon projet...
Merci pour votre aide, en tous cas ^^' |
|
† Fondateur du forum †
Age : 31 Inscrit le : 09/02/2008 Messages : 1974
| Sujet: Re: [RESOLU] Problème sur un event Mar 29 Déc 2009 - 10:26 | |
| Il ne faut pas renoncer^^ |
|
Mage Lv.11
Age : 27 Inscrit le : 02/03/2009 Messages : 513
| Sujet: Re: [RESOLU] Problème sur un event Mar 29 Déc 2009 - 15:50 | |
| Il y a un script de KGC sur ça : Il est sur le forum mais flemme de le chercher : - Spoiler:
- Code:
-
=begin on les vole grace a une compétence dans laquelle en commentaire tu mets
Code: <steal>
ensuite sur les monstres tu mets
Code: <steal X:ID Probability %>
Avec X = type de vol. I = Objets, W = Arme, A = Armure, and G = Or
Avec ID = l'ID de l'objet, arme ou armure ou le montant en or
et Probability % = les chance de voler
Code: <steal W:2 50%>
50% de chance de choper l'arme 2 Code: <steal G:100 67%>
67% de chance de choper 100 d'or =end
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ #_/ ◆ Steal Skill - KGC_Steal ◆ VX ◆ #_/ ◇ Last Update: 09/13/2008 #_/ ◆ Written by TOMY #_/ ◆ Translation by Mr. Anonymous #_/ ◆ Extended updates by Touchfuzzy and RFTD #_/ ◆ KGC Site: #_/ ◆ http://ytomy.sakura.ne.jp/ #_/ ◆ Translator's Blog: #_/ ◆ http://mraprojects.wordpress.com #_/---------------------------------------------------------------------------- #_/ This script allows you to assign skills that "steal" items, weapons, armor #_/ and money. #_/============================================================================ #_/ ◆ Instructions For Usage ◆ #_/ #_/ Setup is simple. To assign a skill as a Steal skill, add the tag "<steal>" #_/ (without quotations) into the "Note" box on the skill you choose in the #_/ skills database. Next, to set up enemies you can steal from, in the enemies #_/ database, you enter <steal X:ID Probability %> #_/ #_/ Where X = Steal type. I = Items, W = Weapons, A = Armor, and G = Gold #_/ #_/ Where ID = The specified item, weapon, or armor's ID #, in the database #_/ OR the amount of gold that can be stolen. #_/ #_/ Where Probability % = The chance of the item being stolen. #_/ #_/ Example: You have a bandit (enemy) who has a Long Sword and 100 gold you'd #_/ like to be able to steal from him, at a 50% chance. Tag him with: #_/ <steal W:2 50%> #_/ <steal G:100 50%> #_/ #_/ New! Equipment that effects steal probability #_/ You may define equipment that increases or decreases the odds of the #_/ steal skill's success. To take advantage of this feature, tag the equip: #_/ <steal_prob_plus Modifier Rate %> #_/ Where Modifier = Addition( + ) or Subtraction( - ) #_/ Where Rate = the amount of increase/decrease in probability. #_/ #_/ Example: You'd like an accessory you created called "Theif's Ring" to #_/ increase an actor's stealing probability by 15%. You'd tag that ring: #_/ <steal_prob_plus + 15%> #_/============================================================================ #_/ Install: Insert below KGC_EnemyGuide, and PG Tankentai Sideview Battle #_/ System, if applicable. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#==============================================================================# # ★ Customization ★ # #==============================================================================#
module KGC module Steal # ◆ Display Messages ◆ # Target skill used on has nothing to steal. # (Where %s = target) # %s : has nothing to steal! VOCAB_STEAL_NO_ITEM = "%s n'a rien à voler " # ◆ Steal skill failed. VOCAB_STEAL_FAILURE = "Le vol a echouer !" # ◆ When stealing an item. # First %s : Target name # Second %s : Item Name VOCAB_STEAL_ITEM = "%s s'est fait voler %s !" # ◆ When stealing money/gold. # First %s : Target name # Second %s : Amount stolen # Third %s : Gold unit name. (Ex "GP", or"$" VOCAB_STEAL_GOLD = "%s s'est fait voler %s%s !" # ◆ Agility Based Steal ◆ # Implemented on 3/14/08 by Touchfuzzy. # If this is true then the skill chance is figured as Steal% * Tagi * Eagi. # If this toggle is false, then the default percentage system is used. # Steal% = Steal Percentage used in Enemy Notes tag. # Cagi = Thief's (Actor using the skill) Agility # Eagi = Enemy's Agility AGILITY_BASED_STEAL = true # ◆ RPG Tankentai Sideview Battle System Steal Messages ◆ # Implemented on 8/27/08 by RFTD. # If you're using RPG Tankentai Sideview Battle System, set this toggle to # true in order to display the above defined messages. # If don't use the RPG Tankentai Sideview Battle System or you'd rather the # "steal" messages to be removed, set this to false. USING_SIDEVIEW = true end end
#=============================================================================# # ★ End Customization ★ # #=============================================================================#
#=================================================# # IMPORT # #=================================================#
$imported = {} if $imported == nil $imported["Steal"] = true
#=================================================#
#============================================================================== # □ KGC::Steal::Regexp #============================================================================== # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * # # Note Field Tag Strings # # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * # # Whatever word(s) are after the separator ( | ) in the following lines are # what are used to determine what is searched for in the "Note" section of a # skill or enemy.
module KGC::Steal module Regexp module BaseItem # Steal Probability Increase tag string STEAL_PROB_PLUS = /<(?:STEAL_PROB|steal_prob_plus)\s*([\+\-]\d+)[%%]?>/i end
# Base Skill Module module Skill # Steal tag string STEAL = /<(?:STEAL|steal)>/i end
# Enemy Module module Enemy # Object to Steal tag string. STEAL_OBJECT = /<(?:STEAL|steal)\s*([IWAG]):(\d+)\s+(\d+)([%%])?>/i end end end
#=================================================
#============================================================================== # ■ Vocab #==============================================================================
module Vocab # Set text defined in the customization area to the vocab module. StealItem = KGC::Steal::VOCAB_STEAL_ITEM StealGold = KGC::Steal::VOCAB_STEAL_GOLD StealNoItem = KGC::Steal::VOCAB_STEAL_NO_ITEM StealFailure = KGC::Steal::VOCAB_STEAL_FAILURE end
#=================================================
#============================================================================== # ■ RPG::BaseItem #==============================================================================
class RPG::BaseItem #-------------------------------------------------------------------------- # ○ 「盗む」のキャッシュ生成 #-------------------------------------------------------------------------- def create_steal_cache @__steal_prob_plus = 0
self.note.each_line { |line| case line when KGC::Steal::Regexp::BaseItem::STEAL_PROB_PLUS # 盗み成功率補正 @__steal_prob_plus += $1.to_i end } end #-------------------------------------------------------------------------- # ○ 盗み成功率補正 #-------------------------------------------------------------------------- def steal_prob_plus create_steal_cache if @__steal_prob_plus == nil return @__steal_prob_plus end end
#=================================================
#============================================================================== # ■ RPG::Skill #==============================================================================
class RPG::Skill < RPG::UsableItem #-------------------------------------------------------------------------- # ○ 「盗む」のキャッシュ生成 #-------------------------------------------------------------------------- def create_steal_cache super @__steal = false
self.note.each_line { |line| case line when KGC::Steal::Regexp::Skill::STEAL # 盗む @__steal = true end } end #-------------------------------------------------------------------------- # ○ 盗む #-------------------------------------------------------------------------- def steal? create_steal_cache if @__steal == nil return @__steal end end
#=================================================
#============================================================================== # ■ RPG::Enemy #==============================================================================
class RPG::Enemy #-------------------------------------------------------------------------- # ○ 「盗む」のキャッシュ生成 #-------------------------------------------------------------------------- def create_steal_cache @__steal_objects = []
self.note.each_line { |line| case line when KGC::Steal::Regexp::Enemy::STEAL_OBJECT # 盗めるオブジェクト obj = RPG::Enemy::StealObject.new case $1.upcase when "I" # アイテム obj.kind = 1 obj.item_id = $2.to_i when "W" # 武器 obj.kind = 2 obj.weapon_id = $2.to_i when "A" # 防具 obj.kind = 3 obj.armor_id = $2.to_i when "G" # 金 obj.kind = 4 obj.gold = $2.to_i else next end # 成功率 if $4 != nil obj.success_prob = $3.to_i else obj.denominator = $3.to_i end @__steal_objects << obj end } end #-------------------------------------------------------------------------- # ○ 盗めるオブジェクト #-------------------------------------------------------------------------- def steal_objects create_steal_cache if @__steal_objects == nil return @__steal_objects end end
#=================================================
#============================================================================== # □ RPG::Enemy::StealObject #==============================================================================
class RPG::Enemy::StealObject < RPG::Enemy::DropItem #-------------------------------------------------------------------------- # ○ 定数 #-------------------------------------------------------------------------- KIND_ITEM = 1 KIND_WEAPON = 2 KIND_ARMOR = 3 KIND_GOLD = 4 #-------------------------------------------------------------------------- # ○ 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :gold # 金 attr_accessor :success_prob # 成功率 #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize super @gold = 0 @success_prob = 0 end #-------------------------------------------------------------------------- # ○ 同値判定 #-------------------------------------------------------------------------- def equal?(obj) return false unless obj.is_a?(RPG::Enemy::StealObject) return false if self.gold != obj.gold return false if self.success_prob != obj.success_prob
return true end #-------------------------------------------------------------------------- # ○ 等値演算子 #-------------------------------------------------------------------------- def ==(obj) return self.equal?(obj) end end
#=================================================
#============================================================================== # ■ Game_Battler #==============================================================================
class Game_Battler #-------------------------------------------------------------------------- # ○ 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :steal_objects # 盗めるオブジェクト attr_accessor :stolen_object # 前回盗まれたオブジェクト #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_Battler_KGC_Steal initialize def initialize initialize_Battler_KGC_Steal
@steal_objects = [] @stolen_object = nil end #-------------------------------------------------------------------------- # ○ 盗み成功率補正値 #-------------------------------------------------------------------------- def steal_prob_plus return 0 end #-------------------------------------------------------------------------- # ● スキルの効果適用 # user : スキルの使用者 # skill : スキル #-------------------------------------------------------------------------- alias skill_effect_KGC_Steal skill_effect def skill_effect(user, skill) skill_effect_KGC_Steal(user, skill)
make_obj_steal_result(user, skill) end #-------------------------------------------------------------------------- # ○ スキルまたはアイテムによる盗み効果 # user : スキルまたはアイテムの使用者 # obj : スキルまたはアイテム # 結果は @stolen_object に代入する。 #-------------------------------------------------------------------------- def make_obj_steal_result(user, obj) return unless obj.steal? # 盗み効果なし return if @skipped || @missed || @evaded # 効果なし
# 何も持っていない if self.steal_objects.compact.empty? @stolen_object = :no_item return end
@stolen_object = nil stolen_index = -1 self.steal_objects.each_with_index { |sobj, i| next if sobj == nil # Added by TouchFuzzy 3/14/08 if KGC::Steal::AGILITY_BASED_STEAL sobj.success_prob = sobj.success_prob * user.agi / self.agi end # End Agility Based Steal Update # 盗み成功判定 if sobj.success_prob > 0 # 確率指定 next if sobj.success_prob + user.steal_prob_plus < rand(100) else # 分母指定 if rand(sobj.denominator) != 0 next if user.steal_prob_plus < rand(100) end end # 盗み成功 @stolen_object = sobj stolen_index = i if $imported["EnemyGuide"] # 図鑑用の盗み成功フラグをオン self_id = (self.actor? ? self.id : self.enemy_id) KGC::Commands.set_enemy_object_stolen(self_id, stolen_index) end break } if stolen_index != -1 @steal_objects[stolen_index] = nil end end end
#=================================================
#============================================================================== # ■ Game_Actor #==============================================================================
class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ○ 盗み成功率補正値 #-------------------------------------------------------------------------- def steal_prob_plus n = 0 equips.compact.each { |item| n += item.steal_prob_plus } return n end end
#=================================================
#============================================================================== # ■ Game_Enemy #==============================================================================
class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # ● オブジェクト初期化 # index : 敵グループ内インデックス # enemy_id : 敵キャラ ID #-------------------------------------------------------------------------- alias initialize_Enemy_KGC_Steal initialize def initialize(index, enemy_id) initialize_Enemy_KGC_Steal(index, enemy_id)
@steal_objects = enemy.steal_objects.clone end end
#=================================================
#============================================================================== # ■ Scene_Battle #==============================================================================
class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ● 戦闘行動の実行 : スキル #-------------------------------------------------------------------------- alias execute_action_skill_KGC_Steal execute_action_skill def execute_action_skill skill = @active_battler.action.skill if skill.steal? execute_action_steal @status_window.refresh else execute_action_skill_KGC_Steal end end #-------------------------------------------------------------------------- # ○ 戦闘行動の実行 : 盗む #-------------------------------------------------------------------------- def execute_action_steal skill = @active_battler.action.skill text = @active_battler.name + skill.message1 @message_window.add_instant_text(text) unless skill.message2.empty? wait(10) @message_window.add_instant_text(skill.message2) end targets = @active_battler.action.make_targets display_animation(targets, skill.animation_id) @active_battler.mp -= @active_battler.calc_mp_cost(skill) $game_temp.common_event_id = skill.common_event_id for target in targets target.skill_effect(@active_battler, skill) display_steal_effects(target, skill) end end #-------------------------------------------------------------------------- # ○ 盗んだ結果の表示 # target : 対象者 # obj : スキルまたはアイテム #-------------------------------------------------------------------------- def display_steal_effects(target, obj = nil) unless target.skipped line_number = @message_window.line_number wait(5) if target.hp_damage != 0 || target.mp_damage != 0 display_critical(target, obj) display_damage(target, obj) end display_stole_object(target, obj) display_state_changes(target, obj) if line_number == @message_window.line_number display_failure(target, obj) unless target.states_active? end if line_number != @message_window.line_number wait(30) end @message_window.back_to(line_number) end end #-------------------------------------------------------------------------- # ○ 盗んだオブジェクトの表示 # target : 対象者 # obj : スキルまたはアイテム #-------------------------------------------------------------------------- def display_stole_object(target, obj = nil) if target.missed || target.evaded display_steal_failure(target, obj) return end
case target.stolen_object when nil # 盗み失敗 display_steal_failure(target, obj) when :no_item # 何も持っていない display_steal_no_item(target, obj) else if target.stolen_object.kind == RPG::Enemy::StealObject::KIND_GOLD # お金 display_steal_gold(target, obj) else # アイテム or 武器 or 防具 display_steal_item(target, obj) end target.stolen_object = nil end end #-------------------------------------------------------------------------- # ○ 盗み失敗の表示 # target : 対象者 (アクター) # obj : スキルまたはアイテム #-------------------------------------------------------------------------- def display_steal_failure(target, obj) # Implemented by RFTD 8/27/08 if KGC::Steal::USING_SIDEVIEW result_data = sprintf(Vocab::StealFailure) @steal_window = Steal_Window.new(result_data) @steal_window.visible = true wait (160) @steal_window.dispose else @message_window.add_instant_text(Vocab::StealFailure) wait(30) end end #-------------------------------------------------------------------------- # ○ 何も持っていない場合の表示 # target : 対象者 (アクター) # obj : スキルまたはアイテム #-------------------------------------------------------------------------- def display_steal_no_item(target, obj) # Implemented by RFTD 8/27/08 if KGC::Steal::USING_SIDEVIEW result_data = sprintf(Vocab::StealNoItem, target.name) @steal_window = Steal_Window.new(result_data) @steal_window.visible = true wait (160) @steal_window.dispose else text = sprintf(Vocab::StealNoItem, target.name) @message_window.add_instant_text(text) wait(30) end end #-------------------------------------------------------------------------- # ○ アイテムを盗んだ場合の表示 # target : 対象者 (アクター) # obj : スキルまたはアイテム #-------------------------------------------------------------------------- def display_steal_item(target, obj) # 盗んだアイテムを取得 sobj = target.stolen_object case sobj.kind when RPG::Enemy::StealObject::KIND_ITEM item = $data_items[sobj.item_id] when RPG::Enemy::StealObject::KIND_WEAPON item = $data_weapons[sobj.weapon_id] when RPG::Enemy::StealObject::KIND_ARMOR item = $data_armors[sobj.armor_id] else return end $game_party.gain_item(item, 1)
# Implemented by RFTD 8/27/08 if KGC::Steal::USING_SIDEVIEW result_data = sprintf(Vocab::StealItem, target.name, item.name) @steal_window = Steal_Window.new(result_data) @steal_window.visible = true wait (160) @steal_window.dispose else text = sprintf(Vocab::StealItem, target.name, item.name) @message_window.add_instant_text(text) wait(30) end end #-------------------------------------------------------------------------- # ○ お金を盗んだ場合の表示 # target : 対象者 (アクター) # obj : スキルまたはアイテム #-------------------------------------------------------------------------- def display_steal_gold(target, obj) gold = target.stolen_object.gold $game_party.gain_gold(gold)
# Implemented by RFTD 8/27/08 if KGC::Steal::USING_SIDEVIEW result_data = sprintf(Vocab::StealGold, target.name, gold, Vocab.gold) @steal_window = Steal_Window.new(result_data) @steal_window.visible = true wait (160) @steal_window.dispose else text = sprintf(Vocab::StealGold, target.name, gold, Vocab.gold) @message_window.add_instant_text(text) wait(30) end end end
#=================================================
if KGC::Steal::USING_SIDEVIEW #-------------------------------------------------------------------------- # ■ Steal Message Window #-------------------------------------------------------------------------- # Method exclusive for the RPG Tankentai Sideview Battle System #-------------------------------------------------------------------------- class Steal_Window < Window_Base def initialize(result_data) super(15, 0, 516, 60) self.z = 10001 contents.font.color = normal_color contents.draw_text(0, 0, contents.width, WLH, result_data) end end end #<-if KGC::Steal::USING_SIDEVIEW
Regarde les commentaires au début du script pour mieux comprendre Edit Raito-san: +2 en aide à la vie du forum |
|
Vagabond Lv.5
Age : 41 Inscrit le : 25/12/2009 Messages : 89
| Sujet: Re: [RESOLU] Problème sur un event Mar 29 Déc 2009 - 16:51 | |
| Youpi, ça marche ^^ Merci beaucoup !!!!
Bon, maintenant faut que je résolve un autre problème...rendez-vous dans le topic suivant ptdr !! |
|
| Sujet: Re: [RESOLU] Problème sur un event | |
| |
|