Veiw Range Script
Version: 1 & 2
by Jaime 'Near Fantastica' Webster Not DerVVulfman
and Version: 3 Eta
Edit by DerVVulfman
Features
Lets events see the player and interact with it in different ways depending on how close the player is
To add this script make a script call it View_Range and add the following into it then call it accordingly with a script call
Can handle BGS effects
By the poster
I didn't create the original scripts, and as of now the links that Near Fantastica put up are down (and he can't get to them) and his RMXP system is down. Given that he posted the original (though broken) demo links here, there should be no problem to post the script.
I tinkered with the system and made a version 3 (still tinkering :) ) that combines the best features of both... and a little more.
To call BGS add this script call for events: $view_range.event_sound(event_id, bgs_name)
This script call lets you check within the area of a circle around the event for the player and calculates the level of the volume to play the BGS at.
To use events to perform a check within an area of a circle and trigger an RMXP Switch: $view_range.enemies_view(event_id, view_range, switch_id)
This script call lets you check within the area of a circle for an event. It will return true if the player is in the events view range.
To call the enemies add this script call for enemies: $view_range.enemies_view(event_id, view_range, switch_id)
This script call lets you check within the area of a semi circle in front of the event for the player if true the player is in the enemy's view range.
Syntax
Event ID is the events id which the script call is placed from
View Range is how far the event can see
BGS Name is the name of BGS you want the event to play: example "010-River01"
switch_id is the default RMXP switch id that can be used in various Event commands.
For version 2
To call BGS add this script call for events: $view_range.event_sound(event_id, bgs_name)
This script call lets you check within the area of a circle around the event for the player and calculates the level of the volume to play the BGS at?�
To call the enemies add this script call for enemies: $view_range.enemies_view(event_id, view_range, switch_id)
This script call lets you check within the area of a semi circle in front of the event for the player if true the player is in the events view range.
Syntax
Event ID is the events id which the script call is placed from
View Range is how far the event can see
BGS Name is the name of BGS you want the event to play: example "010-River01"
switch_id is which local switch you want to set on... example "A", "B", "C", "D"
For version 3
Plenty more instruction in the script... Feeling lazy right now. [/list]
Take Care,
Near
Enjoy,
Mike aka DerVVulfman
* - * - * - * - * - *
Version 3 Eta
I included built in instructions that allow you to use local self-switches and global RMXP switches, as well as being able to control the volume when using the event_sound call. Also, the system's 'view' calls now includes an optional switch so impassable tiles can 'block' the view/detection system.
This is NOT a bump, but a revelation for users of RPGMaker VX.
A surprise occurred as a member of House Slashers, Lysop, discovered that most of the functions of View Range v3Delta actually worked with RPGMaker VX.
OMG, the script is cross-platform!!!! I gotta change this script's flag to BOTH!
For both RPGMaker XP and RPGMaker VX, it lets events find another event or the player within a certain range, and impassible tiles can block an event's view of its target if the 'block' parameter in the event viewing call is set to true.
IE: $view_range.enemies_view(2, 12, 14, nil, true) Lets event #2 see the player if it's within 12 tiles, but only if there are no impassible tiles blocking.
-and- $view_range.enemies_view(2, 12, 14, nil) Lets event #2 see the player if it's within 12 tiles regardless of impassible tiles
The only thing necessary for View Range to fully function with RPGMaker VX is a bit of editing so the Event Sound feature can function.
Normally, and with RPGMaker XP, it runs some statements within the Game_System class. These statements were removed from RPGMaker VX. But if you paste the below code into RPGMaker VX, you restore these methods that the Event Sound feature uses without any conflicts or side effects.
Code:
#==============================================================================
# ** Game_System
#------------------------------------------------------------------------------
# This class handles system-related data. Also manages vehicles and BGM, etc.
# The instance of this class is referenced by $game_system.
#==============================================================================
class Game_System
#--------------------------------------------------------------------------
# * Play Background Sound
# bgs : background sound to be played
#--------------------------------------------------------------------------
def bgs_play(bgs)
@playing_bgs = bgs
if bgs != nil and bgs.name != ""
Audio.bgs_play("Audio/BGS/" + bgs.name, bgs.volume, bgs.pitch)
else
Audio.bgs_stop
end
Graphics.frame_reset
end
#--------------------------------------------------------------------------
# * Fade Out Background Sound
# time : fade-out time (in seconds)
#--------------------------------------------------------------------------
def bgs_fade(time)
@playing_bgs = nil
Audio.bgs_fade(time * 1000)
end
#--------------------------------------------------------------------------
# * Get Playing Background Sound
#--------------------------------------------------------------------------
def playing_bgs
return @playing_bgs
end
end
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)
Ignore all that, and upgrade to View Range v3 Zeta.
Version Epsilon had code in it for both RPGMaker XP and RPGMaker VX dual compatability and fixed a directional error for VX. But Zeta got a working auto-detect for RPGMaker VX that worked.
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)
I am having issues opening the document in open office. IT tries to interpret it as an ascii file and shows gibberish when I open it. However, if I open it in editpad pro, it works fine.
I do wonder if its possible to make types of view. (cone, all around, straight line) and to check for events with a specific comment in them (hostile to certain types of events and afraid of others)
Meh... Now it's ETA. Yeah, I'm going through the Greek Alphabet.
Autodetect stank. It didn't help if you made a script in RMXP that used a class that VX had and was detecting, so I said the heck with it and made it an on/off switch.
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)
Place an event on your map and make it... oh, I dunno... a rock. Make the 'trigger' for that rock to be a parallel process so it runs constantly. In the 'Event List' window on the right, you insert a script call command. A script call is where you can run an RGSS script (like view range) instead of your typical move-event/show-text commands. Now with that view range command, you set up a few values like the event's own id, a range and a switch that is turned on.
$view_range.event_view(12, 5, 3)
This example assumes that you are checking a circular range around event #12... for a distance of 5 tiles around it. And if the player is detected in this range, RMXP's switch #3 is turned on.
Oh... and there's a cool system to change audio volumes when you get closer or further from a source.
What you do when Switch #3 is turned on is up to you. You can make a guard ticked off.... a gate closes behind the player... the planet Krypton blows up... etc.
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)