Sujet: [VX] Brouillard de Guerre Sam 23 Mai 2009 - 10:14
Bonjour à tous !
Voici un tout nouveau script qui ajoute un brouillard de guerre sur vos cartes. Vous voyez Age Of Empires ? C'est le meme principe: tout endroit non découvert est noirci, laissant encore plus de suspens à votre partie.
Le principe est très simple: un rayon est défini: c'est le champ de vision du héro. les données visitées sont sauvegardée d'une carte à l'autre. le brouillard peut etre masqué par l'activation d'un interrupteur (1 par défaut). Activé: brouillard masqué, Désactivé: brouillard Affiché. il peut etre réinitialisé.
Attention, ce script entraine une chute de 5 FPS pour les grandes maps.
Voila tout, voici le tileset à placer dans votre projet, dossier System. Un grand merci à Jess qui me l'a rendu transparent. A nommer "fog.png" Choisissez parmi plusieurs:
Spoiler:
Un grand merci à Jess !
Et le script qui doit etre placé au dessus de main:
Code:
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # Brouillard de Guerre 22/05/09 #------------------------------------------------------------------------------- # ver.0.1 par Berka rgss.2 # http://www.rpgmakervx-fr.com #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # Ajoute un brouillard de guerre sur la Carte #------------------------------------------------------------------------------- # Commandes: # Fog.clear_fog(map_id) # réinitialise le brouillard (tout noir) # vu_par_hero?(x,y) # vérifie si [x,y] est vu par le héro # $RayonFog = i # modifier le champ de vision du héro #------------------------------------------------------------------------------- # Fonctions: # * Activation d'interrupteur pour masquer le brouillard # * Sauvegarde du brouillard de chaque carte # * Affichage des bordures de brouillard en parallèle (Thread) # Ne pas utiliser sur de trop grandes cartes, risque de chute de fps ! #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
module Berka module Brouillard $RayonFog = 3 # Rayon de vision: calcul optimisé pour 3 & 6 FichFog = "fog.png" # Fichier de tileset brouillard: seule la 1ere pose est utilisée # doit se trouver dans le dossier systeme de projet IDFog = 1 # Id de l'interrupteur qui désactive/active le brouillard ZFog = 300 # Priorité de superposition du brouillard. Act_GC = true # Activation du Ramasse Miettes pour gain de performances
# Ne pas changer !!!! Tiles={ # Indexation des autotiles de brouillard "0"=>2816,"1"=>2824,"12"=>2844,"123"=>2844,"1234"=>2856,"12346"=>2860, "123467"=>2860,"1234678"=>2862,"12346789"=>2862,"1234679"=>2860,"123468"=>2862, "1234689"=>2862,"123469"=>2860,"12347"=>2856,"123478"=>2859,"1234789"=>2859, "123479"=>2857,"12348"=>2859,"123489"=>2859,"12349"=>2857,"1236"=>2854, "12367"=>2855,"123678"=>2861,"123679"=>2855,"1236789"=>2861,"12368"=>2861, "123689"=>2861,"12369"=>2854,"1237"=>2845,"12378"=>2849,"123789"=>2849, "12379"=>2847,"1238"=>2849,"12389"=>2849,"1239"=>2846,"124"=>2856,"1246"=>2860, "12467"=>2860,"124678"=>2862,"1246789"=>2862,"124679"=>2860,"12468"=>2862, "124689"=>2862,"12469"=>2860,"1247"=>2856,"12478"=>2859,"124789"=>2859, "12479"=>2857,"1248"=>2859,"12489"=>2859,"1249"=>2857,"126"=>2854,"1267"=>2855, "12678"=>2861,"126789"=>2861,"12679"=>2855,"1268"=>2861,"12689"=>2861,"1269"=>2854, "127"=>2845,"1278"=>2849,"12789"=>2849,"128"=>2849,"1289"=>2849,"129"=>2846, "13"=>2828,"134"=>2834,"1346"=>2848,"13467"=>2848,"134678"=>2858,"1346789"=>2858, "134679"=>2848,"13468"=>2858,"134689"=>2858,"13469"=>2848,"1347"=>2834, "13478"=>2851,"134789"=>2851,"13479"=>2835,"1348"=>2851,"13489"=>2851, "1349"=>2835,"136"=>2841,"1367"=>2843,"13678"=>2853,"136789"=>2853,"13679"=>2843, "1368"=>2853,"13689"=>2853,"1369"=>2841,"137"=>2829,"1378"=>2839,"13789"=>2839, "138"=>2839,"1389"=>2839,"139"=>2830,"14"=>2832,"146"=>2848,"1467"=>2848, "14678"=>2858,"146789"=>2858,"14679"=>2848,"1468"=>2862,"14689"=>2858,"1469"=>2848, "147"=>2832,"1478"=>2850,"14789"=>2850,"1479"=>2833,"148"=>2850,"1489"=>2850, "149"=>2833,"16"=>2841,"167"=>2843,"1678"=>2853,"16789"=>2853,"1679"=>2848, "168"=>2853,"1689"=>2853,"169"=>2841,"17"=>2825,"178"=>2838,"1789"=>2838, "179"=>2827,"18"=>2838,"189"=>2838,"19"=>2826,"2"=>2844,"23"=>2844,"234"=>2856, "2346"=>2860,"23467"=>2860,"234678"=>2862,"2346789"=>2862,"234679"=>2862, "23468"=>2862,"234689"=>2862,"23469"=>2860,"2347"=>2856,"23478"=>2859, "234789"=>2859,"23479"=>2857,"2348"=>2859,"23489"=>2859,"2348"=>2859,"236"=>2854, "2367"=>2855,"23678"=>2861,"236789"=>2861,"23679"=>2855,"2368"=>2861,"23689"=>2861, "2369"=>2854,"237"=>2845,"2378"=>2849,"23789"=>2849,"2379"=>2847,"238"=>2849, "2389"=>2849,"239"=>2846,"24"=>2856,"246"=>2860,"2467"=>2860,"24678"=>2862, "246789"=>2862,"24679"=>2860,"2468"=>2862,"24689"=>2862,"2469"=>2860,"247"=>2856, "2478"=>2859,"24789"=>2859,"2479"=>2847,"248"=>2859,"2489"=>2859,"249"=>2857, "26"=>2854,"267"=>2854,"2678"=>2861,"26789"=>2861,"2679"=>2855,"268"=>2861, "2689"=>2861,"269"=>2854,"27"=>2845,"278"=>2849,"2789"=>2849,"279"=>2847,"28"=>2849, "289"=>2849,"29"=>2846,"3"=>2820,"34"=>2834,"346"=>2848,"3467"=>2848,"34678"=>2858, "346789"=>2858,"34679"=>2848,"3468"=>2858,"34689"=>2858,"3469"=>2848,"347"=>2834, "3478"=>2851,"34789"=>2851,"3479"=>2835,"348"=>2851,"3489"=>2851,"349"=>2835, "36"=>2840,"367"=>2842,"3678"=>2852,"36789"=>2852,"3679"=>2842,"368"=>2852, "3689"=>2852,"369"=>2840,"37"=>2821,"378"=>2837,"3789"=>2837,"379"=>2823, "38"=>2837,"389"=>2837,"39"=>2822,"4"=>2832,"46"=>2848,"467"=>2848,"4678"=>2858, "46789"=>2858,"4679"=>2848,"468"=>2858,"4689"=>2858,"469"=>2848,"47"=>2832, "478"=>2850,"4789"=>2850,"479"=>2833,"48"=>2850,"489"=>2850,"49"=>2833, "6"=>2840,"67"=>2842,"678"=>2852,"6789"=>2852,"679"=>2842,"68"=>2852, "689"=>2852,"69"=>2840,"7"=>2817,"78"=>2836,"789"=>2836,"79"=>2819,"8"=>2836, "89"=>2836,"9"=>2818 } # et tu payes ton mal de crâne, pour trouver chaque valeur ^^ end end module Fog def self.clear_fog(id) $game_temp.br_maps.delete(id) return if !$scene.is_a?(Scene_Map) $scene.spriteset.dispose $scene.spriteset=Spriteset_Map.new end end Win32API.new('kernel32','SetPriorityClass','pi','i').call( Win32API.new('kernel32','GetCurrentProcess','','i').call,256) include Berka::Brouillard class Spriteset_Map alias :br_create :create_tilemap alias :br_dispose :dispose_tilemap alias :br_view :dispose_viewports alias :br_update :update_tilemap unless $@ alias :br_view_update :update_viewports unless $@ attr_accessor :br_tile,:tilemap def create_tilemap br_create @br_tile=Tilemap.new(@br_view=Viewport.new(0,0,Graphics.width,Graphics.height)) @br_view.z=ZFog 8.times{|i|@br_tile.bitmaps[i]=@tilemap.bitmaps[i].clone} @br_tile.bitmaps[1]=Cache.system(FichFog) @br_tile.map_data=Table.new($game_map.width,$game_map.height,3) clear_fog end def clear_fog w,h=$game_map.width,$game_map.height if $game_temp.br_maps.has_key?($game_map.map_id) for x in 0...w;for y in 0...h if $game_temp.br_maps[$game_map.map_id][x,y]==0 @br_tile.map_data[x,y,1]=2816 a||=true else @br_tile.map_data[x,y,1]=0 a||=false end end;end if a Thread.new{for x in 0...w;for y in 0...h chk(x,y) end;end} end else $game_temp.br_maps[$game_map.map_id]||=Table.new(w,h) for x in 0...w;for y in 0...h @br_tile.map_data[x,y,1]=2816 $game_temp.br_maps[$game_map.map_id][x,y]=0 end;end end end def dispose_tilemap br_dispose @br_tile.dispose end def dispose_viewports br_view @br_view.dispose end def update_tilemap br_update if $game_switches[IDFog] @br_tile.dispose return end GC.start if !$game_player.moving?&&Act_GC return if !$game_temp.br_maps.has_key?($game_map.map_id) br_obscurcis x,y=$game_map.display_x/8,$game_map.display_y/8 return if x==@br_tile.ox&&y==@br_tile.oy @br_tile.ox,@br_tile.oy=x,y @br_tile.update end def br_obscurcis x,y=$game_player.x,$game_player.y rx,ry=(x-$RayonFog-2..x+$RayonFog+2).to_a,(y-$RayonFog-2..y+$RayonFog+2).to_a for tx in rx for ty in ry r=Math.sqrt(((x-tx)**2+(y-ty)**2)) chk(tx,ty)if r.between?($RayonFog,$RayonFog+2) next if !tx.between?(rx[0],rx[-1]) if r<=$RayonFog @br_tile.map_data[tx,ty,1]=0 $game_temp.br_maps[$game_map.map_id][tx,ty]=1 end end end end def chk(x,y) return if !$game_temp.br_maps.has_key?($game_map.map_id)||x.nil?||y.nil?|| $game_temp.br_maps[$game_map.map_id][x,y]==1 d=@br_tile.map_data l=[] l<<1 if d[x-1,y+1,1]==0 l<<2 if d[x,y+1,1]==0 l<<3 if d[x+1,y+1,1]==0 l<<4 if d[x-1,y,1]==0 l<<6 if d[x+1,y,1]==0 l<<9 if d[x+1,y-1,1]==0 l<<8 if d[x,y-1,1]==0 l<<7 if d[x-1,y-1,1]==0 l=l.sort.join return if l.nil?||l=="" @br_tile.map_data[x,y,1]=Tiles[l] end def update_viewports br_view_update @br_view.update end end class Game_Temp alias :br_initialize :initialize attr_accessor :br_maps def initialize br_initialize @br_maps={} end end def vu_par_hero?(x,y) Math.sqrt((($game_player.x-x)**2+($game_player.y-y)**2))<=$RayonFog end class Scene_Map<Scene_Base # correctif: màj spriteset 1/frame attr_accessor :spriteset def update_basic Graphics.update Input.update $game_map.update end end class Scene_File<Scene_Base alias :br_write_save :write_save_data alias :br_read_save :read_save_data def write_save_data(file) br_write_save(file) Marshal.dump($game_temp.br_maps,file) end def read_save_data(file) br_read_save(file) $game_temp.br_maps=Marshal.load(file) end end
En espérant qu'il trouvera preneur,
berka
Dernière édition par berka le Sam 23 Mai 2009 - 11:57, édité 1 fois
Gothor
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
Sujet: Re: [VX] Brouillard de Guerre Sam 23 Mai 2009 - 10:28
Wouw, merci beaucoup pour ce script Sur XP il y en avait un du même style, mais quand on s'éloignait d'un évent, on ne le voyait plus (comme dans Age of Empire :p) En gros il y avait trois couches: - La partie non visitée (on ne voit ni la carte, ni les évents) - La partie visitée éloignée (on voit la carte, mais pas les évents) - La partie visitée proche (on voit la carte et les évents)
Est-ce le cas ici aussi?
berka
Maire Lv.9
Age : 34 Inscrit le : 15/10/2008 Messages : 351
Sujet: Re: [VX] Brouillard de Guerre Sam 23 Mai 2009 - 10:49
Nan, j'y ai pensé, mais le lag etait vraiment trop important.
berka
Gothor
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
Sujet: Re: [VX] Brouillard de Guerre Sam 23 Mai 2009 - 11:06
Au début du script tu écris:
Code:
$RayonFog = 3 # Rayon de vision: calcul optimisé pour 3 & 6
Quelles conséquences peuvent-apparaître si le rayon est différent?
Code:
# Activation du Ramasse Miettes pour gain de performances
Que veux-tu dire par activation du ramasse miettes? Oo
Code:
# Priorité de superposition du brouillard.
On peut modifier cette priorité sur chaque map ou c'est constant sur tout le jeu?
berka
Maire Lv.9
Age : 34 Inscrit le : 15/10/2008 Messages : 351
Sujet: Re: [VX] Brouillard de Guerre Sam 23 Mai 2009 - 11:50
1) Le héro verra moins loin, si le rayon est plus petit. 2) Le ramasse miettes, est un outil ruby géré par le module GC (GarbageCollector) C'est un module qui vérifie toutes les variables du jeu. Il fait comme une défragmentation en gros: toutes les variables non utilisées sont supprimées et leur adresse memoire est réallouée. Ca va plus vite. Et comme j'ai d'enormes tableaux il faut tout réorganiser a chaque fois. 3) C'est une constante, donc c'est fixé une fois pour toutes dans le jeu.
berka
Gothor
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
Sujet: Re: [VX] Brouillard de Guerre Sam 23 Mai 2009 - 12:28
Hem, en fait quand je demandais:
Citation :
Code:
$RayonFog = 3 # Rayon de vision: calcul optimisé pour 3 & 6
Quelles conséquences peuvent-apparaître si le rayon est différent?
C'était parce que tu écris que le calcul est optimisé pour 3 et 6. Je souhaitais savoir si quelque problème pouvait arriver si on mettait un nombre autre que ceux-çi.
berka
Maire Lv.9
Age : 34 Inscrit le : 15/10/2008 Messages : 351
Sujet: Re: [VX] Brouillard de Guerre Sam 23 Mai 2009 - 12:30
Ce sera un peu plus lent, vu que les nombres seront décimaux... mais rien de vraiment méchant
Gothor
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
Sujet: Re: [VX] Brouillard de Guerre Sam 23 Mai 2009 - 12:38
J'ai essayé de modifier Z-fog au début, et cela ne change rien, est-ce normal? (J'ai essayé 3, 1 et 0)
berka
Maire Lv.9
Age : 34 Inscrit le : 15/10/2008 Messages : 351
Sujet: Re: [VX] Brouillard de Guerre Sam 23 Mai 2009 - 12:44
Ouaip, ca me fait ca parfois, la priorité des tilemaps sont très capricieuses
Gothor
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
Sujet: Re: [VX] Brouillard de Guerre Sam 23 Mai 2009 - 12:48
Dernière petite question et je te laisse ^^' Il y a-t-il un moyen autre qu'en modifiant la transparence de l'image par nous même d'atténuer le brouillard, si je veux qu'on voit un peu à travers par exemple (Désolé de toutes ces questions XD)
hinola
Voyageur Lv.10
Inscrit le : 07/03/2009 Messages : 380
Sujet: Re: [VX] Brouillard de Guerre Sam 23 Mai 2009 - 12:51
pour moi, le fog s'affiche 1 seconde et disparait après :s
Gothor
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
Sujet: Re: [VX] Brouillard de Guerre Sam 23 Mai 2009 - 13:19
Il faut que l'interrupteur choisi (par défaut 1) soit désactivé. Pour choisir l'interrupteur à activer désactiver, modifie la ligne suivante:
Code:
IDFog = 1 # Id de l'interrupteur qui désactive/active le brouillard
berka
Maire Lv.9
Age : 34 Inscrit le : 15/10/2008 Messages : 351
Sujet: Re: [VX] Brouillard de Guerre Sam 23 Mai 2009 - 13:20
@gothor: Si tu modifies le tileset de brouillard avec un logiciel de retouche, le brouillard sera moins opaque. @hinola: en effet, ton interrupteur #1 est deja utilisé
berka
hinola
Voyageur Lv.10
Inscrit le : 07/03/2009 Messages : 380
Sujet: Re: [VX] Brouillard de Guerre Sam 23 Mai 2009 - 13:29
ah mince désactivé
nuparu1997
Habitant Lv.6
Age : 27 Avertissements : 3Inscrit le : 08/12/2008 Messages : 135
Sujet: Re: [VX] Brouillard de Guerre Ven 18 Sep 2009 - 17:01
est-il possible, avec un commentaire, de faire qu'un event puisse "voir" dans le brouillard ? ce serait pratique. s'il vous plait !!!
Gothor
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
Sujet: Re: [VX] Brouillard de Guerre Ven 18 Sep 2009 - 17:28
Code:
IDFog = 1 # Id de l'interrupteur qui désactive/active le brouillard
nuparu1997
Habitant Lv.6
Age : 27 Avertissements : 3Inscrit le : 08/12/2008 Messages : 135
Sujet: Re: [VX] Brouillard de Guerre Sam 19 Sep 2009 - 8:16
non, c'est pas ca. je voudrais que le brouillard disparaisse avec l'event comme avec le héros!
c'est à dire que quand le héros va dans une zone noire, elle apprait. je voudrais que l'event, en se déplacant, puisse faire pareil.
HELP!
fabY
dYeu retraité prématurément
Age : 29 Inscrit le : 09/02/2008 Messages : 5357
Sujet: Re: [VX] Brouillard de Guerre Sam 19 Sep 2009 - 8:39
Mmmh, je sais pas si tout le script est fait pour que le brouillard soit enlevé seulement par le héros mais si jamais c'est pas ça il faudra rajouter l'équivalent de :
Code:
def vu_par_hero?(x,y) Math.sqrt((($game_player.x-x)**2+($game_player.y-y)**2))<=$RayonFog end
Mais pour un évent?
Sinon le "HELP" est vraiment pas nécessaire tu attend et puis voila >>...
Edit : bon bah j'ai testé ça :
Code:
def vu_par_hero?(x,y) Math.sqrt((($game_player.x-x)**2+($game_player.y-y)**2))<=$RayonFog end def vu_par_event?(x,y) Math.sqrt((($game_map.events[1].x-x)**2+($game_map.events[1].y-y)**2))<=$RayonFog end
Mais ça marche pas je vais donc me coucher et laisser berka faire T_T.
edit : ouah j'suis trop fort, j'ai réussis a trouvé une vérification =D, voila à quoi ça sert les comments xD. Faites comme fabY si vous voulez commencer par la fin !
Edit : et voila trouvé, attend le temps que j'édite pour de bon.
Edit final :
Spoiler:
Code:
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # Brouillard de Guerre 22/05/09 #------------------------------------------------------------------------------- # ver.0.1 par Berka rgss.2 # http://www.rpgmakervx-fr.com #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # Ajoute un brouillard de guerre sur la Carte #------------------------------------------------------------------------------- # Commandes: # Fog.clear_fog(map_id) # réinitialise le brouillard (tout noir) # vu_par_hero?(x,y) # vérifie si [x,y] est vu par le héro # vu_par_l'évent?(x,y) # vérifie si [x,y] est vu par un évent (à modifier plus bas, recherche recommendé) # $RayonFog = i # modifier le champ de vision du héro #------------------------------------------------------------------------------- # Fonctions: # * Activation d'interrupteur pour masquer le brouillard # * Sauvegarde du brouillard de chaque carte # * Affichage des bordures de brouillard en parallèle (Thread) # Ne pas utiliser sur de trop grandes cartes, risque de chute de fps ! #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
module Berka module Brouillard $RayonFog = 3 # Rayon de vision: calcul optimisé pour 3 & 6 FichFog = "fog.png" # Fichier de tileset brouillard: seule la 1ere pose est utilisée # doit se trouver dans le dossier systeme de projet IDFog = 1 # Id de l'interrupteur qui désactive/active le brouillard ZFog = 300 # Priorité de superposition du brouillard. Act_GC = true # Activation du Ramasse Miettes pour gain de performances
# Ne pas changer !!!! Tiles={ # Indexation des autotiles de brouillard "0"=>2816,"1"=>2824,"12"=>2844,"123"=>2844,"1234"=>2856,"12346"=>2860, "123467"=>2860,"1234678"=>2862,"12346789"=>2862,"1234679"=>2860,"123468"=>2862, "1234689"=>2862,"123469"=>2860,"12347"=>2856,"123478"=>2859,"1234789"=>2859, "123479"=>2857,"12348"=>2859,"123489"=>2859,"12349"=>2857,"1236"=>2854, "12367"=>2855,"123678"=>2861,"123679"=>2855,"1236789"=>2861,"12368"=>2861, "123689"=>2861,"12369"=>2854,"1237"=>2845,"12378"=>2849,"123789"=>2849, "12379"=>2847,"1238"=>2849,"12389"=>2849,"1239"=>2846,"124"=>2856,"1246"=>2860, "12467"=>2860,"124678"=>2862,"1246789"=>2862,"124679"=>2860,"12468"=>2862, "124689"=>2862,"12469"=>2860,"1247"=>2856,"12478"=>2859,"124789"=>2859, "12479"=>2857,"1248"=>2859,"12489"=>2859,"1249"=>2857,"126"=>2854,"1267"=>2855, "12678"=>2861,"126789"=>2861,"12679"=>2855,"1268"=>2861,"12689"=>2861,"1269"=>2854, "127"=>2845,"1278"=>2849,"12789"=>2849,"128"=>2849,"1289"=>2849,"129"=>2846, "13"=>2828,"134"=>2834,"1346"=>2848,"13467"=>2848,"134678"=>2858,"1346789"=>2858, "134679"=>2848,"13468"=>2858,"134689"=>2858,"13469"=>2848,"1347"=>2834, "13478"=>2851,"134789"=>2851,"13479"=>2835,"1348"=>2851,"13489"=>2851, "1349"=>2835,"136"=>2841,"1367"=>2843,"13678"=>2853,"136789"=>2853,"13679"=>2843, "1368"=>2853,"13689"=>2853,"1369"=>2841,"137"=>2829,"1378"=>2839,"13789"=>2839, "138"=>2839,"1389"=>2839,"139"=>2830,"14"=>2832,"146"=>2848,"1467"=>2848, "14678"=>2858,"146789"=>2858,"14679"=>2848,"1468"=>2862,"14689"=>2858,"1469"=>2848, "147"=>2832,"1478"=>2850,"14789"=>2850,"1479"=>2833,"148"=>2850,"1489"=>2850, "149"=>2833,"16"=>2841,"167"=>2843,"1678"=>2853,"16789"=>2853,"1679"=>2848, "168"=>2853,"1689"=>2853,"169"=>2841,"17"=>2825,"178"=>2838,"1789"=>2838, "179"=>2827,"18"=>2838,"189"=>2838,"19"=>2826,"2"=>2844,"23"=>2844,"234"=>2856, "2346"=>2860,"23467"=>2860,"234678"=>2862,"2346789"=>2862,"234679"=>2862, "23468"=>2862,"234689"=>2862,"23469"=>2860,"2347"=>2856,"23478"=>2859, "234789"=>2859,"23479"=>2857,"2348"=>2859,"23489"=>2859,"2348"=>2859,"236"=>2854, "2367"=>2855,"23678"=>2861,"236789"=>2861,"23679"=>2855,"2368"=>2861,"23689"=>2861, "2369"=>2854,"237"=>2845,"2378"=>2849,"23789"=>2849,"2379"=>2847,"238"=>2849, "2389"=>2849,"239"=>2846,"24"=>2856,"246"=>2860,"2467"=>2860,"24678"=>2862, "246789"=>2862,"24679"=>2860,"2468"=>2862,"24689"=>2862,"2469"=>2860,"247"=>2856, "2478"=>2859,"24789"=>2859,"2479"=>2847,"248"=>2859,"2489"=>2859,"249"=>2857, "26"=>2854,"267"=>2854,"2678"=>2861,"26789"=>2861,"2679"=>2855,"268"=>2861, "2689"=>2861,"269"=>2854,"27"=>2845,"278"=>2849,"2789"=>2849,"279"=>2847,"28"=>2849, "289"=>2849,"29"=>2846,"3"=>2820,"34"=>2834,"346"=>2848,"3467"=>2848,"34678"=>2858, "346789"=>2858,"34679"=>2848,"3468"=>2858,"34689"=>2858,"3469"=>2848,"347"=>2834, "3478"=>2851,"34789"=>2851,"3479"=>2835,"348"=>2851,"3489"=>2851,"349"=>2835, "36"=>2840,"367"=>2842,"3678"=>2852,"36789"=>2852,"3679"=>2842,"368"=>2852, "3689"=>2852,"369"=>2840,"37"=>2821,"378"=>2837,"3789"=>2837,"379"=>2823, "38"=>2837,"389"=>2837,"39"=>2822,"4"=>2832,"46"=>2848,"467"=>2848,"4678"=>2858, "46789"=>2858,"4679"=>2848,"468"=>2858,"4689"=>2858,"469"=>2848,"47"=>2832, "478"=>2850,"4789"=>2850,"479"=>2833,"48"=>2850,"489"=>2850,"49"=>2833, "6"=>2840,"67"=>2842,"678"=>2852,"6789"=>2852,"679"=>2842,"68"=>2852, "689"=>2852,"69"=>2840,"7"=>2817,"78"=>2836,"789"=>2836,"79"=>2819,"8"=>2836, "89"=>2836,"9"=>2818 } # et tu payes ton mal de crâne, pour trouver chaque valeur ^^ end end module Fog def self.clear_fog(id) $game_temp.br_maps.delete(id) return if !$scene.is_a?(Scene_Map) $scene.spriteset.dispose $scene.spriteset=Spriteset_Map.new end end Win32API.new('kernel32','SetPriorityClass','pi','i').call( Win32API.new('kernel32','GetCurrentProcess','','i').call,256) include Berka::Brouillard class Spriteset_Map alias :br_create :create_tilemap alias :br_dispose :dispose_tilemap alias :br_view :dispose_viewports alias :br_update :update_tilemap unless $@ alias :br_view_update :update_viewports unless $@ attr_accessor :br_tile,:tilemap def create_tilemap br_create @br_tile=Tilemap.new(@br_view=Viewport.new(0,0,Graphics.width,Graphics.height)) @br_view.z=ZFog 8.times{|i|@br_tile.bitmaps[i]=@tilemap.bitmaps[i].clone} @br_tile.bitmaps[1]=Cache.system(FichFog) @br_tile.map_data=Table.new($game_map.width,$game_map.height,3) clear_fog end def clear_fog w,h=$game_map.width,$game_map.height if $game_temp.br_maps.has_key?($game_map.map_id) for x in 0...w;for y in 0...h if $game_temp.br_maps[$game_map.map_id][x,y]==0 @br_tile.map_data[x,y,1]=2816 a||=true else @br_tile.map_data[x,y,1]=0 a||=false end end;end if a Thread.new{for x in 0...w;for y in 0...h chk(x,y) end;end} end else $game_temp.br_maps[$game_map.map_id]||=Table.new(w,h) for x in 0...w;for y in 0...h @br_tile.map_data[x,y,1]=2816 $game_temp.br_maps[$game_map.map_id][x,y]=0 end;end end end def dispose_tilemap br_dispose @br_tile.dispose end def dispose_viewports br_view @br_view.dispose end def update_tilemap br_update if $game_switches[IDFog] @br_tile.dispose return end GC.start if !$game_player.moving?&&Act_GC return if !$game_temp.br_maps.has_key?($game_map.map_id) br_obscurcis x,y=$game_map.display_x/8,$game_map.display_y/8 return if x==@br_tile.ox&&y==@br_tile.oy @br_tile.ox,@br_tile.oy=x,y @br_tile.update end def br_obscurcis #C'est ici que l'on donne la capacité voir à n'importe qui x,y=$game_map.events[1].x,$game_map.events[1].y #modifier [1] par l'id de l'évent qui doit voir rx,ry=(x-$RayonFog-2..x+$RayonFog+2).to_a,(y-$RayonFog-2..y+$RayonFog+2).to_a for tx in rx for ty in ry r=Math.sqrt(((x-tx)**2+(y-ty)**2)) chk(tx,ty)if r.between?($RayonFog,$RayonFog+2) next if !tx.between?(rx[0],rx[-1]) if r<=$RayonFog @br_tile.map_data[tx,ty,1]=0 $game_temp.br_maps[$game_map.map_id][tx,ty]=1 end end end x,y=$game_player.x,$game_player.y #$game_player correspond au héros. Enlever cette partie correspond à enlever la fonction voir au héros. rx,ry=(x-$RayonFog-2..x+$RayonFog+2).to_a,(y-$RayonFog-2..y+$RayonFog+2).to_a for tx in rx for ty in ry r=Math.sqrt(((x-tx)**2+(y-ty)**2)) chk(tx,ty)if r.between?($RayonFog,$RayonFog+2) next if !tx.between?(rx[0],rx[-1]) if r<=$RayonFog @br_tile.map_data[tx,ty,1]=0 $game_temp.br_maps[$game_map.map_id][tx,ty]=1 end end end end def chk(x,y) return if !$game_temp.br_maps.has_key?($game_map.map_id)||x.nil?||y.nil?|| $game_temp.br_maps[$game_map.map_id][x,y]==1 d=@br_tile.map_data l=[] l<<1 if d[x-1,y+1,1]==0 l<<2 if d[x,y+1,1]==0 l<<3 if d[x+1,y+1,1]==0 l<<4 if d[x-1,y,1]==0 l<<6 if d[x+1,y,1]==0 l<<9 if d[x+1,y-1,1]==0 l<<8 if d[x,y-1,1]==0 l<<7 if d[x-1,y-1,1]==0 l=l.sort.join return if l.nil?||l=="" @br_tile.map_data[x,y,1]=Tiles[l] end def update_viewports br_view_update @br_view.update end end class Game_Temp alias :br_initialize :initialize attr_accessor :br_maps def initialize br_initialize @br_maps={} end end def vu_par_event?(x,y) Math.sqrt((($game_map.events[1].x-x)**2+($game_map.events[1].y-y)**2))<=$RayonFog end def vu_par_hero?(x,y) Math.sqrt((($game_player.x-x)**2+($game_player.y-y)**2))<=$RayonFog end class Scene_Map<Scene_Base # correctif: màj spriteset 1/frame attr_accessor :spriteset def update_basic Graphics.update Input.update $game_map.update end end class Scene_File<Scene_Base alias :br_write_save :write_save_data alias :br_read_save :read_save_data def write_save_data(file) br_write_save(file) Marshal.dump($game_temp.br_maps,file) end def read_save_data(file) br_read_save(file) $game_temp.br_maps=Marshal.load(file) end end
A la ligne 155 tu a une ligne qui contient "x,y=$game_map.events[1].x,$game_map.events[1].y". Remplaces 1 par l'id de l'évent de ta carte. Attention, quand tu changera de carte ça sera l'évent 1 de la prochaine carte qui pourra voir. Si jamais tu veut que tous les évent voyent tu me le dit j'édite. Ah merde, je viens de voir que tu veux que ça soit par un commentaire. Grbml faut que je re-modifie tout ça alors (avec la meche alors =o !);
Rendu :
Spoiler:
-> Les dialogues sont cachés également, c'est un problème non ?
Dernière édition par fabY le Dim 20 Sep 2009 - 14:07, édité 1 fois
Gothor
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
Sujet: Re: [VX] Brouillard de Guerre Sam 19 Sep 2009 - 11:04
bien joué fabY Dis moi, t'as trouvé ça tout seul? =°
fabY
dYeu retraité prématurément
Age : 29 Inscrit le : 09/02/2008 Messages : 5357
Sujet: Re: [VX] Brouillard de Guerre Sam 19 Sep 2009 - 11:17
Je pense que j'aurai trouvé tout seul mais 2fois plus lentement parce que La Meche m'a expliqué de sortes à ce que je fasse travailler mes méninges mais de façon plus rapide que solo ^^. Enfin bien joué je sais pas puisqu'il voulait des commentaires mais là flemme de le faire en plus je vais miamer... (vous savez que 3scripteurs vont fêter leur anniversaires dans moins de 7jours =DD).
Qualcuno
Citadin Lv.7
Age : 28 Inscrit le : 04/09/2009 Messages : 181
Sujet: Re: [VX] Brouillard de Guerre Sam 19 Sep 2009 - 12:51
il est bien le script mais il a fais bugguer mon ordi deux fois ^^(Mais ca peut etre rapport avec le fait que J'avais plein d'autre script dons un anti lag ?)
sinon il est biens sa fais super beau dans une ambiance de guerre avec de la pluie et tout ^^