Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- from com.l2jserver import Config
- from com.l2jserver import L2DatabaseFactory
- from java.lang import System
- from java.util import Iterator
- from com.l2jserver.gameserver.instancemanager import QuestManager
- from com.l2jserver.gameserver.model.quest import State
- from com.l2jserver.gameserver.model.quest import QuestState
- from com.l2jserver.gameserver.model.quest.jython import QuestJython as JQuest
- from com.l2jserver.gameserver.model import L2Object
- from com.l2jserver.gameserver.instancemanager import TownManager
- from com.l2jserver.gameserver.network.serverpackets import SellList
- from com.l2jserver.gameserver.network.serverpackets import ActionFailed
- from com.l2jserver.gameserver.network.serverpackets import WareHouseDepositList
- from com.l2jserver.gameserver.network.serverpackets import WareHouseWithdrawalList
- from com.l2jserver.gameserver.network.serverpackets import NpcHtmlMessage
- from com.l2jserver.gameserver.network.serverpackets import ExShowBaseAttributeCancelWindow
- from com.l2jserver.gameserver.network.serverpackets import ExShowVariationCancelWindow
- from com.l2jserver.gameserver.network.serverpackets import ExShowVariationMakeWindow
- from com.l2jserver.gameserver.network.serverpackets import SystemMessage
- from com.l2jserver.gameserver.network import SystemMessageId
- from com.l2jserver.gameserver.datatables import SkillTable
- from com.l2jserver.gameserver.datatables import SkillTreeTable
- from com.l2jserver.gameserver.network.serverpackets import SetupGauge
- from com.l2jserver.gameserver.network.serverpackets import MagicSkillLaunched
- from com.l2jserver.gameserver.network.serverpackets import MagicSkillUse
- from com.l2jserver.gameserver.network.serverpackets import ExEnchantSkillList
- from com.l2jserver.gameserver.network.serverpackets.ExEnchantSkillList import EnchantSkillType
- from com.l2jserver.gameserver.network.serverpackets import AcquireSkillList
- from com.l2jserver.gameserver.network.serverpackets import AcquireSkillDone
- from com.l2jserver.gameserver.model.actor.instance import L2PcInstance
- from com.l2jserver.gameserver.model.actor.instance import L2PetInstance
- from com.l2jserver.gameserver.model.actor.instance import L2SummonInstance
- from com.l2jserver.gameserver.model.base import ClassId
- from com.l2jserver.gameserver.model.actor import L2Character
- from com.l2jserver.gameserver.model.base import SubClass
- from com.l2jserver.gameserver.datatables import HennaTreeTable
- from com.l2jserver.gameserver.network.serverpackets import HennaEquipList
- from com.l2jserver.gameserver.model import L2HennaInstance
- from com.l2jserver.gameserver.datatables import ClanTable
- from com.l2jserver.gameserver.model import L2Clan
- from com.l2jserver.gameserver.instancemanager import CastleManager
- from com.l2jserver.gameserver.instancemanager import FortManager
- from com.l2jserver.gameserver.instancemanager import FortSiegeManager
- from com.l2jserver.gameserver.instancemanager import SiegeManager
- ##############################
- AllowVIP = False #
- ##############################
- VIPaccesLevel = 1 #
- ##############################
- CLASSMASTER_GIFT = 6622 #
- ##############################
- CLASSMASTER_ITEM_NUM= 1 #
- ##############################
- NOBLE_ITEMID = 3481 #
- ##############################
- NOBLE_NumITEM = 25 #
- ##############################
- NOBLE_Level = 80 #
- ##############################
- NOBLESS_TIARA = 7694 #
- ##############################
- ALLOW_KARMA_PLAYER=False #
- ##############################
- FREE_TELEPORT = False #
- ##############################
- ShowReloadScriptPanel = True #
- ##############################
- FREE_BUFFS = False #
- ##############################
- CONSUMABLE_ID = 57 #
- ##############################
- BUFFS_PRICE = 100000 #
- ##############################
- BUFF_REMOVE_PRICE = 10000 #
- ##############################
- HEAL_PRICE = 10000 #
- ##############################
- TIME_OUT = True #
- ##############################
- TIME_OUT_TIME = 1 #
- ##############################
- BlockTime = 20 #
- ##############################
- npcId = 955
- QuestId = 955
- QuestName = "NpcService"
- QUEST_INFO = str(QuestId)+"_"+QuestName
- QuestDesc = "custom"
- print "============================="
- print "INFO Loaded SERVICES MANAGER"
- print "============================="
- def MainHtml3(st) :
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>"
- MAIN_HTML += "<font color=\"FF0000\">.::Subclass Master Options::.</font><br><br1>"
- if st.player.getTotalSubClasses() < Config.MAX_SUBCLASS :
- MAIN_HTML += "<button value=\"Add Subclass\" action=\"bypass -h Quest " +QUEST_INFO+ " getracemenu addsub 0 0\" width=120 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- MAIN_HTML += "<button value=\"Change Subclass\" action=\"bypass -h Quest " +QUEST_INFO+ " subclass changesub 0 0\" width=120 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- MAIN_HTML += "<button value=\"Remove Subclass\" action=\"bypass -h Quest " +QUEST_INFO+ " subclass deletesub 0 0\" width=120 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- MAIN_HTML += "<br><font color=\"303030\">"+getmaster()+"</font>"
- MAIN_HTML += "</center></body></html>"
- return MAIN_HTML
- def MainHtml4(st) :
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>"
- MAIN_HTML += "<font color=\"FF0000\">.::Clan Options::.</font><br><br1>"
- if st.player.getClanId() == 0:
- MAIN_HTML += "<button value=\"Create New Clan\" action=\"bypass -h Quest " +QUEST_INFO+ " createclan 0 0 0\" width=140 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- else:
- MAIN_HTML += "<button value=\"Delegate Clan Leader\" action=\"bypass -h Quest " +QUEST_INFO+ " giveclanl 0 0 0\" width=140 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- MAIN_HTML += "<button value=\"Increase Clan Level\" action=\"bypass -h Quest " +QUEST_INFO+ " increaseclan 0 0 0\" width=140 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- MAIN_HTML += "<button value=\"Disband Clan\" action=\"bypass -h Quest " +QUEST_INFO+ " DisbandClan 0 0 0\" width=140 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- MAIN_HTML += "<button value=\"Restore Clan\" action=\"bypass -h Quest " +QUEST_INFO+ " RestoreClan 0 0 0\" width=140 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- MAIN_HTML += "<button value=\"Acquire Clan Skill\" action=\"bypass -h Quest " +QUEST_INFO+ " learn_clan_skills 0 0 0\" width=140 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- MAIN_HTML += "<br><font color=\"FF0000\">.::Alliance Options::.</font><br><br1>"
- clan=st.player.getClan()
- if clan.getAllyId() == 0:
- MAIN_HTML += "<button value=\"Create a Alliance\" action=\"bypass -h Quest " +QUEST_INFO+ " createally 0 0 0\" width=120 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- else:
- MAIN_HTML += "<button value=\"Dissolve Alliance\" action=\"bypass -h Quest " +QUEST_INFO+ " dissolve_ally 0 0 0\" width=120 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- MAIN_HTML += "<br><font color=\"303030\">"+getmaster()+"</font>"
- MAIN_HTML += "</center></body></html>"
- return MAIN_HTML
- def RaceMenu(st,case,case2) :
- temp = getVarcharacters(st,"race")
- if temp == "5":
- return subclassopcions(st, case, "5", case2)
- else:
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>"
- MAIN_HTML += "<font color=\"FF0000\">.::Chooce a Race::.</font><br><br1>"
- MAIN_HTML += "<button value=\"Human\" action=\"bypass -h Quest " +QUEST_INFO+ " subclass "+case+" 0 "+case2+"\" width=120 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- if temp != "2": MAIN_HTML += "<button value=\"Elf\" action=\"bypass -h Quest " +QUEST_INFO+ " subclass "+case+" 1 "+case2+"\" width=120 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- if temp != "1": MAIN_HTML += "<button value=\"Dark Elf\" action=\"bypass -h Quest " +QUEST_INFO+ " subclass "+case+" 2 "+case2+"\" width=120 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- MAIN_HTML += "<button value=\"Orc\" action=\"bypass -h Quest " +QUEST_INFO+ " subclass "+case+" 3 "+case2+"\" width=120 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- MAIN_HTML += "<button value=\"Dwarf\" action=\"bypass -h Quest " +QUEST_INFO+ " subclass "+case+" 4 "+case2+"\" width=120 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- MAIN_HTML += "<br><font color=\"303030\">"+getmaster()+"</font>"
- MAIN_HTML += "</center></body></html>"
- return MAIN_HTML
- def NobleMenu(st):
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>"
- MAIN_HTML += "<font color=\"FF0000\">.::Noblesse Manager::.</font><br><br>"
- MAIN_HTML += "<table border=\"0\" cellspacing=\"0\">"
- MAIN_HTML += "<tr><td valign=top><img src=icon.skill0325 width=32 height=32 align=left></td><td valign=top><img src=icon.skill0326 width=32 height=32 align=left></td>"
- MAIN_HTML += "<td valign=top><img src=icon.skill0327 width=32 height=32 align=left></td><td valign=top><img src=icon.skill1323 width=32 height=32 align=left></td>"
- MAIN_HTML += "<td valign=top><img src=icon.skill1324 width=32 height=32 align=left></td><td valign=top><img src=icon.skill1325 width=32 height=32 align=left></td>"
- MAIN_HTML += "<td valign=top><img src=icon.skill1326 width=32 height=32 align=left></td><td valign=top><img src=icon.skill1327 width=32 height=32 align=left></td></tr>"
- MAIN_HTML += "</table><br><br><br>"
- MAIN_HTML += "<font color=\"FFFFFF\">If you want to be Noblesse first you need<br1>reach level <font color=\"FFFF00\">"+str(NOBLE_Level)+"</font> and get <font color=\"FFFF00\">"+str(NOBLE_NumITEM)+" "+str(getitemname(st,NOBLE_ITEMID))+"</font>.</font><br><br1>"
- MAIN_HTML += "<button value=\"I'm ready, make me noblesse\" action=\"bypass -h Quest " +QUEST_INFO+ " getnoble 2 0 0\" width=200 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- MAIN_HTML += "<br><font color=\"303030\">"+getmaster()+"</font>"
- MAIN_HTML += "</center></body></html>"
- return MAIN_HTML
- def classmaster(st):
- classId = st.player.getClassId().getId()
- level = st.player.getLevel()
- jobLevel=st.getPlayer().getClassId().level()
- MAIN_HTML = "<html><title>Class Master</title><body><center>"
- if jobLevel ==2 and level > 75 or jobLevel ==1 and level > 39 or jobLevel ==0 and level > 19:
- MAIN_HTML += "<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>"
- MAIN_HTML += "<font color=\"FF0000\">Change Subclass:<br1>Which class do you wish to change?</font><br><br1>"
- conn=L2DatabaseFactory.getInstance().getConnection()
- act = conn.prepareStatement("SELECT * FROM class_list WHERE parent_id = \""+str(classId)+"\"")
- rs=act.executeQuery()
- while (rs.next()) :
- try :
- xid = rs.getString("id")
- xclassname= getnames(st,xid)
- MAIN_HTML += "<button value=\""+xclassname+"\" action=\"bypass -h Quest " +QUEST_INFO+ " changeclass "+xid+" 0 0 0\" width=150 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- except : MAIN_HTML += "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><font color=\"FF0000\">There is no class change available<br>for you anymore.</font><br>"
- try : conn.close()
- except : pass
- else:
- if jobLevel ==0 and level < 20: MAIN_HTML += "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><font color=\"FF0000\">Come back here when you reach level 20<br1>to change your class.</font><br>"
- elif jobLevel <=1 and level < 40: MAIN_HTML += "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><font color=\"FF0000\">Come back here when you reach level 40<br1>to change your class.</font><br>"
- elif jobLevel <=2 and level < 76: MAIN_HTML += "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><font color=\"FF0000\">Come back here when you reach level 76<br1>to change your class.</font><br>"
- else: MAIN_HTML += "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><font color=\"FF0000\">There is no class change available<br>for you anymore.</font><br>"
- MAIN_HTML += "</center></body></html>"
- return MAIN_HTML
- def getitemname(st,itemval):
- conn=L2DatabaseFactory.getInstance().getConnection()
- itemidList = conn.prepareStatement("SELECT * FROM etcitem WHERE item_id="+str(itemval))
- il=itemidList.executeQuery()
- val = "0"
- if il :
- il.next()
- try : val = il.getString("name")
- except : pass
- try : conn.close()
- except: pass
- return val
- def subclassopcions(st,cases,id,index) :
- if st.player.isCastingNow() or st.player.isAllSkillsDisabled():
- st.player.sendPacket(SystemMessage(SystemMessageId.SUBCLASS_NO_CHANGE_OR_CREATE_WHILE_SKILL_IN_USE))
- return
- if cases == "addsub":
- if st.player.getTotalSubClasses() >= Config.MAX_SUBCLASS :
- if TIME_OUT == True:
- if addTimeout(st,3,BlockTime,300) : pass
- st.player.sendMessage("You can now only change one of your current sub classes.")
- return
- else:
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += subclasslist(st,"acceptsub",id,"0")
- MAIN_HTML += "</center></body></html>"
- return MAIN_HTML
- if cases == "acceptsub":
- if not st.player.addSubClass(int(id),st.player.getTotalSubClasses() + 1):
- st.player.sendMessage("The sub class could not be added.")
- return
- st.player.setActiveClass(st.player.getTotalSubClasses())
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<br><br>Add Subclass:<br>The sub class of <font color=\"LEVEL\">"+getnames(st,id)+"</font><br> has been added.<br>"
- MAIN_HTML += "</center></body></html>"
- st.player.sendPacket(SystemMessage(SystemMessageId.CLASS_TRANSFER))
- return MAIN_HTML
- if cases == "acceptchangesub":
- if not st.player.setActiveClass(int(index)):
- if TIME_OUT == True:
- if addTimeout(st,3,BlockTime,300) : pass
- st.player.sendMessage("The sub class could not be changed.")
- return
- else:
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<br><br>Change Subclass:<br>Your active class is now a:<br><font color=\"LEVEL\">"+getnames(st,id)+"</font>"
- MAIN_HTML += "</center></body></html>"
- st.player.sendPacket(SystemMessage(SystemMessageId.ADD_NEW_SUBCLASS))
- if TIME_OUT == True:
- if addTimeout(st,3,BlockTime,300) : pass
- return MAIN_HTML
- if cases == "changesub":
- if st.player.getTotalSubClasses() > Config.MAX_SUBCLASS :
- st.player.sendMessage("You can now only delete one of your current sub classes.")
- if TIME_OUT == True:
- if addTimeout(st,3,BlockTime,300) : pass
- return
- else:
- i=0
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>"
- MAIN_HTML += "<font color=\"FF0000\">Change Subclass:<br1>Which sub class do you wish to change?</font><br><br1>"
- xcharid = st.getPlayer().getObjectId()
- conn=L2DatabaseFactory.getInstance().getConnection()
- sub = conn.prepareStatement("SELECT * FROM character_subclasses WHERE charId= \""+str(xcharid)+"\" ORDER BY class_index LIMIT "+str(Config.MAX_SUBCLASS)+"")
- ss=sub.executeQuery()
- if st.player.isSubClassActive():
- MAIN_HTML += "<font color=\"LEVEL\">Main-class</font>"
- MAIN_HTML += "<button value=\""+getnames(st,str(st.player.getBaseClass()))+"\" action=\"bypass -h Quest " +QUEST_INFO+ " subclass acceptchangesub "+str(st.player.getBaseClass())+",0\" width=150 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"><br>"
- while (ss.next()) :
- try:
- xsubclassid = ss.getString("class_id")
- xindex = ss.getString("class_index")
- xclassname= getnames(st,xsubclassid)
- i+=1
- if int(st.player.getClassId().getId()) != int(xsubclassid):
- MAIN_HTML += "<font color=\"LEVEL\">Sub-class "+str(i)+"</font>"
- MAIN_HTML += "<button value=\""+xclassname+"\" action=\"bypass -h Quest " +QUEST_INFO+ " subclass acceptchangesub "+xsubclassid+" "+xindex+"\" width=150 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- except :
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><font color=\"FF0000\">There are no sub classes available<br>to change at this time.</font><br>"
- if TIME_OUT == True:
- if addTimeout(st,3,BlockTime,300) : pass
- MAIN_HTML += "</center></body></html>"
- try : conn.close()
- except : pass
- return MAIN_HTML
- if cases == "deletesub":
- if st.player.getTotalSubClasses() > Config.MAX_SUBCLASS :
- if TIME_OUT == True:
- if addTimeout(st,3,BlockTime,300) : pass
- st.player.sendMessage("You can now only delete one of your current sub classes.")
- return
- else:
- i=0
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>"
- MAIN_HTML += "<font color=\"FF0000\">Which sub class do you wish to delete?</font><br><br1>"
- conn=L2DatabaseFactory.getInstance().getConnection()
- xcharid = st.getPlayer().getObjectId()
- sub = conn.prepareStatement("SELECT * FROM character_subclasses WHERE charId= \""+str(xcharid)+"\" ORDER BY class_index LIMIT "+str(Config.MAX_SUBCLASS)+"")
- ss=sub.executeQuery()
- while (ss.next()) :
- try:
- xsubclassid = ss.getString("class_id")
- xindex = ss.getString("class_index")
- xclassname= getnames(st,xsubclassid)
- xlevel = ss.getInt("level")
- i+=1
- MAIN_HTML += "<font color=\"LEVEL\">Sub-class "+str(i)+"</font>"
- MAIN_HTML += "<button value=\""+xclassname+"\" action=\"bypass -h Quest " +QUEST_INFO+ " getracemenu acceptnewsub "+xindex+" 0\" width=150 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- except : pass
- MAIN_HTML += "<br>If you change a sub class, you'll start at level 40<br1>after the 2nd class transfer."
- MAIN_HTML += "</center></body></html>"
- try : conn.close()
- except : pass
- if i !=0 :
- return MAIN_HTML
- else:
- if TIME_OUT == True:
- if addTimeout(st,3,BlockTime,300) : pass
- st.player.sendMessage("There are no sub classes available at this time.")
- if cases == "acceptnewsub":
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += subclasslist(st,"acceptdelsub",id,index)
- MAIN_HTML += "</center></body></html>"
- return MAIN_HTML
- if cases == "acceptdelsub":
- if st.player.modifySubClass(int(index), int(id)):
- st.player.stopAllEffects()
- st.player.setActiveClass(int(index))
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<br><br>Change Subclass:<br>Your sub class has been changed to<br1><font color=\"LEVEL\">"+getnames(st,id)+"</font>"
- MAIN_HTML += "</center></body></html>"
- st.player.sendPacket(SystemMessage(SystemMessageId.ADD_NEW_SUBCLASS))
- if TIME_OUT == True:
- if addTimeout(st,3,BlockTime,300) : pass
- return MAIN_HTML
- else:
- player.setActiveClass(0)
- if TIME_OUT == True:
- if addTimeout(st,3,BlockTime,300) : pass
- st.player.sendMessage("The sub class could not be added, you have been reverted to your base class.")
- return
- def subclasslist(st,cases,case2,index) :
- baseClassId = st.player.getBaseClass()
- charClassId = st.player.getClassId().getId()
- xcharid = st.getPlayer().getObjectId()
- if charClassId >= 88 and charClassId <= 118 or charClassId >= 131 and charClassId <= 134 or charClassId == 136:
- if st.player.getClassId().getParent() != None:
- charClassId = st.player.getClassId().getParent().ordinal()
- num=0
- temp="88"
- if case2 == "5": temp="131"
- avsubClass=[]
- yclassid="0"
- HTML = "<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>"
- if int(index) ==0: HTML += "<font color=\"FF0000\">Add Subclass:<br>Which sub class do you wish to add?</font><br><br1>"
- if int(index) > 0: HTML += "<font color=\"FF0000\">Please choose a new sub class to change to.</font><br1><font color=\"LEVEL\">Warning!</font> All classes and skills for this class<br1>will be removed."
- conn=L2DatabaseFactory.getInstance().getConnection()
- sub = conn.prepareStatement("SELECT * FROM character_subclasses WHERE charId= \""+str(xcharid)+"\"")
- ss=sub.executeQuery()
- while (ss.next()) :
- try :
- xsubclassid = ss.getInt("class_id")
- xlevel = ss.getInt("level")
- if xlevel <= 74 and int(index) ==0:
- num=1
- avsubClass += [str(xsubclassid)]
- except : pass
- if num == 0 or st.player.getLevel() >= 75:
- act = conn.prepareStatement("SELECT * FROM char_templates WHERE RaceId="+case2+" AND ClassId NOT IN (\"115\",\"118\",\"135\") AND ClassId >= \""+temp+"\" ORDER BY RaceId, STR DESC, ClassName")
- rs=act.executeQuery()
- while (rs.next()) :
- try:
- xclassid = rs.getString("ClassId")
- yclassid = getsecondclass(st,xclassid)
- xclassname= getnames(st,yclassid)
- if str(charClassId) != yclassid and xclassid not in avsubClass and yclassid not in avsubClass and baseClassId != int(xclassid) and baseClassId != int(yclassid):
- HTML += "<button value=\""+xclassname+"\" action=\"bypass -h Quest " +QUEST_INFO+ " subclass "+cases+" "+yclassid+" "+index+"\" width=150 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- except : pass
- try : conn.close()
- except : pass
- if yclassid == None or yclassid == "0":
- HTML = "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><font color=\"FF0000\">There are no sub classes available<br> at this time.</font><br>"
- st.player.sendMessage("There are no sub classes available at this time.")
- if num == 1 or st.player.getLevel() < 75:
- HTML = "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><font color=\"FF0000\">You may not add a new sub class before <br>you are level 75 on your previous class.</font><br>"
- return HTML
- def getsecondclass(st,const):
- con=L2DatabaseFactory.getInstance().getConnection()
- skillList = con.prepareStatement("SELECT * FROM class_list WHERE id = \""+const+"\"")
- sil=skillList.executeQuery()
- val = "0"
- if sil :
- sil.next()
- try : val = sil.getString("parent_id")
- except : pass
- try : con.close()
- except: pass
- return val
- def getnames(st,const):
- cn=L2DatabaseFactory.getInstance().getConnection()
- nameList = cn.prepareStatement("SELECT * FROM char_templates WHERE ClassId = \""+const+"\"")
- nl=nameList.executeQuery()
- val = "0"
- if nl :
- nl.next()
- try : val = nl.getString("ClassName")
- except : pass
- try : cn.close()
- except: pass
- return val
- def getVarcharacters(st,const):
- conn=L2DatabaseFactory.getInstance().getConnection()
- act = conn.prepareStatement("SELECT * FROM characters WHERE charId="+str(st.getPlayer().getObjectId()))
- rs=act.executeQuery()
- val = "0"
- if rs :
- rs.next()
- try : val = rs.getString(const)
- except : pass
- try : conn.close()
- except: pass
- return val
- def optionsymbol(st, cases,num):
- if cases == "draws":
- henna = HennaTreeTable.getInstance().getAvailableHenna(st.player.getClassId())
- hel = HennaEquipList(st.player, henna)
- st.player.sendPacket(hel)
- elif cases == "deletes":
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br><br>"
- MAIN_HTML += "<font color=\"FF0000\">.::Select symbol you would like to remove::.</font><br><br><br1>"
- hasHennas = False
- i=0
- if num != "0": st.player.removeHenna(int(num))
- while i <= 2 :
- i+=1
- henna = st.player.getHenna(i)
- if henna != None:
- hasHennas = True
- MAIN_HTML += "<button value=\""+henna.getName()+"\" action=\"bypass -h Quest " +QUEST_INFO+ " symbol deletes "+str(i)+" 0\" width=120 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"><br>"
- if hasHennas == False:
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><font color=\"FF0000\">You don't have any symbol to remove!</font><br>"
- MAIN_HTML += "</center></body></html>"
- return MAIN_HTML
- def noleader(st):
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><font color=\"FF0000\">You are not a Clan Leader.</font><br>"
- MAIN_HTML += "</center></body></html>"
- return MAIN_HTML
- def getmaster():
- xi="vice";xe="O";xf="n";xa="B";xb="y";xc=" ";xd="e";xk="ger";xh="Ser";xj="Mana";val=xh+xi+xc+xj+xk+xc+xa+xb+xc+xd+xe+xf
- return val
- def showText(type,text,buttonEnabled,buttonName,location) :
- MESSAGE = "<html><head><title>Services Manager</title></head><body><center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>"
- MESSAGE += "<font color=\"LEVEL\">"+type+"</font><br>"+text+"<br>"
- if buttonEnabled == "True" :
- MESSAGE += "<button value=\""+buttonName+"\" action=\"bypass -h Quest " + QUEST_INFO + " redirect "+location+" 0 0\" width=100 height=22 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
- MESSAGE += "<font color=\"303030\">"+getmaster()+"</font></center></body></html>"
- return MESSAGE
- def addTimeout(st,gaugeColor,amount,offset) :
- endtime = int(System.currentTimeMillis()/1000) + amount
- st.set("blockUntilTime",str(endtime))
- st.getPlayer().sendPacket(SetupGauge(gaugeColor, amount * 1000 + offset))
- return True
- def heal(st,case) :
- if case == "0":
- st.getPlayer().getStatus().setCurrentHp(st.getPlayer().getStat().getMaxHp())
- st.getPlayer().getStatus().setCurrentMp(st.getPlayer().getStat().getMaxMp())
- st.getPlayer().getStatus().setCurrentCp(st.getPlayer().getStat().getMaxCp())
- if case == "1" and st.player.getPet() != None :
- st.player.getPet().setCurrentHpMp(st.player.getPet().getMaxHp(), st.player.getPet().getMaxMp())
- try:
- st.player.getPet().setCurrentFed(st.player.getPet().getMaxFed())
- st.player.sendPacket(SetSummonRemainTime(st.player.getPet().getMaxFed(), st.player.getPet().getCurrentFed()))
- except:
- st.player.getPet().decTimeRemaining(st.player.getPet().getTimeRemaining() - st.player.getPet().getTotalLifeTime())
- st.player.sendPacket(SetSummonRemainTime(st.player.getPet().getTotalLifeTime(), st.player.getPet().getTotalLifeTime()))
- return True
- def ReloadConfig(st,npcid) :
- try:
- if QuestManager.getInstance().reload(QuestId): st.player.sendMessage("The script and settings have been reloaded successfully.")
- else: st.player.sendMessage("Script Reloaded Failed. you edited something wrong! :P, fix it and restart the server")
- except: st.player.sendMessage("Script Reloaded Failed. you edited something wrong! :P, fix it and restart the server")
- filename = "data/html/teleporter/AIONpc-Htmls/mainhtml-0.htm"
- html = NpcHtmlMessage(int(npcid))
- html.setFile(None,filename)
- html.replace("%objectId%", npcid)
- st.player.sendPacket(html)
- class Quest (JQuest) :
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
- def onAdvEvent (self,event,npc,player) :
- st = player.getQuestState(QUEST_INFO)
- if event[0] == "g" and event[4] == "t" and event[11] == "t":
- event = event.replace("]","")
- event = event.replace("["," ")
- varSplit = event.split(" ")
- try: noblesGK = int(varSplit[2])
- except : noblesGK = 0
- if noblesGK == 1 and st.player.isNoble() == 0 :
- return showText("Sorry","Only a <font color =\"LEVEL\">Noblesse</font> can be teleported to this place","False",0,0)
- if noblesGK > 1 and st.player.isGM() == 0 :
- return showText("Sorry","Only a <font color =\"LEVEL\">GM</font> can be teleported to this place","False",0,0)
- if st.player.isGM() == 1 :
- try:
- st.player.teleToLocation(int(varSplit[5]), int(varSplit[6]), int(varSplit[7]), True)
- st.player.sendMessage("You have been teleported to " + varSplit[5] +" "+varSplit[6]+ " "+varSplit[7])
- except : st.player.sendMessage("You should check the coordinates. Something is wrong!")
- else:
- newevent="confteleport["+varSplit[3]+"]["+varSplit[4]+"] "+varSplit[5]+" "+varSplit[6]+" "+varSplit[7]
- filename = "data/html/teleporter/AIONpc-Htmls/mainhtml-6.htm"
- html = NpcHtmlMessage(npc.getObjectId())
- html.setFile(None,filename)
- html.replace("%place%", varSplit[1].replace("-"," "))
- html.replace("%itemName%", str(getitemname(st,int(varSplit[3]))))
- html.replace("%reqitem%", varSplit[4])
- html.replace("%event%", newevent)
- html.replace("%objectId%", str(npc.getObjectId()))
- st.player.sendPacket(html)
- return
- event = event.replace(","," ")
- eventSplit = event.split(" ")
- event = eventSplit[0]
- eventParam1 = eventSplit[1]
- eventParam2 = eventSplit[2]
- eventParam3 = eventSplit[3]
- if event == "reloadscript": return ReloadConfig(st,eventParam1)
- if event == "sellmenu":
- st.player.setTarget(npc)
- st.player.sendPacket(SellList(player))
- st.player.sendPacket(ActionFailed.STATIC_PACKET)
- return
- if event[0] == "c" and event[1] == "o" and event[4] == "t" and event[5] == "e":
- event = event.replace("]","")
- event = event.replace("["," ")
- GKSplit = event.split(" ")
- try: TELEPORT_ITEM_ID = int(GKSplit[1]); TELEPORT_PRICE = int(GKSplit[2])
- except : TELEPORT_ITEM_ID = 57; TELEPORT_PRICE = 15000
- if SiegeManager.getInstance().getSiege(int(eventParam1), int(eventParam2), int(eventParam3)) != None:
- st.player.sendPacket(SystemMessage(SystemMessageId.NO_PORT_THAT_IS_IN_SIGE))
- return
- elif TownManager.townHasCastleInSiege(int(eventParam1), int(eventParam2)):
- st.player.sendPacket(SystemMessage(SystemMessageId.NO_PORT_THAT_IS_IN_SIGE))
- return
- elif not Config.ALT_GAME_KARMA_PLAYER_CAN_USE_GK and st.player.getKarma() > 0:
- st.player.sendMessage("Go away, you're not welcome here.")
- return
- elif st.player.isAlikeDead():
- return
- if FREE_TELEPORT == False :
- if st.getQuestItemsCount(TELEPORT_ITEM_ID) < TELEPORT_PRICE :
- return showText("Sorry","You don't have enough Items:<br>You need: <font color =\"LEVEL\">"+str(TELEPORT_PRICE)+" "+str(getitemname(st,TELEPORT_ITEM_ID))+"!","False",0,0)
- else :
- st.takeItems(TELEPORT_ITEM_ID,TELEPORT_PRICE)
- st.player.teleToLocation(int(eventParam1), int(eventParam2), int(eventParam3), True)
- st.player.sendMessage("You have been teleported to " + eventParam1 +" "+eventParam2+ " "+eventParam3)
- else:
- st.player.teleToLocation(int(eventParam1), int(eventParam2), int(eventParam3), True)
- st.player.sendMessage("You have been teleported to " + eventParam1 +" "+eventParam2+ " "+eventParam3)
- if event == "heal" :
- if int(System.currentTimeMillis()/1000) > st.getInt("blockUntilTime"):
- if st.getQuestItemsCount(CONSUMABLE_ID) < HEAL_PRICE :
- return showText("Sorry","You don't have enough adena!","False",0,0)
- else :
- if heal(st,eventParam2) :pass
- st.takeItems(CONSUMABLE_ID,HEAL_PRICE)
- if TIME_OUT == True:
- if addTimeout(st,1,TIME_OUT_TIME + 9,100): pass
- filename = "data/html/teleporter/AIONpc-Buffer/NpcBuffer-"+eventParam1+".htm"
- html = NpcHtmlMessage(npc.getObjectId())
- html.setFile(None,filename)
- html.replace("%objectId%", str(npc.getObjectId()))
- st.player.sendPacket(html)
- if event == "removeBuffs" :
- if int(System.currentTimeMillis()/1000) > st.getInt("blockUntilTime"):
- if st.getQuestItemsCount(CONSUMABLE_ID) < BUFF_REMOVE_PRICE :
- return showText("Sorry","You don't have enough adena!","False",0,0)
- else :
- if eventParam2 == "Remove_Pet" :
- if st.player.getPet() != None :
- st.player.getPet().stopAllEffects()
- else :
- st.getPlayer().stopAllEffects()
- if st.player.getCubics() != None:
- for cubic in st.player.getCubics().values():
- cubic.stopAction()
- st.player.delCubic(cubic.getId())
- st.takeItems(CONSUMABLE_ID,BUFF_REMOVE_PRICE)
- if TIME_OUT == True:
- if addTimeout(st,2,TIME_OUT_TIME + 3,100): pass
- filename = "data/html/teleporter/AIONpc-Buffer/NpcBuffer-"+eventParam1+".htm"
- html = NpcHtmlMessage(npc.getObjectId())
- html.setFile(None,filename)
- html.replace("%objectId%", str(npc.getObjectId()))
- st.player.sendPacket(html)
- if event == "giveBuffs" :
- eventParam3 = eventParam3.replace("_"," ")
- listSplit = eventParam3.split(" ")
- j=0;k=0
- while j == 0 :
- try: buff = listSplit[int(k)];k+=1
- except: temp = int(k);j=1
- if int(System.currentTimeMillis()/1000) > st.getInt("blockUntilTime"):
- if FREE_BUFFS == False :
- if st.getQuestItemsCount(CONSUMABLE_ID) < BUFFS_PRICE * int(temp) : return showText("Sorry","You don't have enough adena!","False",0,0)
- else : st.takeItems(CONSUMABLE_ID,BUFFS_PRICE * int(temp))
- if eventParam2 == "Buff_Pet" :
- if st.player.getPet() != None :
- for i in range (temp) :
- buff = listSplit[int(i)]
- buff = buff.replace("-"," ")
- buffSplit = buff.split(" ")
- Buff_lvl = buffSplit[0]
- Buff_Id = buffSplit[1]
- try : SkillTable.getInstance().getInfo(int(Buff_Id),int(Buff_lvl)).getEffects(st.getPlayer().getPet(),st.getPlayer().getPet())
- except : st.player.sendMessage("This skill has an error check the html")
- else: return showText("Info","You can't buff your pet!<br>Summon it and try again!","False","Return","main")
- else:
- if eventParam2 == "Buff_Cubic" :
- if st.player.getCubics() != None:
- for cubic in st.player.getCubics().values():
- cubic.stopAction()
- st.player.delCubic(cubic.getId())
- for i in range (temp) :
- buff = listSplit[int(i)]
- buff = buff.replace("-"," ")
- buffSplit = buff.split(" ")
- Buff_lvl = buffSplit[0]
- Buff_Id = buffSplit[1]
- try : st.getPlayer().useMagic(SkillTable.getInstance().getInfo(int(Buff_Id),int(Buff_lvl)),False,False)
- except : st.player.sendMessage("This skill has an error check the html")
- else:
- for i in range (temp) :
- buff = listSplit[int(i)]
- buff = buff.replace("-"," ")
- buffSplit = buff.split(" ")
- Buff_lvl = buffSplit[0]
- Buff_Id = buffSplit[1]
- try : SkillTable.getInstance().getInfo(int(Buff_Id),int(Buff_lvl)).getEffects(st.getPlayer(),st.getPlayer())
- except : st.player.sendMessage("This skill has an error check the html")
- if TIME_OUT == True:
- if int(temp) > 1:
- if eventParam2 == "Buff_Pet" :
- if heal(st,"1") :pass
- else:
- if heal(st,"0") :pass
- if addTimeout(st,3,TIME_OUT_TIME + 9,0): pass
- else:
- if addTimeout(st,3,TIME_OUT_TIME,100): pass
- filename = "data/html/teleporter/AIONpc-Buffer/NpcBuffer-"+eventParam1+".htm"
- html = NpcHtmlMessage(npc.getObjectId())
- html.setFile(None,filename)
- html.replace("%objectId%", str(npc.getObjectId()))
- st.player.sendPacket(html)
- if event == "chat3" : return MainHtml3(st)
- if event == "chat4" : return MainHtml4(st)
- if event == "class_master": return classmaster(st)
- if event == "getracemenu": return RaceMenu(st,eventParam1,eventParam2)
- if event == "NoblesseMenu":
- return NobleMenu(st)
- if event == "subclass" :
- if int(System.currentTimeMillis()/1000) > st.getInt("blockUntilTime"):
- return subclassopcions(st, eventParam1, eventParam2, eventParam3)
- return MainHtml3(st)
- if event == "symbol" : return optionsymbol(st, eventParam1,eventParam2)
- if event == "PKlistoption":
- temp = "pvpkills"; temp1 = "pkkills"; temp2= "FF0000"; temp3= "FFFFFF"
- if eventParam1 == "2": temp = "pkkills"; temp1 = "pvpkills"; temp2= "FFFFFF"; temp3= "FF0000"
- total_pkpvpkills = 0
- htmltext = "<html><head><title>Top PVP/PK Players</title></head><body><table width=280><tr><td width=40 align=\"center\"><font color =\"FFFFFF\">Pos.</td><td width=100 align=\"left\"><font color =\"FFFFFF\">Player Name</color></td><td width=30 align=\"left\"><a action=\"bypass -h Quest " +QUEST_INFO+ " PKlistoption 1 0 0\"><font color=\""+temp2+"\">PVPs</font></a></td><td width=30 align=\"left\"><a action=\"bypass -h Quest " +QUEST_INFO+ " PKlistoption 2 0 0\"><font color=\""+temp3+"\">PKs</font></a></td></tr>"
- htmltext +="<tr><td><br></td></tr>"
- pos = 0
- A=20; i=0; j=0
- if eventParam2 == "adelante":
- j = int(eventParam3)
- j=j+A
- if eventParam2 == "atras":
- j = int(eventParam3)
- j=j-A
- con = L2DatabaseFactory.getInstance().getConnection()
- pks = con.prepareStatement("SELECT char_name,pvpkills,pkkills FROM characters WHERE "+temp+">0 and accesslevel=0 ORDER BY "+temp+" DESC,"+temp1+" DESC,char_name LIMIT "+str(j)+","+str(j+A+1))
- rs = pks.executeQuery()
- while (rs.next()) :
- char_name = rs.getString("char_name")
- char_pvpkills = rs.getString("pvpkills")
- char_pkkills = rs.getString("pkkills")
- i+=1
- if eventParam1 == "1":
- if i <= A: htmltext +="<tr><td width=40 align=\"center\"><font color =\"FFFFFF\">" + str(i+j) + "</td><td width=100 align=\"left\"><font color =\"FFFFFF\">" + char_name +"</td><td width=30 align=\"left\"><font color =\"FF0000\">" + char_pvpkills + "</td><td width=30 align=\"left\"><font color =\"FFFFFF\">" + char_pkkills + "</td></tr>"
- elif eventParam1 == "2":
- if i <= A: htmltext += "<tr><td width=40 align=\"center\"><font color =\"FFFFFF\">" + str(i+j) + "</td><td width=100 align=\"left\"><font color =\"FFFFFF\">" + char_name +"</td><td width=30 align=\"left\"><font color =\"FFFFFF\">" + char_pvpkills + "</td><td width=30 align=\"left\"><font color =\"FF0000\">" + char_pkkills + "</td></tr>"
- try: con.close()
- except : pass
- i+=j
- if i > A and j < A:
- htmltext += "</table><center><tr><td><table width=120 border=0>"
- htmltext += "<tr><td align=\"center\"><button value=\"Next\" action=\"bypass -h Quest " +QUEST_INFO+ " PKlistoption "+eventParam1+" adelante "+str(j)+"\" width=40 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>"
- htmltext += "</table></td></tr></center>"
- elif i > A and j >= A and j < i-A:
- htmltext += "</table><center><tr><td><table width=160 border=0>"
- htmltext += "<tr><td align=\"center\"><button value=\"Back\" action=\"bypass -h Quest " +QUEST_INFO+ " PKlistoption "+eventParam1+" atras "+str(j)+"\" width=40 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>"
- htmltext += "<td align=\"center\"><button value=\"Next\" action=\"bypass -h Quest " +QUEST_INFO+ " PKlistoption "+eventParam1+" adelante "+str(j)+"\" width=40 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>"
- htmltext += "</table></td></tr></center>"
- elif i > A and j >= i-A:
- htmltext += "</table><center><tr><td><table width=120 border=0>"
- htmltext += "<tr><td align=\"center\"><button value=\"Back\" action=\"bypass -h Quest " +QUEST_INFO+ " PKlistoption "+eventParam1+" atras "+str(j)+"\" width=40 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>"
- htmltext += "</table></td></tr></center>"
- htmltext += "</body></html>"
- return htmltext
- if event == "getnoble":
- count=st.getQuestItemsCount(NOBLE_ITEMID)
- htmltext = "<html><title>Services Manager</title><body><center>"
- if st.getPlayer().isNoble() == 1 :
- htmltext += "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><font color=\"FF0000\">You already are Noblesse.</font><br>"
- elif st.getPlayer().getLevel() < NOBLE_Level :
- htmltext += "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><font color=\"FF0000\">Come back here when you reach <font color=\"FFFF00\">level "+str(NOBLE_Level)+".</font></font><br>"
- elif count < NOBLE_NumITEM :
- htmltext += "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><font color=\"FF0000\">You don't have the required Item.<br1>You need <font color=\"FFFF00\">"+str(NOBLE_NumITEM)+" "+str(getitemname(st,NOBLE_ITEMID))+"</font></font><br>"
- else:
- st.getPlayer().setTarget(st.getPlayer())
- if eventParam1 == "2":
- st.takeItems(NOBLE_ITEMID,NOBLE_NumITEM)
- st.getPlayer().setNoble(True)
- st.giveItems(NOBLESS_TIARA,1)
- st.playSound("ItemSound.quest_finish")
- st.setState(State.COMPLETED)
- htmltext += "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><font color=\"00FF00\">Congratulations! You are Noblesse.</font><br>"
- st.exitQuest(1)
- else: return
- htmltext += "</center></body></html>"
- return htmltext
- if event == "changeclass":
- st.player.setClassId(int(eventParam1))
- if st.player.isSubClassActive():
- st.player.getSubClasses().get(st.player.getClassIndex()).setClassId(st.player.getActiveClass())
- else: st.player.setBaseClass(st.player.getActiveClass())
- if st.getPlayer().getClassId().level() == 3:
- st.giveItems(CLASSMASTER_GIFT,CLASSMASTER_ITEM_NUM)
- st.player.broadcastUserInfo()
- if event == "increaseclan" :
- if st.player.getClan() == None or not st.player.isClanLeader() :
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><font color=\"FF0000\">You are not the leader of this clan.<br1>You may not raise the level of it.</font><br>"
- MAIN_HTML += "</center></body></html>"
- return MAIN_HTML
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br><br>"
- MAIN_HTML += "<font color=\"FF0000\">Clan level can be raised.<br1>To do so requires the following:</font><br><br>"
- MAIN_HTML += "<button value=\"Level Up\" action=\"bypass -h Quest " +QUEST_INFO+ " increase_clan 0 0 0\" width=80 height=20 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><br1>"
- MAIN_HTML += "<button value=\"Back\" action=\"bypass -h Quest " +QUEST_INFO+ " chat4 0 0 0\" width=80 height=20 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><br>"
- MAIN_HTML += "<font color=\"LEVEL\">Level 1:</font> 20,000 SP, 650,000 Adena<br1>"
- MAIN_HTML += "<font color=\"LEVEL\">Level 2:</font> 100,000 SP, 2,500,000 Adena<br1>"
- MAIN_HTML += "<font color=\"LEVEL\">Level 3:</font> 350,000 SP, Evidence of Blood<br1>"
- MAIN_HTML += "<font color=\"LEVEL\">Level 4:</font> 1,000,000 SP, Evidence of Determination<br1>"
- MAIN_HTML += "<font color=\"LEVEL\">Level 5:</font> 2,500,000 SP, Evidence of Aspiration<br1>"
- MAIN_HTML += "<font color=\"LEVEL\">Level 6:</font> 10,000 Clan Fame points,<br1>more than 30 clan members<br1>"
- MAIN_HTML += "<font color=\"LEVEL\">Level 7:</font> 20,000 Clan Fame points,<br1>more than 80 clan members<br1>"
- MAIN_HTML += "<font color=\"LEVEL\">Level 8:</font> 40,000 Clan Fame points,<br1>more than 120 clan members<br1>"
- MAIN_HTML += "<font color=\"LEVEL\">Level 9:</font> 40,000 Clan Fame points,<br1>more than 120 clan members, 150 Blood Oaths<br1>"
- MAIN_HTML += "<font color=\"LEVEL\">Level 10:</font> 40,000 Clan Fame points,<br1>more than 140 clan members, 5 Blood Alliances<br1>"
- MAIN_HTML += "<font color=\"LEVEL\">Level 11:</font> 75,000 Clan Fame points,<br1>more than 170 clan members, Territory Owner<br1>"
- MAIN_HTML += "</center></body></html>"
- return MAIN_HTML
- if event == "increase_clan" :
- if not st.player.isClanLeader():
- st.player.sendPacket(SystemMessage(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT))
- return
- if st.player.getClan().levelUpClan(st.player):
- st.player.broadcastPacket(MagicSkillUse(st.player, 5103, 1, 0, 0))
- st.player.broadcastPacket(MagicSkillLaunched(st.player, 5103, 1))
- return
- return
- elif event == "DisbandClan" :
- if st.player.getClan() == None or not st.player.isClanLeader() :
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><font color=\"FF0000\">You are not the leader of this clan.<br1>You may not dissolve it.</font><br>"
- MAIN_HTML += "</center></body></html>"
- return MAIN_HTML
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br><br>"
- MAIN_HTML += "<font color=\"FF0000\">If you apply for dissolution,<br1>the clan will be dissolved.</font><br><br>"
- MAIN_HTML += "<button value=\"Dissolution\" action=\"bypass -h Quest " +QUEST_INFO+ " dissolve_clan 0 0 0\" width=80 height=20 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><br1>"
- MAIN_HTML += "<button value=\"Back\" action=\"bypass -h Quest " +QUEST_INFO+ " chat4 0 0 0\" width=80 height=20 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\">"
- MAIN_HTML += "</center></body></html>"
- return MAIN_HTML
- elif event == "dissolve_clan" :
- if not st.player.isClanLeader():
- st.player.sendPacket(SystemMessage(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT))
- return
- clan = st.player.getClan()
- if clan.getAllyId() != 0:
- st.player.sendPacket(SystemMessage(SystemMessageId.CANNOT_DISPERSE_THE_CLANS_IN_ALLY))
- return
- if clan.isAtWar():
- st.player.sendPacket(SystemMessage(SystemMessageId.CANNOT_DISSOLVE_WHILE_IN_WAR))
- return
- if clan.getHasCastle() !=0 or clan.getHasHideout() != 0 or clan.getHasFort() != 0:
- st.player.sendPacket(SystemMessage(SystemMessageId.CANNOT_DISSOLVE_WHILE_OWNING_CLAN_HALL_OR_CASTLE))
- return
- for castle in CastleManager.getInstance().getCastles():
- if SiegeManager.getInstance().checkIsRegistered(clan, castle.getCastleId()):
- st.player.sendPacket(SystemMessage(SystemMessageId.CANNOT_DISSOLVE_WHILE_IN_SIEGE))
- return
- for fort in FortManager.getInstance().getForts():
- if FortSiegeManager.getInstance().checkIsRegistered(clan, fort.getFortId()):
- st.player.sendPacket(SystemMessage(SystemMessageId.CANNOT_DISSOLVE_WHILE_IN_SIEGE))
- return
- if st.player.isInsideZone(L2PcInstance.ZONE_SIEGE) :
- st.player.sendPacket(SystemMessage(SystemMessageId.CANNOT_DISSOLVE_WHILE_IN_SIEGE))
- return
- if clan.getDissolvingExpiryTime() > System.currentTimeMillis() :
- st.player.sendPacket(SystemMessage(SystemMessageId.DISSOLUTION_IN_PROGRESS))
- return
- clan.setDissolvingExpiryTime(System.currentTimeMillis() + Config.ALT_CLAN_DISSOLVE_DAYS * 86400000L)
- st.player.sendMessage("Dissolution in progress. Please Wait "+str(Config.ALT_CLAN_DISSOLVE_DAYS * 24L)+" hours to be completed")
- clan.updateClanInDB()
- ClanTable.getInstance().scheduleRemoveClan(clan.getClanId())
- st.player.deathPenalty(False, False, False)
- elif event == "RestoreClan" :
- if st.player.getClan() == None or not st.player.isClanLeader() :
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><font color=\"FF0000\">You are not the leader of this clan.<br1>You may not recover it.</font><br>"
- MAIN_HTML += "</center></body></html>"
- return MAIN_HTML
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br><br>"
- MAIN_HTML += "<font color=\"FF0000\">If you request a restoration<br1>your clan dissolution request will be canceled</font><br><br>"
- MAIN_HTML += "<button value=\"Restoration\" action=\"bypass -h Quest " +QUEST_INFO+ " recover_clan 0 0 0\" width=80 height=20 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><br1>"
- MAIN_HTML += "<button value=\"Back\" action=\"bypass -h Quest " +QUEST_INFO+ " chat4 0 0 0\" width=80 height=20 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\">"
- MAIN_HTML += "</center></body></html>"
- return MAIN_HTML
- elif event == "recover_clan" :
- if not st.player.isClanLeader():
- st.player.sendPacket(SystemMessage(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT))
- return
- clan = st.player.getClan()
- clan.setDissolvingExpiryTime(0)
- clan.updateClanInDB()
- st.player.sendMessage("Dissolution progress canceled")
- elif event == "giveclanl" :
- if st.player.getClan() == None or not st.player.isClanLeader() :
- return noleader(st)
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br><br>"
- MAIN_HTML += "<font color=\"FF0000\">Insert the name of the Clan member<br1>to commit</font><br><br>"
- MAIN_HTML += "<edit var=\"name\" width=110><br><br>"
- MAIN_HTML += "<button value=\"Enter\" action=\"bypass -h Quest " +QUEST_INFO+ " change_clan_leader $name no_data 0 0\" width=80 height=20 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><br1>"
- MAIN_HTML += "<button value=\"Back\" action=\"bypass -h Quest " +QUEST_INFO+ " chat4 0 0 0\" width=80 height=20 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\">"
- MAIN_HTML += "</center></body></html>"
- return MAIN_HTML
- elif event == "change_clan_leader" :
- if eventParam1 == "no_data": return
- if not st.player.isClanLeader():
- st.player.sendPacket(SystemMessage(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT))
- return
- if st.player.isFlying():
- st.player.sendMessage("Please, stop flying")
- return
- clan = st.player.getClan()
- member = clan.getClanMember(eventParam1)
- if member == None:
- sm = SystemMessage(SystemMessageId.S1_DOES_NOT_EXIST)
- sm.addString(eventParam1)
- st.player.sendPacket(sm)
- sm = None
- return
- if not member.isOnline():
- st.player.sendPacket(SystemMessage(SystemMessageId.INVITED_USER_NOT_ONLINE))
- return
- if st.player.getName() != member.getName(): return
- clan.setNewLeader(member)
- elif event == "learn_clan_skills":
- if st.player.getClan() == None or not st.player.isClanLeader():
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><font color=\"FF0000\">You're not qualified to learn Clan skills.</font><br>"
- MAIN_HTML += "</center></body></html>"
- return MAIN_HTML
- skills = SkillTreeTable.getInstance().getAvailablePledgeSkills(st.player)
- asl = AcquireSkillList(AcquireSkillList.SkillType.Clan)
- counts = 0
- for s in skills:
- cost = s.getRepCost()
- itemCount = s.getItemCount()
- counts+=1
- asl.addSkill(s.getId(), s.getLevel(), s.getLevel(), cost, itemCount)
- if counts == 0:
- if st.player.getClan().getLevel() < 8:
- sm = SystemMessage(SystemMessageId.DO_NOT_HAVE_FURTHER_SKILLS_TO_LEARN)
- if st.player.getClan().getLevel() < 5:
- sm.addNumber(5)
- else:
- sm.addNumber(st.player.getClan().getLevel()+1)
- st.player.sendPacket(sm)
- st.player.sendPacket(AcquireSkillDone())
- else:
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><font color=\"FF0000\">You've learned all skills available for your Clan.</font><br>"
- MAIN_HTML += "</center></body></html>"
- return MAIN_HTML
- else:
- st.player.sendPacket(asl)
- elif event == "createclan" :
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br><br>"
- MAIN_HTML += "<font color=\"FF0000\">.::Enter clan name::.</font><br><br>"
- MAIN_HTML += "<edit var=\"name\" width=110><br><br>"
- MAIN_HTML += "<button value=\"Enter\" action=\"bypass -h Quest " +QUEST_INFO+ " create_clan $name no_data 0 0 \" width=80 height=20 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><br1>"
- MAIN_HTML += "<button value=\"Back\" action=\"bypass -h Quest " +QUEST_INFO+ " chat4 0 0 0\" width=80 height=20 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\">"
- MAIN_HTML += "</center></body></html>"
- return MAIN_HTML
- elif event == "create_clan" :
- if eventParam1 == "no_data": return
- ClanTable.getInstance().createClan(st.player, eventParam1)
- return
- elif event == "createally":
- MAIN_HTML = "<html><title>Services Manager</title><body><center>"
- MAIN_HTML += "<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br><br>"
- MAIN_HTML += "<font color=\"FF0000\">.::Enter Alliance name::.</font><br><br>"
- MAIN_HTML += "<edit var=\"name\" width=110><br><br>"
- MAIN_HTML += "<button value=\"Enter\" action=\"bypass -h Quest " +QUEST_INFO+ " create_ally $name no_data 0 0 \" width=80 height=20 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><br1>"
- MAIN_HTML += "<button value=\"Back\" action=\"bypass -h Quest " +QUEST_INFO+ " chat4 0 0 0\" width=80 height=20 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\">"
- MAIN_HTML += "</center></body></html>"
- return MAIN_HTML
- elif event == "create_ally":
- if eventParam1 == "no_data": return
- if not st.player.isClanLeader():
- st.player.sendPacket(SystemMessage(SystemMessageId.ONLY_CLAN_LEADER_CREATE_ALLIANCE))
- return
- st.player.getClan().createAlly(st.player, eventParam1)
- return
- elif event == "dissolve_ally":
- if not st.player.isClanLeader():
- st.player.sendPacket(SystemMessage(SystemMessageId.FEATURE_ONLY_FOR_ALLIANCE_LEADER))
- return
- st.player.getClan().dissolveAlly(st.player)
- return
- else: return
- def onFirstTalk (self,npc,player):
- st = player.getQuestState(QUEST_INFO)
- if not st : st = self.newQuestState(player)
- st.setState(State.STARTED)
- if player.isGM():
- if ShowReloadScriptPanel == True: filename = "data/html/teleporter/AIONpc-Htmls/mainhtml-5.htm"
- else: filename = "data/html/teleporter/AIONpc-Htmls/mainhtml-0.htm"
- html = NpcHtmlMessage(npc.getObjectId())
- html.setFile(None,filename)
- html.replace("%objectId%", str(npc.getObjectId()))
- st.player.sendPacket(html)
- elif int(System.currentTimeMillis()/1000) > st.getInt("blockUntilTime"):
- if AllowVIP == False or player.getAccessLevel().getLevel() == VIPaccesLevel and AllowVIP == True:
- if ALLOW_KARMA_PLAYER == False and player.getKarma() > 0 :
- return showText("Info","You have too much karma!<br>Come back,<br>when you don't have any karma!","False","Return","main")
- elif st.player.getPvpFlag() > 0 :
- return showText("Info","You can't use my services while you are flagged!<br>Wait some time and try again!","False","Return","main")
- elif st.player.isInCombat() :
- return showText("Info","You can't use my services while you are attacking!<br>Stop your fight and try again!","False","Return","main")
- else:
- filename = "data/html/teleporter/AIONpc-Htmls/mainhtml-0.htm"
- html = NpcHtmlMessage(npc.getObjectId())
- html.setFile(None,filename)
- html.replace("%objectId%", str(npc.getObjectId()))
- st.player.sendPacket(html)
- else:
- return showText("Sorry","This NPC is only for VIP's!<br>Contact the administrator for more info!","False","Return","main")
- else: return
- QUEST = Quest(QuestId,QUEST_INFO,QuestDesc)
- QUEST.addStartNpc(npcId)
- QUEST.addFirstTalkId(npcId)
- QUEST.addTalkId(npcId)
Advertisement
Add Comment
Please, Sign In to add comment