Bienvenue visiteur !
|
Statistiques
Liste des membres
Contact
Mentions légales
233 connectés actuellement
30741558 visiteurs depuis l'ouverture
1931 visiteurs aujourd'hui
Partenaires
Tous nos partenaires
Devenir partenaire
|
Dardard -
posté le 04/08/2016 à 10:54:16 (26 messages postés)
| | Domaine concerné: Evènement commun Logiciel utilisé: RPG Maker XV Ace Bonjour.
J'ai pour base un projet avec un personnage principal qui est accompagné d'esprits qui peuvent changer lors de l'aventure. Cela j'ai su le gérer.
Lorsqu'un esprit bien spécifique accompagne le héros, je souhaiterai activé un effet variable de l'attaque standard du héros. Mon but est que lors d'une attaque standard, il y a 20% de chance que l'attaque est accompagné d'un sort. J'ai testé avec l'activation de forcer une action sur le héros mais rien. J'ai surement pas trouver la bonne méthode et je reste un amateur.
Pour 'lacivation et suppression de sort a choisir dans la liste, j'ai su m'en débrouiller mais la je sais pas. Est-ce lié à une double attaque ou autre. Mystère pour moi.
En vous remerciant par avance de me guider vers la solution, si cela ne devient pas trop complexe.
A+
Dardard
|
arttroy -
posté le 04/08/2016 à 12:55:39 (2394 messages postés)
| Just working | Aaaaah un sujet que j'avais pas encore croisé ^^ Voyons voir...
Donc déjà quelques questions :
- Tes esprits sont des personnages que tu ajoutes et ôte de l'équipe ou ce sont des objet/armures que tu équipes sur tes personnages ?
- Le sort lancé est il aléatoire ou fait il partie d'une liste définie par avance ?
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Dardard -
posté le 04/08/2016 à 18:28:22 (26 messages postés)
| | jsuis parti dans le principe d'esprit que je peux invoqué au choix du joueur. Ils sont comme des heros qui upgrade ( si on les utilise ) J'ai le héros et 5 esprits différents (qui se supporte + ou -, en gros en fonction de la présence d'un esprit, certains partent automatiquement - vive les gueguerre entre élément^^)
J'ai pour principe que le héros absorbe les pouvoirs des esprits qui l'accomapgne dans les combats avec fusion de sort connu de l'esprit si combinaison ( genre esprit de l'eau + esprit du vent, le heros prend un sort des deux esprits + une combinaison des deux élements). Les compétences sont connu et perdu si l'esprit en question est dans l'équipe.
Les changements volontaires d'esprits ainsi que les automatismes de départ d'esprits + les compétences, j'ai su les gérer via les conditions. Ce que je souhaite, c'est apporter un talent en + sur l'arme du héros. (meme si elle peut deja avoir un élément attribué dessus)
Si héros tape un ennemi, il prend le coup standard et via variation, je souhaite qu'un sort en + s'active, genre attaque feu ( qui est dans la liste des magies ). Ca revient a une double attaque. Cette capacité serait même peut être attribué sur des armes avec éléments spécifique. Je ne peux pas que cela s'active tout le temps par contre, genre 1fois sur 5.
Edit : On peux aussi faire comme dans Golden sun, avec une attaque speciale qui s'active de tps en tps en + du coup critique habituel. C'est peut être plus simple à gérer.
|
arttroy -
posté le 05/08/2016 à 13:40:52 (2394 messages postés)
| Just working | Ok, Ok je vois ce que tu veux faire, donc en gros il faudrait que le héros si il est équipé d'un esprit lance une attaque en rapport avec le-dit esprit une fois sur 5 en plus de l'attaque classique... Je vais y réfléchir...
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Dardard -
posté le 05/08/2016 à 17:28:54 (26 messages postés)
| | Je te remercie par avance.
Dire qu'il est équipé est un peu fort, disons accompagné ^^ ( a ce moment la, l'esprit est considéré comme un héros qui se controle librement et a ces propres attaques. Ce n'est pas comme les djinns dans Golden sun ou ceux -ci peuvent etre considéré comme des equipements.
Le but est d'avoir un effet supplémentaire possible lors d'une attaque standard ( en + ou qui remplace)
|
Le mirudien -
posté le 05/08/2016 à 19:36:59 (237 messages postés)
| | Pourquoi ne pas as essayer en evenement commun ?
Tu place un evenement commun dans la compétence "attaque".
Dans l'evenement, tu mets une condition "tel esprit présent dans l'équipe"
Ensuite tu lance une variable aléatoire comprise entre 1 et 100, si le résultat est inférieur ou égal à 20 (soit 20%), tu fais "forcer une action" afin que l'esprit ou un autre perso présent lance une compétence de ton choix.
|
Projet Miruda http://www.rpg-maker.fr/index.php?page=forum&id=24876Démo Miruda https://le-mirudien.itch.io/miruda-les-pierres-de-ruulna |
arttroy -
posté le 06/08/2016 à 06:35:18 (2394 messages postés)
| Just working | Hey c'est pas bête du tout comme idée ! Ça fonctionne nickel comme ça.
Faut juste trouver une condition pour éviter que les ennemis puissent l'utiliser (ben oui les moches aussi ils utilisent la compétence attaque ^^) parce que la condition "si l'esprit est dans l'équipe ne suffit pas".
Alors tu duplique la compétence "attaque" de base et tu utilise la seconde pour les ennemis comme ça plus de souci ^^.
Donc dans l'ordre :
- duplique la compétence attaque et attribue la seconde à tous les ennemis, utilise la première pour appeler un évènement commun "sort esprit".
- va dans l'onglet évènement commun et créé "sort esprit" (pas d'appel, pas d'interrupteur de déclenchement).
- créé une variable "lancer_random" et tu la rend égale à un nombre entre 1 et 100
- si le résultat est inférieur ou égal à 20, tu force le lancer du sort correspondant à l'esprit (condition)
- là tu vérifie que ton esprit est présent dans l'équipe
- lancement du sort si la précédente condition est vérifiée.
Maintenant tu n'as plus qu'à dupliquer la dernière partie pour les autres esprits et le tour est joué. Merci le Mirudien ^^.
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Dardard -
posté le 08/08/2016 à 10:21:11 (26 messages postés)
| | Merci de m'avoir proposé une solution.
J'ai tenté de le progammer avec 60% de chance, afind e tester plus rapidement l'effet mais je dois avoir loupé un truc car ca ne marche pas. Je vous montre ce que j'ai compris via fichier image. Me dire ce que j'ai mal saisi.
Spoiler (cliquez pour afficher)
Je pense que la commande attaque sur les perso principal ne se programme pas mais automatique donc c'est la que je dois trouver pour appliquer au héros ma copie d'attaque que j'ai nommé attaque héros et non la standard. Maintenant j'ai pas trouver ou changer cela. Après c'est peut être pas ca. J'ai vu que dans la nota en bas a droite, ya une note avec le texte "La compétence #1 sera utilisée quand vous
sélectionnerez la commande [Attaque].", c'est ptete lié a ca.
En vous remerciant.
|
Le mirudien -
posté le 08/08/2016 à 11:35:58 (237 messages postés)
| | Quand Arttroy proposait de créer une nouvelle compétence pour l'attaque principale, il parlait pour l'affecter dans les compétences des ennemis, les personnages joueurs doivent conserver la 1ère compétence pour l'attaque principale.
Sinon, l'evenement ne me semble pas mauvais.
Astuce si tu veux savoir si un evenement commun "se lit" dans tes tests, ajoute dedans une fenêtre de dialogue, par exemple ajoute un texte avec ceci avant la condition de ton event, après la définition de ta variable
"Test : \v[001]" , si tu vois un message qui s'affiche avec la valeur de ta variable à l'exécution de l'attaque, tu sauras que l'event est bien lu par le programme, et tu verras même la valeur tirée par le programme pour ta variable.
|
Projet Miruda http://www.rpg-maker.fr/index.php?page=forum&id=24876Démo Miruda https://le-mirudien.itch.io/miruda-les-pierres-de-ruulna |
Dardard -
posté le 08/08/2016 à 12:07:12 (26 messages postés)
| | Ca ou cela va me poser problème, c'est que mon héros n'est pas tout seul. Il y a les esprits a ces cotés ( qui deviennent des joueurs jouables comme le heros) Ils ont aussi l'option attaque. Il ne faudrait pas qu'elle active l'évènement commun sinon le héros principal va souvent attaquer ^^
|
arttroy -
posté le 08/08/2016 à 13:35:36 (2394 messages postés)
| Just working | Ah ouais j'avais omis ce point de détail, les esprits sont des personnages avec une classe esprit donc il utiliseront la compétence attaque. OK... Passage en mode script !
Alors tu garde ton event commun, vire juste la partie "sinon" de ta première condition avec l'attaque.
Tu créé ta nouvelle compétence attaque en copiant juste la première dans une case vide (note le numéro id de la compétence créée on va en avoir besoin).
Va dans le script Game_BattlerBase ligne 707 tu as ça :
1
2
3
4
5
6
7
| #--------------------------------------------------------------------------
# * Get Skill ID of Normal Attack
#--------------------------------------------------------------------------
def attack_skill_id
return 1
end
|
Met des # devant toutes les lignes où il n'y en a pas ( de def à end) tout va passer en vert (= commentaire en script) c'est normal.
Rajoutes une ligne et copie ça :
1
2
3
4
5
6
7
8
9
10
11
| #--------------------------------------------------------------------------
# * Get Skill ID of Normal Attack
#--------------------------------------------------------------------------
def attack_skill_id
if $game_party.leader
return 1
else
return x
end
end
|
x étant le numéro id de la compétence attaque que tu aura créée. Comme ça seul le leader de l'équipe se servira de l'attaque d'origine, les autres personnages se serviront de la nouvelle attaque créée.
Tu n'as plus qu'à attribuer cette nouvelle compétence attaque à tous les ennemis (via l'onglet ennemi de la BDD, zone action). Ça devrait fonctionner comme ça.
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Dardard -
posté le 08/08/2016 à 18:12:41 (26 messages postés)
| | J'ai testé et réussi. Cela fonctionne bien. je te remercie.
Je vais être embétant par contre, navré.
Si je saisi bien, cela fonctione pour toute personne qui active la compétence attaque tant qu'il se trouve le 1er dans la formation. De ce fait, si dans l'histoire, je me trouve à inverser la position du héros et d'un esprit ou pour x raison, je met au placard sur un event le perso principal et garde dans l'équipe seulement les esprits impactés dans la condition, l'event commun s'active.
En doublant la condition héros + esprit nécessaire pour activé le sort, j'enleve l'un des problèmes. Par contre, si je modifie la formation en métant par exemple le héros en dernier, c'est l'esprit qui activera une attaque du héros qui a ptete de son coté fait tout autre.
Exemple
Formation : 1 esprit / 2 héros
esprit fait commande attaquer / héros fait commande magie
L'esprit attaque, l'évent commun s'active et fait attaquer le héros alors qu'il a n'a pas fait la commande attaquer. Lui fait son sort magique apres.
Pas de chance, les conditions était respecté, esprit présent et commande attaquer utilisé.
ya t'il je ne sais comment un moyen , même via script, de faire la commande attaque en la programmant sur un héros bien précis.
Exemple :
- attaque id 1 sur héros id 1
- attaque id 129 (exemple) sur héros id 2/3/4/5/6
|
arttroy -
posté le 09/08/2016 à 13:49:33 (2394 messages postés)
| Just working | Remplace
par
Ca devrait le faire.
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Dardard -
posté le 09/08/2016 à 18:29:21 (26 messages postés)
| | j'ai mis en place ton code et cela a pour impact que tout personnage qui fait l'action "attaquer" active l'event commun.
J'ai pensé a mettre le n° du héros à la place du 0 ecrit en rouge mais lorsque l'esprit attaque, ca active tj l'évent.
J'ai ca en code actuellement :
1
2
3
4
5
6
7
8
9
10
11
| #--------------------------------------------------------------------------
# * Get Skill ID of Normal Attack
#--------------------------------------------------------------------------
def attack_skill_id
if $game_party.members[1]
return 1
else
return 129
end
end
|
|
arttroy -
posté le 10/08/2016 à 11:54:55 (2394 messages postés)
| Just working |
Défini le second membre de l'équipe, en fait il faut commencer ton compte de 0 inclus donc c'est bien $game_party.members[0] qu'il faut. Par contre c'est bizarre que ça ne fonctionne pas alors que ça marchait avec $game_party.leader.
Sinon essaie $game_party.battle_members[0]
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Dardard -
posté le 10/08/2016 à 14:38:16 (26 messages postés)
| | Je suis navré mais cela n'a rien changé avec $game_party.battle_members[0]
Le second héros ( mon esprit) fait également activé le sort aditionnel.
La j'ai un doute du fait que tu m'a pas dit + haut de supprimer certaines lignes de code, je te met ce qu'il y a autour.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| #--------------------------------------------------------------------------
# * Determine if Equippable
#--------------------------------------------------------------------------
def equippable?(item)
return false unless item.is_a?(RPG::EquipItem)
return false if equip_type_sealed?(item.etype_id)
return equip_wtype_ok?(item.wtype_id) if item.is_a?(RPG::Weapon)
return equip_atype_ok?(item.atype_id) if item.is_a?(RPG::Armor)
return false
end
#--------------------------------------------------------------------------
# * Get Skill ID of Normal Attack
#--------------------------------------------------------------------------
def attack_skill_id
return 1
end
#--------------------------------------------------------------------------
# * Get Skill ID of Normal Attack
#--------------------------------------------------------------------------
def attack_skill_id
if $game_party.battle_members[0]
return 1
else
return 129
end
end
#--------------------------------------------------------------------------
# * Get Skill ID of Guard
#--------------------------------------------------------------------------
def guard_skill_id
return 2
end |
Je ne dois pas supprimer celle ci complétement ?
1
2
3
4
5
6
| #--------------------------------------------------------------------------
# * Get Skill ID of Normal Attack
#--------------------------------------------------------------------------
def attack_skill_id
return 1
end |
Edit : En faite j'ai testé, ca change rien ^^'
|
arttroy -
posté le 10/08/2016 à 16:39:04 (2394 messages postés)
| Just working | Théoriquement je t'avais dit de mettre un # devant ces lignes là (4 à 6 dans ton exemple ci-dessus) mais de toutes façons ça changera rien normalement.
Est ce que tu pourrais m'envoyer une copie de ton projet pour que je regarde ça en situation stp ?
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Dardard -
posté le 10/08/2016 à 17:47:40 (26 messages postés)
| | Je met le lien de téléchargement du fichier avec les mêmes données d'évent communs ( juste les attaques différentes et personnages )
Spoiler (cliquez pour afficher)
Je te remercie du temps que tu prend pour trouver la solution, surtout que ca peut même me permettre d'autre truc qui me passe par la tête ^^
|
arttroy -
posté le 12/08/2016 à 10:27:13 (2394 messages postés)
| Just working | Ok... Remet le script Game_BattlerBase comme c'était au départ donc :
1
2
3
4
5
6
| #--------------------------------------------------------------------------
# * Get Skill ID of Normal Attack
#--------------------------------------------------------------------------
def attack_skill_id
return 1
end |
juste sous cette def tu rajoutes ça :
1
2
3
4
5
6
7
| #--------------------------------------------------------------------------
# * Get Skill ID of copy for Normal Attack
#--------------------------------------------------------------------------
def attack_skill_id_2
return 128
end
|
Ensuite tu vas dans le script Game_BattlerBase ligne 492 et remplace :
1
2
3
4
5
6
7
| #--------------------------------------------------------------------------
# * Apply Normal Attack Effects
#--------------------------------------------------------------------------
def attack_apply(attacker)
item_apply(attacker, $data_skills[attacker.attack_skill_id])
end
|
par :
1
2
3
4
5
6
7
8
9
10
11
| #--------------------------------------------------------------------------
# * Apply Normal Attack Effects
#--------------------------------------------------------------------------
def attack_apply(attacker)
if attacker == $game_party.members[0]
item_apply(attacker, $data_skills[attacker.attack_skill_id])
else
item_apply(attacker, $data_skills[attacker.attack_skill_id_2])
end
end
|
Ca fonctionne j'ai testé ^^ Tu n'as plus qu'à ajouter les autres conditions pour tes autres esprits dans ton event commun et le tour est joué
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Dardard -
posté le 12/08/2016 à 12:20:38 (26 messages postés)
| | Le second code se trouve dans Game_Battler et non Game_BattlerBase ^^ je lai trouvé en fouillant
Pour être sur de tout saisir car cela ne marche pas pour moi, l'id_2 correspond bien au n° du second héros dans la liste des héros ?
J'ai repris le même fichier que toi et appliquer tout ca ^^' jdois pas être bon ou je pige pas tout car cela n'a pas marché. Jpense que c'est lié à ce texte la que tu as dit : Citation: juste sous cette def tu rajoutes ça :
|
Voici ce qui est programmé : (tu devrais voir mon erreur je pense)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| #--------------------------------------------------------------------------
# * Determine if Equippable
#--------------------------------------------------------------------------
def equippable?(item)
return false unless item.is_a?(RPG::EquipItem)
return false if equip_type_sealed?(item.etype_id)
return equip_wtype_ok?(item.wtype_id) if item.is_a?(RPG::Weapon)
return equip_atype_ok?(item.atype_id) if item.is_a?(RPG::Armor)
return false
end
#--------------------------------------------------------------------------
# * Get Skill ID of Normal Attack
#--------------------------------------------------------------------------
def attack_skill_id
return 1
end
#--------------------------------------------------------------------------
# * Get Skill ID of copy for Normal Attack
#--------------------------------------------------------------------------
def attack_skill_id_2
return 128
end
#--------------------------------------------------------------------------
# * Get Skill ID of Guard
#--------------------------------------------------------------------------
def guard_skill_id
return 2
end |
et pour l'autre :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| #--------------------------------------------------------------------------
# * Calculate Critical Rate of Skill/Item
#--------------------------------------------------------------------------
def item_cri(user, item)
item.damage.critical ? user.cri * (1 - cev) : 0
end
#--------------------------------------------------------------------------
# * Apply Normal Attack Effects
#--------------------------------------------------------------------------
def attack_apply(attacker)
if attacker == $game_party.members[0]
item_apply(attacker, $data_skills[attacker.attack_skill_id])
else
item_apply(attacker, $data_skills[attacker.attack_skill_id_2])
end
end
#--------------------------------------------------------------------------
# * Apply Effect of Skill/Item
#--------------------------------------------------------------------------
def item_apply(user, item)
@result.clear
@result.used = item_test(user, item)
@result.missed = (@result.used && rand >= item_hit(user, item))
@result.evaded = (!@result.missed && rand < item_eva(user, item))
if @result.hit?
unless item.damage.none?
@result.critical = (rand < item_cri(user, item))
make_damage_value(user, item)
execute_damage(user)
end
item.effects.each {|effect| item_effect_apply(user, item, effect) }
item_user_effect(user, item)
end
end |
|
arttroy -
posté le 13/08/2016 à 06:59:35 (2394 messages postés)
| Just working | Ah bien vu pour le script Game_Battler je m'étais trompé ^^ Désolé
De ce que je vois c'est bien comme j'avais fait, tu as bien pensé à virer la def d'origine donc maintenant le seul truc qui peut faire que ça ne fonctionne pas c'est que la configuration de tes persos n'est pas la même.
J'ai fait plusieurs essais pour vérifier que c'était pas une histoire de proba qui faisaient que feu ne se lançait pas et pour 10 combats pas une seule fois il ne s'est lancé...
Pour ton id ça marche comme ça :
1er perso = $game_party.members[0] ou $game_party.leader
2eme perso = $game_party.members[1]
3eme perso = $game_party.members[2]
...
Edit : Ah mais ok... En fait ça fonctionne tant que l'event n'est pas activé... Une fois que c'est le cas ça le lance pour tous ceux qui attaquent, retour à la case départ ^^. Là par contre du coup je vois pas comment faire...
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Dardard -
posté le 13/08/2016 à 09:00:16 (26 messages postés)
| | J'ai retenté de mettre avec le code leader, mais en faite, ca l'active aussi pour les autres perso ^^' On va oublier alors pour activé une attaque additionnelle quand un perso est présent ^^ ( sauf si qqun d'autre à la solution miracle ^^)
Sinon, pur hasard, tu saurai le faire pour une arme ? Un peu comme dans golden sun ? Ca revient au même sauf c'est lié spécifiquement à un equipement. Bien sur, faut pas que les autres perso l'active ^^ Seulement le possesseur de l'arme ( qui sera que le héros pour moi)
Dans tous les cas, encore merci de l'être intéressé par mon soucis
|
Le mirudien -
posté le 13/08/2016 à 10:46:57 (237 messages postés)
| | Je me connais pas en script, mais ll faudrait alors tenter d'ajouter une condition, quand ton personnage fait une attaque, il faudrait que l'attaque donne un statut à l'utilisateur. (meme un statut sans nom et sans icone afin que cela ne se remarque pas dans le jeu).
Tu ajoutes comme condition, en plus de la présence du perso esprit, que le héro principal doit avoir le statut afin de lancer l'attaque additionnel. (Un statut qui ne tient qu'une action, le statut est retiré une fois l'attaque effectuée)
Comme ça, si l'esprit attaque, il recevra le statut, mais l'attaque additionnel ne se jouera pas, car il faut que le héros principal soit affecté pour la lancer
Si le héros attaque il aura le statut, et la condition sera remplie pour l'execution.
Comment faire ça en script ? La je laisse les pro s'exprimer
|
Projet Miruda http://www.rpg-maker.fr/index.php?page=forum&id=24876Démo Miruda https://le-mirudien.itch.io/miruda-les-pierres-de-ruulna |
Dardard -
posté le 13/08/2016 à 12:14:07 (26 messages postés)
| | Tu doit pouvoir dans le meme combat pour l'activer plusieurs fois si celui ci perdure et que tu as du bol au niveau de la variable.
Actuellement c'est mon héros qui a des statue activé en fonction des esprits présents. Jme suis dit que ca servira a qque chose un jour.
Maintenant je sais pas si ca aidera pour activer l'évent sans pour autant empêcher les autres heros de l'activer.
| Index du forum > Entraide > [RESOLU] [RPG Maker XV Ace] Activation de sort lors d'une attaque
|
|
|