Sujet n°12837
Posté par Ku'rei le 15 Juin - 07:52 (2013)
Titre : Concrete Encounter / Pokemon sur la map
Historique des mise à jours et Sommaire

Pour créer le traveller, il faut appeler la commande de script suivante dans un event :
Code:
create_traveller(pkm_id, level, slot, [maps_id], [tags_id])

avec :
  • pkm_id : int, ID du pokemon voyageur (pour ARTIKODIN : 144)
  • level : int, niveau du Pokemon Voyageur (pour l'exemple : 20)
  • slot : int, slot de sauvegarde, casier où sera ranger les données du traveller (même fonctionnement que pour les combat existant de PSP mais pas les même casiers)
    NE PAS UTILISER LE SLOT 0 (ZERO)
  • maps_id : List<int>, tableau contenant les index des maps dans lesquelles il apparaîtra (ici : [2,3,4])
  • tags : List<int>, tableau contenant les tag terrains sur lesquels il apparaîtra, assurez vous d'en avoir sur chaque maps où il apparaîtra. (ici : [0,1])

Ce qui nous donne pour l'exemple :
Code:
create_traveller(144, 20, 1, [2,3,4], [0,1])

    2. Changer la map du traveller manuellement

Peut-être voudrez vous qu'en parlant à quelqu'un, le traveller aille vers une map particulière, appellez cette commande dans une commande script
Code:
set_map_traveller(slot, map_id)

Ou les arguments sont :
  • slot : int, slot du traveller
  • map_id : int, index de la map où le traveller doit apparaître

    3. Supprimer manuellement le traveller

Vous voudrez peut-être que le traveller disparaissent via une commande d'event. La voici :
Code:
remove_traveller(slot)

ou slot est le slot du traveller (mais vous connaissez)
    4. Standard de traveller

Un standard de traveller :
Spoiler

Pour lancer le changement de map, il faut placer un commentaire avec en première ligne CHANGE_MAP dans le standard


MAJ : Persistance des Pokémons


Les événements sont persistant depuis longtemps déjà, mais à chaque combat avec le même event, le Pokémon était réinitialisé oh, j'ai affaibli le Pokémon trop fort pour moi, je fuis je me soigne et retourne me battre... Mais ! Le Pokémon à tous ses PV ! Et , tiens c'est un transsexuel ? Il est passé de mâle à femelle !)

Si vous souhaitez utiliser la persistance des Pokémon, il vous faudra faire cette modification. Elle vous sera aussi utile si vous utiliser les enregistrement de pokémon.
Ligne 61 du script Pokemon_Battle_Wild de Krosk
Code:
@enemy.hp = @enemy.max_hp

Il faut la même en commentaire (ajouter un "#" en début de ligne), sinon la vie du pokémon sera réinitialisé à chaque combat
Code:
#@enemy.hp = @enemy.max_hp


Avec la persistance des Pokémon toutes ces bizarreries seront finies. Elle est active par défaut mais aller faire un tour du côté des constantes.


MAJ : Repousse


Une fonctionnalité qui fait défaut à PSP, je l'ai implémenté pour Concrete_Encounter en mode rencontres concrètes. Je n'ai malheureusement pas eu le courage de passer plus d'une demi-heure sur la repousse des rencontres aléatoires (problème : après la fin de repousse, vous étiez tranquille pendant ce même nombre de pas :/). La repousse sera disponible si la persistance des Pokémon l'est aussi.

Bref, l'installation est un peu plus compliquée que celle des autres Mise à jours.
  • Script Game_Player de Krosk
    ligne 90 environ, après :
    Code:
    def increase_steps
      super
      unless @move_route_forcing

    ajoutez-y :
    Code:
    if $reject_counter != nil
      $reject_counter.decrease_step_count
    end

    ce qui donne
    Code:
    def increase_steps
      super
      unless @move_route_forcing
        if $reject_counter != nil
          $reject_counter.decrease_step_count
        end

  • Evénements commun de repousse
    Aller dans la BDD, section événements Commun et créez-y trois événement portant les noms des trois repousse (REPOUSSE, SUPEREPOUSSE, MAX REPOUSSE), les trois n'ayant qu'une seule commande :
    Code:
    demarrer_repousse(nb_pas, nom_repousse="REPOUSSE", rayon_action=500, tous=false)

    où les arguments sont :
    • nb_pas : nombre de pas pendant lesquels le repousse fait effet
    • nom_repousse : nom de l'objet appelant le script, c'est pour le message de début de repousse ("Machin utilise SUPERREPOUSSE.") par défaut "REPOUSSE"
    • rayon_action : rayon d'action du repousse, par défaut 500
    • tous : indique si tous les Pokémon sont rejeté (officiellement, le repousse ne repousse que les pokémons de niveau inférieur au premier pokémon de l'équipe)

    Concernant le rayon d'action, c'est une exclusivité de Concrete_Encounter, en effet les Pokémon étant sur la map, il est normal que ceux qui sont à 20 000km de vous ne fuis pas. Et puis, ça donne tellement une sensation de puissance quand les Pokémon fuie à votre approche !
    Voici les trois appel de script pour chacune des repousse officielles
    Code:
    demarrer_repousse(100, "REPOUSSE", 500)          #REPOUSSE
    demarrer_repousse(200, "SUPERREPOUSSE", 750) #SUPERREPOUSSE
    demarrer_repousse(250, "MAX REPOUSSE", 1000)  #MAX REPOUSSE

    Toujours dans la BDD, associés ces événements communs aux trois Item Repousse, et le Repousse est disponible, il vous suffira d'utiliser l'objet.
  • Aller plus loin : la MEGA REPOUSSE
    Vous avez vu l'arguments "tous" dans le script ci-dessus, il n'a pas été utilisé. Vous pouvez modifier les repousse comme vous le souhaitez, je vous propose de créer un nouvel objet "MEGA REPOUSSE" qui possèdera les caractéristique du MAX REPOUSSE en plus de repousser tous les Pokémons.
    • Créer un événement commun que vous appeler "MEGA REPOUSSE", et faites en sorte qu'il appel le script
      Code:
      demarrer_repousse(250, "MEGA REPOUSSE, attention les yeux", 1000, true)

    • Lorsque cela est fait, créez un nouvel item que vous appellerez "MEGA REPOUSSE" aussi, remplissez le comme vous le souhaitez et faites le appeler l'événement commun "MEGA REPOUSSE".

    • C'est fini pour le MEGA REPOUSSE, testez-le en jeu.



MAJ : Panneau de configuration dynamique


Imaginons qu'au cours du jeu vous vouliez désactiver les rencontres concrétes, ou activé les rencontres normales ou désactiver la persistance des event, etc, modifier toutes les constantes décrites au début du sujet. Maintenant vous pouvez, en utilisant la variables $kurei_panel. Exemple :
Code:
$kurei_panel["CONCRETE_ENCOUNTER_ON"] = false
$kurei_panel["NORMAL_ENCOUNTER_ON"] = true

Désactivera les rencontres contrète et activera les rencontres normales
Attentions, les Pokémon ne disparaîtront pas de la map des l'instant où vous désactiverez les rencontres concrétes (il vous faudra changer de map)
Pour ce qui est des rencontres normales, elles seront réactivé des l'instant ou vous les activerez (étonnant non ?)

Pour plus de précisions sur les constantes modifiables (paradoxe) je vous invite à lire leurs descriptions au début du sujet. Toutefois, les constante concernant le nom de commandes de commentaires ne sont pas modifiables dynamiquement pour des questions de sécurité.


MAJ : Formes aléatoires


Les Zarbis, si vous voulez placer des zarbi avec des formes aléatoires sur une map. Vous pouvez désormais paramétrer le nombre de formes que peut avoir un pokémon, lors de la rencontres la forme sera déterminée aléatoirement.

Pour définir le nombre de forme pour un pokémon, allez dans les constantes de début de script.
Code:
#Correspondances pkm_id => nb_form
  RANDOM_FORMS = {
    201 => 28   #Zarbi 28 formes aléatoires
  }

Ici, les zarbi ont 28 formes différentes.

Ajouter un pokemon a forme aléatoires, comme pour les standard, ajouter une ligne avant la "{" finale répondant au format suivant :
Code:
pkm_id => nb_forme,

Où les arguments sont :
  • pkm_id : index du pokémon
  • nb_forme : nombre de formes disponibles pour ce pokémon

Assurez vous que les character de ce pokémon sont bien nommée Pkm_201_2 pour le pokemon 201 forme 2


MAJ : Standards spécifiques à une liste de map


Vous voudrez peut-être utiliser un standard spécial pour un Pokémon seulement sur quelques maps, le monde étant vaste, on peut avoir des Rattata agressifs dans un coin, d'autres hyper actif dans un autre. Grâce à cette mise à jour vous pourrez.

Imaginons que nous voulons un Rattata agressif sur les maps 12,14 et 20, et qu'il soit hyper actif sur les maps 15, 21,17, 16 et 8. Remarquez que l'ont ne peut pas avoir deux standards pour le même pokémon sur la même map.

Nous avions la constantes des Standards :
Code:
STANDARDS = {
   "AGGRO_STANDARD_001"=> [111, 112],
   "FLEES_POKEMON_001" => [243, 244, 245]
}

qui sera maintenant :
Code:
STANDARDS = {
   "AGGRO_STANDARD_001"=> [111, 112],
   "FLEES_POKEMON_001" => [243, 244, 245],
   "[12,14,20]/AGGRO_STANDARD_001" => [19],
   "[15,21,17,16]/HYPERACTIVE_STANDARD" => [19]
}

La structure de base de l'affectation d'un standard est :
Code:
"NOM_DU_STANDARD" => [pkm_1, pkm_2,  pkm_3, pkm_4, ...]

avec pkm_X les id des pokémons ayant ce standards
Maintenant, nous aurons
Code:
"[map_1, map_2, map_3, map_4, map_5, ...]/NOM_DU_STANDARD" => [pkm_1, pkm_2,  pkm_3, pkm_4, ...]

avec map_X les id des map où devra être appliqué le standard.


MAJ : T2PC (Terrain Tag Probability Coefficient)


Vous aurez remarqué que le nombre de pokémons sur les rochers où sur l'eau est généralement bien plus élevé que le nombre de pokémon dans l'herbe. Cela est du au fait que le nombre de pokémon n'est pas prédétermioné mais qu'il y un certain nombre de chance qu'un pokémon soit sur chaque case. Logiquement :

Plus de surface => Plus de Pokémon

Le T2PC permet d'appliquer un coefficient au tag terrain, ainsi il y aura :

(nb_pas_moyen * T2PC) sur RANDOM_SPAWNING_BASE chances qu'un Pokémon soit présent sur une case.
avec nb_pas_moyen le nombre de pas moyen avant de rencontrer un Monstre (Propriétés de la map), T2CP le coefficient de terrain, et RANDOM_SPAWNING_BASE la base (cf. Constantes).


Mise en place du T2PC :
La constante T2PC permet le réglage des coefficient :
Code:
T2PC = [coef_tag_1, coef_tag_2, coef_tag_3, coef_tag_4, coef_tag_5, coef_tag_6, coef_tag_7]

avec coef_tag_X le coefficient à appliquer au tag terrain X. Pour une probabilité de rencontre normal, mettre le coefficient à 1.
Dans un premier temps, je préconise les coefficients suivants :
  • Terrain Herbe : coef 1
  • Terrain Eau : coef 1.5
  • Terrain Roche : coef 1.5

Sachez cela : plus le coefficient est grand, moins il y aura de chance qu'un pokémon soit sur la case. Un coefficient > 1 réduit les chances d'apparition tandis qu'un coefficient < 1 les augmentes.
T2PC par défaut :
Code:
T2PC = [1, 1, 1, 1, 1, 1, 1]


Exemple d'utilisation EXAGÉRÉE du T2PC (regardez bien les coefficient), la map à un nombre de pas moyen de 150:



MAJ : T3PC (Tileset Terrain Tag Probability Coefficient)


Maintenant, imaginons que vous changiez de Tileset, que les tags terrains sont affectez différemment, les coefficients ne seraient certainement plus bons... Grâce au T3PC, vous pouvez définir les coefficient selon le tileset utilisé. En attachant un id de tileset à un tableau de coefficient comme celui vu dans la MAJ T2PC. Cela se passe dans la constante T3PC :
Code:
T3PC = {
  1 => [1, 1.5, 1, 1, 1, 1, 1.5],
}

Pour affecter un T2PC à un tileset, la ligne du tableau de hash devra respecter le format suivant :
Code:
tileset_id => [coef_tag_1, coef_tag_2, coef_tag_3, coef_tag_4, coef_tag_5, coef_tag_6, coef_tag_7],

Vous connaissez les coef_tag, tileset_id est l'index du tileset dans la BDD.


MAJ : Insensibilité à la repousse


Pour rendre un Standard totalement insensible à la Repousse (même le Mega Repousse n'y fera rien), ajouter le commentaire : "NOT REJECTABLE" dans sa page. Vous pouvez modifier le mot dans la constante REJECT_INSENSITIVE_WORD.


MAJ : Déplacements Conditionnels


Je ne sais pas si vous avez remarqué que le standard agressif vous poursuit où que vous soyez, même si vous êtes à 100 tiles de lui, derrière une montagne. Certain Pokémon paisibles, comme les Arakdo peuvent avoir peur du joueur approchant et le fuir s'il est trop prêt, ...

Tout ces déplacements ont une condition, c'est ce qui rend le déplacement conditionné.

Définir un déplacement conditionnel
  • Notions de page principale et pages secondaires :
    Jusqu'à maintenant, tout mes standards étaient sur une seule page, la page principale, celle où est définit ce qu'il se passe lorsque l'event entre en contact avec le Héros, combat, ... Cette page, je le répète est LA page principale(cf. Standards).
    Les pages secondaires seront celle qui serviront à définir les Déplacements Conditionnels, elles devront être AVANT la page principale. Si la page 2 est secondaires, la principale sera la page 3 ou plus.
  • La Page Secondaire :
    Il vous faut créer une page secondaire tout en gardant la page principale comme dernière page. Exemple :

  • La Commande de Commentaire :
    Pour définir un Déplacement Conditionnel, il vous faut insérer un commentaire comme vous l'auriez fait pour modifier la Frequence de façon aléatoire et y écrire une ligne respectant le format suivant :
    Code:
    COND_DEPL=["condition", no_page, [conserve_mt, conserve_mr, conserve_ms, conserve_mf]]
    ou plus simplement :
    COND_DEPL=["condition", no_page]

    C'est un peu plus compliqué que la fréquence et la vitesse. Mais reprenons point par point

    • condition (sans guillemets) : Condition d’exécution du Déplacement Conditionnel.
      Méthodes existantes par défaut :

      • hero_close(radius = 500)
        radius : int, defaut=500, distance testée
        Méthode testant si la distance de l'événement Pokémon avec le Héros est inférieure à radius
      • C'est tout pour l'instant mais je compte bien en ajouter d'autres

      Pour les scripteur, j'utilise un simple eval sur la condition, ce qui vous permet de passer les commande de l'interpreter en entrant "$game_system.map_interpreter.nom_methode" en tant que condition.
    • no_page :
      numéro de la page depuis laquelle seront importés les paramètres du mouvement. Exemple, si je met 1, le déplacement de la page 1 sera importé dans ma page principale quand la condition sera validée :

    • (OPTIONNEL)indications de conservations:
      comme son nom l'indique, ce tableau de booléen indique si l'on doit conserver (ne pas remplacer) par exemple la vitesse de la page principale, ou sa fréquence, ...

      • conserve_mt : conservation du type de mouvement
      • conserve_mr : conservation de la personnalisation du mouvement
      • conserve_ms : conservation de la vitesse de déplacement
      • conserve_mf : conservation de la fréquence de déplacement

      Ainsi : [false, false, true, true] utilisera le mouvement de la page no_page, ainsi que sa personnalisation mais gardera la vitesse et la fréquence de la page principale.
      Cette argument vaut [false, false, false, false] par défaut, cela implique rien n'est conservé.




MAJ : Replacement des Event de Pokémon


Imaginons la situation suivante : vous vous êtes amusé à ranger les Pokémon d'une map dans un coin avec un Mega Repousse (comme ça m'est arrivé), c'est amusant, mais quand vous quitter la map pour faire autre chose, puis que vous revenez, les Event de Pokémon sont toujours à leur place rangés dans un coin.

En mettant la constante USE_REPLACEMENT à true, les Event de Pokémon seront automatique replacés sur leurs positions de départ à chaque fois que vous entrerez dans la map.


MAJ : Changement de méthodes d’acquisition de coordonnées aléatoires


Vous avez sans doute remarqué que les Pokémon Voyageurs apparaissaient beaucoup plus souvent sur la partie gauche de la map qu'ailleurs. Cela venait de la façon dont était obtenu les coordonnées de placement. J'ai tout changer pour une implémentation plus rapide, plus efficace et plus claire.

Dans l'absolue cela ne change rien pour vous, a ceci près que vous avez maintenant la possibilité de définir un point centrale autour duquel apparaîtra le Pokémon Voyageur.
Pour créer un Pokémon Voyageur, vous utilisiez la commande de script :
Code:
create_traveller(pkm_id, level, slot, [maps_id], [tags_id])

Je vous laisse voir (ICI) les différents rôle des paramètres. Ces rôles sont toujours valables.

Définir coordonnées d'apparitions approximatives :
Remplacer [maps_id] par un tableau de hash de la forme suivante :
Code:
{
  map_id => [x, y],
  map_id_2 => [x, y],
  etc
}

où map_id est l'id de la map où les coordonnées approximatives doivent être utilisées.

Deux façons de conserver le placement aléatoire :
    1. Map par Map

Dans [maps_id], la ligne
Code:
map_id => []

conservera le placement aléatoire
[list=2]2. Liste de map à placement aléatoire
La ligne
Code:
{
  -1 => [12, 45, 32, 11, 10]

garantira un placement aléatoire dans les maps 12, 45, 32, 11 et 10.

Exemple
Code:
create_traveller(381, 40, 1,{21 => [10, 12], 10 => [20, 11], -1 => [2, 5, 64, 32, 12, 22]}, [1, 2])

Créera un Latios niveau 40 sur le slot 1 qui voyagera sur les maps 21, 10, 2, 5, 64, 32, 12 et 22 et sur les terrains 1 et 2. Sur les maps 21 et 10 sa position sera approximativement (10,12) et (20,11).


MAJ : Pokémon Fuyard


Je vous ai parlé de Pokémon Voyageant de map en map comme le célèbre Suicune. Le problème était qu'ils ne fuyaient pas une fois en combat... Et que cela enlevait beauuucoup de charme à la chasse au Voyageur. En deux ans, j'ai chercher à trois reprise comment gérer efficacement la fuite d'un Pokémon. Voici donc une façon qui ne m'a pas déçu et qui est simple d'utilisation et de mise en place.


Constante
Dans la partie constantes du script.
Code:
FUGITIVE_SWITCH_ID = 4975

La constante définisant l'id de l'interrupteur indiquant si le prochain pokémon combattu sera fuyard ou non.

Modifications de Scripts
  • Pokemon_Battle_Wild
    • Ligne 251 environ : immédiatement après la ligne
      Code:
      @enemy_action = 1

      Ajouter :
      Code:
      switch_id = $kurei_panel["FUGITIVE_SWITCH_ID "]
      if $game_switches[switrch_id] and flee_able(@enemy, @actor)
        @enemy_action = 4
      end

      switch_id est la variable contenant l'index de l'interrupteur indiquant si le prochain pokémon sera fuyard. Si vous n'utilisez pas Concrete_Encounter, vous pourrez mettre directement l'id de cet interrupteur.

  • Pokemon_Battle_Core_1
    • Ligne 182 environ : juste avant la fin de la methode main
      Code:
        ...
        @actor_sprite.dispose
        @actor_status.dispose
        @enemy_status.dispose
        @actor_party_status.dispose
        @enemy_party_status.dispose
      end

      Ajouter $game_switches[$kurei_panel["FUGITIVE_SWITCH_ID"]] = false ce qui donne
      Code:
        ...
        @actor_sprite.dispose
        @actor_status.dispose
        @enemy_status.dispose
        @actor_party_status.dispose
        @enemy_party_status.dispose

        $game_switches[$kurei_panel["FUGITIVE_SWITCH_ID"]] = false
      end

    • Ligne 507 environ :
      Code:
      if @enemy_action == 4
        #run_enemy       Mettre cette ligne en commentaire
      end

    • Ligne 540 environ, remplacer :
      Code:
      if not(@enemy_caught) and @enemy_action == 1 and not(@enemy.dead?)
        attack_action(@enemy, @enemy_skill, @actor)
      end

      Par :
      Code:
      if not(@enemy_caught) and @enemy_action == 1 and not(@enemy.dead?)
        attack_action(@enemy, @enemy_skill, @actor)
      end
      if not(@enemy_caught) and @enemy_action == 4 and not(@enemy.dead?) and flee_able(@enemy, @actor)
        run_enemy
      end

    • Ligne 561 environ : faire la même chose que ligne 540


Voici qui est fait pour l'installation de cette partie du script.

Rendre un Standard fuyard
Avant la commande de commentaire START_BATTLE, activer l'interrupteur indiquant que le pokémon fuira :


Remarques : l'interrupteur est automatiquement désactivé à chaque fin de combat.




Voilà tout, j'espère que le script vous sera utile ! Votre avis sur les améliorations et ajouts de fonctionnalités possibles m’intéressent ![target][/target]

Posté par Nuri Yuri le 15 Juin - 09:15 (2013)
Ce script aidera bien des projets @_@
J'aimerais te proposer une petite suggestion au niveau de celui-ci :
Pourrait-il au lieu de modifier la commande demarrer_combat modifier l'état d'une variable locale et ajouter une commande dans l'interpreter qui provoque le combat mais en fonction de cette variable. (Personnellement, j'utilise un script qui efface toute les commandes de script et ne les exécute pas InGame si elle existent, pour la sécurité du projet...)
Bon, je vais probablement pas l'utiliser vu qu'officiellement je n'ai pas de projets mais ça pourrait être intéressant pour certains projets qui se doteraient de la même protection x)

Posté par Ku'rei le 15 Juin - 09:24 (2013)
Je ne comprend pas bien ce que tu veux me dire, ce serait quelque chose comme ça ?
Dans l'event, commande script
param = ""
eval_str(param)

Puis dans mon script je remplacerais
par param = "demarrer_combat(1, 5)"
eval_str(param)

Puis ajouter la commande
Code:
def eval_str(str)
  eval(str)
end


Si c'est ça je ne voit pas trop la différence

Je suis peut-être à la masse, mais pourquoi supprimer tous les appel de script ?

Posté par Nuri Yuri le 15 Juin - 10:46 (2013)
C'est tout le contraire x)
Dans l'interpreter tu mets ça :
Code:
def demarrer_combat_var()
  demarrer_combat($game_variables[BTL_ID_PKMN],$game_variables[BTL_LVL_PKMN])

Après ton script au lieu de modifier la commande de script il modifie les deux variables dans l'évent et tout se passe bien. Quand ma sécurité passera à la compilation du projet elle remplacera "demarrer_combat_var()" par l'id de la commande et il n'y a plus de problèmes x)
Enfin, c'est assez compliqué expliqué comme ça x)

Posté par Ku'rei le 15 Juin - 11:15 (2013)
Ok, je crois que j'ai compris ^^ Par contre, pour definir les valeurs des variable je suis obligé de le faire en modifiant la commande d'event.
Mettons, je détecte un appel de script
Code:
START_BATTLE

je remplace ça via mon script par
Code:

$game_variables[BTL_ID_PKMN] = {id_pkm}
$game_variables[BTL_LVL_PKMN] = {lvl_pkm}
demarrer_combat_var()


Oui surtout que la sécurité moi ça me prend plus la tête qu'autre chose ^^

Posté par Nuri Yuri le 15 Juin - 11:40 (2013)
Non, ça n'ira pas. Il faut modifier les commandes d'évent de gestion des variables.
Sinon ça ne change rien au problème initial x)
(Par contre, mets la possibilité initiale et celle que je propose si tu mets celle que je propose :b)

Posté par Ku'rei le 15 Juin - 12:07 (2013)
Aaaaaaaaaaah ! Mais ta sécurité ! Elle enlève JUSTE les commandes d'appel de script ! Non ? J'y comprend plus rien ^^
Tu me parle d'un truc comme ça :
Spoiler



Posté par Nuri Yuri le 15 Juin - 12:56 (2013)
Ouais, un truc de ce genre Gros matou qui ronronne
Ainsi, les deux commandes que t'as mis ne seront normalement pas modifier par ton script et seront exécutes par le jeu :b

Posté par Ku'rei le 15 Juin - 13:56 (2013)
Okay, c'est intégré. Concrete_Encounter possède maintenant une alternative pour lancer le combat. ^^ Merci

Posté par Sphinx le 15 Juin - 15:13 (2013)
Juste une petite interrogation : pourquoi les commentaires de ton script sont en anglais ? Pleurnicheur

Posté par Lonel le 15 Juin - 15:28 (2013)
Je trouves que ça rends un peut la carte surchargée...
Enfin, bon, c'est mon opinion personnel, mais...

Posté par Ku'rei le 15 Juin - 15:53 (2013)
Tout dépend de combien tu met en nombre de pas moyen, sur toutes mes map sauf la grand je suis à 10 pas moyen, tu peux mettre 5 voit moins et cela réduira le nombre Pokémon placé sur une map.
après c'est vrai que dans l'eau, je trouve que ça surcharge beaucoup.

Posté par Eurons くさ le 15 Juin - 16:00 (2013)
Après, moi je fais tous ceci en Event mais c'est une bonne initiative que tu as eu la Clin d'œil foireux

Posté par Ku'rei le 16 Juin - 08:15 (2013)
Si tu fait tout en event, peut-être que mon Event_Copier pourrait t'intéresser.

MAJ : Ajout de la gestion des Pokémon Voyageurs (SUICUNE, LATIOS, ...)

Posté par Sphinx le 16 Juin - 13:51 (2013)
Remarque, tu t'appuies sans doute aussi sur un système équivalent pour ce script, non ?

^^ Si non, tu devrais peut être te baser dessus, ca éviterait la possible installation de deux scripts ayant comme effet parmi tant d'autre de permettre la duplication d'évents d'une map sur une autre Clin d'œil foireux

Quoiqu'il en soit, je n'ai pas testé, mais rien qu'à voir c'est un script qui a du te prendre pas mal de temps, et qui est réussi apparemment ^^ (même si je ne comprends pas pourquoi les commentaires sont en anglais Pleurnicheur)

Posté par Ku'rei le 16 Juin - 14:29 (2013)
Un système équivalent ? Pour l'apparition d'event sur la map ? Ou pour le Copiage ?

Pour avancer je teste une fonctionnalité avant de coder la suivante afin de pouvoir faciliter le repérage de l'erreur. J'aurais pu me baser sur un autre (si j'avais trouvé) mais j'avais vraiment envie de faire ce système de A à Z. Et comme je modifie l'objet event copié, j'avais besoin d'être sûr que toutes ses composantes et les composantes des composantes sont dupliqué (EventCommand, array, ...)

Pour le temps, je suis malade alors j'oublie que je pourrais être en train de m’entraîner dans un champs au soleil avec une Red Bull en restant devant mon ordi à boire du Smecta ^^ et pour l'anglais, ben, faut bien que je le travaille quelque part ...
Merci, mais j'ai l'impression que pas grand monde va l'utiliser.

Posté par Sphinx le 16 Juin - 14:59 (2013)
^^ Ca change pas mal de choses au gameplay des jeux officiels de Pokémons, mais ca peut aussi être un énorme plus niveau originalité pour un projet (si tu en as un, tu devrais utiliser ton système ^^)

Mais perso, j'aime bien l'idée de pouvoir voir certains pokémons (puisque tu laisses même la possibilité d'utiliser ton système en parallèle des rencontres normales Imbécile heureux)

Posté par Ku'rei le 17 Juin - 15:17 (2013)
Pas mal de chose oui, si on veut ^^ Hahaha disons que maintenant, traverser une étendue d'herbes haute n'est plus jouer aux dés, si on veut éviter un combat le talent du joueur à manier son personnage est de mise.

J'en ai un (si tu va voir ma galerie) où je compte bien intégré ce système en biiiiiiiiien plus poussé. Mais comme mon projet est en C# sous XNA et que je doit changer de moteur... J'ai besoin d'une pause alors je me détend sur du ruby ^^

EDIT_VISIBLE::Nouvelle vidéo disponible ainsi que d'autres fonctionnalités

Posté par og_loc-TATOO le 17 Juin - 15:39 (2013)
Personnelement, ce script à sa place dans Pokemon Océan Gros matou qui ronronne
Je ne l'avais pas vu se script, et bah maintenant que je l'ai vu, je ne vais pas le quitter.

Posté par Carnistus le 17 Juin - 17:03 (2013)
J'ai un petit problème avec le system quand je là une partie sa me fait une erreur voici le log.
Spoiler
---------- Erreur de script : Scene_Map ----------
----- Type
NoMethodError

----- Message
- ARGS - []
undefined method `place_monsters' for nil:NilClass

----- Position dans Scene_Map
Ligne 50

----- Backtrace
Script : Scene_Map | Ligne : 50 | Méthode : in `alias_update'
Script : Scene_Map | Ligne : 48 | Méthode : in `loop'
Script : Scene_Map | Ligne : 70 | Méthode : in `alias_update'
Script : MAPPANEL | Ligne : 90 | Méthode : in `old_update'
Script : TempsJourNuit | Ligne : 248 | Méthode : in `update_passminimap'
Script : Minimap | Ligne : 44 | Méthode : in `follow_me_update'
Script : follow me | Ligne : 104 | Méthode : in `update'
Script : Scene_Map | Ligne : 25 | Méthode : in `old_main'
Script : Scene_Map | Ligne : 19 | Méthode : in `loop'
Script : Scene_Map | Ligne : 30 | Méthode : in `old_main'
Script : TempsJourNuit | Ligne : 237 | Méthode : in `main_passminimap'
Script : Minimap | Ligne : 31 | Méthode : in `main'
Script : Main | Ligne : 49


J'ai pourtant bien suivi ton tutoriel.

Merci d'avance

Posté par Ku'rei le 17 Juin - 18:05 (2013)
Ca viens du faites que $concrete_encounter est nil,
A tu bien ajouter $concrete_encounter = Kurei::Concrete_Encounter.new dans le script Scene_Title de Krosk ?
ça te donne :
Code:
class Scene_Title
  include POKEMON_S
   
  def main
    if $BTEST
      battle_test
      return
    end
    $concrete_encounter = Kurei::Concrete_Encounter.new

normalement

Posté par Carnistus le 18 Juin - 06:18 (2013)
J'avais mis le code comme sa:
Code:
class Scene_Title 
  include POKEMON_S 
     
  def main 
    if $BTEST 
       $concrete_encounter = Kurei::Concrete_Encounter.new
      battle_test 
      return 
    end   

Merci mon problème est résolu.

Et merci pour ton script qui est très pratique.(J'allais mettre chaque pokémon par event)

Posté par Ku'rei le 18 Juin - 07:02 (2013)
Voilà, j'avoue que ce n'était pas très clair comme e l'ai dit. J'ai édité.

Merci, n'hésites pas à revenir ici dire ce que tu en pense plus tard, dire ce que je pourrais amélioré, ajouter, ... J'ajoute de nouvelles fonctionnalité tout les jour en ce moment (petites souvent).

Mais regarde celle que je viens de mettre, elle implique des modification de la constantes des Standards.

Posté par Carnistus le 18 Juin - 11:25 (2013)
J'ai testé les autres fonctions et je trouve que tu as fait un travail incroyable avec ce system.

D'ailleurs j'ai une autre question:
les pokémon peut-il change de maps?(je vais tenter de m'explique)
Si un bulbizarre se trouve sur la route 1 et que je le mets en mouvement aléatoire est-il possible qu'un jour je le voie dans les maps voisines de la route 1?

Posté par Ku'rei le 18 Juin - 12:15 (2013)
Euh ... Non ^^ Mais c'est une idée que je pense pouvoir implémenter en utilisant le MAP_LINK, je prend note. Mais ce ne serait pas facile... De plus je ne trouve pas l'idée trés intéressante car les évent de la map liée par MAP_LINK ne sont pas chargés.

Posté par lucario360 le 8 Sep - 05:08 (2013)
Je voulais savoir si cela est compatible avec PSP DS 0.4 car j'ai commencer l'instalation , mais certain bout de code a modifier dans les autres scripts c'est pas du tout les même ligne car j'aimerais bien utiliser se scripts pour mon projet. Si quelqu'un peut m'aider en me fournissant les scripts modifier de ce scripts pour psp ds sa m'aiderait ou bien me donner les bonne ligne a modifier.

Posté par Ku'rei le 8 Sep - 11:24 (2013)
Je ne connais pas du tout PSP DS. Je vais essayer de l'installer. Je te redis après.

EDIT::Normalement, tout fonctionne bien. Mais l'installation est différente, il va te falloire chercher un peu plus les endroit à modifier.

EDIT 2 :: J'ai édité le sujet, les deux installations sont détaillées.

Posté par lucario360 le 8 Sep - 17:28 (2013)
Merci quand même, mais j'ai des bug avec le scripts EVENT_COPIER, j'ai bien de la misère a installer un gros scripts plein de modificaion, car je m'y connait pas trop en scripts alors si tu peux, il serait tu possible pour toi de m'envoyer une petite démo du starter kit psp ds 0.4 avec ton système installer cela m'aiderais beaucoup sinon et bien je restera avec les rencontres aléatoire ordinaire.

Posté par Ku'rei le 8 Sep - 20:24 (2013)
Tu peux m'envoyer le bug ?