Pokémon Script Project Forum Index

Manuel | Search
 Information des admins 
Si vous désirez parler de PSP ou obtenir du soutient là dessus, merci d'aller faire un tour sur https://pokemonworkshop.com/forum/index.php Imbécile heureux

Pokémon Script Project On the Ground V0.3
Goto page: <  1, 2, 3, 4, 5, 6, 7, 8, 9, 10  >
 
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Projets amateurs -> Starter-Kits et Outils de développement
Previous topic :: Next topic   
Author Message
Ku'rei
Membre


Joined: 10 Aug 2010
Posts: 546
Adepte du NoMoreExcuses
Localisation: Chambéry
Masculin

PostPosted: Fri 4 Oct - 18:47 (2013)    Post subject: Pokémon Script Project On the Ground V0.3

Sphinx wrote:
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 wrote:
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à !
Back to top
Publicité






PostPosted: Fri 4 Oct - 18:47 (2013)    Post subject: Publicité

PublicitéSupprimer les publicités ?
Back to top
Nuri Yuri
Team SDK


Joined: 15 Oct 2008
Posts: 6,383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

PostPosted: Fri 4 Oct - 20:33 (2013)    Post subject: Pokémon Script Project On the Ground V0.3

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


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
Back to top
Facebook Twitter
Sphinx
Scribe
Scribe


Joined: 07 Jan 2008
Posts: 9,736
Localisation: Quelque part, dans le monde... Ou peut être sur une autre planète...
ID Steam: FaQuinator

PostPosted: Fri 4 Oct - 20:37 (2013)    Post subject: Pokémon Script Project On the Ground V0.3

^^ 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 ?
Back to top
Nuri Yuri
Team SDK


Joined: 15 Oct 2008
Posts: 6,383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

PostPosted: Fri 4 Oct - 20:48 (2013)    Post subject: Pokémon Script Project On the Ground V0.3

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
Back to top
Facebook Twitter
Sphinx
Scribe
Scribe


Joined: 07 Jan 2008
Posts: 9,736
Localisation: Quelque part, dans le monde... Ou peut être sur une autre planète...
ID Steam: FaQuinator

PostPosted: Fri 4 Oct - 21:41 (2013)    Post subject: Pokémon Script Project On the Ground V0.3

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é ?
Back to top
Ku'rei
Membre


Joined: 10 Aug 2010
Posts: 546
Adepte du NoMoreExcuses
Localisation: Chambéry
Masculin

PostPosted: Fri 4 Oct - 21:45 (2013)    Post subject: Pokémon Script Project On the Ground V0.3

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é.
Back to top
Nuri Yuri
Team SDK


Joined: 15 Oct 2008
Posts: 6,383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

PostPosted: Fri 4 Oct - 21:59 (2013)    Post subject: Pokémon Script Project On the Ground V0.3

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".
Back to top
Facebook Twitter
Ku'rei
Membre


Joined: 10 Aug 2010
Posts: 546
Adepte du NoMoreExcuses
Localisation: Chambéry
Masculin

PostPosted: Fri 4 Oct - 22:06 (2013)    Post subject: Pokémon Script Project On the Ground V0.3

Les symbole ne serait un genre d'énuméré global ?
Back to top
Sphinx
Scribe
Scribe


Joined: 07 Jan 2008
Posts: 9,736
Localisation: Quelque part, dans le monde... Ou peut être sur une autre planète...
ID Steam: FaQuinator

PostPosted: Fri 4 Oct - 22:09 (2013)    Post subject: Pokémon Script Project On the Ground V0.3

Yuri wrote:
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] !
Back to top
Ku'rei
Membre


Joined: 10 Aug 2010
Posts: 546
Adepte du NoMoreExcuses
Localisation: Chambéry
Masculin

PostPosted: Fri 4 Oct - 22:19 (2013)    Post subject: Pokémon Script Project On the Ground V0.3

La différence est dans l'itération :
Code:
for key in mon_hash.keys
  #Do your stuff (©Yuri)
end
Back to top
Nuri Yuri
Team SDK


Joined: 15 Oct 2008
Posts: 6,383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

PostPosted: Fri 4 Oct - 22:27 (2013)    Post subject: Pokémon Script Project On the Ground V0.3

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.)
Back to top
Facebook Twitter
lucario360
Membre


Joined: 24 Feb 2010
Posts: 81
Localisation: québec,Chicoutimi

PostPosted: Sat 5 Oct - 16:11 (2013)    Post subject: 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..
Back to top
Ku'rei
Membre


Joined: 10 Aug 2010
Posts: 546
Adepte du NoMoreExcuses
Localisation: Chambéry
Masculin

PostPosted: Sat 5 Oct - 18:25 (2013)    Post subject: 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 :


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)


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.


Last edited by Ku'rei on Tue 15 Oct - 07:39 (2013); edited 1 time in total
Back to top
Psykomatik
Membre


Joined: 16 Jan 2012
Posts: 141
Administrateur
Localisation: Quelque part. :ok:

PostPosted: Sun 6 Oct - 12:51 (2013)    Post subject: Pokémon Script Project On the Ground V0.3

Petite question, comptes-tu faire passer PSP On the Ground sur PSP DS ou PSP 5G v0.9 ?
Back to top
Ku'rei
Membre


Joined: 10 Aug 2010
Posts: 546
Adepte du NoMoreExcuses
Localisation: Chambéry
Masculin

PostPosted: Mon 14 Oct - 15:36 (2013)    Post subject: Pokémon Script Project On the Ground V0.3

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, ...).


Plus sérieusement, voici le tableau des fonctionnalités ajoutées par la version 0.3 :
Back to top
Display posts from previous:   
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Projets amateurs -> Starter-Kits et Outils de développement All times are GMT + 1 Hour
Goto page: <  1, 2, 3, 4, 5, 6, 7, 8, 9, 10  >
Page 2 of 10

 
Jump to:  

Index | Free forum | Free support forum | Free forums directory | Report a violation | Cookies | Charte | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Thème par Thomas et l'équipe de la refonte PSP 2012 (version 1.0)