I'm
Here is the script and a link to the demo so you can see an example of the issue.
Script
Spoiler
#################################################################################↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓##↓ ↓##↓ Xpanded Event Control: Version 0.3 ↓##↓ ↓##↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕↕##↑ ↑##↑ Written By: Joe Pro ↑##↑ Last Edited: August 3, 2014 ↑##↑ ↑##↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑##################################################################################◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙##◙ ** Disclaimer ◙##◙••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••◙##◙ ◙##◙ This script is not for commercial, if you wish to use this script in a ◙##◙ game please PM me at which ever site you found this script. Either way, ◙##◙ give me credit as the writer of this script. ◙##◙ ◙##◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙##◙ ** How To Use ◙##◙••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••◙##◙ ◙##◙ * Use the example below in an event script call to refer to the current ◙##◙ event. Works like a self ( or the method get_charactor(0) )for scripting ◙##◙ within an event. ◙##◙ ◙##◙ event_self ◙##◙ ◙##◙ * Use the example below in an event script call to find the proximity of ◙##◙ the current event to the player. ◙##◙ ◙##◙ proximity? ◙##◙ ◙##◙ * Use the example below in an event script call to find if the current ◙##◙ event can see the player. ◙##◙ ◙##◙ viewable? ◙##◙ ◙##◙ * Use the example below in an event script call to find the direction of ◙##◙ the player from the event. ◙##◙ ◙##◙ player_direction ◙##◙ ◙##◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙##◙ ** Updates / Version Notes ◙##◙••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••◙##◙ ◙##◙ v0.1 ◙##◙ ~◄◙◙◙◙►~ ◙##◙ * This script adds more checks and methods for interactions between the ◙##◙ game player and events. It currently allows for proximity checks and ◙##◙ and a line of sight system. ◙##◙ ◙##◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙##################################################################################↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓##↓ ↓##↓ Keep EXP Save Spots: Version 0.1 ↓##↑ ↑##↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑##################################################################################==============================================================================# ** Xpanded Event Control Module#------------------------------------------------------------------------------# This module manages the customizable and function modules.#==============================================================================module Xpanded_Event_Control #◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙##◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙##◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙Customizeable Area◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙##◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙##◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙# #============================================================================= # * Line of Sight Options #============================================================================= Transparent_Region_ID = 1 Default_Distance = 8 #◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙##◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙##◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙End Customizeable Area◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙##◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙##◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙#end#==============================================================================# ** Game_Character#------------------------------------------------------------------------------# A character class with mainly movement route and other such processing# added. It is used as a super class of Game_Player, Game_Follower,# GameVehicle, and Game_Event.#==============================================================================class Game_Character < Game_CharacterBase #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_accessor :wait_time # forced move route flag #-------------------------------------------------------------------------- # * Aliasing_method: Initialize Public Member Variables #-------------------------------------------------------------------------- alias :gcipv32104506450 :init_public_members #-------------------------------------------------------------------------- # * Initialize Public Member Variables #-------------------------------------------------------------------------- def init_public_members gcipv32104506450() @wait_time = 0 end end#==============================================================================# ** Game_Event#------------------------------------------------------------------------------# This class handles events. Functions include event page switching via# condition determinants and running parallel process events. Used within the# Game_Map class.#==============================================================================class Game_Event < Game_Character #-------------------------------------------------------------------------- # * Aliasing_method: Move Type : Random #-------------------------------------------------------------------------- alias :gemtr0401000004564 :move_type_random #-------------------------------------------------------------------------- # * Move Type : Random #-------------------------------------------------------------------------- def move_type_random if self.wait_time > 0 self.wait_time -= 1 else gemtr0401000004564() self.wait_time = (rand(240) + 60) if rand(6) == 1 end end #-------------------------------------------------------------------------- # * Move Type : Approach #-------------------------------------------------------------------------- def move_type_toward_player if near_the_player? move_toward_player else move_random end end #-------------------------------------------------------------------------- # * Determine if Player is Within Proximity #-------------------------------------------------------------------------- def proximity_to_player? return (x_proximity_to_player? + y_proximity_to_player?) end #-------------------------------------------------------------------------- # * Determine if Player is Within X Proximity #-------------------------------------------------------------------------- def x_proximity_to_player? return (self.x > $game_player.x) ? self.x - $game_player.x : $game_player.x - self.x end #-------------------------------------------------------------------------- # * Determine if Player is Within Y Proximity #-------------------------------------------------------------------------- def y_proximity_to_player? return (self.y > $game_player.y) ? self.y - $game_player.y : $game_player.y - self.y end #-------------------------------------------------------------------------- # * Returns the Direction of the Player From This Event #-------------------------------------------------------------------------- def oppisite_direction case @direction when 2 return 8 when 4 return 6 when 6 return 4 when 8 return 2 end end #-------------------------------------------------------------------------- # * Returns the Direction of the Player From This Event #-------------------------------------------------------------------------- def player_direction return (x_proximity_to_player? > y_proximity_to_player? ? (self.x > $game_player.x ? 4 : 6) : (self.y > $game_player.y ? 8 : 2)) end #------------------------------------------------------------------------ # * Return All Comments #------------------------------------------------------------------------ def return_all_comments comments = [] @list.each { |command| comments.push command.parameters[0] if command.code == 108 } if @list return comments end #-------------------------------------------------------------------------- # * Distance Viewable #-------------------------------------------------------------------------- def distance comments = return_all_comments comments.each { |comment| comment.scan(/distance:\s*(\d*)/im) return $1.to_i if $1 } return Xpanded_Event_Control::Default_Distance end #-------------------------------------------------------------------------- # * Determine if Player is Within Line of Sight. #-------------------------------------------------------------------------- def line_of_sight? return (player_direction != oppisite_direction) end #-------------------------------------------------------------------------- # * Determine if Player is Within View Without Obstruction #-------------------------------------------------------------------------- def viewable? viewable = true ex = self.x ey = self.y px = $game_player.x py = $game_player.y #---------------------------------------------------------# # * Checking if the Player is in the Events Line of Sight # #---------------------------------------------------------# if line_of_sight? #------------------------------------------# # * Checking if Within Proximity of Player # #------------------------------------------# if distance > proximity_to_player? #---------------------------------# # * Checking for any Obstructions # #---------------------------------# y_proximity_to_player?.times { |y| x_proximity_to_player?.times { |x| case when (ex < px) if (ey < py) viewable = false if !$game_map.passable?((ex + x), (ey + y), @direction) else viewable = false if !$game_map.passable?((ex + x), (ey - y), @direction) end when (ex > px) if (ey < py) viewable = false if !$game_map.passable?((ex - x), (ey + y), @direction) else viewable = false if !$game_map.passable?((ex - x), (ey - y), @direction) end end } } #----------------------------------------------------------------# # * Checking for any Obstructions if y_proximity_to_player? == 0 # #----------------------------------------------------------------# x_proximity_to_player?.times { |x| case when (ex < px) viewable = false if !$game_map.passable?((ex + x), ey, @direction) when (ex > px) viewable = false if !$game_map.passable?((ex - x), ey, @direction) end } if y_proximity_to_player? == 0 #----------------------------------------------------------------# # * Checking for any Obstructions if x_proximity_to_player? == 0 # #----------------------------------------------------------------# y_proximity_to_player?.times { |y| case when (ey < py) viewable = false if !$game_map.passable?(ex, (ey - y), @direction) when (ey > py) viewable = false if !$game_map.passable?(ex, (ey + y), @direction) end } if x_proximity_to_player? == 0 #---------------------------------------------------# # * Returns false if distance < proximity_to_player?# #---------------------------------------------------# else viewable = false end #------------------------------------# # * Returns false if !line_of_sight? # #------------------------------------# else viewable = false end return viewable end end#==============================================================================# ** Game_Interpreter#------------------------------------------------------------------------------# An interpreter for executing event commands. This class is used within the# Game_Map, Game_Troop, and Game_Event classes.#==============================================================================class Game_Interpreter #-------------------------------------------------------------------------- # * Get the Proximity of Event to Player #-------------------------------------------------------------------------- def proximity? get_character(0).proximity_to_player? end #-------------------------------------------------------------------------- # * Get the Direction of the Player From This Event #-------------------------------------------------------------------------- def player_direction get_character(0).player_direction end #-------------------------------------------------------------------------- # * Get the Direction of the Player From This Event #-------------------------------------------------------------------------- def viewable? get_character(0).viewable? end #-------------------------------------------------------------------------- # * Returns Current Event #-------------------------------------------------------------------------- def event_self get_character(0) endend
Demo
*****Edit*****
The red squares with X's represent a solid wall. The blue empty squares represent an obstruction that can still be seen through. Basically the rest of the script seems to be working fine, as far as I can tell. My only problem is if I am standing directly in front of the event, it will always see me, even if the path is obstructed.
Photos
*****Edit*****
I've fixed the problem above but the event still has a question mark even though it is returning false. Is there something wrong with the event.
***FIXED.
Mod can close this post, Thank you all!





