Using the same kind of script for the Monster Derby Track teleporter, you can add a secure teleporter to go to visit jailed players. It will cost 5 millions to go to the jail, but the return will be free.
Assuming you know a bit adding a quest, I'll forgive some details and I'll will no offer any kind of support. Take this share as it is...
Make sure to have a correct zone definition, and check that players can not escape from jail when they are just in this zone (not //jail by GM, just teleported).
Working fine on L2J-Free.
Make a new NPC named with ID 9997 and every NPC template_id you want.
Make a new html file in the data/html/default folder named 9997.html :
<html><body>
Jail teleporter:<br>
Now you want to exit this room ? There is no problem for me, but remember one thing : respect our server rules !<br>
<center>
<a action="bypass -h npc_%objectId%_Quest 9997_teleport_to_jail">Exit</a><br>
</center>
</body></html>
Create a new folder in the quest folder : 9997_teleport_to_jail
Put this script into _init_.py :
#
# Created by Shaigan on 2007.11.25.
# Based on the Derby Track teleporter.
#
import sys
from net.sf.l2j.gameserver.model.actor.instance import L2PcInstance
from net.sf.l2j.gameserver.model.quest import State
from net.sf.l2j.gameserver.model.quest import QuestState
from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
qn = "9997_teleport_to_jail"
JAIL_EXIT_NPC = 9997
TELEPORTERS = {
30059:3, # TRISHA
30080:4, # CLARISSA
30177:6, # VALENTIA
30233:8, # ESMERALDA
30256:2, # BELLA
30320:1, # RICHLIN
30848:7, # ELISA
30899:5, # FLAUEN
31320:9, # ILYANA
31275:10, # TATIANA
30727:11, # VERONA
30836:12, # MINERVA
31964:13 # BILIA
}
RETURN_LOCS = [[-80826,149775,-3043],[-12672,122776,-3116],[15670,142983,-2705],[83400,147943,-3404], \
[111409,219364,-3545],[82956,53162,-1495],[146331,25762,-2018],[116819,76994,-2714], \
[43835,-47749,-792],[147930,-55281,-2728],[85335,16177,-3694],[105857,109763,-3202], \
[87386,-143246,-1293]]
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onTalk (self,npc,player):
st = player.getQuestState(qn)
npcId = npc.getNpcId()
if not st: return
if st.isInJail(): return
###################
# Start Locations #
###################
if TELEPORTERS.has_key(npcId) :
st.takeItems(57,5000000)
st.getPlayer().teleToLocation(-114356,-249645,-2984)
st.setState(STARTED)
st.set("id",str(TELEPORTERS[npcId]))
########
# Jail #
########
elif st.getState() == STARTED and npcId == JAIL_EXIT_NPC:
# back to start location
return_id = st.getInt("id") - 1
st.getPlayer().teleToLocation(RETURN_LOCS[return_id][0],RETURN_LOCS[return_id][1],RETURN_LOCS[return_id][2])
st.exitQuest(1)
return
QUEST = Quest(9997,qn,"Teleports")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
QUEST.setInitialState(CREATED)
for npcId in TELEPORTERS.keys() :
QUEST.addStartNpc(npcId)
QUEST.addTalkId(npcId)
QUEST.addTalkId(JAIL_EXIT_NPC)
Open all the concerned GK html files ( data/html/teleporter/ ) and add the folowing line just after the line wich permit to go to the derby track. You have the concerned GK's ID in the script above.
<a action="bypass -h npc_%objectId%_Quest 9997_teleport_to_jail" msg="811;Jail">Move to Jail</a><br>
Open the _init_.py in the quest teleporter folder and add the line, don't forget the coma...
'9997_teleport_to_jail'
Spawn the NPC ID 9997 into jail, go to speak to a GK in town, spend 5 millions and enjoy.