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

Méthodes et commandes de gestion du calendrier v3.0

 
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Ressources techniques -> Scripts
Previous topic :: Next topic   
Author Message
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: Tue 26 Aug - 23:14 (2008)    Post subject: Méthodes et commandes de gestion du calendrier v3.0

Utilise :
Events
Graphismes
Mapping
Scénario
Scripts


Niveaux :
1 : aucune connaissances nécessaires (sauf lire et comprendre le français lu)
2 : quelques bases nécessaires pour pouvoir adapter sans mal le système proposé
3 : connaissances minimum nécessaires
4 : bonnes bases indispensables
5 : connaissances poussées requises


Niveau nécessaire en évents :
1 : être capable d'insérer des commandes et des conditions scriptées

Niveau nécessaire en scripts :
2 : être capable d'installer une méthode

Ces niveaux sont à titre indicatifs, à la seule estimation de l'auteur. Lisez ce tutoriel pour vous faire une idée plus précise et n'hésitez pas à demander de l'aide si nécessaire.


Sommaire

Note de l'auteur
Ensemble des méthodes de gestion du temps
Explications de l'utilisation de ces méthodes
FaQ - Questions diverses
Vous êtes perdus


Note de l'auteur 

Je suis de retour avec une idée encore plus loufoque encore que toutes mes idées tordues que j'ai pu imaginer jusque là. Les dates et leur gestion... Pour ce qui est des usages possibles, je vous laisse imaginer ca ^_^ Moi, je me suis amusé à les créer, sans but précis, en fait...

Exceptionnellement, je ne détaillerai pas les méthodes employées, à l'exception de la fonction while que j'utilise dans deux des quatre méthodes présentes.

C'est une boucle qui marche ainsi :
Code:

while(condition)
...
end

Tant que la condition entre () est encore vraie, la boucle continue. Dès que la condition n'est plus remplie, la boucle s'arrête d'elle même, pas besoin d'utiliser la balise break (qui sert à interrompre les boucle).

NB : Time.now.day renvoie le jour (dans le mois) actuel, Time.now.month renvoie le mois actuel et Time.now.year renvoie l'année courante. Ca pourra vous servir plus tard.

PS : J'enrichirai le point 6 (FaQ - Questions diverses) avec vos questions, donc n'hésitez pas à en poster !

Edit : Aujourd'hui, je présente la liste presque complète des fonctions disponibles qui vous permettront, je l'espère, d'assurer une meilleure gestion du temps possible. Je n'ai plus d'idées pour ajouter de nouvelles fonctions, je crois avoir fait le tour... Enfin si vous en voyez d'autres... En attendant, étant donné le nombre de méthodes que j'ai ajouté, j'ai préféré les déplacer dans un nouveau script, que j'ai appelé "Interpreter Ter" et que j'ai placé sous le script "Interpreter Bis". Aussi, avant d'installer ou réinstaller l'ensemble de ces méthodes, je vous invite à retirer les précédentes modifications que vous avez effectué dans ce script. (toutes les fonctions de gestion du temps)



Ensemble des méthodes de gestion du temps 

Dans le nouveau script "Interpreter Ter" collez ce script (un peu moins de 500 lignes donc en spoiler) :
Code:
#==============================================================================
# ■ Interpreter
# Gestion du calendrier - Sphinx
# 28 aout 2008
#-----------------------------------------------------------------------------
# Fonctions de gestion des dates a utiliser en insertion de script
# ou en condition.
#-----------------------------------------------------------------------------

class Interpreter
#===============================================================================#
#                                                                               #
#              Fonction renvoyant une date au format "JJ/MM/AAAA"               #
#                                                                               #
#===============================================================================#

  # ------------------------------------------------------
  # date_dans_jours(valeur, var1 = nil, var2 = nil, var3 = nil)
  #   ajoute le nombre de jour defini et renvoie la valeur
  # ------------------------------------------------------
 
  def date_dans_jours(valeur, var_jour = 1101, var_mois = 1102, var_annee = 1103)
    if valeur < 0
      valeur = 0
    end
    $game_variables[var_jour] = Time.now.day + valeur
    $game_variables[var_mois] = Time.now.month
    $game_variables[var_annee] = Time.now.year
    while(valeur > 0)
      if [1, 3, 5, 7, 8, 10].include?($game_variables[var_mois]) and $game_variables[var_jour] >= 32
        $game_variables[var_jour] -= 31
        $game_variables[var_mois] += 1
        valeur -= 31
      elsif [4, 6, 9, 11].include?($game_variables[var_mois]) and $game_variables[var_jour] >= 31
        $game_variables[var_jour] -= 30
        $game_variables[var_mois] += 1
        valeur -= 30
      elsif [2].include?($game_variables[var_mois]) and $game_variables[var_jour] >= 29 and $game_variables[var_annee] % 4 != 0
        $game_variables[var_jour] -= 28
        $game_variables[var_mois] += 1
        valeur -= 28
      elsif [2].include?($game_variables[var_mois]) and $game_variables[var_jour] >= 30 and $game_variables[var_annee] % 4 == 0
        $game_variables[var_jour] -= 29
        $game_variables[var_mois] += 1
        valeur -= 29
      elsif [12].include?($game_variables[var_mois]) and $game_variables[var_jour] >= 32
        $game_variables[var_jour] -= 31
        $game_variables[var_mois] = 1
        $game_variables[var_annee] += 1
        valeur -= 31
      else
        valeur -= valeur
      end
    end
    return $game_variables[var_jour].to_s + "/" + $game_variables[var_mois].to_s + "/" + $game_variables[var_annee].to_s
  end

  # ------------------------------------------------------
  # date_dans_mois(valeur, var1 = nil, var2 = nil, var3 = nil)
  #   ajoute le nombre de mois defini et renvoie la valeur
  # ------------------------------------------------------
 
  def date_dans_mois(valeur, var_jour = 1101, var_mois = 1102, var_annee = 11)
    if valeur < 0
      valeur = 0
    end
    $game_variables[var_jour] = Time.now.day
    $game_variables[var_mois] = Time.now.month + valeur
    $game_variables[var_annee] = Time.now.year
    while(valeur > 0)
      if $game_variables[var_mois] > 12
        $game_variables[var_mois] -= 12
        $game_variables[var_annee] += 1
        valeur -= 12
      else
        valeur -= valeur
      end
    end
    return $game_variables[var_jour].to_s + "/" + $game_variables[var_mois].to_s + "/" + $game_variables[var_annee].to_s
  end

  # ------------------------------------------------------
  # date_dans_annees(valeur, var1 = nil, var2 = nil, var3 = nil)
  #   ajoute le nombre d'annees defini et renvoie la valeur
  # ------------------------------------------------------
 
  def date_dans_annees(valeur, var_jour = 1101, var_mois = 1102, var_annee = 11)
    if valeur < 0
      valeur = 0
    end
    if var_jour == nil
      var_jour = 1101
    end
    if var_mois == nil
      var_mois = 1102
    end
    if var_annee == nil
      var_annee = 1103
    end
    $game_variables[var_jour] = Time.now.day
    $game_variables[var_mois] = Time.now.month
    $game_variables[var_annee] = Time.now.year + valeur
    @mois = convert_mois($game_variables[var_mois])
    return $game_variables[var_jour].to_s + "/" + $game_variables[var_mois].to_s + "/" + $game_variables[var_annee].to_s
  end

  # ------------------------------------------------------
  # date_il_y_a_jours(valeur, var1 = nil, var2 = nil, var3 = nil)
  #   retire le nombre de jour defini et renvoie la valeur
  # ------------------------------------------------------
 
  def date_il_y_a_jours(valeur, var_jour = 1101, var_mois = 1102, var_annee = 11)
    if valeur < 0
      valeur = 0
    end
      $game_variables[var_jour] = Time.now.day - valeur
      $game_variables[var_mois] = Time.now.month
      $game_variables[var_annee] = Time.now.year
    while(valeur > 0)
      if [3, 5, 7, 8, 10, 12].include?($game_variables[var_mois]) and $game_variables[var_jour] < 1
        $game_variables[var_jour] += 31
        $game_variables[var_mois] -= 1
        valeur += 31
      elsif [4, 6, 9, 11].include?($game_variables[var_mois]) and $game_variables[var_jour] < 1
        $game_variables[var_jour] += 30
        $game_variables[var_mois] -= 1
        valeur += 30
      elsif [2].include?($game_variables[var_mois]) and $game_variables[var_jour] < 1 and $game_variables[var_annee] % 4 != 0
        $game_variables[var_jour] += 28
        $game_variables[var_mois] -= 1
        valeur += 28
      elsif [2].include?($game_variables[var_mois]) and $game_variables[var_jour] < 1 and $game_variables[var_annee] % 4 == 0
        $game_variables[var_jour] += 29
        $game_variables[var_mois] -= 1
        valeur += 29
      elsif [1].include?($game_variables[var_mois]) and $game_variables[var_jour] < 1
        $game_variables[var_jour] += 31
        $game_variables[var_mois] = 12
        $game_variables[var_annee] -= 1
        valeur += 31
      else
        valeur += valeur
        break
      end
    end
    return $game_variables[var_jour].to_s + "/" + $game_variables[var_mois].to_s + "/" + $game_variables[var_annee].to_s
  end

  # ------------------------------------------------------
  # date_il_y_a_mois(valeur, var1 = nil, var2 = nil, var3 = nil)
  #   retire le nombre de mois defini et renvoie la valeur
  # ------------------------------------------------------
 
  def date_il_y_a_mois(valeur, var_jour = 1101, var_mois = 1102, var_annee = 11)
    if valeur < 0
      valeur = 0
    end
    $game_variables[var_jour] = Time.now.day
    $game_variables[var_mois] = Time.now.month - valeur
    $game_variables[var_annee] = Time.now.year
    while(valeur > 0)
      if $game_variables[var_mois] < 1
        $game_variables[var_mois] += 12
        $game_variables[var_annee] -= 1
        valeur -= 12
      else
        valeur -= valeur
      end
    end
    @mois = convert_mois($game_variables[var_mois])
    return $game_variables[var_jour].to_s + "/" + $game_variables[var_mois].to_s + "/" + $game_variables[var_annee].to_s
  end

  # ------------------------------------------------------
  # date_il_y_a_annees(valeur, var1 = nil, var2 = nil, var3 = nil)
  #   retire le nombre d'annees defini et renvoie la valeur
  # ------------------------------------------------------
 
  def date_il_y_a_annees(valeur, var_jour = 1101, var_mois = 1102, var_annee = 11)
    if valeur < 0
      valeur = 0
    end
    $game_variables[var_jour] = Time.now.day
    $game_variables[var_mois] = Time.now.month
    $game_variables[var_annee] = Time.now.year - valeur
    @mois = convert_mois($game_variables[var_mois])
    return $game_variables[var_jour].to_s + "/" + $game_variables[var_mois].to_s + "/" + $game_variables[var_annee].to_s
  end

  # ------------------------------------------------------
  # convert_date(jours)
  #   convertit une date en nombre de jours
  # ------------------------------------------------------
 
  def convert_date(jours)
    @annee = 1900
    @mois = 1
    while((@annee % 4 == 0 and jours > 366) or (@annee % 4 != 0 and jours > 365))
      if @annee % 4 == 0
        jours -= 366
        @annee += 1
      else
        jours -= 365
        @annee += 1
      end
    end
    while(([1, 3, 5, 7, 8, 10, 12].include?(@mois) and jours > 31) or ([4, 6, 9, 11].include?(@mois) and jours > 30) or (@mois == 2 and Time.now.year % 4 == 0 and jours > 29) or (2 and Time.now.year % 4 != 0 and jours > 28))
      if [1, 3, 5, 7, 8, 10, 12].include?(@mois) and jours > 31
        jours -= 31
        @mois += 1
      elsif [4, 6, 9, 11].include?(@mois) and jours > 30
        jours -= 30
        @mois += 1
      elsif @mois == 2 and Time.now.year % 4 == 0 and jours > 29
        jours -= 29
        @mois += 1
      elsif @mois == 2 and Time.now.year % 4 != 0 and jours > 28
        jours -= 28
        @mois += 1
      end
    end
    @jour = jours
    return @jour.to_s + "/" + @mois.to_s + "/" + @annee.to_s
  end

  # ------------------------------------------------------
  # jour_semaine(semaine, jour)
  #   renvoie la date designee
  #   
  # ------------------------------------------------------
 
  def jour_semaine(semaine, jour)
    if semaine > 52 or semaine < 1 or semaine.type != Fixnum
      semaine = 1
      print("Le numéro de semaine n'est pas compatible avec la fonction. Vous devez indiquer un numéro de semaine au format nombre et compris entre 1 et 52. Par défaut, le numéro de semaine est ramené à 1.")
    end
    if jour > 7 or jour < 1 or jour.type != Fixnum
      jour = 0
      print("Le jour n'est pas correctement paramétré. Vous devez indiquer un nombre compris entre 1 (Lundi) et 7 (Dimanche) au format nombre.")
    end
    @date_jour = (semaine - 1) * 7 + jour - 1
    @date_mois = 1
    while(@date_jour > 0)
      if [1, 3, 5, 7, 8, 10, 12].include?(@date_mois) and @date_jour > 31
        @date_jour -= 31
        @date_mois += 1
      elsif [4, 6, 9, 11].include?(@date_mois) and @date_jour > 30
        @date_jour -= 30
        @date_mois += 1
      elsif @date_mois == 2 and Time.now.year % 4 == 0 and @date_jour > 29
        @date_jour -= 29
        @date_mois += 1
      elsif @date_mois == 2 and Time.now.year % 4 != 0 and @date_jour > 28
        @date_jour -= 28
        @date_mois += 1
      else
        break
      end
    end
    return @date_jour.to_s + "/" + @date_mois.to_s + "/" + Time.now.year.to_s
  end
 
#===============================================================================#
#                                                                               #
#           Fonction utilisant une date (format "JJ/MM/AAAA" accepté)           #
#                                                                               #
#===============================================================================#
  
  # ------------------------------------------------------
  # traitement_date
  #   effectue les opérations primaires sur la date afin de la rendre utilisable
  #   par les autres fonctions de cette catégorie.
  # ------------------------------------------------------

  def traitement_date
    if jour == nil
      jour = Time.now.day
      mois = Time.now.month
      annee = Time.now.year
    elsif jour.type == String
      @date_table = []
      @date_table = jour.split('/')
      jour = @date_table[0].to_f
      mois = @date_table[1].to_f
      annee = @date_table[2].to_f
    end
  end
  
  # ------------------------------------------------------
  # date_depassee(jour, mois, annee)
  #   determine si une date a ete depassee.
  # ------------------------------------------------------

  def date_depassee?(jour = nil, mois = nil, annee = nil)
    traitement_date
    @jour = Time.now.day
    @mois = Time.now.month
    @annee = Time.now.year
    if @annee > annee
      @retour = true
    elsif @mois > mois and @annee == annee
      @retour = true
    elsif @jour > jour and @mois == mois and @annee == annee
      @retour = true
    else
      @retour = false
    end
    if @retour
      @jours_depasses = convert_jour(@jour, @mois, @annee) - convert_jour(jour, mois, annee)
    else
      @jours_restants = convert_jour(jour, mois, annee) - convert_jour(@jour, @mois, @annee)
    end
    return @retour
  end

  # ------------------------------------------------------
  # convert_jour(jour, mois, annee)
  #   convertit une date en nombre de jours
  # ------------------------------------------------------
 
  def convert_jour(jour = nil, mois = nil, annee = nil)
    traitement_date
    @jours = 0
    annee_min = 1900
    if annee < annee_min
      print("L'année est trop ancienne, elle est donc ramenée à 1900")
      annee = annee_min
    end
    if mois > 12 or mois < 1
      print("Mois innexistant, le mois de référence sera donc Janvier")
      mois = 1
    end
    if ([1, 3, 5, 7, 8, 10, 12].include?(mois) and jour > 31) or ([4, 6, 9, 11].include?(mois) and jour > 30) or (mois == 2 and annee % 4 == 0 and jour > 29) or jour > 28 or jour < 0
      print("Jour indisponible dans le mois de référence, le jour de référence sera donc le 1° du mois.")
      jour = 1
    end
    if annee > annee_min
      for a in annee_min...annee
        if a % 4 == 0
          @jours += 366
        else
          @jours += 365
        end
      end
    end
    if mois > 1
      for m in 1...mois
        if [1, 3, 5, 7, 8, 10, 12].include?(m)
          @jours += 31
        elsif [4, 6, 9, 11].include?(m)
          @jours += 30
        elsif m == 2 and annee % 4 == 0
          @jours += 29
        else
          @jours +28
        end
      end
    end
    @jours += jour
    return @jours
  end

  # ------------------------------------------------------
  # no_semaine(jour, mois, annee)
  #   renvoie le numero de la semaine de la date testee
  #   
  # ------------------------------------------------------
 
  def no_semaine(jour = nil, mois = nil, annee = nil)
    traitement_date
    @jours = 0
    for m in 1...mois
      if [1, 3, 5, 7, 8, 10, 12].include?(m)
        @jours += 31
      elsif [4, 6, 9, 11].include?(m)
        @jours += 30
      elsif m == 2 and annee % 4 == 0
        @jours += 29
      else
        @jours +28
      end
    end
    @jours += jour
    return (@jours / 7 + 1)
  end
 
  # ------------------------------------------------------
  # jour_de_la_semaine(jour, mois, annee)
  #   renvoie le numero du jour de la semaine.
  #   0 : Dimanche => 6 : Samedi
  # ------------------------------------------------------
 
  def jour_de_la_semaine(jour = nil, mois = nil, annee = nil)
    traitement_date
    convert_jour(jour, mois, annee)
    return (jour % 7)
  end
 
#===============================================================================#
#                                                                               #
#  Autres fonctions ne renvoyant ni n'utilisant de date au format "JJ/MM/AAAA"  #
#                                                                               #
#===============================================================================#

  # ------------------------------------------------------
  # convert_mois(valeur)
  #   convertit un numero de mois en nom
  # ------------------------------------------------------
 
  def convert_mois(valeur)
    if valeur == 1
      return "Janvier"
    elsif valeur == 2
      return "Février"
    elsif valeur == 3
      return "Mars"
    elsif valeur == 4
      return "Avril"
    elsif valeur == 5
      return "Mai"
    elsif valeur == 6
      return "Juin"
    elsif valeur == 7
      return "Juillet"
    elsif valeur == 8
      return "Août"
    elsif valeur == 9
      return "Septembre"
    elsif valeur == 10
      return "Octobre"
    elsif valeur == 11
      return "Novembre"
    elsif valeur == 12
      return "Décembre"
    end
  end
 
end
 


Une fois cela fait, vous n'avez plus rien à faire ici. Pour ceux qui se souviendraient de mon ancienne version, vous remarquerez que j'ai modifié les anciennes fonctions pour les rendre compatibles entre elles. C'est également pour cette raison que j'ai isolé toutes ces méthodes dans un nouveau script Interpreter, que j'ai logiquement appelé Ter puisque venant après Bis.



Explications de l'utilisation de ces méthodes 

Méthodes renvoyant une date au format texte JJ/MM/AAAA :
  • date_dans_jours :
      renvoie la date correspondant à un bond dans le futur de N jours. La syntaxe estvaleur est le nombre de jours que la fonction devra ajouter à la date de référence (la date courante)var_jour est le numéro de la variable qui stockera le jour La valeur par défaut de cette variable est modifiable ligne 60var_mois est le numéro de la variable qui stockera le mois La valeur par défaut de cette variable est modifiable ligne 63var_annee est le numéro de la variable qui stockera l'année
    La valeur par défaut de cette variable est modifiable ligne 66
  • date_dans_mois :
      renvoie la date correspondant à un bond dans le futur de N jours. La syntaxe estvaleur est le nombre de mois que la fonction devra ajouter à la date de référence (la date courante)var_jour est le numéro de la variable qui stockera le jour var_mois est le numéro de la variable qui stockera le mois var_annee est le numéro de la variable qui stockera l'année

  • date_dans_annees :
      renvoie la date correspondant à un bond dans le futur de N années. La syntaxe estvaleur est le nombre d'années que la fonction devra ajouter à la date de référence (la date courante)var_jour est le numéro de la variable qui stockera le jour var_mois est le numéro de la variable qui stockera le mois var_annee est le numéro de la variable qui stockera l'année

  • date_il_y_a_jours :
      renvoie la date correspondant à un bond dans le passé de N jours. La syntaxe estvaleur est le nombre de jours que la fonction devra retirer à la date de référence (la date courante)var_jour est le numéro de la variable qui stockera le jour var_mois est le numéro de la variable qui stockera le mois var_annee est le numéro de la variable qui stockera l'année

  • date_il_y_a_mois :
      renvoie la date correspondant à un bond dans le passé de N jours. La syntaxe estvaleur est le nombre de mois que la fonction devra retirer à la date de référence (la date courante)var_jour est le numéro de la variable qui stockera le jour var_mois est le numéro de la variable qui stockera le mois var_annee est le numéro de la variable qui stockera l'année

  • date_il_y_a_annees :
      renvoie la date correspondant à un bond dans le passé de N jours. La syntaxe estvaleur est le nombre d'années que la fonction devra retirer à la date de référence (la date courante)var_jour est le numéro de la variable qui stockera le jour var_mois est le numéro de la variable qui stockera le mois var_annee est le numéro de la variable qui stockera l'année

  • convert_date :
      convertit un nombre de jours en date au format JJ/MM/AAAA. La syntaxe estjours est la valeur en jours depuis le premier de l'an de référence réglable ici :Remplacez 1900 par l'année que vous souhaitez.

  • jour_semaine :
      renvoie la date du n jour de la x semaine de l'année courante. La syntaxe estsemaine est le numéro de la semaine (compris entre 1 et 52)jour est le numéro du jour de la semaine (compris entre 1 (Lundi) et 7 (Dimanche)


Méthodes pouvant utiliser une date au format texte JJ/MM/AAAA :
  • traitement_date :
      Réunit en une seule méthode toutes les opérations d'adaptation de toutes les méthodes utilisant une date comme argument. Elle n'a pas pour objectif d'être utilisée en évent car elle ne renvoie aucune valeur. Elle se contente de remplacer certaines valeurs pour les rendre compatible avec la méthode utilisée.

  • date_depassee? :
      Détermine si une date de référence est passée ou non (renvoie true / false selon et enregistre l'écart en jours entre la date actuelle et la date de référence dans la variable de script @jours_depasses si la date est dépassée et dans la variable script @jours_restants si la date n'est pas encore dépassée). La syntaxe estjour correspond au jour de la date de référence. Cependant, cette valeur peut être indiquée seule au format texte (sous la forme "JJ/MM/AAAA"), auquel cas jour correspondra à la date entière (qui est ensuite répartie correctement entre jour / mois / annee). Si cette valeur n'est pas renseignée, alors la date courante deviendra automatiquement la date de référence.mois correspond au mois de la date de référence. Il peut ne pas être renseigné.annee correspond à l'année de la date de référence. Elle peut ne pas être renseignée.

  • convert_jour :
      Convertit une date en nombre de jour depuis le 1° Janvier de l'année de référence. La syntaxe estjour correspond au jour de la date de référence. Cependant, cette valeur peut être indiquée seule au format texte (sous la forme "JJ/MM/AAAA"), auquel cas jour correspondra à la date entière (qui est ensuite répartie correctement entre jour / mois / annee). Si cette valeur n'est pas renseignée, alors la date courante deviendra automatiquement la date de référence.mois correspond au mois de la date de référence. Il peut ne pas être renseigné.annee correspond à l'année de la date de référence. Elle peut ne pas être renseignée.

  • no_semaine :
      Renvoie le numéro de la semaine d'une date de référence. La syntaxe estjour correspond au jour de la date de référence. Cependant, cette valeur peut être indiquée seule au format texte (sous la forme "JJ/MM/AAAA"), auquel cas jour correspondra à la date entière (qui est ensuite répartie correctement entre jour / mois / annee). Si cette valeur n'est pas renseignée, alors la date courante deviendra automatiquement la date de référence.mois correspond au mois de la date de référence. Il peut ne pas être renseigné.annee correspond à l'année de la date de référence. Elle peut ne pas être renseignée.

  • jour_de_la_semaine :
      Renvoie le numéro du jour de la semaine d'une date de référence. La syntaxe estjour correspond au jour de la date de référence. Cependant, cette valeur peut être indiquée seule au format texte (sous la forme "JJ/MM/AAAA"), auquel cas jour correspondra à la date entière (qui est ensuite répartie correctement entre jour / mois / annee). Si cette valeur n'est pas renseignée, alors la date courante deviendra automatiquement la date de référence.mois correspond au mois de la date de référence. Il peut ne pas être renseigné.annee correspond à l'année de la date de référence. Elle peut ne pas être renseignée.


Autres méthodes :
  • convert_mois :
      Convertit le numéro d'un mois en son nom. La syntaxe estvaleur est le numéro du mois.




FaQ - Questions diverses 

Tes méthodes "date_dans_jours" et "date_il_y_a_jours", c'est bien, mais je fais comment, moi, si je veux prendre une autre date de référence ?

J'ai préféré retirer cette option, mais il n'est pas compliqué de la remettre. La technique est la même pour les deux méthodes concernées. Au début des deux méthodes, vous allez trouver :
Code:

(valeur, var_jour = nil, var_mois = nil, var_annee = nil)

à côté du nom de la méthode. Remplacez ces () par ceci :
Code:

(valeur, var_jour = nil, var_mois = nil, var_annee = nil, ref_jour = Time.now.day, ref_mois = Time.now.month, ref_annee = Time.now.year)

ensuite trouvez ces lignes là :
Code:

    $game_variables[var_jour] = Time.now.day + valeur #<= méthode date_dans_jours
    $game_variables[var_mois] = Time.now.month
    $game_variables[var_annee] = Time.now.year

ou :
Code:

    $game_variables[var_jour] = Time.now.day - valeur #<= méthode date_il_y_a_jours
    $game_variables[var_mois] = Time.now.month
    $game_variables[var_annee] = Time.now.year

selon la méthode sur laquelle vous travaillez et remplacez les par :

Code:

    $game_variables[var_jour] = ref_jour + valeur #<= méthode date_dans_jours
    $game_variables[var_mois] = ref_mois
    $game_variables[var_annee] = ref_annee

ou :
Code:

    $game_variables[var_jour] = ref_jour - valeur #<= méthode date_il_y_a_jours
    $game_variables[var_mois] = ref_mois
    $game_variables[var_annee] = ref_annee

toujours selon la méthode sur laquelle vous travaillez.

NB : une fois cette modification faite, vous serez obligés d'indiquer les variables d'enregistrement pour indiquer une date de référence différente du jour actuel !


A quoi servent les variables scriptées "@jours_restants" et "@jours_depasses" de la méthode "date_depassee?" ?

Vous pouvez, grâce à elles, ressortir l'écart entre la date actuelle et la date de référence testée. A vous de voir si vous avez besoin de connaitre cette information ou non, libre à vous, donc, de ne pas l'utiliser en permanence ^_^


A quoi sert la méthode "convert_mois" ?

En fait, c'est une méthode que j'ai développé pour la première version de mes méthodes "date_dans_jours" et "date_il_y_a_jours", qui, avant, renvoyaient la date obtenue ainsi : "JJ Mois AAAA" (exemple : "28 Aout 2008") et comme elle ne gêne pas... En revanche, il est vrai que son intérêt est devenu très limité, mais ne sait-on jamais... Peut être que quelqu'un l'utilisera quand même, qui sait ? Pour ca que je l'ai laissée.


Puis-je utiliser des variables et non des valeurs fixes lorsque je dois régler une date pour les fonctions "date_depassees", "convert_jour" et "no_semaine" ?

Oui, il suffit de mettre "var(N°_de_votre_variable)" ou "$game_variables[N°_de_votre_variable]" comme argument pour jour, mois et / ou annee selon votre situation.


[...]




Vous êtes perdus 

Un seul remède : vous relisez ce tuto et vous appliquez bêtement ce que j'ai écris sans tenir compte de mes explications. Ou, si vous tenez absolument à comprendre ce que vous faites, alors relisez ce tuto autant de fois que nécessaire.


Last edited by Sphinx on Wed 3 Sep - 11:58 (2008); edited 7 times in total
Back to top
Publicité






PostPosted: Tue 26 Aug - 23:14 (2008)    Post subject: Publicité

PublicitéSupprimer les publicités ?
Back to top
Speed
Ex-staff


Joined: 04 Jan 2008
Posts: 1,701
Localisation: Marseille (13)
Masculin

PostPosted: Wed 27 Aug - 00:30 (2008)    Post subject: Méthodes et commandes de gestion du calendrier v3.0

Très bon tuto, très bien expliqué et détaillé, comme toujours, Sphinx !

N'y aurait-il pas moyen de l'utiliser comme base pour les baies, en l'associant avec le script de gestion d'heure : à partir du moment où on les plante et si le temps est dépassé, la baie augmente d'un cran puis finit par pourrir.

Ça pourrait être une base.
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: Wed 27 Aug - 00:48 (2008)    Post subject: Méthodes et commandes de gestion du calendrier v3.0

Y a moyen Clin d'œil foireux

Et d'ailleurs, on doit être en connexion mentale parce que... Non, en fait je ne vais rien dire tout de suite, je fais les modifs qui s'imposent dans mon tuto et je vous dit quand c'est prêt :D
Back to top
Speed
Ex-staff


Joined: 04 Jan 2008
Posts: 1,701
Localisation: Marseille (13)
Masculin

PostPosted: Wed 27 Aug - 00:49 (2008)    Post subject: Méthodes et commandes de gestion du calendrier v3.0

quand les grands esprits se rencontrent ^^


*voui bon, ch'uis p'têt pas un grand esprit x( *
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: Wed 27 Aug - 09:50 (2008)    Post subject: Méthodes et commandes de gestion du calendrier v3.0

^_^ na t'es pas un grand esprit, t'es un ordi xD et moi un cyborg (vu le temps que je passe (passais ?) derrière mon clavier xD)


Petit saligaud mal élevé Bon, c'est bon Petit saligaud mal élevé

Voir FaQ - Questions diverses pour les détails :mrgreen:


edit : petite modification de la méthode date_depassee ^_^
Back to top
Empire1601
Ex-staff


Joined: 01 May 2008
Posts: 3,216
Localisation: La haut sur la montagne ...

PostPosted: Wed 27 Aug - 10:03 (2008)    Post subject: Méthodes et commandes de gestion du calendrier v3.0

Que serait mon projet si la fonction Time n'existait pas Yeux motorisés

Très bon tuto, bien expliqué comme toujours Petit saligaud mal élevé
Mais vu que tu t'es lancé dans l'explication du while (en français "tant que"), il faudrait ajouter un certain point :
Si la condition n'est pas vrai, le programme ne rentre même pas dans la boucle Clin d'œil foireux
Pour cela, il en existe une autre qui s'exécute au moins une foi :


Code:


 begin
 #ce qui est marque ici s'execute au moins une foi
 end while(condition)




Autre chose : serait-tu par hasard calculer de combien de phase est composé un cycle lunaire :mrgreen: ?

Moi pour les baies je ne me lance pas tout de suite (même si ça me serrait bien utile)
J'attends les données exactes pour chaque baie Bouche extensiblek:
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: Wed 27 Aug - 10:14 (2008)    Post subject: Méthodes et commandes de gestion du calendrier v3.0

tout à fait Clin d'œil foireux et le résultat obtenu à partir des deux boucles est le même pour "date_dans_jours(0)" (27 aout 2008) et pour "date_dans_jours(0)" (1° septembre 2008) mais je préfère ne pas faire de tours inutiles en fait, ca en fait un de moins ^_^
Back to top
Empire1601
Ex-staff


Joined: 01 May 2008
Posts: 3,216
Localisation: La haut sur la montagne ...

PostPosted: Wed 27 Aug - 11:03 (2008)    Post subject: Méthodes et commandes de gestion du calendrier v3.0

Je savais que tu le sais  :mrgreen:
C'était pour que ton explication soit complète
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: Wed 27 Aug - 11:05 (2008)    Post subject: Méthodes et commandes de gestion du calendrier v3.0

(Petit saligaud mal élevé ah Petit saligaud mal élevé d'un autre côté, c'est pas un cours sur les boucles, c'est pour ca que je n'ai parlé que de la forme que j'avais utilisé Petit saligaud mal élevé)


^_^ qui a testé & pr qui ca marche ? xD
Back to top
Empire1601
Ex-staff


Joined: 01 May 2008
Posts: 3,216
Localisation: La haut sur la montagne ...

PostPosted: Wed 27 Aug - 11:07 (2008)    Post subject: Méthodes et commandes de gestion du calendrier v3.0

Pas moi désolé pas que j'ai déjà mes évents qui gèrent ça  Clin d'œil foireux
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: Thu 28 Aug - 00:06 (2008)    Post subject: Méthodes et commandes de gestion du calendrier v3.0

Clin d'œil foireux "Petite" maj dans le tuto, j'ai complètement modifié sa structure & son contenu Clin d'œil foireux Autrement dit, vous pouvez le relire xD
Back to top
Wescoeur
Membre


Joined: 04 May 2008
Posts: 3,522
Localisation: Chez l'Ankou

PostPosted: Thu 28 Aug - 00:21 (2008)    Post subject: Méthodes et commandes de gestion du calendrier v3.0

XD encore un tuto aussi geant que son créteur^^beau travail!
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: Wed 3 Sep - 11:59 (2008)    Post subject: Méthodes et commandes de gestion du calendrier v3.0

^_^ Petite correction, certaines méthodes ne marchaient pas correctement ^_^


(Clin d'œil foireux je vous conseille de remplacer votre ancienne version par celle que je viens de poster, les évents fonctionneront pareil Clin d'œil foireux)

edit : maj de la fonction date_depassee? qui utilisait encore une valeur incompatible avec les autres ^_^ Rectifié, à présent Clin d'œil foireux
Back to top
Display posts from previous:   
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Ressources techniques -> Scripts All times are GMT + 1 Hour
Page 1 of 1

 
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)