Partagez
Aller en bas
avatar
DarkDavy15
Membre

Nombre de messages : 11
Age : 18
Distinction : aucune
Date d'inscription : 07/01/2016

Résolu Besoin d'aide pour un script

le Sam 11 Fév 2017 - 19:31
Bonjour/Bonsoir, j'ai besoin d'aide pour un script. (Comme écrit dans le titre xD)
Je voudrais juste faire en sorte que mon script (qui est fait pour animer le fond de combat) ne fonctionne que quand un certain interrupteur est activé.

Pour expliqué pourquoi je veux qu'il ne s'active qu'avec un interrupteur, c'est que je voudrais que certain combat se lance avec les battleback se trouvant dans les dossiers "Battleback1" ou "Battleback2", et ce script utilise les images qui se trouve dans le dossier "AnimBattleBack" (dossier que vous devez créer en mettant le script).
Problème : C'est que si je ne "lui dit" pas quel images utilisé (j'ai fait comme ça la première fois en pensant que le script aller alors me laisser mettre les images de Battleback), il affiche un message d'erreur et le jeu se ferme.
Du coup, de 1, ça rend les dossier Battleback1 et Battleback2 TOTALEMENT inutile avec ce script, et je suis obligé de faire plusieurs images et plusieurs manip pour faire ce que je voudrais. (et ça pourrait ajouter beaucoup plus de poids au projet, du coup.)

Je sais pas si j'était assez clair, donc si c'est pas le cas, je suis désolé  Crying or Very sad ...

Voici le script :
Le script:
# =============================================================================
# TheoAllen - Animated Battleback
# Version : 1.0
# Contact : www.rpgmakerid.com (or) http://theolized.blogspot.com
# (This script documentation is written in informal indonesian language)
# =============================================================================
($imported ||= {})[:Theo_AnimBattleBack] = true
# =============================================================================
# Change Logs:
# -----------------------------------------------------------------------------
# 2013.10.28 - Finished script
# =============================================================================
=begin
 
 ------------------------------------------------------------------------
 Perkenalan :
 ------------------------------------------------------------------------
 Pengen battleback kamu bisa gerak? Well, mungkin script ini bisa mewujudkan
 impianmu. Semoga saja Very Happy
 
 ------------------------------------------------------------------------
 Cara penggunaan :
 ------------------------------------------------------------------------
 Pasang script ini dibawah material namun diatas main
 Buat folder "AnimBattleBack" di dalam folder Graphics.
 
 Siapkan gambar background untuk battleback dengan format nama
 "namafile_01.png". Siapkan gambar berikutnya untuk frame animasi setelahnya
 dan namakan dengan "namafile_02.png". Dan seterusnya. Kamu boleh memasukkan
 frame animasi sebanyak yang kamu mau. Dan perlu diingat, jangan lupa dengan
 nomor frame belakang tersebut ("_02.png" dst ...)
 
 Untuk menggunakan animated battleback pada map tertentu, gunakan notetag
 <anim bb: key_animasi> dimana "key_animasi" adalah "key" yang berada pada
 konfigurasi dibawah. Perlu diingat, penulisan "key_animasi" pada notetag
 tidak perlu disertai kutip
 
 ------------------------------------------------------------------------
 Terms of use :
 ------------------------------------------------------------------------
 Credit gw, TheoAllen. Kalo semisal u bisa ngedit2 script gw trus jadi lebih
 keren, terserah. Ane bebasin. Asal ngga ngeklaim aja. Kalo semisal mau
 dipake buat komersil, jangan lupa, gw dibagi gratisannya.

=end
# =============================================================================
# Konfigurasi
# =============================================================================
module Theo
 module AnimBB
 # --------------------------------------------------------------------------
 # Animated Battleback Database
 # --------------------------------------------------------------------------
 # Paduan konfigurasi :
 #
 # Key     --> Kata kunci untuk dipergunakan dalam notetag di map properties
 # Nama    --> Nama untuk file gambar (tanpa disertai "_01")
 # Frame   --> Frame maksimal gambar. Misalnya animasi framenya ada 20
 # Rate    --> Refresh rate. Makin kecil, gambar akan makin cepet gerak
 # --------------------------------------------------------------------------
   List = {
 # "Key"     => ["Nama"      , Frame, Rate],
   "mansion" => ["mansion"   ,     8,    4],
   "dtown"   => ["deserttown",     7,   10],
   "giygas"   => ["nightmare",     34,   4],
   "giygas2"   => ["nightmare",     34,   2],
   "giygas3"   => ["nightmare",     34,   1],
   "mnoir"   => ["machinenoir",     2,   2],
 
 # Tambahin sendiri  
   } # <-- Jangan disentuh!
   
 end
end

# =============================================================================
# Akhir dari konfigurasi
# =============================================================================

class << Cache
 
 def animbattleback(filename, index)
   file = filename + sprintf("_%02d", index)
   load_bitmap("Graphics/AnimBattleBack/", file)
 end
 
end

class Game_System
 attr_accessor :anim_bb
 
 alias theo_animbb_init initialize
 def initialize
   theo_animbb_init
   @anim_bb = ""
 end
 
end

class Game_Map
 
 alias theo_animbb_setup setup
 def setup(map_id)
   theo_animbb_setup(map_id)
   setup_animbb
 end
 
 def setup_animbb
   $game_system.anim_bb = ""
   @map.note.split(/[\r\n]+/).each do |line|
     if line =~ /<(?:anim bb|anim_bb):[ ]*(.+)>/i
       $game_system.anim_bb = $1.to_s
     end
   end
 end
 
end

class AnimBB < Sprite
 attr_reader :name
 attr_reader :index
 
 def initialize(viewport)
   super(viewport)
   init_member
 end
 
 def init_member
   @name = $game_system.anim_bb
   @count = 0
   @index = 1
   refresh_bitmap
 end
 
 def refresh_bitmap
   if name.empty?
     self.bitmap = Cache.empty_bitmap
   else
     self.bitmap = Cache.animbattleback(file, index)
   end
 end
 
 def file
   Theo::AnimBB::List[name][0]
 end
 
 def max_index
   Theo::AnimBB::List[name][1]
 end
 
 def rate
   Theo::AnimBB::List[name][2]
 end
 
 def need_refresh?
   @count % rate == 0 && !name.empty?
 end
 
 def change_index
   @index += 1
   if @index == max_index
     @index = 1
   end
   refresh_bitmap
 end
 
 def update
   super
   @count += 1
   change_index if need_refresh?
 end
 
end

class Spriteset_Battle
 
 alias theo_animbb_create_viewports create_viewports
 def create_viewports
   theo_animbb_create_viewports
   create_animbb
 end
 
 def create_animbb
   @animbb = AnimBB.new(@viewport1)
   @animbb.z = 5
   center_sprite(@animbb)
 end
 
 alias theo_animbb_update update
 def update
   theo_animbb_update
   @animbb.update
 end
 
 alias theo_animbb_dispose dispose
 def dispose
   theo_animbb_dispose
   @animbb.dispose
 end
 
end

(Et je tiens juste à dire que si je poste ce message au mauvais endroit, je suis désolé :/)
(Et puis, c'est le premier VRAI message que je poste, donc si il y a une erreur, je suis vraiment désolé)


Dernière édition par DarkDavy15 le Mar 14 Fév 2017 - 18:55, édité 1 fois
avatar
dricc
Membre

Nombre de messages : 2752
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Résolu Re: Besoin d'aide pour un script

le Lun 13 Fév 2017 - 10:38
Je ne vois pas trop le soucis ...

Si tu veux un fond non animé , il te suffit de faire un truc comme ça :
"Truc" => ["Truc", 1, 1000],

Avec un fichier Truc_01.png dans ton repertoire .

Quand aux repertoires Battleback1 et Battleback2 de ton projet , tu les vides (quoiqu'il faut peut-etre en garder 1 par défaut) .
avatar
DarkDavy15
Membre

Nombre de messages : 11
Age : 18
Distinction : aucune
Date d'inscription : 07/01/2016

Résolu Re: Besoin d'aide pour un script

le Lun 13 Fév 2017 - 18:13
J'ai déjà essayer, mais il m'affiche une erreur en me disant qu'il me manque la deuxième image ("truc_02" si tu veux)... Alors que j'ai bien précisé qu'il n'y avait qu'1 image à afficher.
Je sais pas si c'est le script qui bug, mais en tout cas, cette erreur m'oblige du coup à créé plusieurs même image qui va prendre de la place dans le projet... :/
avatar
tibluedream
Membre

Nombre de messages : 905
Age : 29
Localisation : France, Rueil, près de Paris
Distinction : Poisson 2017 [Amal]
Poisson 2018 [Amal']
Date d'inscription : 05/09/2016

Résolu Re: Besoin d'aide pour un script

le Lun 13 Fév 2017 - 18:29
Tout ce que je peux dire c'est que par défaut il y a 2 battleback si tu n'y arrive pas à afficher qu'une seul image pas besoin de faire des copie tu as juste à créer un fond noir ou blanc ou ce que tu veux pour l'image qui sera invisible qui sera prise à chaque fois pour le combat mais normalement tu ne devrais pas avoir à faire ça.. après j'ai pas trop compris enfin j'ai compris à peu près comment il fonctionne mais je ne sais pas s'il modifie la base des Battleback ce script donc bon. bon courage ^^.
avatar
DarkDavy15
Membre

Nombre de messages : 11
Age : 18
Distinction : aucune
Date d'inscription : 07/01/2016

Résolu Re: Besoin d'aide pour un script

le Lun 13 Fév 2017 - 21:06
Je suis nul pour les explications. X)
Le problème (que je vais essayer d'expliquer), c'est que quand je met "1" (pour dire d'utiliser seulement 1 image), le script essaye quand même de lancer d'autres images (qui n'existe pas et qui fait alors planté le jeu).
(Pour expliquer ce qui se passe, c'est que quand je lance un combat avec ce script (je vais utiliser son exemple xD ["Truc", 1, 1000] le 1 signifi le nombre d'images), et bien l'image 1 s'affiche, et normalement, le script devrait lancé l'image 1 en boucle, mais le script essaye quand même de charger l'image 2 (qui n'existe pas), et ça plante. En fait, je ne veux pas faire de copier coller d'une image et donner plus de "poids" au projet juste pour qu'un script marche. Et c'est le seul script qui permet d'animé les combats que j'ai trouvé, s'il-vous-plait, help !)

Et quand je demandai qu'on modifie le script pour qu'il ne s'active qu'avec un interrupteur, c'était justement pour que le script sois "oublié", disons, par RPG Maker, et qui lance alors une des images du battleback, et que j'active l'interrupteur pour l'utiliser dans le combat contre le boss final, par exemple. (Pour donner un effet de puissance sur le boss X) ).

Je sais pas si j'ai expliqué mieux, mais si c'est toujours pas clair, encore désolé... :'(
(Je suis VRAIMENT nul quand il s'agit d'expliquer, même expliquer un truc "simple", je n'y arrive pas...)
avatar
dricc
Membre

Nombre de messages : 2752
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Résolu Re: Besoin d'aide pour un script

le Mar 14 Fév 2017 - 10:12
Le probleme , vois-tu , c'est qu'il n'y a presque plus de developpeur de script sour VXAce .
Les scripteurs comme moi ont eu le choix entre le ruby (VXAce) , language propre mais rare et le javascript (MV) qui est le language le plus utilisé au monde . On n'a pas hesité longtemps .

Malgré tout , je te propose une petite correction toute simple qui devrait marcher :
Code:

 def change_index
  @index += 1
  if @index >= max_index
    @index = 1
  end
  refresh_bitmap
 end
Corrige cette methode dans le code directement .

J'ai mis un ">=" ici . l'erreur venait du fait que le compteur passait à 2 , je pense .
avatar
DarkDavy15
Membre

Nombre de messages : 11
Age : 18
Distinction : aucune
Date d'inscription : 07/01/2016

Résolu Re: Besoin d'aide pour un script

le Mar 14 Fév 2017 - 18:54
Ca marche, merci beaucoup ! Very Happy
Tu me sauve la vie !
(Il y a moyen de te remercier encore plus ? x) )
Contenu sponsorisé

Résolu Re: Besoin d'aide pour un script

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum