- Editado
KPass XP & VX
por Kyonides-Arkanthes
Introducción
Este script es solo una alternativa para crear limitaciones al acceso a ciertas áreas o mapas mediante el uso de... ¡pasaportes!
Sí, ya sé que pueden existir métodos más "típicos" del maker para alcanzar lo mismo, pero me importa poco si ese es el caso.
Ni siquiera sé si habrá interesados en incluirlo en sus proyectos, de igual forma se los dejo aquí.
Términos y Condiciones
Es de libre uso en proyectos no comerciales, a los proyectos comerciales se les aplicará una única tarifa de $15 americanos por proyecto alias juego terminado que publiquen y no se multiplicará por la cantidad de copias vendidas de sus juegos.
El Script
# Scripter : Kyonides-Arkanthes
# 2019-01-10 - Versión Mango
# Este script trata de emular la necesidad de tener un pasaporte a mano.
# Un pasaporte incluye lo siguiente:
# ID: igual a la del actor o héroe
# AGE: Edad, 0 por defecto
# Name: Nombre del actor en la base de datos, no se actualiza solo
# Nickname: Apodo del actor en la base de datos, no se actualiza solo
# Father's name: Nombre del padre del actor
# Mother's name: Nombre de la madre del actor
# Land: El País, vacío o pueden definirlo cuando gusten
# Status: Estado, vacío o pueden definirlo cuando gusten
# Estos nombres están vacíos si nunca se configuran.
# Todo pasaporte incluye pasos como método de expiración.
# - Llamadas a Script -
# $game_party.passport_status?(ID_actor, estado1, etc.)
# Incluya uno o más estados permitidos como :vip o "nongrata"
# Fallará si el estado del actor no está incluido.
# $game_party.has_land_permit?(ID_actor, land_to_visit)
# ¿Tiene permiso para ingresar en ese país?
# $game_party.passport_expired?(ID_actor)
# ¿Ha expirado el pasaporte del actor? (En caso de que no tenga más pasos...
# $game_party.lose_passport(ID_actor)
# ¡Pierda el pasaporte para siempre! (Necesitará emitir otro en el futuro...)
# $game_party.retain_passport(ID_actor)
# ¡Permita que los agentes de aduanas retengan el pasaporte!
# $game_party.return_passport(ID_actor)
# ¡Permita que los agentes de aduanas regresen el pasaporte!
# $game_party.retained_passport?(ID_actor)
# ¿Está retenido el pasaporte del actor?
# $game_party.make_passport(ID_actor)
# Emita un nuevo pasaporte o renueve este.
# KPass.no_access[Nombre_Pais] = true o false
# Bloquee todo acceso a cierto país o no lo haga.
# KPass.no_strangers[Nombre_Pais] = true o false
# Bloquee todo acceso a extranjeros o no lo haga.
# KPass.no_access[Nombre_Pais]
# Use como condición para verificar si hay un bloqueo general para x país.
# KPass.no_strangers?(Nombre_Pais, ID_actor)
# Revisa si un actor extranjero puede ingresar en un país.
module KPass
DEFAULT_EXPIRATION_STEPS = 1000 # Pasos antes de expirar
# Pasaportes por ser emitidos al comienzo del juego
ACTOR_DATA = ad = {} # ¡No editen esta línea!
# ad[ID_actor] = { padre => nombre, madre => nombre, país => nombre,
# estado => :vip o :buscado o :nongrata o :diplomatico o pueden omitirlo
# Advertencia - Los :simbolos siempre irán en inglés.
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```