Save-Point
KPass VX - Printable Version

+- Save-Point (https://www.save-point.org)
+-- Forum: Material Development (https://www.save-point.org/forum-8.html)
+--- Forum: Scripts Database (https://www.save-point.org/forum-39.html)
+---- Forum: RPGMaker VX/VXAce (RGSS2/3) Engines (https://www.save-point.org/forum-117.html)
+---- Thread: KPass VX (/thread-9070.html)



KPass VX - kyonides - 09-03-2024

KPass VX
Kiwi and Mango Versions

by Kyonides

Introduction

This script is supposed to be used as a means of blocking access to certain zones or maps in your games. The implemented method here is a passport! Your heroes might get one from the very beginning or never ever or after a while, that depends on you! Plus passports can be renewed as well! It only supports a single nationality via the land method.

The Mango version includes all features found in Kiwi plus losing, retaining and returning passports at any given time!

Side notes

It seems it does not need any changes to be applied to it to be able to run on VX.

The Script

Kiwi Version
Code:
# * KPass XP & VX
#   Scripter : Kyonides-Arkanthes
#   2019-01-10 - Kiwi Version

#  This script slightly tries to emulate the need to keep a passport at hand.
#  A passport includes the following features:
#    ID:   equal to the actor's ID
#    AGE:  0 as default value
#    Name: Same as the actor's name in the DB
#    Nickname:      Empty or you can set it at any given time
#    Father's name: Empty or you can set it at any given time
#    Mother's name: Empty or you can set it at any given time
#    Land:   Empty or you can set it at any given time
#    Status: Empty or you can set it at any given time

#  All passports include steps as a method to determine their expiration.

# * Script Calls *

#  $game_party.passport_status?(actor_id, allowed_status1, etc.)
#  You may include one or more allowed statuses like :vip or "nongrata"
#  It will fail if the actor's status does not match any status.

#  $game_party.has_land_permit?(actor_id, land_to_visit)
#  It will fail if the actor has not obtained any permit to enter that land.

#  $game_party.passport_expired?(actor_id)
#  It checks whether or not the passport has expired, it has no more steps left.

#  $game_party.make_passport(actor_id)
#  Use it to make or renew a new passport for any actor.

#  KPass.no_access[Land_Name] = true or false
#  Block all access to a certain land.

#  KPass.no_strangers[Land_Name] = true or false
#  Block all access to strangers or foreigners.

#  KPass.no_access[Land_Name]
#  Use it as a condition to check if that country will block all access to it.

#  KPass.no_strangers?(Land_Name, Actor_ID)
#  Checks whether or not an actor can access a country.

module KPass
  DEFAULT_EXPIRATION_STEPS = 1000
  # Passports to be issued from the very beginning
  ACTOR_DATA = ad = {} # Do Not Edit This Line!
# ad[Actor ID] = { father's name => name, mother's name => name, land => name,
# status => :vip or :wanted or :nongrata or :diplomat or you can ommit it
  ad[1] = { :father => "Unknown",
            :mother => "",
            :land => "Forgotten Land" }
  ad[2] = { :father => "Anselm",
            :mother => "Lydia",
            :land => "Jolt Kingdom" }
  def self.no_access() @no_access end
  def self.no_strangers() @no_strangers end
  def self.no_access=(new_list) @no_access = new_list end
  def self.no_strangers=(new_list) @no_strangers = new_list end
  def self.no_strangers?(land, actor_id)
    $game_party.passports[actor_id].land == land and @no_strangers[land]
  end

  def self.reset_access_data
    @no_access = {}
    @no_strangers = {}
  end

  def self.restore_access_data
    @no_access = $game_party.no_access
    @no_strangers = $game_party.no_strangers
  end
end

class KPassport
  def initialize
    @id = 1
    @age = 0
    @name = ""
    @nickname = ""
    @father_name = ""
    @mother_name = ""
    @land = ""
    @status = nil
    @permits = {}
    @rejections = {}
    set_expiration
  end
  def set_expiration() @expire_steps = KPass::DEFAULT_EXPIRATION_STEPS end
  def expired?() @expire_steps == 0 end
  def decrease_steps() @expire_steps -= 1 if @expire_steps > 0 end
  attr_accessor :id, :age, :name, :nickname, :father_name, :mother_name
  attr_accessor :land, :status
  attr_reader :permits, :rejections
end

class Game_Party
  attr_reader :passports, :no_access, :no_strangers
  alias kyon_kpass_gm_party_init initialize
  alias kyon_kpass_gm_party_steps increase_steps
  def initialize
    kyon_kpass_gm_party_init
    KPass.reset_access_data
    @passports = {}
    @no_access = KPass.no_access
    @no_strangers = KPasss.no_strangers
    make_passports
  end

  def make_passports
    data = KPass::ACTOR_DATA
    ids = data.keys.sort
    ids.each do |n|
      ad = data[n]
      @passports[n] = pass = KPassport.new
      pass.id = n
      pass.name = $game_actors[n].name
      pass.father_name = ad[:father] || ""
      pass.mother_name = ad[:mother] || ""
      pass.land = ad[:land] || ""
      pass.status = ad[:status]
      pass.age = ad[:age] || 0
    end
  end

  def make_passport(aid)
    unless (pass = @passports[aid])
      @passports[aid] = pass = KPassport.new
      pass.id = aid
      pass.name = $game_actors[aid].name
    end
    pass.set_expiration
  end

  def increase_steps
    @passports.each {|pass| pass.decrease_steps }
    kyon_kpass_gm_party_steps
  end

  def passport_status?(aid, *statuses)
    return unless (pass = @passports[aid])
    statuses.include?(pass.status)
  end

  def has_land_permit?(aid, land)
    return unless (pass = @passports[aid])
    pass.permits[land]
  end

  def passport_expired?(aid)
    return true unless (pass = @passports[aid])
    pass.expired?
  end
end

class Scene_Load
  alias kyon_kpass_scn_load_on_decision on_decision
  def on_decision(filename)
    kyon_kpass_scn_load_on_decision(filename)
    KPass.restore_access_data
  end
end


Mango Version
Code:
# * KPass XP & VX
#   Scripter : Kyonides-Arkanthes
#   2019-01-10 - Mango Version

#  This script slightly tries to emulate the need to keep a passport at hand.
#  A passport includes the following features:
#    ID:   equal to the actor's ID
#    AGE:  0 as default value
#    Name: Same as the actor's name in the DB
#    Nickname:      Empty or you can set it at any given time
#    Father's name: Empty or you can set it at any given time
#    Mother's name: Empty or you can set it at any given time
#    Land:   Empty or you can set it at any given time
#    Status: Empty or you can set it at any given time

#  All passports include steps as a method to determine their expiration.

# * Script Calls *

#  $game_party.passport_status?(actor_id, allowed_status1, etc.)
#  You may include one or more allowed statuses like :vip or "nongrata"
#  It will fail if the actor's status does not match any status.

#  $game_party.has_land_permit?(actor_id, land_to_visit)
#  It will fail if the actor has not obtained any permit to enter that land.

#  $game_party.passport_expired?(actor_id)
#  It checks whether or not the passport has expired, it has no more steps left.

#  $game_party.lose_passport(actor_id)
#  Lose the passport forever! (You'd need to issue a new passport later on...)

#  $game_party.retain_passport(actor_id)
#  Let Customs Agents retain the actor's passport!

#  $game_party.return_passport(actor_id)
#  Let Customs Agents return the actor's passport!

#  $game_party.retained_passport?(actor_id)
#  Is the actor's passport retained right now?

#  $game_party.make_passport(actor_id)
#  Use it to make or renew a new passport for any actor.

#  KPass.no_access[Land_Name] = true or false
#  Block all access to a certain land.

#  KPass.no_strangers[Land_Name] = true or false
#  Block all access to strangers or foreigners.

#  KPass.no_access[Land_Name]
#  Use it as a condition to check if that country will block all access to it.

#  KPass.no_strangers?(Land_Name, Actor_ID)
#  Checks whether or not an actor can access a country.

module KPass
 DEFAULT_EXPIRATION_STEPS = 1000
 # Passports to be issued from the very beginning
 ACTOR_DATA = ad = {} # Do Not Edit This Line!
# ad[Actor ID] = { father's name => name, mother's name => name, land => name,
# status => :vip or :wanted or :nongrata or :diplomat or you can ommit it
 ad[1] = { :father => "Unknown",
           :mother => "",
           :land => "Forgotten Land" }
 ad[2] = { :father => "Anselm",
           :mother => "Lydia",
           :land => "Jolt Kingdom" }
 def self.no_access() @no_access end
 def self.no_strangers() @no_strangers end
 def self.no_access=(new_list) @no_access = new_list end
 def self.no_strangers=(new_list) @no_strangers = new_list end
 def self.no_strangers?(land, actor_id)
   $game_party.passports[actor_id].land == land and @no_strangers[land]
 end

 def self.reset_access_data
   @no_access = {}
   @no_strangers = {}
 end

 def self.restore_access_data
   @no_access = $game_party.no_access
   @no_strangers = $game_party.no_strangers
 end
end

class KPassport
 def initialize
   @id = 1
   @age = 0
   @name = ""
   @nickname = ""
   @father_name = ""
   @mother_name = ""
   @land = ""
   @status = nil
   @permits = {}
   @rejections = {}
   set_expiration
 end
 def set_expiration() @expire_steps = KPass::DEFAULT_EXPIRATION_STEPS end
 def expired?() @expire_steps == 0 end
 def decrease_steps() @expire_steps -= 1 if @expire_steps > 0 end
 attr_accessor :id, :age, :name, :nickname, :father_name, :mother_name
 attr_accessor :land, :status
 attr_reader :permits, :rejections
end

class Game_Party
 attr_reader :passports, :no_access, :no_strangers
 alias kyon_kpass_gm_party_init initialize
 alias kyon_kpass_gm_party_steps increase_steps
 def initialize
   kyon_kpass_gm_party_init
   KPass.reset_access_data
   @passports = {}
   @no_access = KPass.no_access
   @no_strangers = KPasss.no_strangers
   make_passports
 end

 def make_passports
   data = KPass::ACTOR_DATA
   ids = data.keys.sort
   ids.each do |n|
     ad = data[n]
     @passports[n] = pass = KPassport.new
     pass.id = n
     pass.name = $game_actors[n].name
     pass.father_name = ad[:father] || ""
     pass.mother_name = ad[:mother] || ""
     pass.land = ad[:land] || ""
     pass.status = ad[:status]
     pass.age = ad[:age] || 0
   end
 end

 def lose_passport(aid) @passports.delete(aid) end
 def retain_passport(aid) @retained_passports[aid] = @passports.delete(aid) end
 def return_passport(aid) @passports[aid] = @retained_passports.delete(aid) end
 def retained_passport?(aid) @retained_passports.keys.include?(aid) end

 def make_passport(aid)
   unless (pass = @passports[aid])
     @passports[aid] = pass = KPassport.new
     pass.id = aid
     pass.name = $game_actors[aid].name
   end
   pass.set_expiration
 end

 def increase_steps
   @passports.each {|pass| pass.decrease_steps }
   kyon_kpass_gm_party_steps
 end

 def passport_status?(aid, *statuses)
   return unless (pass = @passports[aid])
   statuses.include?(pass.status)
 end

 def has_land_permit?(aid, land)
   return unless (pass = @passports[aid])
   pass.permits[land]
 end

 def passport_expired?(aid)
   return true unless (pass = @passports[aid])
   pass.expired?
 end
end

class Scene_Load
 alias kyon_kpass_scn_load_on_decision on_decision
 def on_decision(filename)
   kyon_kpass_scn_load_on_decision(filename)
   KPass.restore_access_data
 end
end

Terms & Conditions

Free for use in any non commercial games, a single $15 fee do apply for every commercial game, no matter how many copies their game developers may sell at the end.