Brouillard de Guerre
Sam 23 Mai 2009 - 12:13
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:
En espérant qu'il trouvera preneur,
berka
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:
- Code:
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Brouillard de Guerre 22/05/09
#-------------------------------------------------------------------------------
# ver.0.1 par Berka rgss.2
# http://rpgmakervx.1fr1.net
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 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
- JessStaffeux retraité
- Nombre de messages : 855
Age : 33
Localisation : Ma drums ou mon ordi !
Distinction : Dieu de Kipatord
Date d'inscription : 04/05/2008
Re: Brouillard de Guerre
Sam 23 Mai 2009 - 12:23
Ha ouais c'est vraiment bien comme script, j'en aurais besoin pour ma map monde déjà !
Je vois que mon petit fog est pas mal finalement. Après c'est quelques chose de facile à modier. En tout cas super rendu. Beaucoup de script servent à faire un brouillard... mais là c'est vraiment super. Parfait.
Merci Berka !
Je vois que mon petit fog est pas mal finalement. Après c'est quelques chose de facile à modier. En tout cas super rendu. Beaucoup de script servent à faire un brouillard... mais là c'est vraiment super. Parfait.
Merci Berka !
- SpiderMembre
- Nombre de messages : 36
Age : 31
Distinction : aucune
Date d'inscription : 10/05/2009
Re: Brouillard de Guerre
Sam 23 Mai 2009 - 12:38
C'est plutot cool !
Mais n'y aurait-il pas un moyen de faire ce brouillard plus smooth ?
Car lacordurre case par ccase n'est pas très esthétique.
Mais n'y aurait-il pas un moyen de faire ce brouillard plus smooth ?
Car lacordurre case par ccase n'est pas très esthétique.
- HimitsuMembre
- Nombre de messages : 119
Distinction : aucune
Date d'inscription : 22/11/2008
Re: Brouillard de Guerre
Sam 23 Mai 2009 - 12:44
Oui, très original comme script, il y aura surement plus d'une personne intéressée à mon avis.
Jolie travail Berka
Jolie travail Berka
Re: Brouillard de Guerre
Sam 23 Mai 2009 - 12:48
Jess: Merci
Spider: t'as mis des gants pour taper ton message ? Il faut que tu redessines le tileset de brouillard.
Himitsu: Merci aussi ^^
berka
Spider: t'as mis des gants pour taper ton message ? Il faut que tu redessines le tileset de brouillard.
Himitsu: Merci aussi ^^
berka
- JessStaffeux retraité
- Nombre de messages : 855
Age : 33
Localisation : Ma drums ou mon ordi !
Distinction : Dieu de Kipatord
Date d'inscription : 04/05/2008
Re: Brouillard de Guerre
Sam 23 Mai 2009 - 13:52
Y a pas de quoi Berka, c'est normal.
Alors, pour ceux qui veulent d'autres fog, j'en ai créé trois nouveaux. Si ça plait j'en ferais d'autre. N'hésitez pas non plus à demander et je verrais ce que je peut faire.
Screen :
Les planches : toujours à nommer "fog.png", dossier "system"
Alors, pour ceux qui veulent d'autres fog, j'en ai créé trois nouveaux. Si ça plait j'en ferais d'autre. N'hésitez pas non plus à demander et je verrais ce que je peut faire.
Screen :
Les planches : toujours à nommer "fog.png", dossier "system"
- JessStaffeux retraité
- Nombre de messages : 855
Age : 33
Localisation : Ma drums ou mon ordi !
Distinction : Dieu de Kipatord
Date d'inscription : 04/05/2008
Re: Brouillard de Guerre
Sam 23 Mai 2009 - 14:01
Yeah ça gère.
DERIENT ! ! !
J'en fais d'autre de temps en temps quand je suis inspiré, alors si vous avez des idées...
DERIENT ! ! !
J'en fais d'autre de temps en temps quand je suis inspiré, alors si vous avez des idées...
Re: Brouillard de Guerre
Sam 23 Mai 2009 - 19:07
Vraiment sympa ce script ^^
Il me rapelera les heures passées sur SO "till the end of time"
Il me rapelera les heures passées sur SO "till the end of time"
- kordarrModérateur
- Nombre de messages : 1838
Age : 34
Localisation : île de la réunion, Le Tampon.
Distinction : Auto-proclamé sex-symbol de la commu'
Frère jumeau de Jonathan ( Secret Story )
Exhibitionniste en herbe
[Mist' & Coco' ]
Fan n°1 de Coco'
Psychopathe en chef
Date d'inscription : 05/11/2008
Re: Brouillard de Guerre
Sam 23 Mai 2009 - 19:44
Ah ouai mais ça déchire carrément tout ça...Je ne doute pas que ça puisse devenir un script incontournable...
Bravo à toi berka (encore) et gg jess j'aime bien tes brouillards.
Bravo à toi berka (encore) et gg jess j'aime bien tes brouillards.
- yakzawikStaffeux retraité
- Nombre de messages : 1845
Age : 33
Localisation : Dans un trou perdu avec ma copine !
Distinction : Yakzawiki, l'encyclopédie libre !
[Elisa']
Force Zinzoline au fond de son coeur
Il est TROPDARKMECHAN
[Coco' ]
Date d'inscription : 31/05/2008
Re: Brouillard de Guerre
Sam 23 Mai 2009 - 20:44
Ses brouillards sont des titles d'herbe pour le dernier : Bien trouvé mon cher Jess
Ensuite : C'est un bon script je trouve, bien que la chute de 5 FPS est embêtante. Je pense que j'y trouverai peut être son intérêt, finalement ^^
Ensuite : C'est un bon script je trouve, bien que la chute de 5 FPS est embêtante. Je pense que j'y trouverai peut être son intérêt, finalement ^^
- JessStaffeux retraité
- Nombre de messages : 855
Age : 33
Localisation : Ma drums ou mon ordi !
Distinction : Dieu de Kipatord
Date d'inscription : 04/05/2008
Re: Brouillard de Guerre
Sam 23 Mai 2009 - 20:58
J'ai pensais la même quand j'ai vu le script. Vraiment super, incontournable c'est le mot. Oui deux des brouillard sont des herbes.
Ensuite les deux c'est du pixelage gradué transparents, un rond et un carré.
Ensuite les deux c'est du pixelage gradué transparents, un rond et un carré.
Re: Brouillard de Guerre
Sam 23 Mai 2009 - 21:43
Ouaip, je sais vraiment pas quoi faire pour eviter la chute de FPS...
J'ai réduit le rafraichissement avec juste la zone+1 a chaque frame
J'ai mis les calculs de bordure en Thread (donc en parallèle)
J'ai simplifié les boucles...
Je regarde encore !
berka
J'ai réduit le rafraichissement avec juste la zone+1 a chaque frame
J'ai mis les calculs de bordure en Thread (donc en parallèle)
J'ai simplifié les boucles...
Je regarde encore !
berka
Re: Brouillard de Guerre
Dim 24 Mai 2009 - 10:15
Le script a l'air intéressant... Et même super, comme l'ont déjà dit les autres.
Mais au moment ou j'ai testé (sur un projet vierge), tout mon pc a planté.
La souris ne bougeait plus (en fait, elle avait disparu).
Quand je faisais alt+tab, normalement, ça change de fenêtre, et bah là non.
Et même en appuyant sur le bouton de l'ordi moins de 5 secondes, il ne s'éteignait pas... Alors que normalement, c'est comme faire démarrer/Arrêter
J'ai donc dû éteindre manuellement (+ de 5 secondes sur le bouton...)
Je ne sais pas si ça vient du script, mais il y a des chances.
J'ai juste eu le temps de voir le brouillard se mettre en place.
Est-ce qu'il y a une limite dans la taille de la map ?
Car la mienne faisait 100 par 100.
Et si vous me demandez: oui, j'ai mis l'image fog dans le dossier system.
Aucune erreur mais juste un plantage.
Voila. Merci.
Désolé de vous déranger...
Mais au moment ou j'ai testé (sur un projet vierge), tout mon pc a planté.
La souris ne bougeait plus (en fait, elle avait disparu).
Quand je faisais alt+tab, normalement, ça change de fenêtre, et bah là non.
Et même en appuyant sur le bouton de l'ordi moins de 5 secondes, il ne s'éteignait pas... Alors que normalement, c'est comme faire démarrer/Arrêter
J'ai donc dû éteindre manuellement (+ de 5 secondes sur le bouton...)
Je ne sais pas si ça vient du script, mais il y a des chances.
J'ai juste eu le temps de voir le brouillard se mettre en place.
Est-ce qu'il y a une limite dans la taille de la map ?
Car la mienne faisait 100 par 100.
Et si vous me demandez: oui, j'ai mis l'image fog dans le dossier system.
Aucune erreur mais juste un plantage.
Voila. Merci.
Désolé de vous déranger...
Re: Brouillard de Guerre
Dim 24 Mai 2009 - 18:11
Bizarre... essaye en enlevant ces deux lignes du script:
berka
- Code:
Win32API.new('kernel32','SetPriorityClass','pi','i').call(
Win32API.new('kernel32','GetCurrentProcess','','i').call,256)
berka
Re: Brouillard de Guerre
Dim 24 Mai 2009 - 19:22
Yeah ! J'ai fait précédent après avoir tapé un long message -_-"
Bon, pour résumer:
- Merci, ça marche nickel.
- Pourquoi ces deux lignes faisaient tout planter chez moi ?
- Je peux pas te rajouter dans mes crédits à moins de les personnaliser, comme un vrai jeu, car tu y est déjà.
Voila.
Bon, pour résumer:
- Merci, ça marche nickel.
- Pourquoi ces deux lignes faisaient tout planter chez moi ?
- Je peux pas te rajouter dans mes crédits à moins de les personnaliser, comme un vrai jeu, car tu y est déjà.
Voila.
Re: Brouillard de Guerre
Dim 4 Sep 2016 - 15:56
Hello, j'ai une erreur ligne 187 moi.
Dommage ça m’intéressait énormément...
Dommage ça m’intéressait énormément...
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum