Sujet n°14229
Posté par KamiMaze le 30 Nov - 10:37 (2014)
Titre : Paramétrage d'objets
Bonjour bonjour, j'ai une autre petite question à poser.
Je souhaiterais paramétrer des items absents de la BDD, comme l'orbe vie par exemple. Cependant, l'interface ne me permet pas d'appliquer les effets souhaités (30% atk en plus, -10% pv max a chaque coup). J'aimerais savoir si quelqu'un saurait m'aiguiller à ce sujet? :x
Merci d'avance!

Posté par Nuri Yuri le 30 Nov - 12:46 (2014)
Faut scripter, t'as pas d'autres choix.

Posté par KamiMaze le 30 Nov - 14:18 (2014)
Oui, ça j'avais cru le comprendre, cependant la syntaxe pour des objets à tenir n'est pas expliquée dans le manuel. J'ai été voir dans le fichier "data_item.txt", cependant les objets à tenir augmentant telle ou telle stat, ou augmentant la puissance des attaques du porteur ne sont pas inscrits, par conséquent, la syntaxe, je ne la trouve nulle part. J'ai un fichier "data_medaille.txt", cependant cette fois, je ne sais pas du tout où trouver les dites médailles. Rien dans la BDD ne me parle de celles ci, donc je suis perplexe.
Peut être suis je passé à côté d'un fichier parlant des items qui ne sont pas dans le fichier item? Dans le tas, j'ai par exemple poudre métal, mouch.soie, Lentilscope, eau mystique, charbon, etc.

Oh, et imaginons que je veuille créer de "faux objets", genre un super bonbon qui fait perdre un niveau, ou une baie qui empoisonne par exemple, je scripte ça comment? :x Pour le fake bonbon, je met genre " "level_up" => -1" ?

Posté par Nuri Yuri le 30 Nov - 15:36 (2014)
T'es sous PSP donc si ça n'existe pas faut scripter x)

Posté par KamiMaze le 30 Nov - 15:39 (2014)
Oui j'avais compris, je demandais juste la syntaxe "type" pour un objet du genre "tenir, augmente telle stat de x%" ou "tenir, retire x% des pv max à chaque attaque", ou "consommable, retire un niveau", "consommable, empoisonne", ou d'autres exemples... Parce que justement, l'endroit où tout est gardé (le fichier data_item.txt d'après le manuel) ne contient pas les objets (c'en est à se demander s'ils fonctionnent en jeu...)
Pour le fake bonbon, j'ai tenté de faire "level_up" => -1, mais le bonbon n'a juste aucun effet... :/

Posté par Nuri Yuri le 30 Nov - 15:47 (2014)
Bah, c'est parce qu'en réalité tout ce que tu paramètre dans la BDD c'est quasiment du mensonge. Pour le cas du fake_bonbon il faut en réaliter prévoir ceci, Krosk lui a prévu que ça ajoute des niveaux (j'aurais fait de même) mais pas que ça les retire du coup faut taper dans les scripts pour ajouter cette fonctionnalité.

Posté par KamiMaze le 30 Nov - 17:15 (2014)
D'accord d'accord, donc j'imagine que je vais avoir de bonnes nuits blanches à apprendre du Ruby en perspective =D
Et sinon, pour un objet à tenir, ça se situe aussi dans les scripts? Et je dois les mettre où ces fameux scripts? Genre dans les ev communs? Sur une map spéciale regroupant les scripts des items?

Posté par joeyw le 30 Nov - 17:38 (2014)
Pour afficher les scripts tu fais F11. Have fun x)

Posté par KamiMaze le 1 Déc - 11:06 (2014)
En effet, f11 affiche bien les scripts. J'ai trouvé les scripts d'items ressemblant un peu à l'orbe vie, en fonctionnement je veux dire, genre le charbon, cependant je suis un minimum intrigué là...

["CHARBON","charbon.png","ITEM","Objet tenu montant la puissance des attaques FEU.", 9800 ,"HOLD","" ]
Donc dans l'ordre, le nom, l'image, le type, la description, le prix de vente, dire que l'objet est "tenu", et c'est tout. Du coup je me demande, l'item fonctionne t'il vraiment? Augmente t'il vraiment la puissance des attaques feu? Car là, le script me parait vide... Après, peut être y a t'il un autre script planqué quelque part remarque... Je cherche et je dis si je trouve! Sinon, si quelqu'un a des infos, qu'il hésite pas à partager x-x

Posté par joeyw le 1 Déc - 20:31 (2014)
Le Charbon et les items associés fonctionnent bien.

Code:
      when "CHARBON"
        atk *= user_type1 == 2 ? 1.1 : 1


Script Pokémon Battle Core 2 - ligne ~ 2227

Posté par Pαlвσlѕку le 1 Déc - 20:56 (2014)
Avec l'attaque Vampigraine (si elle a été codé), tu devrais pouvoir créer l'orbe vie en t'y inspirant.
Vampigraine retire des PV à chaque tour, ça correspond un peu à ton cas. Imbécile heureux

Posté par KamiMaze le 2 Déc - 16:33 (2014)
#joyev: Merci, j'ai trouvé les scripts =) Je suis pas bien sûr de les comprendre, mais si je ne m'abuse, ils disent que
Si le charbon est tenu, l'attaque est égale SI le type de l'attaque est le type "2", le feu, l'attaque frappera à 110% de puissance au lieu de 100% (1.1:1).

Donc en appliquant ce schéma, l'orbe vie serait...
When "ORBE VIE"
atk *= 1.3:1

EDIT: Visiblement non, le programme me donne une erreur de syntaxe à la ligne "atk"

Concernant Vampigraine à présent (Merci Palbo, j'y avais même pas pensé x-x), voici ce que donne les scripts de PSPOG

when 0x54 # Leech Seed / Vampigraine
malus = actor.max_hp / 8
draw_text("L'énergie de " + actor.given_name,"est drainée!")
heal(actor, actor_sprite, actor_status, -malus)
heal(enemy, enemy_sprite, enemy_status, malus)
wait(40)

Donc, la ligne qui m'intéresse c'est... "heal(actor, actor_sprite, actor_status, -malus)". En traduisant, j'ai donc "l'attaque soigne le lanceur d'1/8e de ses pv max à chaque tour". En reprenant ça, je veux que ce soit 1/10 de mangé, donc je ferais
malus=actor.max_hp/10
heal(actor, actor_sprite, actor_status, malus)

Enfin si j'ai bien compris...

Du coup, la syntaxe finale se serait...

When "ORBE VIE"
malus=actor.max_hp/10
atk *=1.3:1
heal(actor, actor_sprite, actor_status, malus)
End


Mais je suis pas sûr de mon coup (mon premier vrai script, c'en est presque émouvant)... On peut me confirmer? (Je vais tester de mon côté dès que possible mais bon =D)

EDIT: Je vais tenter autre chose pour la ligne "atk", en espérant que cela fonctionne ( utiliser == au lieu de *= par exemple)

EDIT 2: Après une petite astuce de script (dire que l'id du type doit être inférieur ou égal à 17, pour reprendre la syntaxe exacte des autres), l'objet semble fonctionner. J'ai voulu le tester, cependant, à chaque fois que j'arrive sur une zone où une rencontre serait possible, j'ai un message d'erreur disant que dans CE script:

Spoiler
# Création du PokEvent
param = PokEventParameters.new()
param.pokemon_id = pkm_info[0]
param.pokemon_lvl = pkm_info[1]
param.pokemon_ecart_lvl = encounter[1]
param.pokemon_shiny = false
param.pokemon_form = 0 # Sans forme forcée

param.x = tile[0]
param.y = tile[1]

param.hidded = data_tag.hide
param.game_map = game_map

pevent = PokEvent.new(game_map.map_id, param)

Il y aurait une erreur à la ligne en gras. Et pour le coup, je comprend pas le script je me demande ce qu'il est censé faire.

Posté par joeyw le 3 Déc - 02:05 (2014)
Je suis pas un expert en script, mais il semble que ta modification devrait se faire en deux temps : l'augmentation de l'attaque, puis la diminution. Deux choses qui n'interviennent pas au même moment.

Tout d'abord fait attention à ta structure en Ruby, tu te mélanges les pinceaux Imbécile heureux

user_type1 == 2 ? 1.1 : 1

=> user_type1 == 2 ? Si le Pokémon est de type feu
=> 1.1 alors dégâts de 110%
=> : sinon
=> dégâts 100%

Tu dois donc avoir

Code:
When "ORBE VIE"
atk *= 1.3


Maintenant concernant le retrait des points de vie, cela doit se passer une fois les dégâts infligés et avant la vérification du KO de l'adversaire ( faint_check(user) de Pokémon Battle Core 2 ligne 1302).
Ainsi, juste avant le dernier end précédant cette command je t'invite à rajouter un

Code:
      case user.item_name
      when "ORBE VIE"
      .... Tes instructions ....
      end



Voilà ce que je pourrais te conseiller à mon niveau, sous le regard du Maître Jedi Pαlвσlѕку Imbécile heureux

Posté par KamiMaze le 3 Déc - 10:40 (2014)
Visiblement, le end n'est pas à noter (tout les items faisant partie d'un grand ensemble du "case.item").
Donc, en appliquant tout ceci, j'ai => (Pardon je sais pas mettre sous forme de code comme vous le faites)

case user.item_name
when "ORBE VIE"
atk *= 1.3
if not (target.dead?)
malus=actor.max_hp/10
heal(actor, actor_sprite, actor_status, -malus)

Et rien derrière car... Et bien car si la cible est morte, les pv ne sont pas retirés, d'après ce que j'ai compris (je n'ai jamais utilisé cet item, je ne me suis pas plus intéressé à la pokestratégie outre mesure)


EDIT: Visiblement, tout fonctionne parfaitement. A présent, j'aimerais savoir si quelqu'un sait où se trouve les scripts des items tels que "Protéine" (en espérant bien sûr qu'il y en ai), j'aurais besoin de cela pour recréer les scripts des items "XXX. POUV." Avec XXX étant Band, Poign, etc, ceux ci générant 4 EV à chaque victoire dans une stat précise. Du coup, j'ai besoin de la syntaxe des items ajoutant des EV, mais ils ne sont pas dans "Battle Core", ni le 1 ni le 2, et je ne les ai pas vus non plus dans les scripts "Items". Du coup je m'en remet à vous, si quelqu'un sait où ça se trouve =D

Posté par joeyw le 3 Déc - 21:30 (2014)
Bravo à toi si ça a marché (j'en profiterai pour le faire chez moi un de ces jours aussi xD) Imbécile heureux

Pour les protéines et compagnie, elles ne sont pas de base mais il y a un tuto dans les ressources techniques. Si tu connais pas ce raccourci très utile : CTRL+SHIFT+F pour faire la recherche d'un terme sur tous les scripts Imbécile heureux

Posté par KamiMaze le 3 Déc - 21:39 (2014)
Merci, et visiblement cela fonctionne! Je vois plus de dégats quand elle est équipée, et je perd de la vie SI la cible survit, dans le cas contraire, niet.

Les protéines sont bel et bien scriptées, le script est juste minimaliste et caché dans la ligne sur l'item, comme pour le super bonbon =)
Voici la syntaxe qu'ils donnent:
$data_item[ 43 ]=["PROTEINE","proteine.png","ITEM","Monte l'ATTAQUE d'un POKéMON.", 9800 ,"PKMN","" , ["boost", 1 ] ]
Avec 1 pour l'attaque, et 5 pour la déf spéciale, le reste j'ai pas vraiment regardé pour le moment x)
Je crois que de 0 à 5 ça fait PV, Attaque, Défense, vitesse, Attaque Spé, Défense Spé.
Bref, "boost" permet donc de ... Booster ses EV, mais de 10 points (nombre d'EV donnés par un accélérateur comme PROTEINE), et moi j'aimerais bien n'en obtenir que 4 si le pokemon ciblé meurt. Ainsi, dans la même zone que les items comme Charbon, Orbe vie et compagnie, j'ai ajouté

when "BAND. POUV."
if target.dead?
["boost", 5]

Mais une nouvelle fois, beh je suis un peu embété quoi :/ Parce que la commande boost va booster de 10 points et non de 4, et moi j'aimerais bien réduire ce boost quoi x)

Sinon oui, merci pour le raccourci ^^ Je venais de le voir sur un tuto de Yuri sur pokemontrash mais c'est sympa quand même =D

Bon bon bon, je me replonge dans mes scripts (ils auront ma peau jvous dit), et je tente de voir si "boost" n'est pas utile ailleurs

Posté par joeyw le 4 Déc - 01:31 (2014)
As-tu fait une recherche sur le mot "boost" pour trouver sa définition ? Imbécile heureux

Posté par KamiMaze le 4 Déc - 09:09 (2014)
Oui da je l'ai fait, cependant je ne trouve pas sa définition. Les seuls endroits où l'on traite de "boost", c'est dans les effets d'un item, d'une capacité ou d'une attaque. Aucune autre entrée pour boost n'est visible avec ctrl+shift+f. J'ai vraiment du mal avec PsPOG x-x Je vais essayer de trouver la MAJ de RPGMaker XP pour avoir PSP5G, sait on jamais ce sera peut être moins chaotique x)

Posté par joeyw le 5 Déc - 14:01 (2014)
Tu devrais aller faire un tour par ici dans ce cas : ./10994-PROTEINE-CALCIUM-etc-qui-fonctio…
PsPOG est un très bon SK Imbécile heureux