RPG Fusion
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.



 
AccueilPortailRechercherDernières imagesS'enregistrerConnexion
-40%
Le deal à ne pas rater :
Tefal Ingenio Emotion – Batterie de cuisine 10 pièces (induction, ...
59.99 € 99.99 €
Voir le deal

 

 Monstre qui s'adapte à la force du joueur

Aller en bas 
3 participants
AuteurMessage
deadcell
Trouvère Follet
Trouvère Follet
deadcell


Masculin
Nombre de messages : 625
Age : 35
Niveau Rpg Maker : Excellent Niveau
Jeux Préférés : Final Fantasy, Resident evil...
Date d'inscription : 21/03/2007

Monstre qui s'adapte à la force du joueur Empty
MessageSujet: Monstre qui s'adapte à la force du joueur   Monstre qui s'adapte à la force du joueur EmptySam 28 Juil 2007, 20:14

Auteur: SunMat

Fonction: Ce script qui permet au monstre de s'adapter aux statuts de l'équipe, au nombre de héros dans l'équipe, etc... De cette façon, si vous devez revenir à la fin du jeu dans une zone que
vous avez visité au début, les monstres se seront adapté et vous ne
combattrez pas des pauvres monstres minables à 3 HP !

Screen: auncun

Ouvre l'éditeur de script (F11), et remplacez le script "Game_Enemy" par celui ci-dessous:

Code:
#==============================================================================

        # ■ Game_Enemy

        #------------------------------------------------------------------------------

        # scrïpt créé par SunMat, les monstres s'adaptent aux données du héro

        # #==============================================================================

       

        class Game_Enemy < Game_Battler

        #--------------------------------------------------------------------------

        # fonction d'initialisation

        #--------------------------------------------------------------------------

        def initialize(troop_id, member_index)

        super()

        @troop_id = troop_id

        @member_index = member_index

        troop = $data_troops[@troop_id]

        @enemy_id = troop.members[@member_index].enemy_id

        enemy = $data_enemies[@enemy_id]

        @battler_name = enemy.battler_name

        @battler_hue = enemy.battler_hue

        @hp = maxhp

        @sp = maxsp

        @hidden = troop.members[@member_index].hidden

        @immortal = troop.members[@member_index].immortal

        end

        #--------------------------------------------------------------------------

        # ID

        #--------------------------------------------------------------------------

        def id

        return @enemy_id

        end

        #--------------------------------------------------------------------------

        # Index

        #--------------------------------------------------------------------------

        def index

        return @member_index

        end

        #--------------------------------------------------------------------------

        # Nom du monstre

        #--------------------------------------------------------------------------

        def name

        return $data_enemies[@enemy_id].name

        end

        #--------------------------------------------------------------------------

        # Max Hp = somme des maxHp des héros dans l'équipe

        # multiplié par le pourcentage défini

        #--------------------------------------------------------------------------

        def base_maxhp

        hp = $game_actors[1].maxhp

        if $game_actors[2].hp != 0

        hp += $game_actors[2].maxhp

        end

        if $game_actors[3].hp != 0

        hp += $game_actors[3].maxhp

        end

        if $game_actors[4].hp != 0

        hp += $game_actors[4].maxhp

        end

        hp *= $data_enemies[@enemy_id].maxhp

        hp /= 100

        return hp

        end

        #--------------------------------------------------------------------------

        # Max Sp définis dans l'absolue

        #--------------------------------------------------------------------------

        def base_maxsp

        return $data_enemies[@enemy_id].maxsp

        end

        #--------------------------------------------------------------------------

        # Force en fonction du pourcentage de la somme de la force de l'équipe

        #--------------------------------------------------------------------------

        def base_str

        a = 1

        frc = $game_actors[1].str

        if $game_actors[2].hp != 0

        frc += $game_actors[2].str

        a +=1

        end

        if $game_actors[3].hp != 0

        frc += $game_actors[3].str

        a += 1

        end

        if $game_actors[4].hp != 0

        frc += $game_actors[4].str

        a += 1

        end

        frc *= $data_enemies[@enemy_id].str

        frc /= (100*a)

        return frc

        end

        #--------------------------------------------------------------------------

        # dextérité définie dans l'absolue

        #--------------------------------------------------------------------------

        def base_dex

        return $data_enemies[@enemy_id].dex

        end

        #--------------------------------------------------------------------------

        # agilité définie dans l'absolue

        #--------------------------------------------------------------------------

        def base_agi

        return $data_enemies[@enemy_id].agi

        end

        #--------------------------------------------------------------------------

        # intelligence définie dans l'absolue

        #--------------------------------------------------------------------------

        def base_int

        return $data_enemies[@enemy_id].int

        end

        #--------------------------------------------------------------------------

        # attaque définie en fonction de l'attaque de l'équipe et du pourcentage

        #--------------------------------------------------------------------------

        def base_atk

        at = $game_actors[1].atk

        a = 1

        if $game_actors[2].hp != 0

        at += $game_actors[2].atk

        a += 1

        end

        if $game_actors[3].hp != 0

        at += $game_actors[3].atk

        a += 1

        end

        if $game_actors[4].hp != 0

        a += 1

        at += $game_actors[4].atk

        end

        at *= $data_enemies[@enemy_id].atk

        at /= (100*a )

        return at

        end

        #--------------------------------------------------------------------------

        # défence définie en fonction du pourcentage moyen de la défence de l'équipe

        #--------------------------------------------------------------------------

        def base_pdef

        df = $game_actors[1].pdef

        a = 1

        if $game_actors[2].hp != 0

        df += $game_actors[2].pdef

        a += 1

        end

        if $game_actors[3].hp != 0

        df += $game_actors[3].pdef

        a += 1

        end

        if $game_actors[4].hp != 0

        df += $game_actors[4].pdef

        a += 1

        end

        df *= $data_enemies[@enemy_id].pdef

        df /= (100*a)

        return df

        end

        #--------------------------------------------------------------------------

        # défence magique en fonction de la défence de l'équipe

        #--------------------------------------------------------------------------

        def base_mdef

        mdf = $game_actors[1].mdef

        a = 1

        if $game_actors[2].hp != 0

        mdf += $game_actors[2].mdef

        a += 1

        end

        if $game_actors[3].hp != 0

        mdf += $game_actors[3].mdef

        a += 1

        end

        if $game_actors[4].hp != 0

        mdf += $game_actors[4].mdef

        a += 1

        end

        mdf *= $data_enemies[@enemy_id].mdef

        mdf /= (100*a)

        return mdf

        end

        #--------------------------------------------------------------------------

        # evasion non changée

        #--------------------------------------------------------------------------

        def base_eva

        return $data_enemies[@enemy_id].eva

        end

        #--------------------------------------------------------------------------

        #animation non changée

        #--------------------------------------------------------------------------

        def animation1_id

        return $data_enemies[@enemy_id].animation1_id

        end

        #--------------------------------------------------------------------------

        # animation non changée

        #--------------------------------------------------------------------------

        def animation2_id

        return $data_enemies[@enemy_id].animation2_id

        end

        #--------------------------------------------------------------------------

        # element_rate non changé

        #--------------------------------------------------------------------------

        def element_rate(element_id)

        # 属性有効度に対応する数値を取得

        table = [0,200,150,100,50,0,-100]

        result = table[$data_enemies[@enemy_id].element_ranks[element_id]]

        # ステートでこの属性が防御されている場合は半減

        for i in @states

        if $data_states[i].guard_element_set.include?(element_id)

        result /= 2

        end

        end

        # メソッド終了

        return result

        end

        #--------------------------------------------------------------------------

        # state_rank non changé

        #--------------------------------------------------------------------------

        def state_ranks

        return $data_enemies[@enemy_id].state_ranks

        end

        #--------------------------------------------------------------------------

        #state_guard non changé

        #--------------------------------------------------------------------------

        def state_guard?(state_id)

        return false

        end

        #--------------------------------------------------------------------------

        # element_set non changé

        #--------------------------------------------------------------------------

        def element_set

        return []

        end

        #--------------------------------------------------------------------------

        #

        #--------------------------------------------------------------------------

        def plus_state_set

        return []

        end

        #--------------------------------------------------------------------------

        #

        #--------------------------------------------------------------------------

        def minus_state_set

        return []

        end

        #--------------------------------------------------------------------------

        # action non changé

        #--------------------------------------------------------------------------

        def actions

        return $data_enemies[@enemy_id].actions

        end

        #--------------------------------------------------------------------------

        # expérience donnée par une formule modifiable au gré du Maker

        # ici la formule est le produit de l'exp du monstre par le niveau du joueur 1

        #--------------------------------------------------------------------------

        def exp

        expe = $game_actors[1].level * $data_enemies[@enemy_id].exp

        return expe

        end

        #--------------------------------------------------------------------------

        # ● ゴールドの取得

        #--------------------------------------------------------------------------

        def gold

        return $data_enemies[@enemy_id].gold

        end

        #--------------------------------------------------------------------------

        # ● アイテム ID の取得

        #--------------------------------------------------------------------------

        def item_id

        return $data_enemies[@enemy_id].item_id

        end

        #--------------------------------------------------------------------------

        # ● 武器 ID の取得

        #--------------------------------------------------------------------------

        def weapon_id

        return $data_enemies[@enemy_id].weapon_id

        end

        #--------------------------------------------------------------------------

        # ● 防具 ID の取得

        #--------------------------------------------------------------------------

        def armor_id

        return $data_enemies[@enemy_id].armor_id

        end

        #--------------------------------------------------------------------------

        # ● トレジャー出現率の取得

        #--------------------------------------------------------------------------

        def treasure_prob

        return $data_enemies[@enemy_id].treasure_prob

        end

        #--------------------------------------------------------------------------

        # ● バトル画面 X 座標の取得

        #--------------------------------------------------------------------------

        def screen_x

        return $data_troops[@troop_id].members[@member_index].x

        end

        #--------------------------------------------------------------------------

        # ● バトル画面 Y 座標の取得

        #--------------------------------------------------------------------------

        def screen_y

        return $data_troops[@troop_id].members[@member_index].y

        end

        #--------------------------------------------------------------------------

        # ● バトル画面 Z 座標の取得

        #--------------------------------------------------------------------------

        def screen_z

        return screen_y

        end
Revenir en haut Aller en bas
deadcell
Trouvère Follet
Trouvère Follet
deadcell


Masculin
Nombre de messages : 625
Age : 35
Niveau Rpg Maker : Excellent Niveau
Jeux Préférés : Final Fantasy, Resident evil...
Date d'inscription : 21/03/2007

Monstre qui s'adapte à la force du joueur Empty
MessageSujet: Re: Monstre qui s'adapte à la force du joueur   Monstre qui s'adapte à la force du joueur EmptySam 28 Juil 2007, 20:16

Code:

        #--------------------------------------------------------------------------

        #

        #--------------------------------------------------------------------------

        def escape

        # ヒドゥンフラグをセット

        @hidden = true

        # カレントアクションをクリア

        self.current_action.clear

        end

        #--------------------------------------------------------------------------

        #

        #--------------------------------------------------------------------------

        def transform(enemy_id)

        # エネミー ID を変更

        @enemy_id = enemy_id

        # バトラー グラフィックを変更

        @battler_name = $data_enemies[@enemy_id].battler_name

        @battler_hue = $data_enemies[@enemy_id].battler_hue

        # アクション再作成

        make_action

        end

        #--------------------------------------------------------------------------

        #

        #--------------------------------------------------------------------------

        #scrïpt amélioré par RPG Advocate

       

        def make_action

        self.current_action.clear

        unless self.movable?

        return

        end

        available_actions = []

        rating_max = 0

        for action in self.actions

        n = $game_temp.battle_turn

        a = action.condition_turn_a

        b = action.condition_turn_b

        if (b == 0 and n != a) or

        (b > 0 and (n < 1 or n < a or n % b != a % b))

        next

        end

        if self.hp * 100.0 / self.maxhp > action.condition_hp

        next

        end

        if $game_party.max_level < action.condition_level

        next

        end

        switch_id = action.condition_switch_id

        if switch_id > 0 and $game_switches[switch_id] == false

        next

        end

        if exclude_pointless_actions(action)

        next

        end

        available_actions.push(action)

        if action.rating > rating_max

        rating_max = action.rating

        end

        end

        ratings_total = 0

        for action in available_actions

        ratings_total += action.rating

        end

        if ratings_total > 0

        choose_action = []

        for action in available_actions

        for j in 1..action.rating

        choose_action.push(action)

        end

        end

        enemy_action = choose_action[rand(choose_action.size - 1)]

        self.current_action.kind = enemy_action.kind

        self.current_action.basic = enemy_action.basic

        self.current_action.skill_id = enemy_action.skill_id

        self.current_action.decide_random_target_for_enemy

        end

        end

        # --------------------------------

        def exclude_pointless_actions(action)

        if action.kind == 0

        return false

        end

        if action.kind == 1

        s = action.skill_id

        if self.sp < $data_skills[s].sp_cost

        return true

        end

        if $data_skills[s].common_event_id > 0

        return false

        end

        if $data_skills[s].scope == 0 || $data_skills[s].scope == 1 ||

        $data_skills[s].scope == 2

        return false

        end

        if $data_skills[s].scope == 3 || $data_skills[s].scope == 4

        if $game_troop != nil

        fullhpflag = true

        statusflag = true

        for i in $game_troop.enemies

        if i.hp < i.maxhp && i.exist?

        fullhpflag = false

        end

        for j in $data_skills[s].plus_state_set

        if not i.state?(j) && i.exist?

        statusflag = false

        end

        end

        for j in $data_skills[s].minus_state_set

        if i.state?(j) && i.exist?

        statusflag = false

        end

        end

        end

        end

        if $data_skills[s].power == 0 && statusflag

        return true

        end

        if $data_skills[s].power < 0 && statusflag && fullhpflag

        return true

        end

        end

        if $data_skills[s].scope == 5 || $data_skills[s].scope == 6

        nonedeadflag = true

        if $game_troop != nil

        for i in $game_troop.enemies

        if i.dead? and not i.hidden

        nonedeadflag = false

        end

        end

        end

        if nonedeadflag

        return true

        end

        end

        if $data_skills[s].scope == 7

        if $game_troop != nil

        fullhpflag = true

        statusflag = true

        if self.hp < self.maxhp

        fullhpflag = false

        end

        for j in $data_skills[s].plus_state_set

        if not self.state?(j)

        statusflag = false

        end

        end

        for j in $data_skills[s].minus_state_set

        if self.state?(j)

        statusflag = false

        end

        end

        end

        if $data_skills[s].power == 0 && statusflag

        return true

        end

        if $data_skills[s].power < 0 && statusflag && fullhpflag

        return true

        end

        end

        end

        return false

        end

        end


Manuel d'utilisation:



Voilà les choses qui changeront :

dans la création d'un monstre vous aviez :

PV max

PM max*

Force

Defence*

Agilité *

Intelligence*

Attaque

Def physique

Def magique

Esquive *



Légende:



Les données qui ont un * devant restent inchangées, vous choisissez ce
que vous voulez, elles resteront stables tout au long au jeu.



Maintenant voilà ce que deviennent les autres valeurs :



PV max : c'est le pourcentage de la somme des PV max de l'équipe.



Je m'explique : vous avez 2 héros de PV maximums 450 et 500.

La somme est 950. Si vous mettez 10 dans les champ "PV max" du monstre" ça donnera :

950*10/100 (10% de la somme) = 95


Rien de vous empèche de mettre des grands nombres comme 200% pour un
boss, mais je vous préviens : 80% cest déjà du gros monstre dure à
battre !

Force : cette fois c'est le pourcentage de la moyenne des forces de l'équipe.

Exemple : 2 héros de forces 30 et 50. Moyenne : 40

Vous placez par exemple 50 dans le champ "Force" du monstre, vous obtenez 40*50/100 = 20


L'attaque, la défence physique et la défence magique fonctionnent sur
le même principe que la force, avec une moyenne des données de
l'équipe, et non pas une somme comme pour les PVmax.



Plus:



Précision : pour l'expérience donnée par le monstre, elle est égale au
produit de l'expérience que vous avez inscrit dans le champs
"expérience" du monstre, et du niveau du héro n°1 (uniquement).

Mais cette relation est modifiables, si elle ne vous plait pas demandez

moi je vous la modifierai.

Exemple : un héro de level 34 combat un monstre censé donne 10 en exp, ça donne un total de 10*34 = 340 pts d'expérience.



Ne mettez donc pas de trop grand nombre, de toute façon, puisqu'il s'adapte :

au niveau 1 : le héro tue le monstre et gagne 10 pts

au niveau 34 : le héro tu le monstre et gagne 340 pts

ça parait normal, puisque plus le niveau monte, plus il faut de points pour passer au suivant.

ATTENTION : ce scrïpt implique de revoir TOUS
les monstres que vous avez déjà créé pour votre jeu, car les valeurs de
HP, SP, etc. ne sont pas des valeurs réelle, mais des vecteurs
d'adaptation.
Revenir en haut Aller en bas
Omega Arma
Jongleur Itinérant
Jongleur Itinérant
Omega Arma


Masculin
Nombre de messages : 67
Age : 33
Projet(s) en cours : FF : Heaven's & Darkness's Processus (experimental)
Niveau Rpg Maker : Novice mais bon mappeur
Jeux Préférés : Gears of War, Final Fantasy, Zelda, etc...
Date d'inscription : 23/08/2007

Monstre qui s'adapte à la force du joueur Empty
MessageSujet: Re: Monstre qui s'adapte à la force du joueur   Monstre qui s'adapte à la force du joueur EmptyJeu 23 Aoû 2007, 13:36

j'ai testé se script et il ne s'avere pas genial => les monstres ont une sacré barre de vie
Revenir en haut Aller en bas
http://omniborg.blog.jeuxvideo.com
Don Estebahn
Maître du Savoir
Maître du Savoir
Don Estebahn


Masculin
Nombre de messages : 2145
Age : 33
Jeux Préférés : Soul Reaver, Morrowind, Way of the Samurai
Date d'inscription : 18/02/2007

Monstre qui s'adapte à la force du joueur Empty
MessageSujet: Re: Monstre qui s'adapte à la force du joueur   Monstre qui s'adapte à la force du joueur EmptyJeu 23 Aoû 2007, 13:49

Jt'avoue que je l'ai pas testé perso ^^' mais en parcourant vite fait le poste de deadcell, j'ai vu qu'il y avait un mode d'emploi permettant de configurer à quel point on voulait que les stats des monstres augmentent.
T'as essayé de bidouiller ça un peu pour les rendre moins coriaces? (t'as peut-être laissé les valeurs réelles pour les monstres, ça expliquerait ta réflexion)
Revenir en haut Aller en bas
Omega Arma
Jongleur Itinérant
Jongleur Itinérant
Omega Arma


Masculin
Nombre de messages : 67
Age : 33
Projet(s) en cours : FF : Heaven's & Darkness's Processus (experimental)
Niveau Rpg Maker : Novice mais bon mappeur
Jeux Préférés : Gears of War, Final Fantasy, Zelda, etc...
Date d'inscription : 23/08/2007

Monstre qui s'adapte à la force du joueur Empty
MessageSujet: Re: Monstre qui s'adapte à la force du joueur   Monstre qui s'adapte à la force du joueur EmptyJeu 23 Aoû 2007, 14:58

peut etre mais j'y reflechit et si cela se fait pour tous les monstres alors il n'y aura pas vraiment de boss ^^
Revenir en haut Aller en bas
http://omniborg.blog.jeuxvideo.com
Don Estebahn
Maître du Savoir
Maître du Savoir
Don Estebahn


Masculin
Nombre de messages : 2145
Age : 33
Jeux Préférés : Soul Reaver, Morrowind, Way of the Samurai
Date d'inscription : 18/02/2007

Monstre qui s'adapte à la force du joueur Empty
MessageSujet: Re: Monstre qui s'adapte à la force du joueur   Monstre qui s'adapte à la force du joueur EmptyJeu 23 Aoû 2007, 15:30

Tss... ^^ pourquoi veux-tu absolument trouver un défaut à ce script?

Vu qu'on peut choisir de combien de % un monstre est plus fort ou plus faible que les héros, il suffit de donner de très gros pourcentages de stats au bestiau dont on veut faire un boss (du genre 200% de HP), et tu devrais sentir la différence avec le menu fretin :p.
Bref, les stats des monstres ne sont pas uniformes, c'est toi qui définit ça pour chacun individuellement, de la façon que tu veux... exactement comme dans le système par défaut.

Du coup personellement, je vois pas vraiment d'inconvénient à ce script, la question est juste de trouver un équilibre dans nos choix pour leurs stats.
Revenir en haut Aller en bas
Omega Arma
Jongleur Itinérant
Jongleur Itinérant
Omega Arma


Masculin
Nombre de messages : 67
Age : 33
Projet(s) en cours : FF : Heaven's & Darkness's Processus (experimental)
Niveau Rpg Maker : Novice mais bon mappeur
Jeux Préférés : Gears of War, Final Fantasy, Zelda, etc...
Date d'inscription : 23/08/2007

Monstre qui s'adapte à la force du joueur Empty
MessageSujet: Re: Monstre qui s'adapte à la force du joueur   Monstre qui s'adapte à la force du joueur EmptyJeu 23 Aoû 2007, 15:57

a c'est cool je pensai qu'il mettai un pourcentage pour tous les monstres
Revenir en haut Aller en bas
http://omniborg.blog.jeuxvideo.com
Contenu sponsorisé





Monstre qui s'adapte à la force du joueur Empty
MessageSujet: Re: Monstre qui s'adapte à la force du joueur   Monstre qui s'adapte à la force du joueur Empty

Revenir en haut Aller en bas
 
Monstre qui s'adapte à la force du joueur
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Dragon Force
» [resolu] en rapport au monstre

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Fusion :: BANQUE DU CODE :: Antre des Scripts :: Combat-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser