Sujet n°13190
Posté par Ku'rei le 20 Sep - 10:53 (2013)
Titre : Pokémon Script Project On the Ground V0.3

Qu'est-ce que PSPOG ? C'est un moteur vous permettant de faire apparaître les Pokémons des rencontres aléatoires sur la map comme des événements, cela remplis les maps et les rend beaucoup plus vivantes. Mais le SK ne s'arrête pas cette simple fonction : en plus des multiples personnalisations possibles concernant l'apparition des Pokémons vous pouvez aussi modifier leurs comportements sur la map (poursuite du joueur quand il est proche, fuite du joueur si le Pokémon est trop faible, ...) mais aussi en combat ! Déterminez quand le Pokémon fuit, quand il augmente ses stats, quand il sabote le statut de son adversaire, ... PSPOG rend le monde Pokémon plus stimulant.





Informations Générales


PSPOG est un starter kit créer avec le logiciel RPG Maker XP (version PSP_MOD), à partir du Starter Kit PSP4G+ de Sphinx lui-même créer à partir de PSP0.7 de Krosk. Un grand merci à eux-deux et à tous ceux qui ont participé de près ou de loin aux projets.
Le fichier téléchargé contient le SK et un projet exemple montrant succinctement ce que l'on peut faire avec ce SK, vous aurez environ 45 minutes (pouvant aller jusqu'à 5h si vous jouez comme mon testeur personnel) de jeu structuré par un scénario simple, vous ne serez pas tenu par la main alors observer et tiquez .Il contient aussi un manuel au format pdf détaillé complet avec un tutoriel de création de Standard.
J'espère que le SK vous plaira.
En ce qui concerne les Bugs, postez vos demandes dans ce sujets dans un premier temps et je verrai ensuite si l'ouverture d'un sujet réservé est nécessaire.

Téléchargements


Le Starter Kit PSPOG est disponible à cette adresse : Téléchargement
Le manuel seul est disponible à cette adresse : Manuel PSPOG (Téléchargement)
N'hésitez pas a faire part de vos réactions sur ce sujet.

Fonctionnalités


Voici une liste non exhaustive des fonctionnalités couvertes par la version 0.1 :
Version 0.1
  • Concrétisation des Pokémons sur la map
  • Personnalisation des comportements sur map
  • Personnalisation des comportements en combat : changements conditionnel d'IA (avec possibilité de scripter facilement la sienne)
  • Changement des musique et jingle de combat simplifié
  • Changement de fond de combat simplifié
  • Création de Pokémon Voyageurs comme Suicune, Latias.
  • Talus / Murets
  • Ponts
  • Repousse
  • Persistance des caractéristique et statuts des Pokémons sauvages sur la map


Et maintenant ce qu'apporte la version 0.2 :
Version 0.2
  • Changement de nom pour PSP OG (On the Ground)
  • Système Game_Zone :
    • Liaison et chargement des maps liées entre elles
    • Mise à jour des maps liées
    • Zone de chargement
  • IA de combat entièrement programmées et fonctionnelles
    • Offensive
    • Sabotage Statut
    • Sabotage Stats
    • Soin
    • Renforcement
    • Optimisation
    • Utilisation d'une capacité particulière
  • Quelques modifications de fonctionnement pour lesquelles je vous invite à aller voir la nouvelle version du manuel :
    • Taux de remplissage
    • Zone de mise à jour des PokEvents
  • Gestion des deux types de rencontres (normales et PokEvent) :
    • Activer/Desactiver les rencontres d'un type par interrupteur de jeu
    • Activer/Desactiver les rencontres d'un type sur certains tags
    • Cacher les PokEvent sur certains tags
  • Changements locaux de standards
  • Sauvegardes entièrement fonctionnelles (Correction des possibles bugs)
  • Sauvegarde des ponts (oui parce qu'ils ne l'étaient pas avant)
  • Placement des PokEvents corrigé et optimisé
  • Tags de Map
  • Animation du Centre Pokémon facilité
  • Variables locales pour Event (à la manière des interrupteur locaux mais pour des variables)


Apports de la version 0.3 :
Version 0.3
  • Rencontres Spéciales
    • Rochers, Arbres, ...
    • Canne à Pêches
  • Console de Debug
    • Exécution de code
    • Selection d'un event
    • Information Event/PokEvent
    • Création d'un log lors d'une erreur dans la console
  • Programme RMXP 1.03fr modifié
  • Attributs de Pokémons
    • Invincible
    • Incapturable
  • Comportements par espèces (Sauvage et dresseurs)
  • Compagnons (Follow_Me)
    • Standards pour compagnon
    • Activation/Désactivation et nombre de compagnons du joueur
    • Compagnon d'event
  • Game_Zone désactivable temporairement
  • Afficher_Message amélioré
  • Divers
    • Se tourner sans se déplacer
    • Module Input réécrit
    • Scènes de renommage réécrites
    • Système de mise à jour (anti-lag)
    • Pas de PokEvents sur les zones de superposition des maps
    • Temps de réapparition des PokEvents

Et il en manque encore mais tout est détaillé dans le manuel.

Compléments du manuel (entre deux versions)


Entre la version 0.3 et la suivante :


Corrections de scripts manuelles (entre deux versions)


Entre la version 0.3 et la suivante :


Crédits


Voici la liste de ceux qui ont participé à la création de ce Starter et des ses précédents :
Crédits
  • Team et aides extérieures :

    • Graphistes :

      • Empire1601
      • Mister-K
      • Endoh
      • Wesker
      • denis bros


    • Eventmakers / Scripteurs :

      • Ku'rei
      • Sphinx
      • Slash
      • denis bros


  • Aide extérieure :

    • Jordan : nouveaux pokémons
    • Ace Attorney Man : partage de sprites
    • Krosk : diverses aides en script
    • Ray' : création du logo
    • Palbolsky : système de baies
    • Zelda : système de quêtes
    • kellessdee : FPS_Display
    • Nathmatt : Unlimited Terrain Tag
    • RMXPStudio : divers scripts inclus à 4G+
  • Pack des Characters Pokémon
  • Yuri : pour tout ses conseils
    FinalArt (For adding shadows. The shadow is already transparent at 50%, placed them directly in the Characters folder RMXP.)

    bibiantonio
    Brendan75
    DJStarmix
    Drakhaine
    ghioa
    Krosk
    Lén
    Link
    Louro
    Mortenkein
    Qwerty
    Palbolsky
    Razbuz
    Shaolan
    Slash
    Spiky
    speed
    Sphinx
    Suicune
    Yuri-岼
    Zelda
    Ace Attorney Man
    Bilkev
    Brendan
    Solfay
    Sphinx
    Yuri-岼
    spaceemotion
    Alucus
    New-titeuf
    TwentyOne
    TheEnglishKiwi
    CNickC
    Warpras
    Dewitty
    Yoh
    Stefpoke
    07harris/Paranoid
    19dante91
    27alexmad27
    874521
    Alistair
    Bakura155
    Blue Beedrill
    chimcharsfireworkd
    CNickC/CNC
    Dewitty
    Fused
    Kizemaru_Kurunosuke
    klnothincomin
    Kymotonian
    Novus
    Pokemon_Diamond
    PrinceLegendario
    Reck
    Red-Gyrados
    REMY35
    Saurav
    SL249
    ThePokemonChronicles
    WesleyFG
    Sphinx
    Yuri-塗 ゆり
    Pαlвσlѕку
    LaPampa
    Emeraude
    Dark'
    Slash
    Junki
    Lumi
    Pois-Sky
    Solfay.
    RL77LUC
    Newtiteuf
    Speed
    Sebix
    Diésel
    Warp'
    IamTheAdic
    Kureiji
    SoulStorm2036
    Ray'
    Brendan75
    Gryfenfeu
    Noty!
    Pois-Sky
    Karusi
    Isomir
    Doques
    Guigui28240
    Araceus
    White-start
    Zopo
    Moy


J'ai repris la liste de PSP4G+, donc forcément, si Sphinx en a oublier moi aussi alors n'hésitez pas à le signaler (et à nous excuser).


Historique des Mises à jours



Posté par Antanio le 20 Sep - 11:42 (2013)
Ton travail est non négligeable, mais je pense que de là à un faire un SK à part entière, c'est un peu excessif. On dirait que tu veux juste que ton nom soit associé à un SK de PSP.
Tu pourrais plutôt apporter ton aide à PSP0.8, par exemple. (Et perso je trouve que la map fait un peu chargée avec tout ça, mais bon.)

Posté par Gold le 20 Sep - 11:58 (2013)
Bah après pouvoir proposer une variété de starter kits, c'est très bien, donc bon courage pour ce projet de sk.
Juste une question : D'où vient le "Concrete Engine" ?

+ afficher les Pokémon sur la map c'est bien... Mais ça anéantit tout l'effet de surprise :/

Posté par Ku'rei le 20 Sep - 12:08 (2013)
Merci. Ca fait plaisir de voir que mon travail est reconnu.

Mais s'il te plait, ne me prend pas pour un kikoolol qui feraient tout pour être intéressant et reconnu, ce projet je l'ai en tête depuis longtemps.

Ensuite, oui, il n'y a pas autant d'apports que PSP4G+ ou PSPDS, mais les scripts modifiés étant nombreux et nécessite parfois de la précision dans les lignes modifiées, ça devient un calvaire pour celui qui l'installe, essaie déjà d'installer les scripts de murets et ponts séparément et tu verra.

Encore ensuite, je vais justifier le fait d'en faire un SK :
J'espère que ça t'as convaincu.

Pour la map surchargée, c'est ton gout et ça vient aussi de mon style de mapping (forêts denses et aléatoires).

@Gold : (EDIT::Remarque obsolète avec la version 0.3) Pour l'effet de surprise, il y a un "false" a changer en "true" et tu as les deux modes de rencontres. (Script Scene_Map ligne 64)
Concrete Engine, je n'avais pas tellement d'idée de nom alors "moteur de concretisation" => "Concrete Engine" ce serait même Concreting Engine si je ne m'abuse.
Pour la variété, je le redis, les scripts modifis les caractéristiques et l'utilisation des Pokémons. Je pourrais parlé pendant des heures, essayez et voyez par vous-même Imbécile heureux

Posté par TouzaxA le 20 Sep - 19:47 (2013)
Même si j'accroche pas au nom, je dois avouer que c'est une bonne initiative, car je n'ai jamais installé aucun de tes scripts parce que j'avais la flemme. XD

Posté par Ku'rei le 20 Sep - 20:12 (2013)
Okay ^^ le nom n'inspire pas. Qu'est ce que vous proposez ? Je suis tout ouïe Imbécile heureux

Posté par og_loc-TATOO le 20 Sep - 21:28 (2013)
Y a t-il moyen d'afficher les pokemon partiellement sur la map ?
Du genre, on les voit dans les hautes herbes, mais quand on surf sur l'eau, on ne les vois pas.

Posté par Ku'rei le 3 Oct - 17:26 (2013)
J'ai prévu de le faire ds la prochaine version.
Fonctionnement indicatif : dans l'évent DATA_MAP. Commande par commentaire : DM;TAG_CACHANT;tag1;tag2;...
Avec tagX le tag où les pokemons n'apparaissent pas.

Met le maintenant. Ca fonctionnera quand tu aura la prochaine version.

EDIT:: vous pouvez supprimer toutes les maps fournies avec le SK. Le projet exemple est simplement la pour aider a la création. Je vous conseil donc de le garder a portée de main pour le consulter facilement.

EDIT 2::
VERSION 0.2 EN LIGNE


EDIT 3:: Je me sens seul dans ce sujet ^^ Bouhouhouuu venez me tenir compagnie on est bien :D
Nan plus sérieusement, je m'auto-up pour savoir comment je peut faire sortir mon SK de la catégorie propositions de projet.

Posté par TouzaxA le 3 Oct - 17:26 (2013)
Tu peux commencer par demander à quelqu'un du staff. Gros matou qui ronronne

Posté par Girakoth le 3 Oct - 17:33 (2013)
Voilà, mon travail est accompli.

Posté par Ku'rei le 3 Oct - 18:05 (2013)
D'oh ! J'avais pas pensé à ça TouzaxA ^^
Youhou ! Merci Girakoth !

Posté par Lonel le 3 Oct - 22:48 (2013)
J'aimerai bien pouvoir ne pas avoir les pokémons sur la map, mais garder le "comportement" en combat, si tu pouvais le mettre dans uns script à part et le poster sur le forum, ce serait vraiment bien...

Posté par Ku'rei le 4 Oct - 06:00 (2013)
Ca ne marche pas comme ça ^^ Le comportement est carrément lié au standard vu qu'il est définis à l'interieur. Ce sera dans la prochaine version Imbécile heureux

EDIT:: Par contre, ce que tu peut faire pour l'instant, c'est au moment où tu créer ton Pokémon
Code:
pokemon = ... # Tu récupère ton objet POKEMON_S::Pokemon
#ia = ["condition;stratégies"]
ia = ["true;OPTIMISATION;OFFENSIVE", "pv_inf?(50,2);FUITE(1);FUITE_SI_POSSIBLE"]
pfb = Kurei::ConcreteEngine::PokemonFightBehaviour.new(ia)
pokemon.fight_behaviour = pfb

Il faudra aussi que tu ajoute cette ligne à la classe Pokémon : attr_accessor :fight_behaviour
Sinon tu ne pourra pas définir le comportement en combat.

Posté par Sphinx le 4 Oct - 18:12 (2013)
Imbécile heureux Au fait, finalement, c'est CE (Concrete Engine) ou OG (On the Ground) ? (je dis ca parce que je suis tatillon et il y a un PSP CE qui traine dans la description Spiky)

Plus sérieusement, quand j'aurai le temps, faudra que je m'y intéresse ^^ (et je ne dis pas ca parce que Ku'rei Jinwu a utilisé 4G+ pour son SK :D)

"Chapô" bas ^^

Posté par Nuri Yuri le 4 Oct - 18:25 (2013)
Grrr, strings are evil !
Je verrais plus un :
Code:
Kurei::ConcreteEngine::PokemonFightBehaviour.new(:active=>true, :optimisation=>true, :type=>:offensive, :pv_inf_arg=>[50,2], :fuite=>1, :fuire_si_possible=> true)

Tu définira le constructeur de la manière suivante :
Code:
def initialize(hash)
  #do your stuff
end

Normalement hash contiendra {:active=>true, :optimisation=>:true, :type=>:offensive, :pv_inf_arg=>[50,2], :fuite=>1, :fuire_si_possible=> true}, enfin en ruby 1.9.1 et 2.0 si il ne comprend pas la syntaxe borne l'argument par {}.
C'est plus propre de faire ainsi que d'utiliser des strings surtout qu'avec un hash et des symboles, t'as juste le hash à allouer et ruby te permettra de récupérer ce que tu veux (ainsi que de faire tes traitements sans problèmes).

Voilà, voilà, c'est mon petit com', essaies de penser à une alternative de ce genre car les strings c'est trop d'allocations inutiles et la porte ouverte au hack. (En gros, les dev' du projet fait avec ton SK seront obligé de se retaper tout le code pour qu'il soit fiable.)

Posté par Ku'rei le 4 Oct - 18:47 (2013)
Sphinx a écrit:
Imbécile heureux Au fait, finalement, c'est CE (Concrete Engine) ou OG (On the Ground) ? (je dis ca parce que je suis tatillon et il y a un PSP CE qui traine dans la description Spiky)

Plus sérieusement, quand j'aurai le temps, faudra que je m'y intéresse ^^ (et je ne dis pas ca parce que Ku'rei Jinwu a utilisé 4G+ pour son SK :D)

"Chapô" bas ^^

PSPOG ^^ J'ai changer la description vite fait ... Pas biieeen Kurei !
Je pense que tu y trouverais des choses à redire comme Yuri.


Yuri a écrit:
Grrr, strings are evil !
Je verrais plus un :
Code:
Kurei::ConcreteEngine::PokemonFightBehaviour.new(:active=>true, :optimisation=>true, :type=>:offensive, :pv_inf_arg=>[50,2], :fuite=>1, :fuire_si_possible=> true)

Tu définira le constructeur de la manière suivante :
Code:
def initialize(hash)
  #do your stuff
end

Normalement hash contiendra {:active=>true, :optimisation=>:true, :type=>:offensive, :pv_inf_arg=>[50,2], :fuite=>1, :fuire_si_possible=> true}, enfin en ruby 1.9.1 et 2.0 si il ne comprend pas la syntaxe borne l'argument par {}.
C'est plus propre de faire ainsi que d'utiliser des strings surtout qu'avec un hash et des symboles, t'as juste le hash à allouer et ruby te permettra de récupérer ce que tu veux (ainsi que de faire tes traitements sans problèmes).

Voilà, voilà, c'est mon petit com', essaies de penser à une alternative de ce genre car les strings c'est trop d'allocations inutiles et la porte ouverte au hack. (En gros, les dev' du projet fait avec ton SK seront obligé de se retaper tout le code pour qu'il soit fiable.)


J'entend bien que les string sont pas trés économes. Mais ce que j'ai proposé à Lonel est une méthode de substitution, on passe le string dans l'initialize, puis le script de comportement le traite pour le stocker. La chaîne provient directement des commentaires présents dans le Standard, il n'y a donc pas lieu de les modifier avant le traitement, de plus dans un hash on perd la notion d'ordre or l'ordre est primordial dans une stratégie !
true;OPTIMISATION;OFFENSIVE" est différent de true;OFFENSIVE;OPTIMISATION;" (ce n'est qu'un exemple)

Mais tu a raison sur le fait que je peux eviter de stocké des expressions entières dans une chaine. Je ne connaissais pas l'utilisation de :nom_methode pour la traiter comme une valeur. Merci Yuri Imbécile heureux

EDIT:: @Yuri: Allocation ? Porte ouverte pour le hack ? euh... Tu pourrais m'expliquer tout ça stp ?
Et il y a une petite erreur dans ta signature "des edit visibleS" à edit aussi si tu met des s aux abbréviations.

EDIT2:: ":nom_methode", autant pour moi, c'est la classe Symbol, tu me fais découvrir un outil trés sympatique là !

Posté par Nuri Yuri le 4 Oct - 20:33 (2013)
On ne perd la notion d'ordre que sur les versions inférieur à 1.9 en ruby dans les Hash :b
Dans tous les cas, avec ma méthode, tu feras : hash[:type] pour savoir si l'IA est offensive ou non :b
Sinon, c'est bien les symboles que j'essaie de te faire découvrir, c'est très utile lorsqu'on a besoins de générer des fonctions ou alors de faire du traitement d'argument ou autre :b

Un petit exemple

Code:
#===
#¤Nyuky's StructGenerator Module
#---
#+01/01/13 : Nyagato Nyuky
#===
module StructGenerator
  Char=:char
  Uchar=:uchar
  Byte=:byte
  Word=:word
  Uword=:uword
  Dword=:dword
  Udword=:udword
  Int=:int
  Uint=:uint
  Float=:float
  Qword=:qword
  Uqword=:uqword
  Double=:double
  Ptr=:ptr
  TypesOffsets={Char=>1,Uchar=>1,Byte=>1,Word=>2,Uword=>2,
  Dword=>4,Udword=>4,Int=>4,Uint=>4,Float=>4,
  Qword=>8,Uqword=>8,Double=>8,Ptr=>4}
  TypesNames={Char=>"Sc",Uchar=>"SC",Byte=>"SC",Word=>"Ss",Uword=>"SS",
  Dword=>"Sl",Udword=>"SL",Int=>"Sl",Uint=>"SL",Float=>"Sf",
  Qword=>"Sq",Uqword=>"SQ",Double=>"Sd",Ptr=>"SL"}
  module_function
  def run(name,mod,members)
    if(mod.const_defined?(name))
      warn("La classe #{name} existe déjà !\n")
      return false
    end
    v=Class.new(String)
    sinitialize="def initialize(*args);"
    stos="def to_s();\"#<#{name}:\#{(self.object_id*2).to_s(16)} "
    index=0
    offset=0
    members.each_key do |m|
      ot=members[m]
      os=TypesOffsets[ot]
      oc=TypesNames[ot]
      sinitialize<<"self.#{m}=args[#{index}] ? args[#{index}] : 0;"
      stos<<"#{ot} #{m}=\#{#{m}()};"
      v.class_eval("def #{m}() return self[#{offset},#{os}].unpack(#{oc})[0] end;def #{m}=(v) self[#{offset},#{os}]=[v].pack(#{oc}) end")
      index+=1
      offset+=os
    end
    sinitialize<<"end;"
    stos<<"\"end"
    v.class_eval(sinitialize)
    v.class_eval(stos)
    v.class_eval("def self_ptr() return [self].pack(Sp).unpack(SL)[0] end")
    mod.const_set(name,v)
    sinitialize=nil
    stos=nil
    name=nil
    members=nil
    GC.start
    return true
  end
end
#===
#>Définition de constantes dans la classe String pour les structure
#===
class String
  Sc='c';SC='C';Ss='s';SS='S';Sl='l';SL='L';Sq='q';SQ='Q';Sf='f';Sd='d';Sp='p'
end

Code:
#===
#¤WinAPIStructus
#---
#+01/01/13 : Nyagato Nyuky
#===
module WinAPI
  g=StructGenerator
  g.run("Point",self,:x=>:int,:y=>:int)
  g.run("MSG",self,"hwnd"=>:int,"message"=>:uint,"wParam"=>:uint,"lParam"=>:int,"time"=>:int,"x"=>:int,"y"=>:int)
  g.run("RAWINPUTDEVICE",self,"usUsagePage"=>:uword,"usUsage"=>:uword,"dwFlags"=>:dword,"hwndTarget"=>:int);
end

Avec ce petit code je peux générer des structures C dans ruby et les utiliser pour mes appels d'APIs Gros matou qui ronronne


Pour ce qui est la porte ouverte aux hacks, c'est simple, il suffira de scanner la mémoire et de chercher OFFENSIVE puis de le remplacer par autre chose à souhait voir même de changer l'intégralité des paramètres envoyés :b

Posté par Sphinx le 4 Oct - 20:37 (2013)
^^ Utiliser les symboles comme clé de Hash, ca ne m'était jamais venu à l'esprit. Pourquoi pas Imbécile heureux Ensuite, j'aimerais comprendre en quoi l'ordre de lecture des clés d'une Hash peut avoir une telle importance ^^"

=> Pour rappel, on travaille sur quelle version de ruby avec le RGSS de RMXP ?

Posté par Nuri Yuri le 4 Oct - 20:48 (2013)
Mon exemple était pour illustrer les symboles :b
L'importance de l'ordre des clefs prend tout son sens dans mon exemple, si les clefs sont désordonnées, la structure ne sera pas alignée correctement et il en résultera à des bugs de l'application qui se servira des structures :b

Sinon, les symboles étant des valeurs statiques, elles sont bien plus rapides à être trouvés dans un Hash qu'un string :b

Pour toi a["b"] et a[:b] sont la même chose... Pour ruby pas du tout car lui il voit qu'il vérifie un Symbole, un Fixnum ou un Booléen (nil inclut) il va juste faire un équivalent de == alors que lorsque c'est un string, un tableau ou autre chose il va devoir récupérer l'objet puis appeler la méthode == de cet objet.

Enfin bref, c'est la mécanique du ruby vu du processeur :B

Posté par Sphinx le 4 Oct - 21:41 (2013)
xD L'intérêt d'une Hash n'est il pas de s'affranchir de l'ordre des valeurs ?

Permettant par la même de spécifier certaines options en en ignorant d'autres (à condition que ce soit géré par le développeur certes) ? Sinon, un Array bête et méchant n'est il pas plus performant / approprié ?

Posté par Ku'rei le 4 Oct - 21:45 (2013)
Ok, j'ai rien compris à ton code et pas la motivation de le regarder plus en détaille maintenant. Donc je te crois sur parole. C'est donc mieux si je stock les données en symbole plutôt en string ?

Je suis en train de me dire que je n'ai pas besoin de Hash pour faire ce que j'ai a faire avec mes conditions et actions.

@Sphinx : je teste les condition dans l'ordre où elles étaient dans l'Event, mais un array peut-être plus adapté ^^ Effectivement (Ajouter après avoir ton dernier msg)

EDIT::Sur le About de Rmxp 1.03, Ruby est à 1.8.1 donc effectivement, on a pas l'ordre dans les Hash. Et ça m'a permit de voir que l'ordre de définition des stratégie n'etait pas toujours respecté.

Posté par Nuri Yuri le 4 Oct - 21:59 (2013)
Les symboles ne sont pas des conteneurs attention. Ils doivent être utiliser de la même manière que je t'ai monté :b
Soit tu fais un string avec toute tes données, soit tu crée des arguments en utilisant les symboles comme identifiant à certaines choses.

@Sphinx : Tu te trompes entièrement sur les Hashs. Le but des hash n'est pas de s'affranchir de l'ordre des valeurs, ça c'est second, le but des hash est de pouvoir associer une clef à une valeur, par exemple a[true]=false. Ce qui serait impossible avec un Array qui lui stocke les valeurs, elles sont "indexés".

Posté par Ku'rei le 4 Oct - 22:06 (2013)
Les symbole ne serait un genre d'énuméré global ?

Posté par Sphinx le 4 Oct - 22:09 (2013)
Yuri a écrit:
Ce qui serait impossible avec un Array qui lui stocke les valeurs, elles sont "indexés".

^^ Dans un array, t'as aussi une association clé/valeur, juste que la clé n'est pas libre, c'est un auto incrément séquentiel :p Après, que le proc gère ma hash ainsi :
Code:
{:a => "BEUH", :b => 10_000}

ou :
Code:
{:b => 10_000, :a => "BEUH"}


Quelle différence xD J'y accèderai toujours par hash[:a] et hash[:b] !

Posté par Ku'rei le 4 Oct - 22:19 (2013)
La différence est dans l'itération :
Code:
for key in mon_hash.keys
  #Do your stuff (©Yuri)
end

Posté par Nuri Yuri le 4 Oct - 22:27 (2013)
Sur ruby 1.8.1 aucune vu que les clefs vont être triés, sur ruby 2.0 t'accèdera plus vite à :a qu'à :b si :a est définie avant :b.
Dans les faits, les arrays c'est des index, ou des positions, les hash c'est des clefs qui sont cherchés affin de trouver la valeur.
On peut modéliser un hash ainsi :
Code:
class Hash2
  def initialize(hash)
    @keys=Array.new
    @values=Array.new
    hash.each_key do |i|
      @keys.push(i)
      @values.push(hash[i])
    end
  end

  def [](key)
    pos=@keys.index(key)
    return (pos ? @values[pos] : nil)
  end
 
   def []=(key,value)
      pos=@keys.index(key)
      if pos
        @values[pos]=value
      else
        @keys.push(key)
        @values.push(value)
      end
    end
end

(Ce code est absolument pas optimisé, c'est un modèle.)

Posté par lucario360 le 5 Oct - 16:11 (2013)
Titre : probleme avec le GameZone
J'ai un petit problème avec le GameZone qui est le Maplink, j'ai pourtant suivit ce que dit le manuel et sa fonctionne pas.

en gros quand j'arrive a la limite de ma map pour aller vers la map qui est au nord je devrais voir une partie de la prochaine map au lieu du noir, mais je voit les 5 dernière case de ma map actuel a la place.




voici mon image in_game et l'eau que l'on voit c'est les 5 case du bas de cette map et je devrais voir à la place de l'eau le début de la prochaine map qui est au nord.




maintenant voici une petite part de mes 2 map dont celle du bas est celle dont je suis dans le in-game et l'autre celle au nord donc la prochaine map et mes téléportation se font a partir de la rue et j'ai indiquer aussi la taille de mes map pour t'aider car vu leur taille je voulais pas les mettre en entier. alors j'ai créer dans chacune des map un event en parallèle avec la commande en commentaire DM...... correspondant au maplink donc j'ai essayer plusieurs combinaison possible avec la commande et cela a rien changer.

Dans ma map du bas j'ai mit: DM;MAPLINK;n;3;20;
Dans la map du haut : DM;MAPLINK;s;2;-20;

J'ai essayer tout les combinaison possible en inversant le 20 par -20 et aussi je ne comprends pas ton event de téléportation.

Merci du conseil..

Posté par Ku'rei le 5 Oct - 18:25 (2013)
Titre : Pokémon Script Project On the Ground V0.3
Il faut que MAPLINK (de Krosk) soit désactivé (je dis ça au cas ou tu l'aurais activé).

Ensuite, il n'y a aucun décalage entre tes deux maps. Chaque colonne d'une map est alignée avec celle de l'autre. Avec tes décalages, tes maps seront affichées comme ceci :
Spoiler


Vérifie que ton event contenant DM;MAPLINK;...; s'appelle bien exactement DATA_MAP. Il n'a pas besoin d'être en processus parallèle voici le DATA_MAP de la map rivière du projet exemple (version 0.3 qui n'est pas encore sortie)
Spoiler


l'event DATA_MAP est un event complètement inutile en jeu, pas la peine de gâcher de la ressources en le mettant en processus parallèle.

Posté par Psykomatik le 6 Oct - 12:51 (2013)
Petite question, comptes-tu faire passer PSP On the Ground sur PSP DS ou PSP 5G v0.9 ?

Posté par Ku'rei le 14 Oct - 15:36 (2013)
"Ancien message"
Nop, je ne vois pas l’intérêt du tactile sur ordinateur (donc je ne vois pas l’intérêt de 2 écran sur ordi) et aussi parce que j'ai détesté toutes les versions après RSE (déjà là c'était limite), qu'aucun ajout réel n'a été fait à part des gadgets et des nouvelles générations avec une espèce de pokémon sur 50 qui est originale et unique, tout ça pour faire vendre des jeux... Peut-être que X et Y inverseront la tendance mais je suis sceptique... Bref, je ne veux pas parler de ça ici. Donc pas de PSP DS. Et je ne connais pas du tout PSP 5G ^^ De ce que l'on voit sur la présentation, c'est une amélioration de PSP DS ?

Je ne sais pas comment ces propos peuvent être compris, mais en aucun cas je ne me veux condescendant. Pardonnez-moi si c'est votre ressenti.

Peut-être un genre de bibliothèque avec des points d'entrée/sortie bien définis et donc plus facilement exportable et adaptable aux autres SK. Mais ce ne sera pas avant que je maîtrise les Design Pattern et que j'ai beaucoup plus d’expérience car cela nécessiterait de recoder tout le SK (il devient trés spaghetti là ^^)


Bonjour à tous,

Voici quelques news de la version 0.3 du SK PSPOG qui devrait sortir en fin de semaine. En image, quelques-unes des fonctionnalités remarquables en screenshots (canne, à pêche, compagnons, ... Pas IA de combat, ...).

"Petit délire avec les compagnons"

Plus sérieusement, voici le tableau des fonctionnalités ajoutées par la version 0.3 :
"Tableau de bord V0.3"

Posté par TouzaxA le 14 Oct - 17:55 (2013)
Bah ça a l'air très complet tout ça !

Posté par Ku'rei le 20 Oct - 12:20 (2013)
Merci, comme prévun en fin de semaine.
VERSION 0.3 EN LIGNE

Posté par lucario360 le 20 Oct - 14:26 (2013)
il est tu possible de modifier un projet démarer avec la version 0.2 et de rajouter les fonctions de la 0.3 sans tout transférer, car j'ai fait cela pour la premiere version à la 0.2 et c'est très long et pénible quand tu a beaucoup de ressource et autres. la copie du fichier scripts.rxdata pourais faire, mais quand tu as des scripts de rajouter on les perds alors préviens moi si tu as une bonne solution merci!

Posté par Ku'rei le 20 Oct - 14:59 (2013)
Normalement, la copie du fichier scripts.rxdata est suffisante en ce qui concerne les scripts mais tu devrais tout de même transférer les événements communs qui ne sont pas dans la version précédentes. De tête, je peux aussi te dire que le tileset jothocomplet2 à été modifier et que divers chara de Red ont été modifiés aussi.

Posté par lucario360 le 20 Oct - 17:30 (2013)
Ah ok c'est bon, j'ai tout transferrer comme d'habitude et je n'utilise pas les tilesets de base avec le SK et pour les divers chara de RED c'est quoi au juste qui est modifier c'est tu pour un évents quelconque car si j'utilise un autre héros va falloir y creer les modification.

Posté par Ku'rei le 20 Oct - 18:14 (2013)
C'est pour le changement d'apparence du Héros (event Animer_Joueur, ...) C'est juste la canne à pêche, le template de canne à pêche, ...

Posté par Zohran le 4 Nov - 20:38 (2013)
Euh, j'ai une question, on peut modifier le comportement du pokémon en combat, peut-on aussi modifier le comportement des combats contre les dresseurs?
Je parle au niveau de l'IA.

Posté par Ku'rei le 6 Nov - 09:30 (2013)
Les comportements des Pokémon des dresseurs sont modifié dans les Event DATA_SPECIES, en précisant à qui s'applique la définition (c'est dans le manuel)
mais tu ne peux pas établir une stratégie pour le dresseur (changement de Pokémon, utilisation d'objet, ...).

Posté par Zohran le 6 Nov - 10:18 (2013)
D'accord, merci. Prévois-tu de le faire ou non?
Si je demande ça c'est parce que je prévois de démarrer peut-être un projet sur PSP0.7...

Posté par Ku'rei le 6 Nov - 10:54 (2013)
Oui, c'est une fonctionnalité que j'implémenterais dans le système de combat que je suis en train de recoder).

Posté par Zohran le 6 Nov - 11:12 (2013)
Génial ! MOUAH AH AH AH ! Qwerty à Ibiza

Posté par Ku'rei le 11 Nov - 13:55 (2013)
Petite présentation de l'avancement des combats. Pour l'instant le système gère :
C'est loin d'être fini mais le plus gros (je parle de la structure) est fait.
La suite :
Voici la VIDEO

Posté par Nuri Yuri le 11 Nov - 15:02 (2013)
C'est pas mal, reste plus qu'à faire fonctionner les attaques \\o//
Pour le choix des pokémons j'aurais plus vu quelque chose comme ça :
Image

Un choix en fenêtre dans une scène qui se déroule en fenêtre est un peu mieux et choisir les pokémons à ta manière ça fait un peu bizarre x)

Posté par Qwerty le 11 Nov - 15:05 (2013)
Par contre, "Pokémon" est invariable, donc pas de "s" au pluriel :O

Posté par Nuri Yuri le 11 Nov - 15:33 (2013)
Et tu es fière de ta connerie ?
Selon les points de vue, il ne m'est pas interdit d'écrire les pokémons bien que ce mot provient de l'étranger. Je le considère ici comme un nom commun au même titre que monstre.
Maintenant, si tu n'as rien d'autre à ajouter qui est en rapport avec le sujet initial : Pokémon Script Project On the Ground. Tu ne postes pas de réponses.

Posté par Qwerty le 11 Nov - 15:50 (2013)
Calme, Yuri :O
Je parlais à Ku'rei parce qu'il l'a mis dans son interface, en vrai (qui a donc rapport avec le sujet initial)...
Aussi, dans les JVs officiels, il a toujours été écrit Pokémon au pluriel, sans s (et ça rend moins bien esthétiquement avec dans son interface)

Mais pourquoi, une telle "agressivité" ? ):

Posté par Aerun le 11 Nov - 15:56 (2013)
Après discussion et recherches, il s'agit en français effectivement d'un mot invariable masculin. On dit des Pokémon et non pas des Pokémons, comme on ne dit pas des Frigos, mais des frigo ou des réfrigérateurs.

Plus sérieusement j'ai regardé un peu le contenu de ce SK, très beau travail. Gros matou qui ronronne

Posté par Laito' le 11 Nov - 16:24 (2013)
Qwerty a écrit:
Calme, Yuri :O
Je parlais à Ku'rei parce qu'il l'a mis dans son interface, en vrai (qui a donc rapport avec le sujet initial)...
Aussi, dans les JVs officiels, il a toujours été écrit Pokémon au pluriel, sans s (et ça rend moins bien esthétiquement avec dans son interface)

Mais pourquoi, une telle "agressivité" ? ):


Comme on dit "Jeux-vidéo" et non Jeux-vidéos.
Pokémon, même au pluriel ne prend pas de S.
Je comprends Yuri, c'est lourd les gens qui écrivent aussi POKEMON alors que c'est POKéMON ou POKÉMON. Là, rajouter un S ça revient au même.

Posté par og_loc-TATOO le 11 Nov - 16:34 (2013)
Eh bah, ce système de combat aurait largement sa place dans mon projet, vu que l'espace de combat est assez large pour contenir 6 pokemon '-'
Tu es sûr que tu veux pas l'adapter dans mon projet ? Pleurnicheur

Posté par Zohran le 11 Nov - 16:36 (2013)
Beau boulot Kurei, et bien, avec un aussi bon scripteur, je crois que je vais arrêter le développement de SK moi, je vois plus l'intérêt... :O

Posté par Nuri Yuri le 11 Nov - 16:45 (2013)
@og_loc-TATOO : C'est juste un problème de sprites, si tu les mets en 2x2 au lieu de 3x3 ça passe mieux. (La DS a un écran de 256x192 et le 3v3 passe assez bien).

@Laito : Certes, en français dans la langue français c'est invariant si on considère que Pokémon est un mot reconnu comme tel dans les autres langues. Après, les étrangers mettent un s à Pokémon au pluriel mais là ne sera pas le problème. Je conçois totalement que dans un message ou une interface Pokémons est une faute, mais dans le jeu en lui même, non. Pokémon doit être considéré comme un nom commun les gens du jeu parlent leur langue et Pokémon doit être un mot au même titre qu'animal ou monstre sinon, ça inclurait qu'ils ne reconnaissent pas les Pokémons. Enfin, c'est de l'ordre de la pensé mais bon voilà quoi.

@Qwerty : On commence pas une phrase par par contre sans établir de contexte. C'est ton problème si tu m'as ressenti comme agressant. Dans l'interface, Pokémon est plus judicieux et correcte que POKEMONS mais je n'avait pas vraiment relevé la faute chez Kurei.

Posté par Laito' le 11 Nov - 16:52 (2013)
À partir du moment où dans le jeu lui même c'est pas accordé, je pense qu'il y a pas vraiment à en discuter.
Même si je comprends ta frustration à ce niveau là.

Posté par Zohran le 11 Nov - 16:55 (2013)
Et puis, vu l'orthographe, la syntaxe et la grammaire de certains, je trouve qu'on peut remercier d'avoir "les pokémons" écrit de cette manière plutôt que " les peaukaimones" Ohmagad

Posté par Ku'rei le 11 Nov - 18:10 (2013)
@Yuri : Remarque intéressante. J'ai pensé à faire comme tu le dis mais j'ai relevé plusieurs problèmes :
Le système à pour but d'être pas beaucoup ni trés mais extrêmement ouvert au modifications (cela se verra dans mon projet personnel), et normalement la version que je proposerait gérera les combats avec unes infinité de pokémons (en théorie). La sélection par la fenêtre pose le problème de la place.


@og_loc-TATOO : Les interactions entre le système et le SK passent au maximum par un module se comportant de façon différente selon le SK utilisé. C'est pourquoi il sera facilement exportable sur n'importe quel autre SK. Cela est du au fait que je code le système pour PSP 1.0 et PSP 0.7, je connais la structure de données de PSP0.7 mais pas de PSP1.0. Donc oui tu pourra le mettre dans ton SK Imbécile heureux


@TOUS : Je vais coupé court au débat sur le 's' en disant que toutes les chaînes/nom de fichier et constantes du système sont paramétrés dans un script à part et que l'utilisateur n'aura qu'à modifier selon sa préférence.
Je pars du principe que Pokémon est utilisable comme le nom chat et chien et peut donc prendre la marque du pluriel.

Je ne veux plus entendre parler de ça ici. Merci de votre compréhension.


EDIT:: J'aurais aussi besoin de savoir une petite chose : s'il y en a qui utilise ce SK, vous n'avez pas de bug à corriger ?

Posté par elric54 le 11 Nov - 19:43 (2013)
Si j'ai bien compris moi qui suis sur PSP0.7 je peux me servir de ton SK sans problème ?

Posté par og_loc-TATOO le 11 Nov - 19:59 (2013)
Cool, quand il sera fini je le mettrai dans mon SK, du coups je ne vais pas commencer la modif' du système de combat maintenant Gros matou qui ronronne
Bizarrement ma flemme commence à partir 42

Posté par Ku'rei le 11 Nov - 21:22 (2013)
@elric : Je ne vois pas ce que tu veux dire. Si tu es sur PSP0.7, il te faut transférer ton projet sur PSP OG

@oc : Fait donc comme tu le sens Imbécile heureux Je m'arrangerais pour que les fonctions de démarrage de combat des SK de base restent valides.

Posté par doug le 14 Nov - 22:06 (2013)
Merci pour le SK Imbécile heureux
Je vais tenter de l'installer et de l'utiliser, je te transmettrai avec plaisir mon retour sur son utilisation (et si je constate des bugs / ou si j'ai des questions sans réponse le concernant).
J'ai hâte de voir l'implantation de ton nouveau système de combat également ^^

Petite question cependant, quelle est la version souhaité de RPG Maker XP pour faire fonctionner ton SK ? 1.01 ? 1.03 ? (comme j'ai pu lire dans le dernier patch note)

Posté par Ku'rei le 25 Nov - 12:55 (2013)
Je fournie un éxécutable PSP_Mod_2.exe avec le SK. C'est une version modifiée de rmxp1.03fr.exe (plus grande fenêtre de script, d'event, de database, ...
Je ne sais pas si j'avas inclu la fonctionnalité de retardement des respawn dans la version 0.4, mais il y a des chance que tu es un bug quand tu change de map. Si c'est le cas, va à la ligne 107 du script ConcreteEngine1 et met tout en commentaires :
Code:
#if map_data.last_entry_time != true and Time.new - map_data.last_entry_time >= map_data.reappearing_time
      #  return
      #end
      #p map_data
      #map_data.last_entry_time = Time.new


EDIT VISIBLE::
Voici une petite news de l'avancement du système de combat : le combat safari. Les calculs de captures et de comportements du Pokémon sauvages sont à revoir et la capture du Pokémon (ajout au Pokédex/Fin du combat) est à ajouter. Le système est opérationnel et devrait être complet avant la fin de l'année (par complet j'entend qu'il ne restera que les effets de capacité à encoder).

Pour la musique, j'ai pas fait gaffe. Vous savez maintenant ce que j'écoute ^^

Posté par joeyw le 25 Nov - 16:22 (2013)
Hum système bien cool en vue (comme la zik) Gros matou qui ronronne

Posté par Sphinx le 25 Nov - 17:26 (2013)
^^ Magnifique tout ca !

D'ailleurs, un détail attire tout particulièrement mon attention : dans ton safari, tu affrontes 2 pokémons à la fois. Est-ce uniquement pour le safari ou est-ce disponible aussi pour les combats (contre pokémons sauvages et/ou dresseurs) ?

Posté par Girakoth le 25 Nov - 18:00 (2013)
Pas mal!

Pour la musique, je suis sûr de connaître ce groupe, c'est quoi le nom? XD

Posté par Nuri Yuri le 25 Nov - 19:59 (2013)
Faut faire gaffe, dans les règles de combat sur Pokémon il est impossible de capturer un Pokémon adverse si il y a plus d'un Pokémon adverse x)

Posté par Psykomatik le 25 Nov - 20:23 (2013)
Sphinx: Il a dit qu'on pourra faire des combats 2 vs 2, 3 vs 3, 2 vs 1 etc ... Donc ça sera vachement complet !
Ça serait sympa qu'il aide PSP 1.0 honnêtement, il a l'air de s'y connaitre pas mal en script. :p

Posté par og_loc-TATOO le 25 Nov - 20:29 (2013)
Yuri a écrit:
Faut faire gaffe, dans les règles de combat sur Pokémon il est impossible de capturer un Pokémon adverse si il y a plus d'un Pokémon adverse x)


J'ai toujours trouvé cette règle complètement c*n '-'

Posté par Nuri Yuri le 25 Nov - 20:55 (2013)
@Psykomatik : Il a l'air seulement ?
Il sait scripter Gros matou qui ronronne

@og_loc-TATOO : Dans un certain sens pas vraiment, mais si la capture d'un Pokémon se fait en 2v2 alors le deuxième aurait la possibilité de fuir, si j'étais un Pokémon je réagirais ainsi.

Posté par og_loc-TATOO le 25 Nov - 22:50 (2013)
Ouais, mais tu tes déjà retrouvé en face d'un Abra que tu veux capturer et un autre pokemon sans intérêt ?
Si oui, tu comprends ma frustration de cette règle x')

Posté par Aerun le 26 Nov - 00:26 (2013)
A Day to Remember - Colder Than My Heart, If You Can Imagine, surement un de leurs meilleurs morceaux ! Gros matou qui ronronne
Pas mal du tout le Safari ! Imbécile heureux

Posté par Girakoth le 26 Nov - 01:04 (2013)
Ah bah je me disais aussi, j'ai les albums de ce groupe et j'étais quasiment sur que c'était le même chanteur XD

Posté par Ku'rei le 26 Nov - 08:22 (2013)
Sphinx a écrit:
D'ailleurs, un détail attire tout particulièrement mon attention : dans ton safari, tu affrontes 2 pokémons à la fois. Est-ce uniquement pour le safari ou est-ce disponible aussi pour les combats (contre pokémons sauvages et/ou dresseurs) ?

Le mode Safari ne fait que redéfinir certaines méthodes du système. Donc oui ça marche en 2vs2 et 3vs3. Mais il sera aussi possible au maker de créer un nouveau mode de combat sans modifier les autres. Dans l'objet paramètre de définition du combat on trouve le champs 'factory_method' qui contient le nom de la méthode de fabrication du combat (pour l'instant :normal et :safari). L'architecture fonctionne bien, mais je commence à m’emmêler dans la gestion des sprites et des pokémons...

Girakoth a écrit:
Pour la musique, je suis sûr de connaître ce groupe, c'est quoi le nom? XD

C'est A day to remember - Colder Than My Heart, If You Can

Yuri a écrit:
Faut faire gaffe, dans les règles de combat sur Pokémon il est impossible de capturer un Pokémon adverse si il y a plus d'un Pokémon adverse x)

Je sais mais comme l'a dit og_loc-TATOO, cette règle me semble vraiment vraiment dépassée.

Psykomatik a écrit:
Ça serait sympa qu'il aide PSP 1.0 honnêtement, il a l'air de s'y connaitre pas mal en script. :p

Yuri a écrit:
@Psykomatik : Il a l'air seulement ?
Il sait scripter Gros matou qui ronronne

Hahahaha 42

Posté par Psykomatik le 24 Déc - 17:36 (2013)
Le SK avance ? J'aimerais bien me lancer dans un projet, mais j'ai peur de devoir tout recommencer si j'le commence à la version 0.3 et que la version 0.4 sort. :s

Posté par Ku'rei le 24 Déc - 18:44 (2013)
Tu peux commencer, la version 0.4 modifiera le fichier Script.rxdata. Je te propose la méthode suivante :
- Créer ton projet à partir du SK,
- quand la nouvelle version sortira : tu copie/colle les scripts personnalisés dans un .txt ou dans un autre projet. Tu copie/colle le fichier Scripts.rxdata depuis la nouvelle version vers ton projet, tu replace tes scripts au bon endroit et tu es passé à la version suivante.

Concernant la nouvelle version, elle va mettre du temps à sortir. Je taff 8h/jour et ais 2 autres projets professionnels. Je ne contait que recoder le système de combat dans la 0.4.

Posté par TouzaxA le 26 Déc - 19:44 (2013)
Ku'rei a écrit:
Je ne contait que recoder le système de combat dans la 0.4.

C'est déjà pas si mal... Coupable

Posté par Ku'rei le 18 Jan - 08:57 (2014)
Bonjour tout le monde,
Vous l'aurez remarqué, le projet est en pause depuis un moment, je passe toujours de temps en temps sur le forum mais je monte une entreprise et n'ai plus trop le temps et l'envie de scripter. J'espère que le projet n'est pas mort mais simplement gelé et que je pourrais le reprendre bientôt.
Bon making à tous !

Posté par Psykomatik le 18 Jan - 19:08 (2014)
Pourquoi les meilleurs partent en premier ? ;(

RIP. :(

Posté par Girakoth le 18 Jan - 23:02 (2014)
Psykomatik a écrit:
Pourquoi les meilleurs partent en premier ? ;(

RIP. :(

Toi t'es là pour longtemps dans ce cas 42 (bon ok, c'était du troll gratuit)
Quoiqu'il en soit, bonne chance pour tes projets Ku'rei!

Posté par og_loc-TATOO le 18 Jan - 23:11 (2014)
Psykomatik a écrit:
Pourquoi les meilleurs partent en premier ? ;(

RIP. :(


Les meilleurs partent pas les premier, regarde, ch'ui encore la. Gros matou qui ronronne

Bonne chance Kurei Clin d'œil foireux

Posté par Ku'rei le 19 Jan - 10:07 (2014)
Le projet était déjà bien avancé, il dors et déjà énormément de possibilités. il ne manque que le système de combat dont je reprendrais le codage dans un moment (j'ai horreur de ne pas finir un projet ^^). Et je pense suis toujours dispo pour réglé les bugs qui surviennent, mais personnes n'en fait part (c'est à ce demander si le SK est utilisé)

Posté par og_loc-TATOO le 19 Jan - 14:28 (2014)
Et pourtant, les gens l'utilisent x)
Mais c'est ta faute si y a pas de bug 42

Posté par Sphinx le 19 Jan - 14:34 (2014)
x) Moi j'attendais la prochaine version pour tester ton SK

Posté par Ku'rei le 20 Jan - 15:12 (2014)
Grrr ! Vous me donnez envie de finir la 0.4 avant de monter mon entreprise...

Posté par doug le 23 Jan - 05:35 (2014)
J'utilise ton SK, même que j'ai démarré directement avec, et qu'il me plait bien Imbécile heureux

Vu que tu tiens à avoir des questions, je vais t'en soumettre une (même si je pense que ce n'est pas proprement dû à ton codage, mais c'est le seul "bug" que je n'ai pas su résoudre pour l'instant), et ensuite je donnerai mon feedback personnel sur ton SK Imbécile heureux

Alors, j'ai un plantage lorsque Mew utilise Morphing en combat :

Citation:
---------- Erreur de script : Pokemon_Custom ----------
----- Type
NoMethodError

----- Message
- ARGS - []
undefined method `dv_atk' for #<POKEMON_S::Pokemon:0x9c81350>

----- Position dans Pokemon_Custom
Ligne 226

----- Backtrace
Script : Pokemon_Custom | Ligne : 226 | Méthode : in `transform_effect'
Script : Pokemon_Battle_Core 2 | Ligne : 1776 | Méthode : in `attack_action'
Script : Pokemon_Battle_Core 1 | Ligne : 552 | Méthode : in `phase3'
Script : Pokemon_Battle_Core 1 | Ligne : 430 | Méthode : in `update'
Script : Pokemon_Battle_Core 1 | Ligne : 168 | Méthode : in `main'
Script : Pokemon_Battle_Core 1 | Ligne : 165 | Méthode : in `loop'
Script : Pokemon_Battle_Core 1 | Ligne : 172 | Méthode : in `main'
Script : Main | Ligne : 49


Si vous avez une idée ^^

Pour en revenir au SK à proprement parlé, en effet je n'ai eu aucun bug notable, je vais résumer ici les quelques problèmes que j'ai rencontré :

- Le maplink qui en fait fonctionne avec une commande dans l'évènement DATA_MAP, ce qui diffère du manuel de base mais où on trouve la solution dans celui fournit avec le SK.
- La surpopulation par défaut des PokEvents, mais réglable via une autre commande dans le DATA_MAP.
- La création d'un pont praticable, mais configurable avec l'évènement commun associé.

Sinon à part ça, moi qui débute chez PSP, je prend un grand plaisir à utiliser ton SK et à en découvrir petit à petit les spécificités, tu rajoutes des choses vraiment pratiques, tu centralises pas de fonctionnalités, et j'avoue que ça fait du bien au cerveau Imbécile heureux

J'aurai aimé savoir aussi, comment efface t'on les sauvegardes dans le jeu?

Enfin voilà ! J'aime beaucoup ton travail, et j'espère vraiment que tu le mèneras jusqu'au bout :D

Merci !

Posté par og_loc-TATOO le 23 Jan - 13:32 (2014)
Pour la sauvegarde tu as la méthode barbare qui est de supprimer les saves dans la racine de ton projet =D

Posté par doug le 23 Jan - 15:06 (2014)
Héhé ^^

Bon j'ai trouvé la solution au problème, dans le script le dv_atk était initialisé sous "dv_atkws" et non "dv_atk". Voilà.

Posté par og_loc-TATOO le 23 Jan - 18:31 (2014)
C'est sympa, n'oublie pas de partager si tu as d'autre truc du genre Clin d'œil foireux

Posté par Ku'rei le 23 Jan - 18:46 (2014)
Tu as du courage de t'attaquer à PSP par PSPOG (qui est sans doute le plus complexe des SKs). Pour répondre à ces questions dans l'ordre :

- MAPLINK et GAME_ZONE sont deux systèmes de liaisons de maps différents : MAPLINK ne créer qu'une image fixe de la map liée (sans event) tandis que GAME_ZONE lie et met à jour map et évents. Il ne faut ABSOLUMENT pas les activer en même temps ! Le système GAME_ZONE et sont utilisation sont décrites dans le Manuel de PSPOG (pas de PSP 0.7)

- Pendant le développement, j'ai utiliser le remplissage global pour simplifié puis ajouter la possibilité de modifier le remplissage de chaque map. Le remplissage défini dans DATA_MAP est prioritaire sur celui défini dans le script CONFIG _PANEL

- Les pont sont a créer UNE SEULE FOIS au début de la partie : dans ton introduction, tu appelle l'event commun "CRÉATEUR DES PONTS" ou tu utilise la commande de script "placer_pont", en début de partie. Tout les ponts du jeu sont créer au même moment et sont sauvegardés.

C'est quel script ? (pour le dv_atk)


Sinon, les gens vous commencez à me remotiver pour coder le combat...

Posté par doug le 23 Jan - 20:11 (2014)
Oui j'ai fini par comprendre tout ça ^^

Pour le script, c'est celui de Pokemon_Custom.


Puisque je te tiens !

Je te fais par d'une coquille que j'ai remarqué dans le ConcreteEngine1 vers la ligne 140 :

Code:
list_tags_prio[tag] = [map_data.caluclate_pokevent_special_count(percent), map_data.data_tags[tag].list.size].min


caluclate est une erreur nan? ^^

D'ailleurs, je cherche à trifouiller le code pour pouvoir empêcher un pokemon soumis à la rareté d'apparaître en Pokevent sur la carte. Tu n'as pas d'option pour le faire déja ?

Car sinon il faut bidouiller je suppose le ConcreteEngine, et je suis dessus depuis 3 bonnes heures, et je tatonne pour trouver où se fait la vérification de la rareté et comment modifier le script dessus.

Posté par doug le 24 Jan - 03:10 (2014)
Bien ! J'ai le grand plaisir de vous annoncer que j'ai réussi après 8 heures d'études du script à solutionner le problème, et je suis même en mesure de vous transmettre les quelques modifications à faire dans le cas où vous ne souhaitez pas qu'un Pokemon ayant un niveau de rareté locale défini puisse apparaître en Pokevent visuel.

Pour signifier au logiciel que vous souhaitez interdire son Pokevent il vous suffit dans la configuration des rencontres de rajouter le champ false après celui de la rareté locale, comme ici :



Voilà pour la partie visible de l'iceberg Imbécile heureux

Maintenant on s'attaque aux modifications dans les scripts :

Dans le script Database >> Pokemon_Encounter vers ligne 175 rectifiez le code comme indiqué ci-dessous

Code:
      when 655 # Script suite
        index_script += 1
        script = event.parameters[0]
        if eval(script).type == Array and list[index_script] != nil
          list[index_script][1] = eval(script)[0]
          list[index_script][2] = eval(script)[1]
          list[index_script][3] = eval(script)[2]
        elsif eval(script).type == Hash and list[index_script] != nil


Ensuite dans le script ConcreteEngine >> MapData vers ligne 495, modifiez le script comme ceci :

Code:
  for p in pkm
            rar_loc = (p[2] == nil ? RARETE_LOCALE_DEFAUT : p[2])
            pokeventable = p[3]
            if pokeventable != false
            pkm_range[(rarete_max..(rarete_max+rar_loc))] = [p[0], p[1]] #Création de la fourchette de probabilité pour ce Pokéùon
            rarete_max += rar_loc
            end
          end

Et voilà !
On récupère le nouveau champ introduit dans l'énoncé de la rencontre, le processus de création de la liste des Pokevents s'effectue avec les Pokémons n'ayant pas cette restriction.

De ce fait vous pouvez choisir entre donner une chance au joueur de croiser dans la nature un pokémon avec une certaine rareté, ou ne le rendre capturable que dans les hautes herbes.

Voilà !

En espérant qu'il n'y avait pas un autre système déja existant Coupable xD
Mais je suis content pour un novice en Pokescript Rameric après manger

Posté par Ku'rei le 24 Jan - 10:55 (2014)
ATTENTION AU DOUBLE POST : utilise la fonction éditer, copie ton message, supprime le et colle le dans un nouveau pour faire un Edit Visible.

Si j'ai bien compris, cela permet au maker de créer un Pokémon rencontrables uniquement dans les hautes herbes en utilisant les PokEvent pour les autres. Pas mal, vraiment trés bonne idée, je voyais encore les choses par tag terrain, tu apporte une nouvelle possibilité intéressante. Cependant, vu l'endroit où se trouve la modification il faudra chercher les eventuels bugs. Je note pour l'ajouter à la 0.4 quand elle sortira.

Posté par Ku'rei le 24 Jan - 16:54 (2014)
Même si tu avais attendu 10 ans tu aurais fait un double post ^^

Pour l'instant je vois un bug possible :
Code:
if nil
  print 0
else
  print 1
end
Affichera toujours 1 car nil est considéré comme false. Donc si tu ne précise pas true il est fort probable qu'aucun PokEvent ne soit créer.

La partie modifiée dans MapData est utilisable (j'en reparle après), la partie DataBase elle, n'est ni optimisée ni sûre. J'y apporterais les modifications suivantes :
Code:
when 655 # Script suite 
   index_script += 1 
   script    = event.parameters[0]
   res       = eval(script)
   if res.type == Array and list[index_script] != nil 
      list[index_script][1] = res[0] 
      list[index_script][2] = res[1] 
      list[index_script][3] = (res[2] != false) # sera Faux Si false est écrit, Vrai dans tout les autres cas.
   elsif res.type == Hash and list[index_script] != nil


Pour la partie empêchant les Pokémons interdit de concrétisation (pokeventable), je pense que ta modification n'est pas propre (du point de vue code) et surtout qu'elle est instable (ajouter une fonctionnalité à l’intérieur d'un algo de calcul n'est JAMAIS une bonne idée ! On comprend ça avec l'expérience : toujours chercher l'endroit le plus indépendant pour modifier le code). Bref, tout ça pour dire que le code suivant fait le même effet et est plus sûr :
Code:
tag     = troop_data[0]     # Tag terrain
tag_jn  = troop_data[1]     # Tag Jour/Nuit
ecart   = troop_data[2][0]  # Ecart de niveau
pkm     = troop_data[2][1..troop_data[2].length]  # Pokémons rencontrés,
# ne prend pas l'écart qui est le premier elt de la liste

# Suppression des Pokémons non rencontrables en PokEvent <--- ICI
pkm = pkm.delete_if {|p| !p[3]}

En ajoutant la boucle for à la ligne 488. Cette solution est plus propre parce qu'elle supprime directement les Pokémon indésirables de la liste plutôt que multiplier les test dans les instructions suivantes.

Posté par Girakoth le 24 Jan - 17:32 (2014)
Genre le mec qui dit "attention aux double posts" et qui en fait un direct après Bouche extensible

Posté par doug le 24 Jan - 17:39 (2014)
Oui donc, tu as bien résumé le principe, parfait ^^

Tes modifications sont sûrement légitime, après tout je n'ai pas d'expérience pratique en ruby, je n'avais pas dans mon carquois la manière la plus sûre de faire la modification

Merci ^^

Sinon, je suis en train de m'exercer à appliquer des stratégies en combat dresseur, et il s'avère que ton manuel est faussé par un copier/coller que tu as fait dans VIII - 3 :

Citation:
SABOTAGE(stat, seuil) :
La stratégie Sabotage est divisée en deux mode : Sabotage de Statut, Sabotage de Stats.
Sabotage de Stats : veut faire baisser un stat de l'adversaire.
• stat : string, nom de la stat du lanceur à augmenter (« ATK », « DFE », « ATS »,
« DFS », « SPD », « ACC », « EVA » avec « ACC » la précision et « EVA »
l'esquive)
Par défaut : « ATK »
• seuil : entier, valeur de bonus/malus de la Stat à atteindre.
6 → « ATK de Machin n'ira pas plus haut »
-6 → « ATK de Machin n'ira pas plus bas »
0 → normal
Par défaut : -6.
Sabotage de Statut : veut infliger un statut à l'adversaire.
• stat : string, nom de la stat du lanceur à augmenter (« ATK », « DFE », « ATS »,
« DFS », « SPD », « ACC », « EVA » avec « ACC » la précision et « EVA »
l'esquive)
Par défaut : « ATK »
• seuil : inutile dans ce mode


Alors que je suppose que ça devrait plutôt ressembler à :

Citation:

SABOTAGE(stat, seuil) :
La stratégie Sabotage est divisée en deux mode : Sabotage de Statut, Sabotage de Stats.
Sabotage de Stats : veut faire baisser un stat de l'adversaire.
• stat : string, nom de la stat de la cible à diminuer (« ATK », « DFE », « ATS »,
« DFS », « SPD », « ACC », « EVA » avec « ACC » la précision et « EVA »
l'esquive)
Par défaut : « ATK »
• seuil : entier, valeur de malus de la Stat à atteindre.
6 → « ATK de Machin n'ira pas plus haut »
-6 → « ATK de Machin n'ira pas plus bas »
0 → normal
Par défaut : -6.
Sabotage de Statut : veut infliger un statut à l'adversaire.
• stat : string, nom du statut à infliger à la cible (« PSN », « PARA », « BRU »,
« SOM », « GEL », « CONF », « TOX »)
Par défaut : « ATK »
• seuil : inutile dans ce mode


Et du coup enlever dans RENFORCEMENT la stat négative (car je comprend pas l'intérêt là du coup?)

Voilà !

Posté par Girakoth le 24 Jan - 17:48 (2014)
Bon, je parle en ne m'y connaissant pas.
Si j'ai bien compris, "Sabotage" correspond à des attaques aux effets sur l'adversaire, et "Renforcement" aux effets sur soi-même?
Parce que dans ce cas, non, il ne faut pas enlever le seuil max à Sabotage: Vantardise augmente l'attaque adverse, par exemple.

Posté par doug le 24 Jan - 17:51 (2014)
Girakoth a écrit:
Bon, je parle en ne m'y connaissant pas.
Si j'ai bien compris, "Sabotage" correspond à des attaques aux effets sur l'adversaire, et "Renforcement" aux effets sur soi-même?
Parce que dans ce cas, non, il ne faut pas enlever le seuil max à Sabotage: Vantardise augmente l'attaque adverse, par exemple.


Oui, très juste, je comprends mieux maintenant.
Cependant la rectification pour le manuel des effets statuts est indispensable je pense.

Posté par Ku'rei le 25 Jan - 01:17 (2014)
Girakoth a écrit:
Genre le mec qui dit "attention aux double posts" et qui en fait un direct après Bouche extensible

doug à supprimé son message, je ne vois que cette explication.

doug : voici l'explication.
La stratégie SABOTAGE vise à faire descendre le stat de combat en dessous du seuil spécifié tandis que la stratégie RENFORCEMENT vise à faire monté la stat de combat au-dessus du seuil spécifié.
Il n'est dis nulle part que la stat commence à 0 :
Si la stat à été augmenté, une stratégie spéciale peut demander de remettre la stat à 1 plutôt que plus
Expl : stat ATK à +3, le Pokémon à besoin qu'elle ne soit augmentée que de un (+1), il devra saboter l'attaque jusqu'à +1.

Il n'y a pas pour l'instant d'IA visant à augmenter l'attaque de l'adversaire. Cela arrivera avec la 0.4

Posté par doug le 25 Jan - 18:37 (2014)
Par contre, je trouve, et mes amis testant ma démo également, que c'est RELATIVEMENT DUR de réussir à capturer un Pokémon sauvage, sans devoir y mettre au moins 3-4 Pokeball, même dans le rouge.

Es-ce normal ?

Je vois que tu as rajouté un *100 dans la division par rapport à la formule de base. Il y a moyen de mettre de l'eau dans le vin pour retrouver un taux plus ou moins correct ?

Posté par Ku'rei le 26 Jan - 12:23 (2014)
J'ai respecté la forule officielle. Je trouvais aussi que c'etait dur de capture un Pokemon. Je n'ai pas cherché plus loin car je devrai recoder la capture dans le systeme de combat.
Je te laisse fairees modif Imbécile heureux

Posté par doug le 26 Jan - 16:36 (2014)
Ku'rei a écrit:
J'ai respecté la forule officielle. Je trouvais aussi que c'etait dur de capture un Pokemon. Je n'ai pas cherché plus loin car je devrai recoder la capture dans le systeme de combat.
Je te laisse fairees modif Imbécile heureux


Oui, je vais me pencher dessus, je veux voir à mettre plus en avant quand le joueur fait l'effort de réduire les HP dans le rouge.

Enfin je vais y réfléchir et voir comment je pourrais améliorer ça (de mon point de vue).

Je suis daccord avec toi sur le fait qu'avoir 1 chance sur 16 de capturer un 90 full HP avec une pokeball est démesuré. Mais pour moi, le système actuel, où il te faut 3 pokeball pour capturer un pokemon niveau 5 en zone rouge est également disproportionné. Le facteur chance doit être moins frustrant.

Me reste à découvrir quels sont les % de couleur jaune et rouge.

Posté par joeyw le 26 Jan - 16:59 (2014)
Essaye de faire un tour par ici Imbécile heureux
./13210.html

Posté par doug le 27 Jan - 02:35 (2014)
J'avais déjà vu le lien, merci ^^


BON !

Ku'rei ! Je pense avoir compris où est le problème avec ton système de capture.

Code:
     # Calcul du premier flottant
      a = Float(((maxhp * 3 - 2 * hp) * rareness * status_multiplier * ball_rate)/(maxhp * 3 * 100))
     
      if a >= 255 # Le Pokémon est capturé
        j = 4
      else        # Deuxième chance de capture
        b = Integer(65535.0 * ((a/255.0)**(1.0/4.0))) # Racine quatrième = puissance (1/4)
        j = 4     # Initialement, la ball ne bouge pas.
        for i in 0...4
         if rand(65535) <= b   # Ajoute un mouvement de la ball pour chaque nombre aléatoire en dessous de b
            j -= 1              # Il y a une chance pour qu'ils soient tous en dessous de b et que le Pokémon soit capturé au rattrapage (comme au bac)
          end


Donc, par rapport au système de base, tu as rajouté un *100 dans la formule du a, ce qui rend donc plus "difficile" la capture en Calcul A, donc il devient casi impossible d'être assuré de capturer un Pokemon quand il est affaibli, avec malus, etc... et je pense que déjà là c'est une erreur car l'intérêt est de réussir à atteindre la capture avec ce calcul.

Donc, la plupart des captures de Pokémon passent obligatoirement par le Calcul B celui comprenant une part d'aléatoire.

Dans la formule d'origine, il y a donc les 4 RAND, et si les 4 sont inférieur au résultat du Calcul B le Pokemon est donc capturé, sinon la Pokeball oscille autant de fois que de RAND inférieur à B avant de libérer le Pokemon.

Dans ta formule, c'est inversé, le Pokemon est capturé si les 4 RAND sont supérieurs à B. (Vérification faites avec des prints des résultats, le Pokémon est capturé uniquement si les 4 sont supérieurs à B)
Et les conséquences sont donc terribles ! Car affaiblir un pokemon va donc augmenter la valeur de B, et rendre plus difficile la capture par 4 RAND supérieurs à B, et il est donc PLUS SIMPLE de capturer un Pokemon FULL HP qu'un Pokemon affaibli.

Donc en résumé :

A est beaucoup plus dur à atteindre à cause du * 100 rajouté à la formule originale.
B a l'effet inverse que prévu en rendant plus dur la capture si le Pokemon est affaibli.

Voilà, je te laisse vérifier mes dires, mais je pense que ça explique vraiment les soucis que j'ai rencontré avec une capture "BEAUCOUP TROP" difficile.

Si tu valides les dires, il suffira d'inverser le signe du if rand(65535) <= b pour la formule B. Pour la modification de la formule A, je te montre en exemple les conséquences :

Avec la formule de base ((maxhp * 3 - 2 * hp) * rareness * status_multiplier * ball_rate)/(maxhp * 3) un pokemon niveau 5 FULL PV a 76% de chance d'avoir UN rand inférieur au Calcul B (Donc 76% 76% 76% 76%, ce qui représente un taux pas vilain de chance de réussir)

Avec ta formule ((maxhp * 3 - 2 * hp) * rareness * status_multiplier * ball_rate)/(maxhp * 3 * 100) et le fonctionnement "normal" de la formule B, ce même Pokemon a 24% d'avoir un rand inférieur à B (Donc 24% 24% 24% 24%). Donc improbable de capturer un pokemon Full HP.

Avec ta formule ((maxhp * 3 - 2 * hp) * rareness * status_multiplier * ball_rate)/(maxhp * 3 * 100) et le fonctionnement de ta formule B, on passe FULL HP à 76% de chance de le capturer (comme la formule originalement prévu par le jeu).

Par contre, si on affaibli un Pokemon avec ton script actuel, on passerait à 68% de chance de le capturer si on essaye de l'attraper après l'avoir mis à 1% HP (Soit moins de chance que s'il était FULL HP). Tandis qu'avec la formule officielle, ce taux serait de 99% (Ce qui est plus logique ^^).


Le *100 a certes l'avantage de réduire à 24% la capture d'un Pokémon Full HP (pour l'exemple actuel), mais le désavantage d'avoir 32% de chance de capturer un Pokemon à 1% PV, ce qui du coup n'est pas "rentable".


Voilà pour ma longue analyse !

J'attends avec impatience ta réaction cher Ku'rei Imbécile heureux

Posté par Ku'rei le 27 Jan - 12:39 (2014)
Bon travail doug. J'avais ajouté ce *100 pour augmenter la difficulté des pokémons puissants mais je n'avais pas pensé aux conséquence sur les faibles (travail fait à l'arrache). Il faut supprimer le *100 et trouver un autre moyen.

Avec R = rareness * status * ball_rate
En calculant les limites (hp tend vers hpMax et hp tend vers 0) on découvre que le coef a est égal à 1/3 de R quand les PV sont à fonds et à R quand les PV sont à zéro. Je pense qu'il faut simplement diminuer encore le coef a quand les PV sont à fonds :
Code:
# Calcul du premier flottant
difficulte = 2 # Coefficient de difficulté de la capture
a = Float(((maxhp * 3 - 2 * hp)**difficulte * rareness * status_multiplier * ball_rate)/(maxhp * 3)**difficulte)

Comme ça on peut jouer sur la difficulté facilement, avec ce modèle :
quand hp = hpmax on a a = R/9
quand hp = 0 on a a = R

si la difficulté vaut 3 on aura un a minimun de R/27

etc.

Posté par Carnistus le 13 Mai - 11:47 (2014)
Salut,

Je voudrais savoir comment activer les pokémon sauvages dans les herbes(comme les jeux originaux)j'ai regardé dans les scripts et dans Config_Panel_CE à la ligne 46 il y a ça RANDOM_ENCOUNTER_SWITCH = 8 j'ai changé le 8 par true mais sa me mets une erreur voila le log


Spoiler

---------- Erreur de script : Game_Switches ----------
----- Type
NoMethodError

----- Message
- ARGS - [5000]
undefined method `<=' for true:TrueClass

----- Position dans Game_Switches
Ligne 20

----- Backtrace
Script : Game_Switches | Ligne : 20 | Méthode : in `[]'
Script : Game_Map | Ligne : 51 | Méthode : in `map_switch'
Script : Scene_Map | Ligne : 81 | Méthode : in `main'
Script : Main | Ligne : 49

et la ligne en question se trouve dans Game_Switches à la ligne 20 il y a ça if switch_id <= 5000 and @data[switch_id] != nil

Posté par Ku'rei le 15 Mai - 13:35 (2014)
RANDOM_ENCOUNTER_SWITCH : entier
Numéro de l’interrupteur activant les rencontres aléatoires des maps. Le changement sera
visible dès le changement d'état de l'interrupteur

EDIT : Activer les interrupteurs d'id RANDOM_ENCOUNTER_SWITCH et POKEVENT_ENCOUNTER_SWITCH désactivera les rencontres.

Le manuel est complet (ou trés peu de choses manque), si tu as un problème avec une variable, une constante ou méthode : CTRL+F + nom de la variable tu aura des indications.

Je vais détaillé un peu ton problème :
RANDOM_ENCOUNTER_SWITCH doit contenir un entier : le numéro de l'interrupteur qui te servira a activer/désactiver les rencontres aléatoires. Par défaut c'est l'interrupteur n° 8 (qui doit être nommé comme il faut). Pour activer les rencontres aléatoires tu as juste à activer l'interrupteur 8. SI tu veux changer d'interrupteur (passer sur l'interrupteur n°112 par exemple) tu mettra 112 à la place du 8

Posté par Carnistus le 2 Juin - 10:23 (2014)
Mon problème n'est pas réglé quand j'active l'interrupteur 8 les rencontre aléatoire ne marche toujours pas.

Posté par Ku'rei le 2 Juin - 17:58 (2014)
Décris-moi ton test stp.

Je ne me souviens plus trés bien, mais je crois qu'il faut changer de map pour que le changement opère.

Posté par Carnistus le 2 Juin - 18:20 (2014)
J'ai fait un événement qui active l'interrupteur 8 en processus parallèle.
J'ai déjà changé de maps mais ça ne marche pas.
(J'ai aussi testé de désactiver l'interrupteur 7)

Posté par Ku'rei le 2 Juin - 18:58 (2014)
Fait voir une capture d'écran de ton event

Posté par Carnistus le 3 Juin - 04:53 (2014)
Voila la capture d'écran
Spoiler



Posté par Ku'rei le 3 Juin - 07:26 (2014)
ha je vois !

Regarde le nom de l'interrupteur ^^ "Rencontre Aléatoire OFF", ça veut dire que les rencontres aléatoires sont activées par défaut, et qu'elles sont désactivées lorsque tu active cet interrupteur Clin d'œil foireux Avec cet event, tu n'aura pa de PokEvent non plus normalement.

La raison de cette particularité provient du rôles qu'on ces interrupteurs : permettre la désactivation temporaire des rencontre (elles étaient tout le temps activées). Ca mériterait d'être explicité dans le manuel.

Posté par Carnistus le 3 Juin - 07:33 (2014)
Même si je la mets sur désactiver ou que je l'enlève tout simplement les rencontre aléatoire ne marche toujours pas.
Ces peut-être à cause du tag terrain je les mis sur le 1 sa entrer peut-être en conflit avec celui des PokEvent mais je n'arrive pas à augmenter le nombre de tag terrain le maximum est à 7.

Édits:Problème résolu c'était dû à une petite erreur de ma part Gros matou qui ronronne

Posté par Esuma60 le 25 Juin - 13:52 (2014)
Salut Ku'rei, je viens de tomber sur ce post et je souhaitai te remercier et te féliciter pour le travail accompli, c'est tout simplement génial.

Encore merci mec.

PS : je vais étudier avec intérêt ton manuel Imbécile heureux

Posté par Carnistus le 12 Juil - 06:39 (2014)
J'ai découvert un bug qui peut être assez gênant.
Le system de quête ne marche pas complètement dans le SK.
Les objectifs capturés, voir et vaincre ne marche pas(Seuls les objectifs lier au combat ne marchent pas)
Aurais-tu une idée des modifications à apporter pour les rendre fonctionnels?

Posté par Ku'rei le 12 Juil - 13:02 (2014)
Je pense que tu peux copier/coller le script "Fonctions Quêtes" dans la catégorie "--- Communauté" de PSP OG
Je ne sais pas si ça marchera mais c'est ce qui me semble le plus probable, si ça marche pense à supprimer le script de base (histoire qu'il ne soit pas chargé deux fois au lancement)

Posté par Carnistus le 12 Juil - 19:22 (2014)
Effectivement sa marche maintenant.
Moi qui pensais que l'ordre des scripts n'avait pas grande importance...
Merci beaucoup Gros matou qui ronronne

Posté par Ku'rei le 13 Juil - 13:00 (2014)
L'ordre des scripts à beaucoup d'importance au contraire : les scripts sont chargé de haut en ba, donc si tu défini une fonction en haut et en bas, c'est la version en bas qui sera chargée (c'est ce qui s'est passé ici)

Posté par Carnistus le 21 Juil - 08:58 (2014)
J'ai une question sur le menu debug Gros matou qui ronronne
Il y a une commande qui permet de faire une maj BDD?(je n'ai pas accès à l'ancien menu avec la touche F9)

Posté par Ku'rei le 21 Juil - 10:44 (2014)
Je n'ai quasiment jamais utiliser le menu Debug, alors je l'ai oublié ^^

Problème facile à résoudre : dans le script Input (-- Utilities de PSPOG), ajoute
Code:
F9 = Keys::F9

après
Code:
CTRL  = Keys::CTRL
ALT   = Keys::ALT

Environ ligne 474

Voilà, je n'avais pas modifié la touche F9 du module Input.

Posté par Carnistus le 21 Juil - 11:08 (2014)
Merci beaucoup
Mes problèmes avec la BDD sont tous résolus maintenant Gros matou qui ronronne

Posté par redestructor le 22 Juil - 15:06 (2014)
honte a moi je me suis trompe de sujet desole NINJA POWA ! Spiky mais ton projet est interressant je pense que je vais lintegrer

Posté par Ku'rei le 23 Juil - 01:11 (2014)
Un nouvel adepte du concept On The Ground, ça fait plaisir :D

PS: par contre j'ai rien compris à ton message ^^

Posté par Rey' le 23 Juil - 09:13 (2014)
Je pense qu'il avait posté quelque chose qui n'était pas en rapport avec PSP OG, du coup il a édité et a généré ce texte incompréhensible. 42
Sinon, je n'ai pas encore eu le temps (ni la motivation) de tester OG, je risque de m'atteler à ça aujourd'hui. ^^

Posté par redestructor le 23 Juil - 09:32 (2014)
bah en gros oui jai poste un probleme que jai rencontre dans le starter kit et je me suis rendu compte que ce n'etait pas le bon sujet


sinon j'ai vu ton projet et il est interressant , c'est pour ca je t'ai dis je vais ajouter ces fonctionnalite dans mon jeu Imbécile heureux voila

Posté par Carnistus le 26 Juil - 03:36 (2014)
J'ai encore une petite question (et oui encore moi Gros matou qui ronronne )

J'ai fini l'animation de mon centre pokémon, mais je souhaite désactiver le compagnon qui nous emboîte le pas quand je soigne mes pokémon.
J'ai déjà essayé de désactiver l'interrupteur 10 ainsi que la variable 11 mais pour que le changement soit accompli je dois changer de map.
J'ai aussi mis un commentaire avec ALWAYS_UPDATE mais ça ne marche pas.

Posté par Ku'rei le 26 Juil - 12:40 (2014)
Le Centre Pokémon c'est un event en Touche Action, pas besoin de ALWAYS_UPDATE ^^
Envoi ton event, que je puisse voir Imbécile heureux

Posté par Carnistus le 26 Juil - 18:25 (2014)
Tien mes deux évents. (évent commun)
Spoiler




Posté par Ku'rei le 27 Juil - 10:26 (2014)
Tu sais que PSPOG possède un outil permettant l'animation du centre pokémon ?
Ton event de centre Pokémon ressemble à ceci (regarde le manuel) :

La gestion des compagnons est intégrée Imbécile heureux

Ce que tu dois faire c'est créer tes deux chara de centre pokémon Imbécile heureux

Posté par Carnistus le 28 Juil - 09:37 (2014)
Je ne savais pas PSPOG avait cette fonction.

(je ne peux pas lire le manuel chaque fois que j'ouvre un fichier PDF mon PC crash je tourne sur une vielle machine avec une très mauvaise config)

Posté par Ku'rei le 28 Juil - 12:05 (2014)
Dac, tu veux que je te l'envoi au format odt ? (open office)

Pour savoir comment fonctionne le système, regarde le projet exemple, il y en a un Imbécile heureux

Posté par Carnistus le 28 Juil - 20:34 (2014)
J'ai plus les maps de base il me semble, mais c'est bon avec le script j'ai trouvé comment faire.

(Pour le manuel c'est bon je crois connaitre toutes les fonctions de PSPOG maintenant. Il suffit de bien regarder les scripts Gros matou qui ronronne )

Merci du coup de main.

Posté par redestructor le 29 Juil - 02:39 (2014)
enfaite jaimerai savoir sil est possible de l'integrer dans pokemon essentials ?

Posté par Ku'rei le 29 Juil - 02:56 (2014)
Intégrer OG dans Esentials ? Si tu code une interface Essentials/PSPOG oui, mais autant recoder toutes les fonctionnalités de OG dans un projet essentials :/

Posté par redestructor le 29 Juil - 03:38 (2014)
jai po compris mai bon

Posté par Carnistus le 29 Juil - 04:24 (2014)
PSP en général n'est pas compatible avec pokémon essentials se sont deux starter kit très différent. Je ne crois pas cela possible (ou alors très difficile) d'adapter Un SK de PSP sur essentials. La seule chose que tu peux faire ces recoder toutes les fonctionnalités de PSPOG sur essentials. Et je ne crois pas que tu pouras te baser sur la base du code de PSPOG, car trop différente de celui de essentials.

Posté par Ku'rei le 29 Juil - 07:47 (2014)
C'est exactement ça : ce sont deux mécanismes trés différents
PS: essais de faire un effort sur l'orthographe, merci Imbécile heureux

Posté par Carnistus le 31 Juil - 21:54 (2014)
Je viens encore poster un petit problème.(je vais finir par remonter toutes les bugs Gros matou qui ronronne )

La commande si la touche ... est pressé dans une conditon ne marche pas.
Au début je pensais avoir fait une erreur dans l'évent mais finalement ce n'était pas le cas.
Ce n'est pas mon clavier, car sur d'autre SK ça marche parfaitement.

Posté par Ku'rei le 1 Aoû - 10:13 (2014)
Parce que cette fonction d'event est superflu :
Remplacer si la touche est pressée par une condition de script:
Code:
Input.press?(Input::CLEF) #Pour le nom des clef, va voir dans le script Input

L'avantage de cette méthode c'est que tu peut détecter le moment où la touche est pressée (trigger?), si elle est maintenu pressée (repeat?)

Posté par Carnistus le 1 Aoû - 21:44 (2014)
Merci ça marche parfaitement.