Emoticon on Event 2.0 [Resolved]

Started by ojp2010, September 08, 2010, 02:57:52 pm

Previous topic - Next topic

ojp2010

September 08, 2010, 02:57:52 pm Last Edit: September 09, 2010, 10:26:19 am by ojp2010
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 '?'. Well I found the following script, however, the animations won't work when the event is a parallel process.  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 on the map not actually having to talk to them.

Spoiler: ShowHide
#==============================================================================
#  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
#===============================================



Calintz

September 08, 2010, 03:40:03 pm #1 Last Edit: September 08, 2010, 03:48:08 pm by Calintz
Give me a couple of minutes. I will have this problem fixed for you, okay?
It will compose a different method, but should work fluently. No lag, no problem.

P.S.
It is my personal opinion, but I would NOT use a "?" to symbolize anything. The "!" should be the universal sign for quest. If they don't have one above their head, then the player will already know that no quest is available. No "?" is really needed.

ojp2010

September 08, 2010, 04:03:37 pm #2 Last Edit: September 08, 2010, 04:05:26 pm by ojp2010
Thanks! Please take your time, I didn't think I get help so quickly. And I always welcome advice, and your right a '!' should be enough. Great tip. :)

Edit: lvl up!

Calintz

Quick question...
Do you need all of the extra stuff in that script you have posted there, or do you only want the exclamation point to show while a quest is active?

ojp2010

I will say no I don't need it. Can't think of when I would use the stuff.

Calintz

September 08, 2010, 04:19:04 pm #5 Last Edit: September 08, 2010, 04:40:31 pm by Calintz
Okay ... give me some time.

Edit:
Okay, how do you turn off your quests when they're completed?

ojp2010

Oh....well I am on break at work. Let's see. $scene_quest.complete(id) I think. I am using. Tornado quest log by storm.


P.s this will used with RMX-OS if that makes any difference to you. But I can define any save variables myself if there are going to be any. 

Calintz

Okay, well I myself can't make any changes to his script, or this emoticon script because I don't know squat about scripting period, but this can be done with separate events. That's my specialty. To use this method would mean creating two events for each quest. The NPC, and another event right above it to show the emoticon. The code for the emoticon would be fairly short but this would probably go against the reason you made this thread in the first place. To lessen your workload.

As far as a solution to the script ... I can't do it, I'm sorry for wasting your time.

ojp2010

September 08, 2010, 08:34:19 pm #8 Last Edit: September 08, 2010, 08:41:03 pm by ojp2010
Oh no! Thank you for your time and you didn't waste mine. I tried the event method your talking about, however, the script won't function with parallel process. The graphic for Emoticon is just a blank chat bubble, when I want it to show the image. Actually I was wanting is the script fixed so it could be used with parallel processes and function right.

edit: Now that I think about it, if I can find a graphic that fits the character folder, I can do this with events. Only thing is I tried pulling the images out of the image that was with Emoticon, but they wouldn't fit right.

Calintz


Karltheking4

Couldn't you just edit the sprite in MS paint to put the explanation mark on top of them.
It would be far easier than editing a script, and you wouldn't need 2 events.

ojp2010

Quote from: Karltheking4 on September 08, 2010, 08:48:01 pm
Couldn't you just edit the sprite in MS paint to put the explanation mark on top of them.
It would be far easier than editing a script, and you wouldn't need 2 events.


True, but I like avoiding sprite work at much as possible.

@Calintz, great thank you! Are you wanting to help with the eventing part or getting the '!' graphic? Like I said before I tried ripping the one from the Emoticon image, but they wouldn't show up right in game.

Calintz

September 08, 2010, 09:39:12 pm #12 Last Edit: September 08, 2010, 10:11:44 pm by Calintz
@Karl:
More important than that, he would have to make that tedious edit to EVERY character to had a quest for the player. It is easier to have a custom charaset specifically for this purpose so that the effect can be achieved with ANY charaset available for use. I have created an icon file (24x24) and organized it into a character set with the dimensions 96x448. This will be used for everyone rather than franken-spriting a shit load more than necessary.

@ojp2010:
Both. I have everything completed through events for you. You simply have to figure how to trigger it. I think you may be able to use a script snippet for that though. You said the ($scene_quest.complete[ID]) is used to determine whether or not a quest has been completed, so in theory I think you should be able to use that for your conditional branch. The ID will need to change per event, but that really isn't anymore tedious than making the event.

Here is your custom charaset. I also added the question mark emoticon just in case you find use for it.
Spoiler: ShowHide


BTW:
I tested that charaset in-game. It looks sexy!
Make sure you make the Emoticon event BENEATH the NPC!!

Edit:
I went ahead and did the eventing for you. I also created a Common Event and used a switch. The final method is up to you. You can either paste the same code into every Emoticon you place on the map, or call a common event.


Common Event:
Common Event should look like this: Trigger it Parallel with a new Switch called "Emoticon" or whatever and trigger that when quests are available.
Spoiler: ShowHide
@>Set Move Route: This Event
:                    Graphic: "Emoticon',0,2,0
:                    Wait 4 frames
:                    Change Opacity: 240
:                    Wait 4 frames
:                    Change Opacity: 224
:                    Wait 4 frames
:                    Change Opacity: 208
:                    Wait 4 frames
:                    Change Opacity: 192
:                    Wait 4 frames
:                    Change Opacity: 176
:                    Wait 4 frames
:                    Change Opacity: 160
:                    Wait 4 frames
:                    Change Opacity: 176
:                    Wait 4 frames
:                    Change Opacity: 192
:                    Wait 4 frames
:                    Change Opacity: 208
:                    Wait 4 frames
:                    Change Opacity: 224
:                    Wait 4 frames
:                    Change Opacity: 240
:                    Wait 4 frames
:                    Change Opacity: 255
@>Wait 48 frames


Emoticon:
Now when you create your Emoticon event it should be organized like so ...
Spoiler: ShowHide
@>Conditional Branch: Script: $scene_quest.completed[ID] == TRUE
  @>Control Self Switch: A =ON
  @>
 : Else
    @>Call Common Event: Emoticon
    @>
 : Branch End



Let me know how things go.

Sincerely,
Calintz

ojp2010

September 08, 2010, 10:51:20 pm #13 Last Edit: September 08, 2010, 10:52:24 pm by ojp2010
Well, I give it a try with no success. I am using RMX-OS global switches/variables, so I can't use switches without it messing some players up. Also I don't think the Quest Log script I have works with this idea. Cause it doesn't have a $game_party.check_quest(1) function. So when I the event is running the conditional branch is actually competing and removing the quest from the player's log. I may need to find a new quest script or get an edit.

Edit: BTW, thank you so much for your help so far and the graphic. Nicely done.

Wizered67

Global switches and variables only affects the ones you designate.....

Calintz

you can edit the trigger anyway you like. That is all that should need edited for this to work. If the switches are making more problems than they're worth, then copy the event code I listed for the common event into every emoticon you create. It will have the same affect without using switches period. Like I said ... I haven't looked at his script, so I don't know how to properly trigger this event to work.

*sigh* in theory this should work. upload tornado's script so I can take a gander.

ojp2010

September 09, 2010, 10:09:28 am #16 Last Edit: September 09, 2010, 10:27:28 am by ojp2010
Quote from: Wizered67 on September 09, 2010, 01:01:25 am
Global switches and variables only affects the ones you designate.....


fu(k me, how I ended up forgetting about that is beyond me. thank you.

Quest Log

Spoiler: ShowHide
#==============================================================================
#==============================================================================
#                            Tornado Quest Book
#                               Version 1.0
#                              Author: Storm
#                      http://rpgxpultimate.darkbb.com
#
# Instructions:
# Place the script above main.
#
# Use $scene = Scene_QuestBook.new to call it.
#
# Use $game_party.add_quest(id) to add quest.
#
# Use $game_party.delete_quest(id) to delete quest.
#
# Use $game_party.finish_quest(id) to finish quest.
#
# Use $game_party.unfinish_quest(id) to unfinish quest.
#
# In condition branch, at the script tab enter $game_party.quest_complete?(id)
# to check if that quest have completed yet.
#
# Features:
# Can custom menus name.
# Opacity configable.
# Customable complete quest color.
# Customable incomplete quest color.
# Able to set return scene.
# Auto replace text in the message.
# Replacements configable.
#
# Compatibility:
# Most of things. (Haven't test to any yet. :P)
#
# Credits and Thanks:
# Storm     - For making it.
# Game_Guy  - For teach me how to use array.
#
#==============================================================================
#==============================================================================
module TNDqb
 #============================================================================
 # START CONFIG
 #============================================================================
 
 #============================== General Config ==============================
 # General Config.
 #============================================================================
 QB_Name     = "Quest Book" #Quest Book name
 Author_Name = "Author" #Author name
 Title_Name  = "Title" #Title name
 Reward_Name = "Reward" #Reward name
 Status_Name = "Status" #Reward name
 Complete    = "Complete" #Complete name
 Incomplete  = "Incomplete" #Incomplete name
 Unknown     = "???" #Unknown Name
 Opacity     = 200 #Windows Opacity
 Screen      = 1 #(0 = black,1 = map,"quoted string" = picture)
 
 Cmp_Color   = Color.new(0, 255, 0, 255) #Complete color
 Incmp_Color = Color.new(255, 0, 0, 255) #Incomplete Color
 
 Return      = Scene_Map #Return Scene
 
 #================================ Ignore Part ===============================
 # Ignore Parts Under This.
 #============================================================================
 Quest       = []
 
 #============================ Replacement Config ============================
 # Replacements, this will auto replace texts in your message
 #
 # Replace = ["text","replace"]
 # NOTE: Maximum of replaces is 10. Replaces cannot be add or remove.
 #       Cannot include {name1}, {name2}, {name3} and {name4}
 #
 #       Completed Replacements: (Do not add)
 #       {name1} = 1st actor's name
 #       {name2} = 2nd actor's name
 #       {name3} = 3rd actor's name
 #       {name4} = 4th actor's name
 #============================================================================
 Replace1 = ["",""]
 Replace2 = ["",""]
 Replace3 = ["",""]
 Replace4 = ["",""]
 Replace5 = ["",""]
 Replace6 = ["",""]
 Replace7 = ["",""]
 Replace8 = ["",""]
 Replace9 = ["",""]
 Replace10 = ["",""]
 
 #=============================== Quest Config ===============================
 # Config quests here.
 #
 # Quest[id] = ["title","author's name","text","reward"]
 #============================================================================
 
 #PART 1
 Quest[1]    = ["Anemone Refugees","Flol ","Flol wants you to talk to Opsur","10 Gold & 5 Experience"]
 Quest[2]    = ["Bee Stringers","Hene","Hene has asked you to kill ten bees and bring back their stringers as proof","4 Gold & 10 Experience"]
 Quest[3]    = ["Camellia Flower","Pogrua","Bring twenty Camellia flowers to Pogrua. The flowers can be found anywhere in the Camellia Plains","2 Gold & 20 Expereince"]
 Quest[4]    = ["Abonded Chest", "Chest","It is locked, you should take it to Riro.","5 Gold & 10 Experience"]
 Quest[5]    = ["Supplies Thiefs","Fupp","Find the Fupp's ten missing supply crates.","3 Gold & 15 Experience"]
 #============================================================================
 # END CONFIG
 #============================================================================
end

#====================
# Game_Party
#====================
class Game_Party
 attr_accessor :quest
 attr_accessor :qComplete
 alias tnd_qb_init initialize
 def initialize
   @quest = []
   @qComplete = []
   tnd_qb_init
 end
 
 def add_quest(id)
   msg = TNDqb::Quest[id]
   return if msg == nil
   unless @quest.include?(id)
     @qComplete.delete(id)
     @quest.push(id)
   end
 end
 
 def delete_quest(id)
   msg = TNDqb::Quest[id]
   return if msg == nil
   if @quest.include?(id)
     @qComplete.delete(id)
     @quest.delete(id)
   end
 end
 
 def finish_quest(id)
   msg = TNDqb::Quest[id]
   return if msg == nil
   if @quest.include?(id)
     @qComplete.push(id)
   end
 end
 
 def unfinish_quest(id)
   msg = TNDqb::Quest[id]
   return if msg == nil
   if @quest.include?(id)
     @qComplete.delete(id)
   end
 end
 
 def quest_complete?(id)
   return if id == nil
   msg = TNDqb::Quest[id]
   return if msg == nil
   if @qComplete.include?(id)
     return true
   else
     return false
   end
 end
 
end

#====================
# Bitmap
#====================
class Bitmap
 def format_text(text, width)
   words = text.split(' ')
   return words if words.size == 1
   result, current_text = [], words.shift
   words.each_index {|i|
       if self.text_size("#{current_text} #{words[i]}").width > width
         result.push(current_text)
         current_text = words[i]
       else
         current_text = "#{current_text} #{words[i]}"
       end
       result.push(current_text) if i >= words.size - 1}
   return result
 end
end

#====================
# Window_QuestTitle
#====================
class Window_QuestTitle < Window_Base
 def initialize
   super(0, 0, 640, 60)
   self.back_opacity = TNDqb::Opacity
   self.contents = Bitmap.new(width - 32, height - 32)
   refresh
 end
 def refresh
   self.contents.clear
   self.contents.font.color = normal_color
   self.contents.font.size = 25
   cx = contents.text_size(TNDqb::QB_Name).width
   self.contents.draw_text(0, 0, cx, 37, TNDqb::QB_Name)
 end
end

#====================
# Window_QuestMain
#====================
class Window_QuestMain < Window_Base
 def initialize
   super(35, 100, 380, 340)
   self.back_opacity = TNDqb::Opacity
   self.contents = Bitmap.new(width - 32, height - 32)
   refresh
 end
 def refresh
   return if @quest_id == nil
   msg = TNDqb::Quest[@quest_id]
   return if msg == nil
   self.contents.clear
   self.contents.font.size = 20
   t = self.contents.text_size(TNDqb::Title_Name+": ").width
   t2 = self.contents.text_size(TNDqb::Author_Name+": ").width
   t3 = self.contents.text_size(TNDqb::Reward_Name+": ").width
   t4 = self.contents.text_size(TNDqb::Status_Name+": ").width
   self.contents.font.color = system_color
   self.contents.draw_text(0, 0, self.width, 32, TNDqb::Title_Name+": ")
   self.contents.draw_text(0, 32, self.width, 32, TNDqb::Author_Name+": ")
   self.contents.draw_text(0, 250, self.width, 32, TNDqb::Reward_Name+": ")
   self.contents.draw_text(0, 282, self.width, 32, TNDqb::Status_Name+": ")
   self.contents.font.color = normal_color
   self.contents.draw_text(t, 0, self.width, 32, msg[0])
   self.contents.draw_text(t2, 32, self.width, 32, msg[1])
   
   @text = msg[2]
   
   @text = @text.gsub(TNDqb::Replace1[0], TNDqb::Replace1[1])
   @text = @text.gsub(TNDqb::Replace2[0], TNDqb::Replace2[1])
   @text = @text.gsub(TNDqb::Replace3[0], TNDqb::Replace3[1])
   @text = @text.gsub(TNDqb::Replace4[0], TNDqb::Replace4[1])
   @text = @text.gsub(TNDqb::Replace5[0], TNDqb::Replace5[1])
   @text = @text.gsub(TNDqb::Replace6[0], TNDqb::Replace6[1])
   @text = @text.gsub(TNDqb::Replace7[0], TNDqb::Replace7[1])
   @text = @text.gsub(TNDqb::Replace8[0], TNDqb::Replace8[1])
   @text = @text.gsub(TNDqb::Replace9[0], TNDqb::Replace9[1])
   @text = @text.gsub(TNDqb::Replace10[0], TNDqb::Replace10[1])
   
   actor = $game_party.actors[0]
   @text = @text.gsub("{name1}", actor.name)

   
   draw_msg(@text, 0, 64)
   
   if $game_party.qComplete.include?(@quest_id)
     self.contents.draw_text(t3, 250, self.width, 32, msg[3])
     self.contents.font.color = TNDqb::Cmp_Color
     self.contents.draw_text(t4, 282, self.width, 32, TNDqb::Complete)
   else
     self.contents.draw_text(t3, 250, self.width, 32, TNDqb::Unknown)
     self.contents.font.color = TNDqb::Incmp_Color
     self.contents.draw_text(t4, 282, self.width, 32, TNDqb::Incomplete)
   end
 end
 def draw_msg(msg, x, y)
   text = self.contents.format_text(msg, 380)
   text.each_index {|i|self.contents.draw_text(x, y + i*32, 544, 32, text[i])}
 end
 def set_quest(id)
   return if @quest_id == id
   @quest_id = id
   refresh
 end
end

#====================
# Scene_QuestBook
#====================
class Scene_QuestBook
 def main
   if TNDqb::Screen.is_a?(Integer)
     if TNDqb::Screen == 1
       @back = Spriteset_Map.new
     end
   else
     @back = Sprite.new
     @back.bitmap = RPG::Cache.picture(TNDqb::Screen)
   end
   
   #Command window setup
   @quest = $game_party.quest
   @msg = []
   @quest.each {|i|
     @msg.push(TNDqb::Quest[i][0])
   }
   @msg = [""] if @msg.size < 1
   
   #Create command window
   @command_window = Window_Command.new(180, @msg)
   @command_window.x = 460
   @command_window.back_opacity = TNDqb::Opacity
   @command_window.height = 420
   @command_window.y = 60
   j = 0
   @quest.each{|i|
   if $game_party.qComplete.include?(i)
     @command_window.draw_item(j, TNDqb::Cmp_Color)
   end
   j += 1}
   
   #Make main windows
   @title = Window_QuestTitle.new
   @main = Window_QuestMain.new
   
   Graphics.transition
   loop do
     Graphics.update
     Input.update
     #Update windows and inputs
     update
     inputUpdate
     #Break if scene is not Scene_QuestBook
     if $scene != self
       break
     end
   end
   Graphics.freeze
   
   #Dispose windows
   if TNDqb::Screen == 1
     @back.dispose
   end
   @command_window.dispose
   @title.dispose
   @main.dispose
 end
 
 def command_refresh
   @newIndex = @command_window.index
   @msg = []
   @command_window.dispose
   @command_window = nil
   @quest.each {|i|
   @msg.push(TNDqb::Quest[i][0])
   }
   @msg = [""] if @msg.size < 1
   @command_window = Window_Command.new(180, @msg)
   @command_window.x = 460
   @command_window.back_opacity = TNDqb::Opacity
   @command_window.height = 420
   @command_window.y = 60
   @command_window.index = @newIndex
   j = 0
   @quest.each{|i|
   if $game_party.qComplete.include?(i)
     @command_window.draw_item(j, TNDqb::Cmp_Color)
   end
   j += 1}
 end
 
 def inputUpdate
   if Input.trigger?(Input::Key['L'])
     #Play Cancel SE
     $game_system.se_play($data_system.cancel_se)
     #Return to set scene
     $scene = TNDqb::Return.new
   elsif Input.trigger?(Input::C)
     #Play Decision SE
     $game_system.se_play($data_system.decision_se)
     #Refresh quest data
     @main.set_quest(@quest[@command_window.index])
     #Goto command_refresh
     command_refresh
   end
 end
 
 def update
   #Updates
   @command_window.update
   @title.update
   @main.update
 end
end

Calintz

So this is resolved?

You gave me the wrong syntax to use as conditional branching to check if the quest was already complete or not.
That's why my code didn't work.

ojp2010

Not really gave up cause it isn't working. The script doesn't have a check, if I put the call script in a conditional branch it actually completes the quest. And for the moment I am tried of shit not working with my project so I don't feel like dicking with this park anymore. One step forward two steps back it seems.

Calintz

# In condition branch, at the script tab enter $game_party.quest_complete?(id)
# to check if that quest have completed yet.

Dude ... That came straight from the script!!
Replace my conditional branch with a conditional branch using that syntax under the "script" trigger. That should solve all of your problems.