Sujet n°2708
Posté par
Sphinx le
26 Jan - 12:46 (2009)Titre :
Intégrer l'évolution en cours de matchCe tutoriel a pour objet de vous permettre d'intégrer l'évolution en cours de combat. Ainsi, les pokémons de vos joueurs pourront évoluer à chaque fin de manche !
Mais procédons dans l'ordre :
Dans le script Pokemon_Battle_Trainer :remplacez : Code: |
wait_hit if alive > 1 |
par :
Code: |
if alive > 1 wait_hit else wait(40) end if alive > 1 |
puis ajoutez :
Code: |
# Evolution for actor in @evolve_checklist info = actor.evolve_check if info != false scene = Pokemon_Evolve.new(actor, info, @z_level + 200) scene.main end end # Reset evolve_checklist & have_fought @evolve_checklist = [] |
à la place de :
Code: |
# Reset have_fought |
ensuite, inversez ces deux lignes :
Code: |
exp_battle $battle_var.result_win = true |
vous devriez obtenir :
Code: |
$battle_var.result_win = true exp_battle |
Dans le script Pokemon_Evolve :
remplacez :
par :
Code: |
if $battle_var.in_battle wait(40) else Graphics.freeze end |
Dans le script Pokemon_Skill_Learn :
remplacez :
Code: |
if decisionbis #Oui draw_text(name + " n'a pas appris",skill+".") wait_hit @done = true @return_data = false return |
par :
Code: |
if decisionbis #Oui draw_text(name + " n'a pas appris",skill+".") wait(40) draw_text("","") @done = true @return_data = false return |
Voilou =) Désormais, vous devriez avoir une parfaite évolution en cours de match ! =)
Posté par
Sphinx le
26 Jan - 19:00 (2009)ah oui jvois d'où ca vient :
Sphinx a écrit: |
Dans le script Pokemon_Battle_Trainer :remplacez : Code: | wait_hit if alive > 1 |
par :
Code: | if alive > 1 wait_hit else wait(40) end |
|
En fait, c'est remplacer :
Code: |
wait_hitif alive > 1 |
par :
Code: |
if alive > 1 wait_hit else wait(40) end if alive > 1 |
>> ptite erreur lors de la rédaction du tuto ^_^" je corrige
PS : testé & fonctionnel chez moi =)
Edit :
autre correction :
Remplacer :
Code: |
if $battle_var.result_win |
par :
Code: |
if not($battle_var.result_win) |
PS : premier post corrigé
Posté par
Pαlвσlѕку le
26 Jan - 19:05 (2009)J'ai pas testé mais venant de toi je pense qu'il n'y a pas de problème. On verra ce qu'en pense les autres membres du forum.
Posté par
PiVa le
26 Jan - 21:20 (2009)Je testerai quand j'ai le temps
(Mercredi) J'ai hâte de voir
k:
Posté par
Pαlвσlѕку le
26 Jan - 21:21 (2009)Moi je test que ce que je compte intégrer car après c'est la galère pour tout remettre comme avant.
Posté par
Angi-MK le
27 Jan - 04:00 (2009)Voilà ce que ça donne, il y a un décalage, sinon ça marche
Posté par
Pαlвσlѕку le
27 Jan - 07:27 (2009)Sphinx n'a pas encore trouver la solution au problème.
Posté par
Angi-MK le
27 Jan - 15:51 (2009)Ouais mais a parement KROSK oui, j'aime poster les images, c'est plus explicite
Posté par
Sphinx le
28 Jan - 19:25 (2009)apparemment
Quelqu'un a testé ?
Posté par
Angi-MK le
2 Fév - 18:25 (2009)Le pokemon est maintenant décalé vers le bas
Sinon j'ai noté un petit problème, un POKEMON au-dessus de son niveau d'évolution,
exemple un SALAMECHE niveau 25, aura droit à l'anim d'évolution à chaque expérience reçu, et plus à chaque niveau !
Imaginé le truc chia** si on veux avoir un SALAMECHE niveau 100
Posté par
Pαlвσlѕку le
2 Fév - 18:37 (2009)Bon je vais testé et je vais voir ce que j'en pense. J'en profiterai pour corriger le bug du back, si j'y arrive.
Posté par
Sphinx le
2 Fév - 18:43 (2009)ah ? A chaque gain d'expérience ? ^_^' J'ai du mal placer le code, je corrige ca de suite
Posté par
Pαlвσlѕку le
2 Fév - 19:00 (2009)Sphinx, dans le premier morceau à remplacer, il y a ça :
Code: |
@actor_sprite.bitmap = RPG::Cache.battler(@actor.battler_back, 0) |
Il faut rajouter ces deux lignes en dessous, pour que le back ne soit plus décalé.
Code: |
@actor_sprite.bitmap = RPG::Cache.battler(@actor.battler_back, 0) @actor_sprite.ox = @actor_sprite.bitmap.width / 2 @actor_sprite.oy = @actor_sprite.bitmap.height |
Vérifie si c'est bon (chez moi c'est OK), puis si c'est bon, corrige dans ton tuto.
Posté par
Sphinx le
4 Fév - 12:27 (2009) ok jv vérif ca, et jte dis après (mais déjà je finis avec 4G+ lol)
edit : je confirme, ca marche nickel pour reptincel (un des pokés qui buggait) donc je viens de mettre à jour le 1° post =)
Posté par
Néva le
12 Juin - 16:30 (2009)Le script marche très bien, bravo à ceux qui l'ont fait, cela rend le jeu bien plus vivant !
Par contre, lorsqu'un Pokémon évolue en combat et que l'on revient sur la carte, la musique reste celle du combat et n'est pas celle de la carte. Quelqu'un saurait corriger cela ? Merci !
Posté par
Sphinx le
20 Juil - 14:45 (2009)Maj - correction du bug du pokémon qui évolue même quand il devrait pas. Pour ceux qui n'avaient pas encore installé ce système mais qui sont intéressés, cf le premier post (il est corrigé) pour l'
installationPour les autres, voici la
correctionDans Pokemon_Battle_TrainerRemplacez toute la méthode exp_battle par ca : Code: |
def exp_battle @actor_status.z = @z_level + 15 # Réduction de liste $battle_var.have_fought.uniq! for index in $battle_var.have_fought actor = $pokemon_party.actors[index] if actor.dead? $battle_var.have_fought.delete(index) end end number = $battle_var.have_fought.length @enemy.skill_effect_reset @enemy.reset_stat_stage if @evolve_checklist == nil @evolve_checklist = [] end if @money_rate == nil @money_rate = 1 end # Recherche de paramètres type = 1.3 exp_share_number = 0 for pokemon in $pokemon_party.actors if not(pokemon.dead?) and Item.data(pokemon.item_hold)["expshare"] exp_share_number += 1 end end for actor in $pokemon_party.actors if actor.dead? next end amount = nil if $battle_var.have_fought.include?(actor.party_index) amount = actor.exp_calculation(@enemy.battle_list, @enemy.level, number, type, exp_share_number) # Tag objet if Item.data(actor.item_hold)["amuletcoin"] @money_rate = 2 end end if Item.data(actor.item_hold)["expshare"] and not($battle_var.have_fought.include?(actor.party_index)) and not(actor.dead?) amount = actor.exp_calculation(@enemy.battle_list, @enemy.level, number, type, exp_share_number, 0) end if amount != nil and not($pokemon_capturer) actor.skill_effect_reset actor.reset_stat_stage actor.add_bonus(@enemy.battle_list) draw_text(actor.given_name + " a gagné", amount.to_s + " points d'expérience!") Graphics.update wait_hit for i in 1..amount actor.add_exp_battle(1) if actor.level_check actor.level_up(self) if not(@evolve_checklist.include?(actor)) @evolve_checklist.push(actor) end end if actor == @actor if @actor.exp_list[@actor.level+1] != nil and @actor.level < MAX_LEVEL divide = (@actor.exp_list[@actor.level+1]-@actor.exp_list[@actor.level])/192 if divide == 0 divide = 1 end if (@actor.exp - @actor.exp_list[@actor.level])%divide == 0 @actor_status.exp_refresh Graphics.update end end end end else $pokemon_capturer = false end end @actor_status.refresh Graphics.update # Evolution for actor in @evolve_checklist info = actor.evolve_check if info != false scene = Pokemon_Evolve.new(actor, info, @z_level + 200) scene.main end end # Reset evolve_checklist & have_fought @evolve_checklist = [] $battle_var.have_fought = [@actor.party_index] end |
Posté par
Néva le
26 Juil - 11:06 (2009)Merci Sphinx pour ton aide, on a fait quelques modifications pour adapter ton script à la version de psp que l'on a et qui n'est pas PS4G+. ça marche très bien maintenant !
Posté par
D4 le
9 Aoû - 12:52 (2009)Géant ce script merci ! :D
ps : le pokemon s'évolue comme prévu mais l'image de départ reste.
J'ai testé avec carapuce, la procedure dévolution a marché mais à la reprise du combat l'image de carabaff est resté en carapuce =)
Posté par
Skelettor le
1 Sep - 10:25 (2010)J'ai un problème svp j'ai insérer le script mais quand mon pokémon évolue dans le combat il reste un salamèche et ne devient pas reptincel
|
Posté par
Dark_Ray le
14 Juin - 17:46 (2012)Désolé pour ce nécro-post :/
Mais j'ai installé ce script mais tout comme les deux du dessus, après l'évolution, le sprite du Pokémon reste celui d'avant son évolution ce qui est assez problématique car seul son nom change.
Est-ce qu'il y aurait un moyen d'actualiser le sprite juste après l'évolution avec un morceau de script à ajouter ?
Merci d'avance
Posté par
Nuri Yuri le
14 Juin - 17:48 (2012)Il faut rafraichir le sprite du pokémon, regarde le code qui le crée et utilise la partie qui change le bitmap pour changer l'apparence après évolution.
Posté par
Dark_Ray le
14 Juin - 18:34 (2012)Je suis pas très fort niveau Ruby ^^"
Et tout ce qui est bitmaps etc ... j'ai du mal.
Je ne vois pas du tout quoi modifier, j'ai tenté en mettant un peu partout @actor_sprite.update mais ça change rien
Tu pourrais m'aider davantage ?
Posté par
Nuri Yuri le
14 Juin - 19:01 (2012)Appelle la méthode "update_sprite" après l'évolution plutot que @actor_sprite.update.
Posté par
Dark_Ray le
14 Juin - 20:17 (2012)Merci ça marche parfaitement !
J'ai juste eu à ajouter :
update_sprite
@actor_status.refresh
Après :
scene = Pokemon_Evolve.new(actor, info, @z_level + 200)
scene.main
Maintenant le nom et l'image sont changés dès que la scène d'évolution est passée et pas 1 tour après
Encore merci pour ton aide
Posté par
Angi-MK le
23 Juin - 04:45 (2012)Ah bah je l'avais oublié celui-là (bien qu'il me revienne souvent).
Merci
Posté par
Over le
29 Juin - 11:39 (2012)à la fin du script rajouter un arrêt de musique ?
La musique de la map devrais se lancer lorsque l'on quitte le combat non ?
Posté par
Dark_Ray le
4 Juil - 11:51 (2012)Non justement y a un bug qui fait que si le Pokémon évolue en plein cours de combat, une fois de retour sur la map la musique jouée est celle du combat en question à cause de cette ligne-ci dans Pokemon_Evolve :
$game_temp.map_bgm = $game_system.playing_bgm
Je l'ai désactivé en mettant un "#"
Et sur toutes mes maps j'ai mis un évènement en démarrage automatique qui "mémorise l'effet sonore/musique joué" et qui se supprime tout de suite après
Et depuis le bug est résolu