RPG Creator : créez votre MMORPG ou RPG sans aucune connaissance en programmation


Disponible le 4 Juin !




- Jouez à votre jeu sur tablettes tactiles, Smartphones et navigateurs Web
- Personnalisez vos menus
- Dessinez facilement et rapidement vos cartes
- Créez des actions pour le combat A-RPG


www.rpgcreator.net


Heures au format UTC + 1 heure [ Heure d’été ]


Règles du forum


Consultez la liste des Scripts : cliquez ici



Publier un nouveau sujet Répondre au sujet  [ 4 messages ] 
Auteur Message
 Sujet du message: Coopération
MessagePublié: 30 Sep 2007, 17:57 
Villageois (Nv 1)

Inscrit le: 31 Juil 2007, 00:00
Messages: 10
Points d'aide: 0/60

Créations :

Voir ses créations

Coopération


Auteur : KGC

Description :
Ce script permet de créer des attaques en coopération.

Screenshots :

Image
Image



Utilisation :

Premièrement la partie à personnaliser/configurer :
de
Code: Tout sélectionner
CS_SKILLS = [

a
Code: Tout sélectionner
]  # -- Don't delete this line! --


Vous pouvez entrer les compétences coop possibles comme il est indiqué dans les explications donnés dans le script :
«[Compétence COOP ID, [Compétence Nécessaire ID1, Compétence Nécessaire ID2, ...]]»
Ce n'est peut-être pas clair alors voyons un exemple :
Code: Tout sélectionner
[101, [7, 60]],

Celà signifie que la compétence d'ID 101 (Compétence coop) sera réalisée lorsque l'un des personnages utilisera la compétence
d'ID 7 puis un autre la compétence d'ID 60 dans le même tour.
Il suffit alors d'adapter les ID des compétences de votre choix pour réaliser une compétence coop et rajouter des lignes supplémentaires
de la même façon.
La limite n'est pas de deux personnages vous pouvez aussi rajouter d'autres personnages d'entré.
Par exemple :
Code: Tout sélectionner
[101, [7, 60, 61, 42]],

Là il y aura donc 4 personnages, celà se schématise donc aussi par :
«[Compétence COOP ID, [Compétence Nécessaire ID1, Compétence Nécessaire ID2, Compétence Nécessaire ID3, Compétence Nécessaire ID4]]»

Vous pouvez aussi modifier certaines options du script.

Pour permettre aux ennemis de profiter des compétences coop il vous faudra modifier cette ligne :
Code: Tout sélectionner
CS_PERMIT_ENEMY = true

Code: Tout sélectionner
# ?Permission ennemie
  #  Si true est mit alors les ennemis bénéficient aussi de la possibilité de réaliser des
  #  compétences en commun.


Vous pourrez aussi faire en sorte que les compétences nécessaires à la compétence coop soient oui ou non executés avant la compétence coop
ou que la compétence soit lancée directement sans les prendre en compte.
Code: Tout sélectionner
CS_EXECUTE_ORIGIN_SKILL = false

Code: Tout sélectionner
# ?Execution des compétences d'origine
  #  Si true est mit, les compétences nécessaires à l'execution de la compétence coop
  #  seront réalisées avant la compétence coop.
  #  Si false est mit, les compétences nécessaires à l'execution de la compétence coop
  #  ne seront pas réalisés, autrement dit la compétence coop est lancée directement.


Haut
 Profil  
 
 Sujet du message: Re: Coopération
MessagePublié: 30 Sep 2007, 17:58 
Villageois (Nv 1)

Inscrit le: 31 Juil 2007, 00:00
Messages: 10
Points d'aide: 0/60

Créations :

Voir ses créations

Partie 1 :

Code: Tout sélectionner
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/    ? Coopération - KGC_CooperationSkill ?
#_/    ? Dernière mise à jour : 2007/01/27 ? Traduit par Eudliel/Ojiro
#_/----------------------------------------------------------------------------
#_/  ?????????????????????????????
#_/  It is a function to combine some skills, and to execute another skill.
#_/  C'est une fonction qui permet de combiner des compétences, afin d'exécuter
#_/  une autre compétence.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

#==============================================================================
# ? Personnalisation - Customize ?
#==============================================================================

module KGC
  # ?Options
  #  «[Compétence COOP ID, [Compétence Nécessaire ID1, Compétence Nécessaire ID2, ...]]»
  CS_SKILLS = [
    # Liste des compétences coops à préciser ci-dessous, rajouter si nécessaire.
    [101, [7, 60]],
    [101, [8, 60]],
    [101, [9, 60]],
  ]  # -- Don't delete this line! --

  # ?Permission ennemie
  #  Si true est mit alors les ennemis bénéficient aussi de la possibilité de réaliser des
  #  compétences en commun.
  CS_PERMIT_ENEMY = true

  # ?Execution des compétences d'origine
  #  Si true est mit, les compétences nécessaires à l'execution de la compétence coop
  #  seront réalisées avant la compétence coop.
  #  Si false est mit, les compétences nécessaires à l'execution de la compétence coop
  #  ne seront pas réalisés, autrement dit la compétence coop est lancée directement.
  CS_EXECUTE_ORIGIN_SKILL = false
end

#### CS_SKILLS
### Tableau des "Compétences coop".
#  «[Compétence COOP ID, [Compétence Nécessaire ID1, Compétence Nécessaire ID2, ...]]»

#### CS_PERMIT_ENEMY
### Permet aux ennemis d'utiliser les "Compétences coop".

#???????????????????????????????????????

$imported = {} if $imported == nil
$imported["CooperationSkill"] = true

#==============================================================================
# ¦ Game_Battler (Définition 3)
#==============================================================================

class Game_Battler
  #--------------------------------------------------------------------------
  # ? Propriétés du script
  #     users    : Liste des compétences de l'utilisateur
  #                users[i] : Game_CooperationSkillUser
  #     skill    : Compétence
  #     is_actor : Utilisateur
  #--------------------------------------------------------------------------
  def cooperation_skill_effect(users, skill, is_actor)
    # Efface l'affichage de coup critique
    self.critical = false
    # ????????? HP 1 ?????????? HP ? 0?
    # ???????????? HP 0 ???????? HP ? 1 ?????
    if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
       ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
      # ??????
      return false
    end
    user_list = (is_actor ? $game_party.actors : $game_troop.enemies).compact
    # ?????????
    effective = false
    # ??????? ID ????????????????
    effective |= skill.common_event_id > 0
    # ??????
    hit2 = 100 * users.size
    if skill.atk_f > 0
      users.each { |u|
        user = user_list[u.index]
        hit2 += user.hit * skill.atk_f / 100
      }
    end
    hit2 /= users.size * 0.75
    hit = Integer(skill.hit * hit2 / 100)
    hit_result = (rand(100) < hit)
    # ????????????????????
    effective |= hit < 100
    # ?????
    if hit_result
      # ?????
      power = 0
      users.each { |u|
        user = user_list[u.index]
        power += user.atk * skill.atk_f / 100
      }
      power /= users.size * 0.75
      power = Integer(power + skill.power)
      if power > 0
        power -= self.pdef * skill.pdef_f / 200
        power -= self.mdef * skill.mdef_f / 200
        power = [power, 0].max
      end
      # ?????
      rate = 0
      users.each { |u|
        user = user_list[u.index]
        rate += (user.str * skill.str_f / 100)
        rate += (user.dex * skill.dex_f / 100)
        rate += (user.agi * skill.agi_f / 100)
        rate += (user.int * skill.int_f / 100)
      }
      rate /= users.size * 0.75
      rate = Integer(rate + 20)
      # ?????????
      self.damage = power * rate / 20
      # ????
      self.damage *= elements_correct(skill.element_set)
      self.damage /= 100
      # ????????????
      if self.damage > 0
        # ????
        if self.guarding?
          self.damage /= 2
        end
      end
      # ??
      if skill.variance > 0 and self.damage.abs > 0
        amp = [self.damage.abs * skill.variance / 100, 1].max
        self.damage += rand(amp+1) + rand(amp+1) - amp
      end
      # ??????
      eva = 0
      user_dex = 0
      users.each { |u|
        user = user_list[u.index]
        user_dex += user.dex
      }
      user_dex /= users.size
      eva += 8 * self.agi / user_dex
      eva += self.eva
      hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
      # ????????????????????
      effective |= hit < 100
    end
    # ?????
    if hit_result
      # ?? 0 ??????????
      if skill.power != 0 and skill.atk_f > 0
        # ????????
        remove_states_shock
        # ?????????
        effective = true
      end
      # HP ?????????
      last_hp = self.hp
      self.hp -= self.damage
      effective |= self.hp != last_hp
      # ??????
      @state_changed = false
      effective |= states_plus(skill.plus_state_set)
      effective |= states_minus(skill.minus_state_set)
      # ??? 0 ???
      if skill.power == 0
        # ????????????
        self.damage = ""
        # ????????????
        unless @state_changed
          # ????? "Miss" ???
          self.damage = "Miss"
        end
      end
    # ?????
    else
      # ????? "Miss" ???
      self.damage = "Miss"
    end
    # ????????
    unless $game_temp.in_battle
      # ????? nil ???
      self.damage = nil
    end
    # ??????
    return effective
  end
end

#???????????????????????????????????????

#==============================================================================
# ¦ Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ? ??????????
  #     skill_id : ??? ID
  #--------------------------------------------------------------------------
  def skill_can_use?(skill_id)
    return super(skill_id)
  end
end

#???????????????????????????????????????

#==============================================================================
# ¦ Game_CooperationSkillUser
#==============================================================================

class Game_CooperationSkillUser
  attr_reader :index, :skill_id
  #--------------------------------------------------------------------------
  # ? ?????????
  #--------------------------------------------------------------------------
  def initialize(index, skill_id)
    @index = index
    @skill_id = skill_id
  end
end

#???????????????????????????????????????

#==============================================================================
# ¦ Scene_Battle (???? 1)
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # ? ?????
  #--------------------------------------------------------------------------
  alias main_KGC_CooperationSkill main
  def main
    # ?????????????
    @cooperation_skill_exec = false
    @cooperation_skill_id = 0
    # ???????????
    @cooperate_actors = []
    @cooperate_enemies = []

    main_KGC_CooperationSkill
  end
end

#???????????????????????????????????????

#==============================================================================
# ¦ Scene_Battle (???? 2)
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # ? ??????????????
  #--------------------------------------------------------------------------
  alias start_phase2_KGC_CooperationSkill start_phase2
  def start_phase2
    # ?????????????
    @cooperation_skill_exec = false
    @cooperation_skill_id = 0
    # ???????????
    @cooperate_actors.clear
    @cooperate_enemies.clear

    start_phase2_KGC_CooperationSkill
  end
end

#???????????????????????????????????????


Haut
 Profil  
 
 Sujet du message: Re: Coopération
MessagePublié: 30 Sep 2007, 18:00 
Villageois (Nv 1)

Inscrit le: 31 Juil 2007, 00:00
Messages: 10
Points d'aide: 0/60

Créations :

Voir ses créations

Partie 2 :

Code: Tout sélectionner
#==============================================================================
# ¦ Scene_Battle (???? 4)
#==============================================================================

class Scene_Battle
  unless KGC::CS_EXECUTE_ORIGIN_SKILL || $imported["ActiveCountBattle"]
  #--------------------------------------------------------------------------
  # ? ?????????
  #--------------------------------------------------------------------------
  alias start_phase4_KGC_CooperationSkill start_phase4
  def start_phase4
    start_phase4_KGC_CooperationSkill

    # ????????
    @cooperate_actors.clear
    @cooperate_enemies.clear
    $game_party.actors.each { |actor|
      if actor.current_action.kind == 1
        user = Game_CooperationSkillUser.new(actor.index,
          actor.current_action.skill_id)
        @cooperate_actors << user
      end
    }
  end
  end
  #--------------------------------------------------------------------------
  # ? ?????? (??????? ???? 2 : ???????)
  #--------------------------------------------------------------------------
  alias update_phase4_step2_KGC_CooperationSkill update_phase4_step2
  def update_phase4_step2
    @judged = false
    unless KGC::CS_EXECUTE_ORIGIN_SKILL
      # ????
      judge_cooperation_skill(@active_battler)
      if @cooperation_skill_exec
        @phase4_step = 6
        return
      end
    end

    update_phase4_step2_KGC_CooperationSkill
  end
  #--------------------------------------------------------------------------
  # ? ?????? (??????? ???? 6 : ??????)
  #--------------------------------------------------------------------------
  alias update_phase4_step6_KGC_CooperationSkill update_phase4_step6
  def update_phase4_step6
    if @cooperation_skill_exec && !@judged
      # ???????
      @cooperation_skill_exec = false
      @cooperation_skill_id = 0
      @exec_battlers.clear
    # ????
    elsif KGC::CS_EXECUTE_ORIGIN_SKILL
      judge_cooperation_skill(@active_battler)
    end
    if @cooperation_skill_exec
      execute_cooperation_skill
      @judged = false
      return
    end

    update_phase4_step6_KGC_CooperationSkill
  end
  #--------------------------------------------------------------------------
  # ? ???????????
  #     battler : ????
  #--------------------------------------------------------------------------
  def judge_cooperation_skill(battler)
    return false if @judged
    @judged = true

    # ?????????
    if battler.current_action.kind == 1
      # ?????
      target_all_dead = true
      enemy_list = battler.is_a?(Game_Actor) ?
        $game_troop.enemies : $game_party.actors
      enemy_list.each { |e|
        if e.exist?
          target_all_dead = false
          break
        end
      }
      # ???????????????
      unless target_all_dead
        return judge_cooperation_skill_second(battler)
      end
    else
      # ?????????
      if battler.is_a?(Game_Actor)
        remove_cooperate_battler(0, battler)
      elsif battler.is_a?(Game_Enemy)
        remove_cooperate_battler(1, battler)
      end
    end
    return false
  end
  #--------------------------------------------------------------------------
  # ? ???????????
  #--------------------------------------------------------------------------
  def judge_cooperation_skill_second(battler)
    # ????????
    user = Game_CooperationSkillUser.new(battler.index,
      battler.current_action.skill_id)
    if battler.is_a?(Game_Actor)
      remove_cooperate_battler(0, battler)
      @cooperate_actors << user
    elsif battler.is_a?(Game_Enemy) && KGC::CS_PERMIT_ENEMY
      remove_cooperate_battler(1, battler)
      @cooperate_enemies << user
    end
    # ?????????
    KGC::CS_SKILLS.each { |cs|
      # ??????
      if battler.is_a?(Game_Actor)
        check_cooperation_exec_battlers(0, cs)
        if @cooperation_skill_exec
          break
        end
      # ??????
      elsif battler.is_a?(Game_Enemy) && KGC::CS_PERMIT_ENEMY
        check_cooperation_exec_battlers(1, cs)
        if @cooperation_skill_exec
          break
        end
      end
    }
    return @cooperation_skill_exec
  end
  #--------------------------------------------------------------------------
  # ? ?????????????
  #     type    : 0..Actor  1..Enemy
  #     cs_data : Cooperation skill data
  #--------------------------------------------------------------------------
  def check_cooperation_exec_battlers(type, cs_data)
    case type
    when 0  # Actor
      cooperate_battlers = @cooperate_actors
      battler_list = $game_party.actors
    when 1  # Enemy
      cooperate_battlers = @cooperate_enemies
      battler_list = $game_troop.enemies
    end
    exec = true
    # ?????????
    @exec_battlers = []
    cs_data[1].each { |sid|
      user = cooperate_battlers.find { |cb|
        sid == cb.skill_id && !@exec_battlers.include?(cb)
      }
      exec &= user != nil
      if exec
        @exec_battlers << user
      else
        break
      end
    }
    if exec
      # ?????????????????
      @exec_battlers.each { |eb|
        unless battler_list[eb.index].exist? &&
            battler_list[eb.index].skill_can_use?(cs_data[0])
          exec = false
          break
        end
      }
    end
    # ???????
    if exec
      # ?????????
      @cooperation_skill_exec = true
      @cooperation_skill_id = cs_data[0]
      @cooperation_skill_user = type
      # ??????
      cooperate_battlers.each_with_index { |cb, i|
        if @exec_battlers.include?(cb)
          @action_battlers.delete(battler_list[cb.index])
          cooperate_battlers[i] = nil
        end
      }
      cooperate_battlers.compact!
    end
  end
  #--------------------------------------------------------------------------
  # ? ???????
  #     type    : 0..????  1..????
  #     battler : ????
  #--------------------------------------------------------------------------
  def remove_cooperate_battler(type, battler)
    case type
    when 0  # ????
      if @cooperate_actors.size > 1
        @cooperate_actors.each_index { |i|
          if @cooperate_actors[i].index == battler.index
            @cooperate_actors[i] = nil
          end
        }
        @cooperate_actors.compact!
      end
    when 1  # ????
      if KGC::CS_PERMIT_ENEMY && @cooperate_enemies.size > 1
        @cooperate_enemies.each_index { |i|
          if @cooperate_enemies[i].index == battler.index
            @cooperate_enemies[i] = nil
          end
        }
        @cooperate_enemies.compact!
      end
    end
  end
  #--------------------------------------------------------------------------
  # ? ???????
  #--------------------------------------------------------------------------
  def execute_cooperation_skill
    # ?????
    skill = $data_skills[@cooperation_skill_id]
    # ????????????????
    @help_window.set_text(skill.name, 1)
    if $imported["SkillMessage"]
      # ????????????
      show_skill_message(@active_battler, skill)
    end
    # ??????? ID ???
    @animation1_id = skill.animation1_id
    @animation2_id = skill.animation2_id
    # ??????? ID ???
    @common_event_id = skill.common_event_id
    # ??????
    @target_battlers = []
    set_target_battlers(skill.scope)

    case @cooperation_skill_user
    when 0  # ????
      user_list = $game_party.actors
      if $imported["ActiveCountBattle"] && @input_battler != nil
        @exec_battlers.each_index { |j|
          if $game_party.actors[@exec_battlers[j].index] == @input_battler
            # ?????????
            command_input_cancel
          end
        }
      end
      @status_window.refresh
    when 1  # ????
      user_list = $game_troop.enemies
    end
    # SP??
    @exec_battlers.each_index { |i|
      user_list[@exec_battlers[i].index].sp -= skill.sp_cost
    }
    # ??????????????
    @exec_battlers.each_index { |i|
      user_list[@exec_battlers[i].index].animation_id = @animation1_id
      user_list[@exec_battlers[i].index].animation_hit = true
    }
    # ?????
    @target_battlers.each { |target|
      target.cooperation_skill_effect(@exec_battlers, skill, false)
    }
    # ???? 4 ???
    @phase4_step = 4
  end
  #--------------------------------------------------------------------------
  # ? ?????????
  #     battler : ????????
  #--------------------------------------------------------------------------
  def cooperation_exec?(battler)
    if @cooperation_skill_exec
      if !battler.is_a?(Game_Enemy) || KGC::CS_PERMIT_ENEMY
        # ?????????????
        @exec_battlers.each_index { |i|
          return true if @exec_battlers[i].index == battler.index
        }
      end
    end
    return false
  end
end


Haut
 Profil  
 
 Sujet du message: Re: Coopération
MessagePublié: 24 Sep 2010, 23:37 
Villageois (Nv 3)

Inscrit le: 21 Juin 2008, 00:00
Messages: 45
Points d'aide: 0/60

Créations :

Voir ses créations

J'ai le message d'erreur suivant :(

comboskill 1???? 82???
nomethoderror
undefined method 'hit' for nil:NilClass


Haut
 Profil  
 
Afficher les messages depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 4 messages ] 

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Rechercher pour:
Sauter vers:  
cron
RPG Creative Forum version 5 ; Tous droits réservés
phpBB Group (Traduit par Xaphos)
Optimisé pour une résolution 1024*728