Sujet n°14041
Posté par Therand le 4 Aoû - 11:36 (2014)
Titre : [Script]Aide pour système Safari
Bonjour à tous,

Je viens vous demander une aide qui me sera très précieuse!
En effet, étant actuellement sur un "remake" de Pokémon Jaune, il me manque une chose très précieuse: Le Parc Safari!

J suis sous PSP 0.8, j'ai tenté d'adapter les script nécessaire venant du SK PSP OG, mais sans résultat..
Il me manque toujours une méthode et je commence à tourner en rond :/

Je pensais à quelque chose de relativement simple du genre

1.Si le safari est appelé sur la map et qu'un Pokémon sauvage est rencontré, lancer Battle_XX
+Lancer un décompte de XX pas et donner XX safari ball, quand décompte fini ou quand safari ball épuisé, afficher un message de fin, retirer les safari ball restante
et téléporter sur la map de l'entré du safari

2.Dans le script Battle_XX remplacer l’appel d'un Pokémon de l'équipe par rien du tout :p et l'apparition des quatre choix par "cailloux, appâts,.."
et calculer les action "chance de fuite, si cailloux +1 sinon appâts -1,..."
également l'utilisation unique des safari ball pour la capture dans cette zone.

Sinon, voici l'erreur que j'ai en tentant d'adapter celui de PSP OG:
Dans le script "PokemonSafari":

""""""""""
Events.onMapChange+=proc{|sender,args|
if !pbInSafari?
pbSafariState.pbEnd
end
}
"""""""""
Il ne connait pas cette chose :p

Si une personne est susceptible de m'aider, même un tout petit peu, je lui serait très reconnaissant!

Merci!

Posté par Gold le 4 Aoû - 11:53 (2014)
Je ne peux pas être étonné que les scripts d'OG ne fonctionnent pas sous 0.8, ça demanderait une adaptation en profondeur particulièrement importante °°

Posté par Dark_Ray le 4 Aoû - 14:19 (2014)
Il te suffit de le faire à partir de script déjà existant.
J'ai réussi à refaire ce système en partant du Pokemon_Battle_Wild et en le modifiant par-ci par-là 42


Video



Après c'est sûr qu'il y a mieux, mais le principal c'est que ça marche non xD

Posté par Therand le 4 Aoû - 14:23 (2014)
Bravo, tu as crée un super système!

Mais, ne faut-il pas modifier le Battle_core 1 également?
Pourrais tu m'aider un peu stp?
Ou si tu es d'accord, me passer ton script?

J'ai vraiment besoin d'un peu plus d'aide :/

Merci

Posté par Dark_Ray le 4 Aoû - 14:25 (2014)
En effet les battle_core sont aussi modifiés.

Cependant pour te passer directement les scripts je crois pas que ça va être possible ^^'
Déjà y a beaucoup de modif dedans, je sais pas du tout si ce sera compatible, et quand bien même ça le serait, ce script est (pour le moment) uniquement prévu pour mon projet :/


Je veux bien t'aider un peu, mais pas plus ;P

Posté par Therand le 4 Aoû - 14:34 (2014)
Bien entendu j'aurais pris tes scripts pour m'en inspirer dans mon projet et non les copier tel quel.
Si jamais tu change d'avis... :p

Sinon, merci pour la piste, je pensais justement modifier ces deux scripts.
J'aimerais juste savoir, comment as tu fais pour appeler tes scripts modifier à la place des originaux?

Posté par Dark_Ray le 4 Aoû - 15:08 (2014)
Je switch à l'aide d'une variable à l'entrée de mon parc

Dans le script ça donne :

if $game_variables[98] == 0
$scene = POKEMON_S::Pokemon_Battle_Wild.new($pokemon_party, pokemon)
else
$scene = POKEMON_S::Pokemon_Battle_Safari.new($pokemon_party, pokemon)
end

C'est dans Scene_Map il me semble

Posté par Therand le 4 Aoû - 15:49 (2014)
Merci, je vais me pencher la dessus, je reviendrais vers vous en temps voulu Clin d'œil foireux

Posté par Therand le 11 Aoû - 14:45 (2014)
Salut,

Je reviens ici car j'avance bien sur le système, cependant, je ne m'en sors absolument pas avec les calculs..
J'aurais besoin que tu m'explique stp comment tu fais pour que la Ball augmente ou diminue son drop rate en fonction du caillou/appât utilisé, ainsi que la chance de fuite de l'adversaire.

Sans cela, je suis bloqué :/

Merci d'avance!

Posté par Dark_Ray le 11 Aoû - 15:13 (2014)
Disons que j'ai simplement créer une formule de capture moi même à la place de la traditionnelle, rien de plus xD

Posté par Therand le 12 Aoû - 09:22 (2014)
Merci pour cet indice Clin d'œil foireux
Je pensais créer une safari ball avec un taux de capture de 1,
Ensuite dans le script, au moment de lancer l'appât, ajouter 1 à une variable "capture",
Pour finir, dans le calcul de capture (script) rajouter au calcul "drop rate + variable capture =chance de capture.

J'aurais donc simplement besoin qu'on m'indique comment ajouter cette variable, quel nom lui donner..
Et pour la chance de fuite, je partirais du même principe sauf que j'avoue ne pas avoir trouvé l'endroit exact de ce calcul..

Merci

Posté par Tokeur le 12 Aoû - 12:06 (2014)
Ya pas longtemps on m'a demandé de faire un parc Safari aussi ^^
Donc j'ai fait qq recherches vite fait quand même, et j'ai vu que la safari ball avait une chance de capture égale à celle de la super ball (soit de 1.5).
Pour ce qui est d'augmenter les chances de capture ou de fuite, j'ai fait un compteur de "nmbrAppat" "nmbrCaillou (pour toi)". Puis j'ai regardé un peu le code de capture et je suis tombé sur cette partie :
Code:
      multiplier = @enemy.rareness * (ball_rate)
      maxhp = @enemy.maxhp_basis
      hp = @enemy.hp
      catch_rate = Integer((((maxhp * 3 - hp * 2)*multiplier).to_f/(maxhp*3).to_f)*status_multiplier)
      catch_value = Integer(1048560 / (Math.sqrt(Math.sqrt(16711680/catch_rate.to_f))))
      list = [rand(65536), rand(65536), rand(65536), rand(65536)]
      i = 0
      j = 4 # nombre de fois que la balle oscille
      for i in list
        j -= i > catch_value ? 1 : 0
      end

(j'ai l'impression que la balise est buggée et rajoute un retour à la ligne à chaque fin de ligne)

Donc pour ajouter x% de chance de capturer un pokémon, j'ai rajouter x% de 65536 à chaque élément de list. Bon je sais que ça rajoute absolument pas x% de chance de capture, mais c'est ce qui s'en rapprochait le plus et j'avais pas trop envie de passer des jours là dessus d:
Pour la fuite, j'suis pas allé cherché dans comment ça se passe dans les jeux, il me semble qu'il y a un certain pourcentage de chance par pokémon. Moi j'ai juste mis un pourcentage générale, qui augmente ou diminue en fonction du nombre d'appat ou de cailloux(pour toi d: ) utilisé ^^

Voilà, en espérant avoir aidé =)

Posté par Dark_Ray le 12 Aoû - 13:41 (2014)
Pour la fuite histoire que ça corresponde au Pokémon en face de toi, je te conseil d'utiliser @enemy.rareness comme facteur dans tes calculs, ainsi plus le Pokémon est "rare" plus il aura de chance de fuir Clin d'œil foireux

Posté par Therand le 12 Aoû - 13:59 (2014)
Merci!
Tu me sors d'une grande galère là ^^

Par contre, pourrais-tu m'en dire plus sur "nmbrAppat" et "nmbrCaillou" ?
Je ne m'y connais pas suffisamment pour placer ces deux compteurs...

Simplement faire nmbrAppat + 1 dans l'action du lançage de l’appât?
Mais le calcul que tu m'a donné ne prendra pas en compte cette valeur, si?

Merci

Posté par Tokeur le 12 Aoû - 21:53 (2014)
Le calcul que je t'ai donné est directement pris de la fonction pour attraper dans PSP, je n'ai pas touché à celle là ^^ Je te laisse la trouver, elle est définie dans Pokemon_Battle_Wild j'crois, dans une méthode catch_pokemon ou un truc comme ça ^^

Pour les nmbrAppat, j'fais simplement +1 ouai, et après je fais une boucle (même si c'est absolument pas nécessaire) pour augmenter tout les éléments de la liste de 5% de 65536*nmbrCaillou lancés.

Ah ouai pas con pour les rareness, j'y avais pas pensé d: