Submit Your Article


 
RPG Maker

Welcome Guest ( Log In | Register )


  Games Resources RPG Maker VX RPG Maker XP Scripts Tutorials Downloads

2 Pages V   1 2 >  
Reply to this topicStart new topic
> Berka's Fog of War, Rgss2: like Age of Empires
berka
post May 23 2009, 02:43 AM
Post #1


Level 8
Group Icon

Group: Revolutionary
Posts: 111
Type: Scripter
RM Skill: Advanced




Fog of War
Version: 0.1
By: Berka


Introduction

Add a fog system like Age of Empires games

Features

  • Fog saving
  • Fog clearing
  • Fog hiding
  • Threading system for display


Screenshots


Demo
none

Script

CODE
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Fog of War 22/05/09
#-------------------------------------------------------------------------------
# ver.0.1 par Berka rgss.2
# http://www.rpgmakervx-fr.com
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Add a Fog of War on the Map
#-------------------------------------------------------------------------------
# Commands:
# Fog.clear_fog(map_id) # clear the bitmap (all black)
# vu_par_hero?(x,y) # chek if [x,y] is viewed by the hero
# $RayonFog = i # modify the hero's view range
#-------------------------------------------------------------------------------
# Features:
# * Switch hides the fog
# * the fog of each map is saved
# * threading system (faster) for fog's borders
# Do not use for large maps: FPS may be down
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

module Berka
module Brouillard
$RayonFog = 3 # View Range: calculs are optimized for 3 or 6
FichFog = "fog.png" # File of fog tileset: only the first pattern is used
# may be placed on: Graphics/System
IDFog = 1 # Switch_Id: if switch == true: hides the fog
ZFog = 300 # fogs 's priorities
Act_GC = true # Garbage Collector managment

# Do not Change !!!!
Tiles={ # fog's tileset indexes
"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


Instructions
Add one of these pictures in Graphics/System/fog.png

Big Thanks to Jess !

Place the script above Main

Compatibility
I don't know: lot of aliases in the Spriteset class

Credits and Thanks
Jess for the picture

Terms and Conditions

this script is totally free of use, but I need an apparent credit in your game and:
Do not post these scripts anywhere without my permission !

have fun.
Berka

This post has been edited by berka: May 23 2009, 04:01 AM


__________________________
Go to the top of the page
 
+Quote Post
   
darkt6
post May 23 2009, 01:52 PM
Post #2



Group Icon

Group: Member
Posts: 2
Type: Developer
RM Skill: Beginner




I was wondering, how to bring the FoW back after you get rid of it?
Go to the top of the page
 
+Quote Post
   
berka
post May 23 2009, 02:37 PM
Post #3


Level 8
Group Icon

Group: Revolutionary
Posts: 111
Type: Scripter
RM Skill: Advanced




Well... this is not the same way at all.
I have not thought about this feature and I think that adding that could bring more lag.
But I'll see for that !
best regards,

berka

PS: My English is quite bad tonight, maybe am I so tired tongue.gif

This post has been edited by berka: May 23 2009, 02:38 PM


__________________________
Go to the top of the page
 
+Quote Post
   
Steve_1993
post May 23 2009, 02:44 PM
Post #4



Group Icon

Group: Member
Posts: 3
Type: None
RM Skill: Intermediate




Great script! happy.gif


__________________________
"Everything I say is a lie...except for that, and that, and that, and that." - Peter Griffin, Family Guy
Go to the top of the page
 
+Quote Post
   
buny
post May 23 2009, 04:03 PM
Post #5


Level 15
Group Icon

Group: Revolutionary
Posts: 294
Type: Developer
RM Skill: Intermediate




please some one for demo??


__________________________







Topic'Z

VLAD REQUIEM IS UPDATE! to ~8~
The TopicszZ


@~Action Battle System~@


[Show/Hide] Action Battle System
Bored Battle System Like This
[Show/Hide] Normal Style


So Do you liem MMORPG style?or Zelda?
if yes you'll need this...
style~>
[Show/Hide] Requiem SABS


Join Here ABS


@###@@@###@#
@####@##@##@##
@@#@@@##@@


[Show/Hide] good again
[Show/Hide] NEVER GIVE UP
[Show/Hide] DONT WASTE MY TIME AGAIN!!!!!!!!!!!!!!!!!!!!
[Show/Hide] LASSSSTTTTT ONE
clever you are the 99999999 visitors who open this get outta here!!!!!
Go to the top of the page
 
+Quote Post
   
MysTaFoX
post May 23 2009, 04:36 PM
Post #6


Level 6
Group Icon

Group: Member
Posts: 79
Type: Artist
RM Skill: Intermediate




Oh goodies I'm using this.
It works, I give u a hi-five for that.


__________________________
I felt like a bulldozer
Trying to catch a butterfly

[. My Deviantart | No I didn't make my avatar .]

I would change my name to decibel here if I could..
Go to the top of the page
 
+Quote Post
   
reijubv
post May 24 2009, 02:26 AM
Post #7


It's been awhile lol
Group Icon

Group: Revolutionary
Posts: 168
Type: Artist
RM Skill: Advanced




Finally!
I've trying to create this and I've failed...!

This script will be very very useful for my current project to limit player's line of sight...!!


__________________________
I'll be back again :P
Go to the top of the page
 
+Quote Post
   
SirCumferance
post Jul 13 2009, 03:36 PM
Post #8


Level 3
Group Icon

Group: Member
Posts: 30
Type: None
RM Skill: Beginner




Copied the script, love the script. But got one problem:
On the main map, the hero enters the town. I am looking to remove the fog for the town so set the switch to On (hide fog)
then when the hero leaves town, I set the switch to Off (unhide fog) and get an error. Could you help?
Thanks
Go to the top of the page
 
+Quote Post
   
platipus
post Jul 14 2009, 03:29 PM
Post #9


Level 11
Group Icon

Group: Revolutionary
Posts: 191
Type: Event Designer
RM Skill: Skilled




didnt work for me.


__________________________
using xp now and will continue to until a better rpg maker
Go to the top of the page
 
+Quote Post
   
SirCumferance
post Jul 15 2009, 12:45 PM
Post #10


Level 3
Group Icon

Group: Member
Posts: 30
Type: None
RM Skill: Beginner




QUOTE (platipus @ Jul 14 2009, 04:29 PM) *
didnt work for me.

What didnt work? The whole fog of war thing? Did you download the fog image and then import it? You gotta look in the script too and make sure the name of the uploaded fog matches. And the switch for fog off is whatever you want.

As for me, I am still hoping to get some help. I tried tweaking it but I am not capable of any sort of scripting.
Any takers for helping? Please?
Go to the top of the page
 
+Quote Post
   
elfyelf
post Jul 15 2009, 01:39 PM
Post #11


(~*A D A N*~)
Group Icon

Group: Revolutionary
Posts: 436
Type: Developer
RM Skill: Advanced




very nice, ill find a use of it in my game.
Ill also give you credit :]


__________________________
Go to the top of the page
 
+Quote Post
   
SojaBird
post Jul 15 2009, 03:34 PM
Post #12


Level 51
Group Icon

Group: Revolutionary
Posts: 1,573
Type: Scripter
RM Skill: Advanced




You might want to fix the codebox...

Greatzz,
SojaBird.


__________________________
Art from the highest shelf?

Scriptology, scripting podcast



HUD's Request Lobby (multiple hud-scripts)


------------------------------------------------------------------

Random Stuff
OMG, it's Hab!!


This is a crazy drawing application! (by me)

How did I learned to script
QUOTE
Hey pim! I'm the Law G14!

For the past couple of months I've been learning RGSS and I've got the basic stuff down such windows, variables, conditional statements, ect. But, I can't see myself making big scripts such as a jumping system or a side view battle system. I was wondering how you learned to script because I really want to know how to script really well.

Thanks in advance.


Hey there,

Well I don't make battle neither though I can still teach you some things :)...
The way I've learned to script is by reading other scripts for the most part.
I've allways been interested in other peoples work but this time I though I had to try to make something myself...and it worked!!
The most importand thing when you go scripting is (at least in my case) that you want to make something to help an other wich can't script.
You also need to feel the competition that's around in the scripting-community.
Cause, I have to say, if you get pushed to get a sertain request done before an other scripter does, you feel POWERFULL!! :P
So that's an other thing...
You also don't need to be afraid to learn from others or helpfiles.
When I write my scripts, I actualy always have the helpfiles open to look things up I don't know or remember.
Then, you must be calm, cause you need to try the script a lot of times.
When I write a script, I test it after almost every changes.
First I set up the major structure.
Like when I make a window-script or part of a script I start with something like this:
CODE
class Window_Name < Window_Base
def initialize(x,y,width,height)
super(x,y,width,height)
refresh
end

def refresh
self.contents.clear
draw_contents
end

def draw_contents
draw_something(with, some, parameters)
end

def update
refresh if @something != @what_it_should_be
end
end
So that's also very important.
Then, the biggest thing I learned scripting from is TRIAL AND ERROR.
That's the most irritating way to learn something, cause it's more ERROR than TRIAL, but it does the trick realy good.

So that's it how I did it.
Now it's up to you.
Do some requests (if I didn't do it allready :P) and learn from them.

Hope that helped you out a little.
If not, keep your eye on the Scriptology-topic (see my sig) where I'll be updating for my scripting(video)tutorials.
Perhaps they're going to be usefull for you one day ;)


Greatzz,
SojaBird.
Go to the top of the page
 
+Quote Post
   
rgangsta
post Jul 16 2009, 11:44 AM
Post #13


Level 8
Group Icon

Group: Revolutionary
Posts: 119
Type: Artist
RM Skill: Skilled




nice one


__________________________
Go to the top of the page
 
+Quote Post
   
SirCumferance
post Jul 16 2009, 10:41 PM
Post #14


Level 3
Group Icon

Group: Member
Posts: 30
Type: None
RM Skill: Beginner




So, I still need help to get it to clear a map of the fog. The switch causes errors and the clear_fog command fills it up with black. I wrote Berka but got nada in response. Someone, give me a shout on some help, please.
Go to the top of the page
 
+Quote Post
   
Secretmapper
post Dec 17 2010, 02:47 AM
Post #15


Level 1
Group Icon

Group: Member
Posts: 5
Type: Mapper
RM Skill: Undisclosed




The hud also is covered with fog, so as the messages. How to fix it? Also, after an event, I receive an error message.
Go to the top of the page
 
+Quote Post
   
Kread-EX
post Dec 17 2010, 03:07 AM
Post #16


(=___=)/
Group Icon

Group: +Gold Member
Posts: 4,136
Type: Scripter
RM Skill: Undisclosed




Just alter the ZFog value to 100 or lower. >_>
And what error message?


__________________________
FRACTURE - a SMT inspired game (demo) made by Rhyme, Karsuman and me. Weep and ragequit.

My blog.

Click here for my e-peen


Go to the top of the page
 
+Quote Post
   
wild_bill236
post Jan 16 2012, 05:12 PM
Post #17


Level 2
Group Icon

Group: Member
Posts: 22
Type: None
RM Skill: Undisclosed




the script looks great but what do i type when i call the script so i can see the opening auto-event?
Go to the top of the page
 
+Quote Post
   
Kread-EX
post Jan 16 2012, 11:22 PM
Post #18


(=___=)/
Group Icon

Group: +Gold Member
Posts: 4,136
Type: Scripter
RM Skill: Undisclosed




CODE
Fog.clear_fog(id)

Replace id with the real id of the map you want to clear. It's indicated in the editor.


__________________________
FRACTURE - a SMT inspired game (demo) made by Rhyme, Karsuman and me. Weep and ragequit.

My blog.

Click here for my e-peen


Go to the top of the page
 
+Quote Post
   
wild_bill236
post Jan 17 2012, 02:59 AM
Post #19


Level 2
Group Icon

Group: Member
Posts: 22
Type: None
RM Skill: Undisclosed




QUOTE (Kread-EX @ Jan 17 2012, 01:22 AM) *
CODE
Fog.clear_fog(id)

Replace id with the real id of the map you want to clear. It's indicated in the editor.

thanks for the quick reply. but how do i find my map id? when i type in the name of the map i get an error message.
Go to the top of the page
 
+Quote Post
   
Kread-EX
post Jan 17 2012, 07:07 AM
Post #20


(=___=)/
Group Icon

Group: +Gold Member
Posts: 4,136
Type: Scripter
RM Skill: Undisclosed




Right-click on your map (on the map tree) and select Map Properties. A box will appear, and on top of this box, your map name and a number like ID:XXX. This number is the ID. Just remove the extra zeroes (for instance, if it displays ID:007, the ID is 7).


__________________________
FRACTURE - a SMT inspired game (demo) made by Rhyme, Karsuman and me. Weep and ragequit.

My blog.

Click here for my e-peen


Go to the top of the page
 
+Quote Post
   

2 Pages V   1 2 >
Reply to this topicStart new topic
2 User(s) are reading this topic (2 Guests and 0 Anonymous Users)
0 Members:

 

Lo-Fi Version Time is now: 23rd May 2013 - 07:52 AM
RPG RPG Revolution is an Privacy Policy and Legal
eXTReMe Tracker