Beispiel #1
0
	def __init__(self, id = qID, name = qn, descr = qDesc):
		JQuest.__init__(self, id, name, descr)
		for id in self.NPCID:
			self.addStartNpc(id)
			self.addFirstTalkId(id)
			self.addTalkId(id)
		self.npcNameTable = NpcNameTable()
		#init pages
		rb_id = {}
		bosses = NpcTable.getInstance().getAllNpcOfClassType(["L2RaidBoss"])
		for boss in bosses:
			lv = boss.getLevel()
			if lv not in rb_id:
				rb_id[lv] = []
			rb_id[lv] += [boss.getNpcId()]
		rb_id = rb_id.items()
		rb_id.sort()
		for lv,id_list in rb_id:
			if lv in xrange(20,30):
				self.pages["2x"] += [[lv, id_list]]
			elif lv in xrange(30,40):
				self.pages["3x"] += [[lv, id_list]]
			elif lv in xrange(40,50):
				self.pages["4x"] += [[lv, id_list]]
			elif lv in xrange(50,60):
				self.pages["5x"] += [[lv, id_list]]
			elif lv in xrange(60,70):
				self.pages["6x"] += [[lv, id_list]]
			elif lv in xrange(70,80):
				self.pages["7x"] += [[lv, id_list]]
			elif lv in xrange(80,90):
				self.pages["8x"] += [[lv, id_list]]
		for name in self.backlistByName:
			self.backlist += self.getNpcIDsByName(name)
		print "Init:" + self.qn + " loaded", "rb:", len(bosses), "backlist:", len(self.backlist)
Beispiel #2
0
	def addDrop(self, id, droplist):
		t = NpcTable.getInstance().getTemplate(id)
		for itemID, category, minD, maxD, chance in droplist:
			d = L2DropData()
			d.setItemId(itemID)
			d.setMinDrop(minD)
			d.setMaxDrop(maxD)
			d.setChance(chance) #100 * 10000 = 100%
			t.addDropData(d, category)
Beispiel #3
0
 def addDrop(self, id, droplist):
     t = NpcTable.getInstance().getTemplate(id)
     for itemID, category, minD, maxD, chance in droplist:
         d = L2DropData()
         d.setItemId(itemID)
         d.setMinDrop(minD)
         d.setMaxDrop(maxD)
         d.setChance(chance)  #100 * 10000 = 100%
         t.addDropData(d, category)
Beispiel #4
0
 def spawnNpc(self, npcId, x, y, z, heading, instid):
     from com.l2jserver.gameserver.datatables import NpcTable
     from com.l2jserver.gameserver.model import L2Spawn
     from com.l2jserver.gameserver.datatables import SpawnTable
     npcTemplate = NpcTable.getInstance().getTemplate(npcId)
     npcSpawn = L2Spawn(npcTemplate)
     npcSpawn.setLocx(x)
     npcSpawn.setLocy(y)
     npcSpawn.setLocz(z)
     npcSpawn.setHeading(heading)
     npcSpawn.setAmount(1)
     npcSpawn.setInstanceId(instid)
     SpawnTable.getInstance().addNewSpawn(npcSpawn, False)
     npc = npcSpawn.doSpawn()
     #npc.setOnKillDelay(0)
     return npc
Beispiel #5
0
	def spawnNpc(self, npcId, x, y, z, heading, instid):
		from com.l2jserver.gameserver.datatables import NpcTable
		from com.l2jserver.gameserver.model import L2Spawn
		from com.l2jserver.gameserver.datatables import SpawnTable
		npcTemplate = NpcTable.getInstance().getTemplate(npcId)
		npcSpawn = L2Spawn(npcTemplate)
		npcSpawn.setLocx(x)
		npcSpawn.setLocy(y)
		npcSpawn.setLocz(z)
		npcSpawn.setHeading(heading)
		npcSpawn.setAmount(1)
		npcSpawn.setInstanceId(instid)
		SpawnTable.getInstance().addNewSpawn(npcSpawn, False)
		npc = npcSpawn.doSpawn()
		#npc.setOnKillDelay(0)
		return npc
Beispiel #6
0
 def spawnNpc(self, npcId, x, y, z, heading, instId):
     npcTemplate = NpcTable.getInstance().getTemplate(npcId)
     inst = InstanceManager.getInstance().getInstance(instId)
     try:
         npcSpawn = L2Spawn(npcTemplate)
         npcSpawn.setLocx(x)
         npcSpawn.setLocy(y)
         npcSpawn.setLocz(z)
         # npcSpawn.setHeading(heading)
         npcSpawn.setAmount(1)
         npcSpawn.setInstanceId(instId)
         SpawnTable.getInstance().addNewSpawn(npcSpawn, False)
         npc = npcSpawn.doSpawn()
         # npc.setOnKillDelay(0)
         # npc.setRunning()
         return npc
     except:
         print "spawnNPC error"
Beispiel #7
0
 def spawnNpc(self, npcId, x, y, z, heading, instId):
     npcTemplate = NpcTable.getInstance().getTemplate(npcId)
     inst = InstanceManager.getInstance().getInstance(instId)
     try:
         npcSpawn = L2Spawn(npcTemplate)
         npcSpawn.setLocx(x)
         npcSpawn.setLocy(y)
         npcSpawn.setLocz(z)
         #npcSpawn.setHeading(heading)
         npcSpawn.setAmount(1)
         npcSpawn.setInstanceId(instId)
         SpawnTable.getInstance().addNewSpawn(npcSpawn, False)
         npc = npcSpawn.doSpawn()
         #npc.setOnKillDelay(0)
         #npc.setRunning()
         return npc
     except:
         print "spawnNPC error"
Beispiel #8
0
		def my_spawn(player, mobid, dist, perm):
			mobt = NpcTable.getInstance().getTemplate(mobid)
			if not mobt: return
			spawn = L2Spawn(mobt)
			spawn.setInstanceId(0)
			if Config.SAVE_GMSPAWN_ON_CUSTOM:
				spawn.setCustom(True)
			spawn.setLocx(player.getX()-dist+Random().nextInt(dist*2))
			spawn.setLocy(player.getY()-dist+Random().nextInt(dist*2))
			spawn.setLocz(player.getZ())
			spawn.setHeading(player.getHeading())
			spawn.setAmount(1);
			spawn.setRespawnDelay(0)
			if perm:
				SpawnTable.getInstance().addNewSpawn(spawn, True)
				spawn.init()
			else:
				spawn.stopRespawn()
				spawn.doSpawn()
Beispiel #9
0
 def __init__(self, id=qID, name=qn, descr=qDesc):
     JQuest.__init__(self, id, name, descr)
     for id in self.NPCID:
         self.addStartNpc(id)
         self.addFirstTalkId(id)
         self.addTalkId(id)
     self.npcNameTable = NpcNameTable()
     #init pages
     rb_id = {}
     bosses = NpcTable.getInstance().getAllNpcOfClassType(["L2RaidBoss"])
     for boss in bosses:
         lv = boss.getLevel()
         if lv not in rb_id:
             rb_id[lv] = []
         rb_id[lv] += [boss.getNpcId()]
     rb_id = rb_id.items()
     rb_id.sort()
     for lv, id_list in rb_id:
         if lv in xrange(20, 30):
             self.pages["2x"] += [[lv, id_list]]
         elif lv in xrange(30, 40):
             self.pages["3x"] += [[lv, id_list]]
         elif lv in xrange(40, 50):
             self.pages["4x"] += [[lv, id_list]]
         elif lv in xrange(50, 60):
             self.pages["5x"] += [[lv, id_list]]
         elif lv in xrange(60, 70):
             self.pages["6x"] += [[lv, id_list]]
         elif lv in xrange(70, 80):
             self.pages["7x"] += [[lv, id_list]]
         elif lv in xrange(80, 90):
             self.pages["8x"] += [[lv, id_list]]
     for name in self.backlistByName:
         self.backlist += self.getNpcIDsByName(name)
     print "Init:" + self.qn + " loaded", "rb:", len(
         bosses), "backlist:", len(self.backlist)
Beispiel #10
0
class Quest(JQuest):
	qID = -1
	qn = "dropQuest"
	qDesc = "custom"
	NPCID = 100
	allnpc = NpcTable.getInstance().getAllMonstersOfLevel(range(100))
	
	htm_header = """<html><body scroll=no><title>物品掉率查詢</title><table border=0 cellpadding=0 cellspacing=0 width=294 height=359>"""
	htm_search = """<tr><td><table border=0 cellpadding=0 cellspacing=0 height=23 width=294 bgcolor=666666>
	<tr>
	<td>物品名稱</td>
	<td><edit var="value" width=100></td>
	<td><a action="bypass -h Quest %s search $value">搜尋</a></td>
	</tr>
	</table></td></tr>""" % qn
	htm_footer = """</table></body></html>"""
	
	def log(self, m):
		l = Logger.getLogger(self.qn)
		l.info(m)

	def getItemByName(self, name):
		it = ItemTable.getInstance()
		r = []
		for id in xrange(it.getArraySize()):
			t = it.getTemplate(id)
			if t:
				if name in t.getName():
					r.append(t)
		return r
		
	def getNpcByDropItem(self, itemid, issweep):
		r = []
		for npc in self.allnpc:
			dd = npc.getDropData()
			if len(dd):
				for dc in dd:
					if issweep == dc.isSweep():
						for item in dc.getAllDrops():
							if item.getItemId() == itemid:
								r.append([npc, item.getChance()])
		return r
	
	def __init__(self, id = qID, name = qn, descr = qDesc):
		self.qID, self.qn, self.qDesc = id, name, descr
		JQuest.__init__(self, id, name, descr)
		self.addStartNpc(self.NPCID)
		self.addFirstTalkId(self.NPCID)
		self.addTalkId(self.NPCID)
		self.log("Init:" + self.qn + " loaded")

	def onAdvEvent(self, event, npc, player):
		e = event.split()
		if e[0] == "search":
			if len(e) > 1:
				r = """<tr><td>%s</td></tr>""" % ("_"*49)
				r += """<tr><td><table border=0 cellpadding=0 cellspacing=0 bgcolor=330000 width=294 height=330>""" 
				c = 0
				for itemt in self.getItemByName(e[1]):
					r += """<tr><td><a action="bypass -h Quest %(qn)s searchdid %(id)d"> 掉落 </a></td><td><a action="bypass -h Quest %(qn)s searchsid %(id)d"> 回收 </a></td><td>%(name)s</td></tr>""" % {"qn":self.qn, "id":itemt.getItemId(), "name":itemt.getName()}
					c += 1
					if c >= 20: break
				r += """</table></td></tr>"""
				return self.htm_header + self.htm_search + r + self.htm_footer
		elif e[0] == "searchdid" or e[0] == "searchsid":
			if len(e) > 1:
				d = self.getNpcByDropItem(int(e[1]), e[0] == "searchsid")
				#d = qsort(d, lambda a, b:a[1] < b[1], lambda a, b:a[1] >= b[1])
				d = qsort(d, lambda a, b:a[1] >= b[1], lambda a, b:a[1] < b[1])
				r = """<tr><td>%d</td></tr>""" % (len(d))
				r += """<tr><td><table border=0 cellpadding=0 cellspacing=0 bgcolor=330000 width=294 height=330>""" 
				c = 0
				for npc, chance in d:
					r += """<tr><td>%d %s %0.4f%%</td></tr>""" % (npc.getLevel(), npc.getName(), chance * 1.0 / 10000)
					c += 1
					if c >= 20: break
				r += """</table></td></tr>"""
				return self.htm_header + self.htm_search + r + self.htm_footer
		return self.onFirstTalk(npc, player)
		
	def onFirstTalk(self, npc, player):
		return self.htm_header + self.htm_search + self.htm_footer