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.
 
 
 
 |