Jump to content
New account registrations are disabed. This website is now an archive. Read more here.
jporter917

Quest Giver

Recommended Posts

I have using a quest script in my game, however it is hard to tell rather a NPC has a quest for the player. So I figure I would add a '!' above NPC's with quest to give and '?' above those who you have quest completed. I have the quest script and I rather not have to edit the thing to death for this effect. I was thinking a simple script that would display a picture above an event when the event has the comment Quest Giver in it, which would display a '!' and the comment Quest Turn in would display '?'. Seems easy enough can anyone help me script this?

Share this post


Link to post
Share on other sites

I found this script, only problem is that is doesn't work if you set the event to repeat or parallel process can anyone help me edit it so that I can make the the emoticon repeat?

 

 

#==============================================================================
#  Emoticon on Event for RMXP Ver. 2.0
#==============================================================================
# By Nechigawara Sanzenin
# Original VX Script by ®Enterbrain
# WARNING!! : This script can use on RPG Maker XP Only!! (VX Not Support)
#==============================================================================
#==============================================================================
module EMO
 #Setting
 BALLOON_WAIT = 12
 EMO_NAME = "Balloon"
 #Name data
 NAME = {
 #Add Name And Number Here
 "Surprise"            => 1 ,
 "Confusion"         => 2 ,
 "Musical"              => 3 ,
 "Love"                   => 4 ,
 "Anger"                 => 5 ,
 "Awkward"            => 6 ,
 "Crushed"            => 7 ,
 "Silence"              => 8 ,
 "Creative"            => 9 ,
 "Zzz"                    => 10 ,
 #End
 }
 #Change Name to ID
 def self.add_id(text)
   if NAME.include?(text)
     return NAME[text]
   else
     return 0
   end
 end
 #--------------------------------------------------------------------------
end
#==============================================================================
class Game_Character
 #--------------------------------------------------------------------------
 attr_accessor :balloon_id
 #--------------------------------------------------------------------------
 alias inc_initialize initialize
 def initialize
   inc_initialize
   @balloon_id = 0
 end
 #--------------------------------------------------------------------------
 def move_type_custom
   # If it is not in the midst of stopping, discontinuance
   if jumping? or moving?
     return
   end
   # Until the list of portable command it arrives lastly, the loop
   while @move_route_index < @move_route.list.size
     # Acquiring portable command
     command = @move_route.list[@move_route_index]
     # When the command cord/code 0th (list) is last
     if command.code == 0
       # Option [ repeats operation ] in case of ON
       if @move_route.repeat
         # The index of the portable route first is reset
         @move_route_index = 0
       end
       # Option [ repeats operation ] in case of OFF
       unless @move_route.repeat
         # When it is in the midst of movement route forcing
         if @move_route_forcing and not @move_route.repeat
           # Cancelling forcing the portable route
           @move_route_forcing = false
           # Return original portable route
           @move_route = @original_move_route
           @move_route_index = @original_move_route_index
           @original_move_route = nil
         end
         # Clearing stop count
         @stop_count = 0
       end
       return
     end
     # Portable type command (it moves under? When jump) is
     if command.code <= 14
       # It diverges with the command cord/code
       case command.code
       when 1  # It moves down
         move_down
       when 2  # It moves left
         move_left
       when 3  # It moves right
         move_right
       when 4  # It moves up
         move_up
       when 5  # It moves left-down
         move_lower_left
       when 6  # It moves right-down
         move_lower_right
       when 7  # It moves left-up
         move_upper_left
       when 8  # It moves right-up
         move_upper_right
       when 9  # It moves random
         move_random
       when 10  # It moves toward player
         move_toward_player
       when 11  # It moves away form hero
         move_away_from_player
       when 12  # It moves forward
         move_forward
       when 13  # It moves backword
         move_backward
       when 14  # Jump
         jump(command.parameters[0], command.parameters[1])
       end
       # Option [ when it cannot move, disregard ] with OFF, in case of the failure of movement
       if not @move_route.skippable and not moving? and not jumping?
         return
       end
       @move_route_index += 1
       return
     end
     # In case of weight
     if command.code == 15
       # Setting weight count
       @wait_count = command.parameters[0] * 2 - 1
       @move_route_index += 1
       return
     end
     # In case of command of direction modification type
     if command.code >= 16 and command.code <= 26
       # It diverges with the command cord/code
       case command.code
       when 16  # Face down
         turn_down
       when 17  # Face left
         turn_left
       when 18  # Face right
         turn_right
       when 19  # Face up
         turn_up
       when 20  # Turn 90 right
         turn_right_90
       when 21  # Turn 90 left
         turn_left_90
       when 22  # 180 Turn
         turn_180
       when 23  # Left-right 90 turn
         turn_right_or_left_90
       when 24  # Face random
         turn_random
       when 25  # Face to hero
         turn_toward_player
       when 26  # Face away from hero
         turn_away_from_player
       end
       @move_route_index += 1
       return
     end
     # In case of other commands
     if command.code >= 27
       # It diverges with the command cord/code
       case command.code
       when 27  # Switch ON
         $game_switches[command.parameters[0]] = true
         $game_map.need_refresh = true
       when 28  # Switch OFF
         $game_switches[command.parameters[0]] = false
         $game_map.need_refresh = true
       when 29  # Modification of drift speed
         @move_speed = command.parameters[0]
       when 30  # Modification of portable frequency
         @move_frequency = command.parameters[0]
       when 31  # When moving animation ON
         @walk_anime = true
       when 32  # When moving animation OFF
         @walk_anime = false
       when 33  # When stepping animation ON
         @step_anime = true
       when 34  # When stepping animation OFF
         @step_anime = false
       when 35  # Direction fixing ON
         @direction_fix = true
       when 36  # Direction fixing OFF
         @direction_fix = false
       when 37  # Through ON
         @through = true
       when 38  # Through OFF
         @through = false
       when 39  # Always on top ON
         @always_on_top = true
       when 40  # Always on top OFF
         @always_on_top = false
       when 41  # Graphic modification
         @tile_id = 0
         @character_name = command.parameters[0]
         @character_hue = command.parameters[1]
         if @original_direction != command.parameters[2]
           @direction = command.parameters[2]
           @original_direction = @direction
           @prelock_direction = 0
         end
         if @original_pattern != command.parameters[3]
           @pattern = command.parameters[3]
           @original_pattern = @pattern
         end
       when 42  # Modification of opacity
         @opacity = command.parameters[0]
       when 43  # Modification of synthetic method
         @blend_type = command.parameters[0]
       when 44  # Play SE
         $game_system.se_play(command.parameters[0])
       when 45  # Script
         script = command.parameters[0].clone
         # Emoticon With Name Command
         if (/\A\\[Ee]n\[(.+?)\]/.match(script)) != nil then
           text = $1
           @balloon_id = EMO.add_id(text)
           script.gsub!(/\\[Ee]n\[(.+?)\]/) { "" }
         end
         # Emoticon With ID Command
         if (/\A\\[Ee]i\[([0-9]+)\]/.match(script)) != nil then
          id = $1.to_i
           @balloon_id = id
           script.gsub!(/\\[Ee]i\[([0-9]+)\]/) { "" }
         end
         # Clear Syntax
         script.gsub!(/\\[Ee]n\[(.+?)\]/) { "" }
         script.gsub!(/\\[Ee]i\[([0-9]+)\]/) { "" }
         result = eval(script)
       end
       @move_route_index += 1
     end
   end
 end
 #--------------------------------------------------------------------------
end
#==============================================================================
class Sprite_Character < RPG::Sprite
 #--------------------------------------------------------------------------
 BALLOON_WAIT = EMO::BALLOON_WAIT
 EMO_NAME = EMO:: EMO_NAME
 #--------------------------------------------------------------------------
 def initialize(viewport, character = nil)
   super(viewport)
   @character = character
   @balloon_duration = 0
   update
 end
  #--------------------------------------------------------------------------
 alias inc_update update
 def update
   inc_update
   # Update Balloon
   update_balloon
   # Check Balloon
   if @character.balloon_id != 0
     @balloon_id = @character.balloon_id
     start_balloon
     @character.balloon_id = 0
   end
 end
 #--------------------------------------------------------------------------
 def start_balloon
   dispose_balloon
   @balloon_duration = 8 * 8 + BALLOON_WAIT
   @balloon_sprite = Sprite.new(viewport)
   @balloon_sprite.bitmap = RPG::Cache.picture(EMO_NAME)
   @balloon_sprite.ox = 16
   @balloon_sprite.oy = 32
   update_balloon
 end
 #--------------------------------------------------------------------------
 def update_balloon
   if @balloon_duration > 0
     @balloon_duration -= 1
     if @balloon_duration == 0
       @balloon_id = 0
       dispose_balloon
     else
       @balloon_sprite.x = x
       if @tile_id >= 384
         he = 32
       else
         he = self.bitmap.height/4
       end
       @balloon_sprite.y = y - he
       @balloon_sprite.z = z + 200
       if @balloon_duration < BALLOON_WAIT
         sx = 7 * 32
       else
         sx = (7 - (@balloon_duration - BALLOON_WAIT) / 8) * 32
       end
       sy = (@balloon_id - 1) * 32
       @balloon_sprite.src_rect.set(sx, sy, 32, 32)
     end
   end
 end
 #--------------------------------------------------------------------------
 def dispose_balloon
   if @balloon_sprite != nil
     @balloon_sprite.dispose
     @balloon_sprite = nil
   end
 end
 #--------------------------------------------------------------------------
end
#==============================================================================

 

Share this post


Link to post
Share on other sites

Try to do this:

Set the quest event to "Player Touch". When it's activated, put a balloon icon over the event's head.

That way, once the player is in contact with the event, they will know if it's a quest or not.

 

 

P.S.

You should edit your posts from now on. Don't want another double post incident.

Share this post


Link to post
Share on other sites

Ya, I want it to work using parallel process then the animation would be going above an NPC's head all the time until the player takes the quest. Reason being is so that players would know who has a quest and who doesn't by just looking at the NPC's not having to talk to them.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...