Exemplo n.º 1
0
 def onKill(self, npc, player, isPet):
     partyMember = self.getRandomPartyMemberState(player, State.STARTED)
     if not partyMember: return
     st = partyMember.getQuestState(qn)
     if st:
         if st.getState() == State.STARTED:
             npcId = npc.getNpcId()
             cond = st.getInt("cond")
             id = st.getInt("id")
             st2 = partyMember.getQuestState("606_WarWithVarkaSilenos")
             if not partyMember.isAlliedWithVarka():
                 if (npcId in Varka_One) or (npcId in Varka_Two) or (
                         npcId in Varka_Three):
                     item = 0
                     if cond <= 5:
                         if npcId in Varka_One:
                             item, MAX, drop = One[cond]
                         elif npcId in Varka_Two and cond > 1:
                             item, MAX, drop = Two[cond]
                         elif npcId in Varka_Three and cond > 2:
                             item, MAX, drop = Three[cond]
                     if item != 0:
                         if st.getQuestItemsCount(drop) == MAX:
                             item = 0
                     chance = Chance[npcId]
                     #This is support for quest 606: War With Varka Silenos. Basically, if the person has both this quest and 606, then they only get one quest item, 50% chance for 606 quest item and 50% chance for this quest's item
                     if st2:
                         if (st.getRandom(2) == 1 or item
                                 == 0) and npcId in Chance_mane.keys():
                             item = 57
                             MAX = 100
                             drop = Mane
                             chance = Chance_mane[npcId]
                             giveReward(st, item, chance, MAX, drop)
                         elif id == 2 and item != 0:
                             giveReward(st, item, chance, MAX, drop)
                     elif id == 2 and item != 0:
                         giveReward(st, item, chance, MAX, drop)
                 elif npcId in Ketra_Orcs:
                     party = partyMember.getParty()
                     if party:
                         for member in party.getPartyMembers().toArray():
                             if Util.checkIfInRange(5000, player, member,
                                                    True):
                                 pst = member.getQuestState(qn)
                                 if pst:
                                     decreaseAlliance(pst)
                     else:
                         decreaseAlliance(st)
     return
Exemplo n.º 2
0
 def onKill(self,npc,player,isPet):
   partyMember = self.getRandomPartyMemberState(player,State.STARTED)
   if not partyMember : return
   st = partyMember.getQuestState(qn)
   if st :
      if st.getState() == State.STARTED :
          npcId = npc.getNpcId()
          cond = st.getInt("cond")
          id = st.getInt("id")
          st2 = partyMember.getQuestState("606_WarWithVarkaSilenos")
          if not partyMember.isAlliedWithVarka() :
              if (npcId in Varka_One) or (npcId in Varka_Two) or (npcId in Varka_Three) :
                  item = 0
                  if cond <= 5 :
                    if npcId in Varka_One :
                      item,MAX,drop = One[cond]
                    elif npcId in Varka_Two and cond > 1:
                      item,MAX,drop = Two[cond]
                    elif npcId in Varka_Three and cond > 2 :
                      item,MAX,drop = Three[cond]
                  if item != 0 :
                    if st.getQuestItemsCount(drop) == MAX :
                      item = 0
                  chance = Chance[npcId]
          #This is support for quest 606: War With Varka Silenos. Basically, if the person has both this quest and 606, then they only get one quest item, 50% chance for 606 quest item and 50% chance for this quest's item
                  if st2 :
                      if (self.getRandom(2) == 1 or item == 0) and npcId in Chance_mane.keys() :
                          item = 57
                          MAX = 100
                          drop = Mane
                          chance = Chance_mane[npcId]
                          giveReward(st,item,chance,MAX,drop)
                      elif id == 2 and item != 0 :
                          giveReward(st,item,chance,MAX,drop)
                  elif id == 2 and item != 0 :
                      giveReward(st,item,chance,MAX,drop)
              elif npcId in Ketra_Orcs :
                  party = partyMember.getParty()
                  if party :
                      for member in party.getMembers().toArray() :
                          if Util.checkIfInRange(5000, player, member, True) :
                              pst = member.getQuestState(qn)
                              if pst :
                                  decreaseAlliance(pst)
                  else :
                      decreaseAlliance(st)
   return
Exemplo n.º 3
0
	def onAdvEvent(self, event, npc, player):
		if event == "check":
			old_blacklist = self.blacklist[:]
			self.blacklist = []
			for spawn in SpawnTable.getInstance().getSpawnTable():
				if spawn.getNpcid() in self.NPCID:
					npc = spawn.getLastSpawn()
					for player in npc.getKnownList().getKnownPlayersInRadius(self.radius):
						playeroid = player.getObjectId()
						self.blacklist.append(playeroid)
						if playeroid not in old_blacklist:
							self.giveBuffs(npc, player)
					for player in npc.getKnownList().getKnownSummons().values():
						if Util.checkIfInRange(self.radius, npc, player, True):
							playeroid = player.getObjectId()
							self.blacklist.append(playeroid)
							if playeroid not in old_blacklist:
								self.giveBuffs(npc, player)
Exemplo n.º 4
0
 def checkAllow(self, player, target):
     message = ""
     if not Util.checkIfInRange(2000, player, target, False):
         message = "%s 不在隊長範圍 2000 單位內" % target.getName()
     if not target.getLevel() >= 80:
         message = "%s 等級不足" % target.getName()
     if self.getQuestItemsCount(target, self.require_item_id) < self.require_item_count:
         message = "%s 所需道具不足 需要 %s %d 個" % (target.getName(), self.require_item_name, self.require_item_count)
     l, c = (
         InstanceManager.getInstance().getInstanceTime(target.getObjectId(), self.InstanceTemplateId),
         System.currentTimeMillis(),
     )
     if l > c:
         message = "%s 副本時間限制 %d 秒後可用" % (target.getName(), (l - c) / 1000)
     if len(message) > 0:
         player.sendMessage(message)
         if player.getObjectId() != target.getObjectId():
             target.sendMessage(message)
         return False
     return True
Exemplo n.º 5
0
 def onAdvEvent(self, event, npc, player):
     if event == "check":
         old_blacklist = self.blacklist[:]
         self.blacklist = []
         for spawn in SpawnTable.getInstance().getSpawnTable():
             if spawn.getNpcid() in self.NPCID:
                 npc = spawn.getLastSpawn()
                 for player in npc.getKnownList().getKnownPlayersInRadius(
                         self.radius):
                     playeroid = player.getObjectId()
                     self.blacklist.append(playeroid)
                     if playeroid not in old_blacklist:
                         self.giveBuffs(npc, player)
                 for player in npc.getKnownList().getKnownSummons().values(
                 ):
                     if Util.checkIfInRange(self.radius, npc, player, True):
                         playeroid = player.getObjectId()
                         self.blacklist.append(playeroid)
                         if playeroid not in old_blacklist:
                             self.giveBuffs(npc, player)
Exemplo n.º 6
0
	def onKill(self, npc, player, isPet): #當怪物被殺時 會被呼叫.. player 是尾刀殺怪的玩家
		party = player.getParty() #獲得尾刀玩家的隊伍
		if party: #如果有組隊情況
			members = [] #初始化 成員變數
			cc = party.getCommandChannel() #取得 聯軍 (如果有)
			if cc: #有聯軍
				members = cc.getMembers() #取得聯軍所有成員
			else: #沒有聯軍
				members = party.getMembers() #取得一般隊伍所有成員
			for m in members: #在 members 變數取出每個成員 M
				if Util.checkIfInRange(2000, player, m, False): #計算 成員 M 跟 尾刀玩家的距離 是否在 2000 單位以內
					#m.addItem(self.qn, itemid, itemcount, null, True)
					m.addItem(self.qn, 1, 1, None, True) #直接增加物品到 M 成員的背包中.. 第1個參數是解發的參考名稱, 第二參數是 物品 ID,  第三 數量, 參考, 是否發訊息
					m.addItem(self.qn, 2, 1, None, True) #每增加一行 多掉一種物品.. 這裡 掉 六個
					m.addItem(self.qn, 3, 1, None, True)
					m.addItem(self.qn, 32272, 1, None, True)
					m.addItem(self.qn, 35704, 1, None, True)
					m.addItem(self.qn, 18549, 1, None, True)
				else: #距離不在 2000 單位以內
					player.sendMessage("不在範圍 不掉特別獎勵") #向玩家發出訊息
		else: #如果沒有組隊情況
			player.sendMessage("沒有隊伍 不掉特別獎勵") #向玩家發出訊息
Exemplo n.º 7
0
 def checkAllow(self, player, target):
     message = ""
     if not Util.checkIfInRange(2000, player, target, False):
         message = "%s 不在隊長範圍 2000 單位內" % target.getName()
     if not target.getLevel() >= 80:
         message = "%s 等級不足" % target.getName()
     if self.getQuestItemsCount(
             target, self.require_item_id) < self.require_item_count:
         message = "%s 所需道具不足 需要 %s %d 個" % (target.getName(),
                                             self.require_item_name,
                                             self.require_item_count)
     l, c = InstanceManager.getInstance().getInstanceTime(
         target.getObjectId(),
         self.InstanceTemplateId), System.currentTimeMillis()
     if l > c:
         message = "%s 副本時間限制 %d 秒後可用" % (target.getName(), (l - c) / 1000)
     if len(message) > 0:
         player.sendMessage(message)
         if player.getObjectId() != target.getObjectId():
             target.sendMessage(message)
         return False
     return True
Exemplo n.º 8
0
	def onKill(self, npc, player, isPet): #當怪物被殺時 會被呼叫.. player 是尾刀殺怪的玩家
		party = player.getParty() #獲得尾刀玩家的隊伍
		if party: #如果有組隊情況
			members = [] #初始化 成員變數
			cc = party.getCommandChannel() #取得 聯軍 (如果有)
			if cc: #有聯軍
				members = cc.getMembers() #取得聯軍所有成員
			else: #沒有聯軍
				members = party.getMembers() #取得一般隊伍所有成員
			ipDict = {}
			for m in members:
				ipDict[self.getIP(m)] = ''
			if len(ipDict) != len(members):	#有組員的 IP 相同. 沒有特別獎勵
				return
			for m in members: #在 members 變數取出每個成員 M
				if Util.checkIfInRange(2000, player, m, False): #計算 成員 M 跟 尾刀玩家的距離 是否在 2000 單位以內
					for itemid, minc, maxc, c in self.REWARD:
						if self.getRandom(1000000) <= c*10000:
							m.addItem(self.qn, itemid, self.getRandom(minc, maxc), None, True)
				else: #距離不在 2000 單位以內
					self.sendMessage(player, "不在範圍 不掉特別獎勵") #向玩家發出訊息
		else: #如果沒有組隊情況
			self.sendMessage(player, "沒有隊伍 不掉特別獎勵") #向玩家發出訊息