Beispiel #1
0
 def onKill(self, npc, player, isPet):
     npcId = npc.getNpcId()
     if self.worlds.has_key(npc.getInstanceId()):
         world = self.worlds[npc.getInstanceId()]
         if world.status == 0:
             if npcId == 22494:
                 newNpc = self.addSpawn(KamaBoss1[0], -49649, -174887,
                                        -10459, 0, False, 0, False,
                                        world.instanceId)  # Boss
                 world.startRoom.npclist[newNpc] = False
             if npcId == 25619:
                 newNpc = self.addSpawn(KamaBoss[0], -53418, -174887,
                                        -10015, 0, False, 0, False,
                                        world.instanceId)  # Boss
                 world.startRoom.npclist[newNpc] = False
             if npcId == 29138:
                 instanceObj = InstanceManager.getInstance().getInstance(
                     self.currentWorld)
                 player.sendPacket(
                     SystemMessage.sendString(
                         "從現在起將會限制進入即時地區:「欲界 (深淵迷宮)」。下一次的進場時間可透過「/即時地區」指令來查詢。"
                     ))
                 instanceObj.setDuration(300000)
                 instanceObj.removeNpcs()
                 party = player.getParty()
                 if party != None:
                     for partyMember in party.getPartyMembers().toArray():
                         partyMember.sendPacket(
                             SystemMessage.sendString(
                                 "從現在起將會限制進入即時地區:「欲界 (深淵迷宮)」。下一次的進場時間可透過「/即時地區」指令來查詢。"
                             ))
     return
Beispiel #2
0
 def onKill(self, npc, player, isPet):
     npcId = npc.getNpcId()
     if self.worlds.has_key(npc.getInstanceId()):
         world = self.worlds[npc.getInstanceId()]
         if world.status == 0:
             if npcId == 22503:
                 newNpc = self.addSpawn(
                     KamaBoss1[0], 15829, -174885, -10395, 0, False, 0, False, world.instanceId
                 )  # Boss
                 world.startRoom.npclist[newNpc] = False
             if npcId == 25622:
                 newNpc = self.addSpawn(
                     KamaBoss[0], 12050, -174887, -9951, 0, False, 0, False, world.instanceId
                 )  # Boss
                 world.startRoom.npclist[newNpc] = False
             if npcId == 29147:
                 instanceObj = InstanceManager.getInstance().getInstance(self.currentWorld)
                 instanceObj.setDuration(300000)
                 instanceObj.removeNpcs()
                 party = player.getParty()
                 if party != None:
                     for partyMember in party.getPartyMembers().toArray():
                         partyMember.sendPacket(
                             SystemMessage.sendString("從現在起將會限制進入即時地區:「欲界 (深淵迷宮)」。下一次的進場時間可透過「/即時地區」指令來查詢。")
                         )
     return
Beispiel #3
0
 def onTalk(self, npc, player):
     if not checkPrimaryConditions(player):
         return
     tele = PyObject()
     dataIndex = getKamaIndex(KamalokaLevel)
     tele.x = KamaPorts[dataIndex][0]
     tele.y = KamaPorts[dataIndex][1]
     tele.z = KamaPorts[dataIndex][2]
     instanceId = getExistingInstanceId(player)
     if instanceId == 0:
         #brand new instance
         if not checkNewInstanceConditions(player):
             return
         instanceId = InstanceManager.getInstance().createDynamicInstance(
             KamaTemplate[dataIndex])
         if not self.worlds.has_key(instanceId):
             world = PyObject()
             world.rewarded = []
             world.instanceId = instanceId
             self.worlds[instanceId] = world
             self.world_ids.append(instanceId)
             self.currentWorld = instanceId
             instanceObj = InstanceManager.getInstance().getInstance(
                 instanceId)
             instanceObj.setAllowSummon(False)
             instanceObj.setReturnTeleport(ReturnPort[dataIndex][0],
                                           ReturnPort[dataIndex][1],
                                           ReturnPort[dataIndex][2])
             print "欲界-深淵之廳:使用 " + InstanceTemplate + " 即時地區:" + str(
                 instanceId) + " 創造玩家:" + str(player.getName())
             runStartRoom(self, world)
             tele.instanceId = instanceId
             player.setKamaDate(1)
             player.removeActiveBuffForKama()
             teleportPlayer(self, player, tele)
             party = player.getParty()
             if party != None:
                 for partyMember in party.getPartyMembers().toArray():
                     partyMember.setKamaDate(1)
                     partyMember.removeActiveBuffForKama()
                     teleportPlayer(self, partyMember, tele)
     else:
         #party already in Kamaloka
         foundworld = False
         for worldid in self.world_ids:
             if worldid == instanceId:
                 foundworld = True
         if not foundworld:
             player.sendPacket(SystemMessage.sendString("你的隊員已進入其它的即時地區。"))
             return
         instanceObj = InstanceManager.getInstance().getInstance(instanceId)
         if instanceObj.getCountPlayers() >= KamaPartySize[dataIndex]:
             player.sendPacket(
                 SystemMessage(
                     SystemMessageId.PARTY_EXCEEDED_THE_LIMIT_CANT_ENTER))
             return
         tele.instanceId = instanceId
         player.removeActiveBuffForKama()
         teleportPlayer(self, player, tele)
     return
Beispiel #4
0
def enterInstance(self, player, template, teleto):
    instanceId = 0
    if not checkCondition(player):
        return 0
    party = player.getParty()
    # Check for existing instances of party members
    for partyMember in party.getPartyMembers().toArray():
        if partyMember.getInstanceId() != 0:
            instanceId = partyMember.getInstanceId()
            if debug:
                print "Emerald/Steam: found party member in instance:" + str(
                    instanceId)
    # Existing instance
    if instanceId != 0:
        foundworld = False
        for worldid in self.world_ids:
            if worldid == instanceId:
                foundworld = True
        if not foundworld:
            player.sendPacket(SystemMessage.sendString("你的隊員已進入其它的即時地區。"))
            return 0
        teleto.instanceId = instanceId
        teleportplayer(self, player, teleto, True)
        return instanceId
    # New instance
    else:
        instanceId = InstanceManager.getInstance().createDynamicInstance(
            template)
        if not self.worlds.has_key(instanceId):
            world = PyObject()
            world.instanceId = instanceId
            world.bosses = 5
            self.worlds[instanceId] = world
            self.world_ids.append(instanceId)
            if debug:
                print "Emerald/Steam Instance: " + str(
                    instanceId) + " created by player: " + str(
                        player.getName())
            # Close all doors
            for door in InstanceManager.getInstance().getInstance(
                    instanceId).getDoors():
                door.closeMe()
            # Start the first room
            runEmeraldAndSteamFirstRoom(self, world)
        # Teleports player
        for partyMember in party.getPartyMembers().toArray():
            st = partyMember.getQuestState(qn)
            if not st: st = self.newQuestState(partyMember)
            st.takeItems(9694, -1)
            st.takeItems(9698, -1)
            st.takeItems(9699, -1)
            teleto.instanceId = instanceId
            teleportplayer(self, partyMember, teleto, True)
        return instanceId
    return instanceId
Beispiel #5
0
 def onTalk(self, npc, player):
     if not checkPrimaryConditions(player):
         return
     tele = PyObject()
     dataIndex = getKamaIndex(KamalokaLevel)
     tele.x = KamaPorts[dataIndex][0]
     tele.y = KamaPorts[dataIndex][1]
     tele.z = KamaPorts[dataIndex][2]
     instanceId = getExistingInstanceId(player)
     if instanceId == 0:
         # brand new instance
         if not checkNewInstanceConditions(player):
             return
         instanceId = InstanceManager.getInstance().createDynamicInstance(KamaTemplate[dataIndex])
         if not self.worlds.has_key(instanceId):
             world = PyObject()
             world.rewarded = []
             world.instanceId = instanceId
             self.worlds[instanceId] = world
             self.world_ids.append(instanceId)
             self.currentWorld = instanceId
             instanceObj = InstanceManager.getInstance().getInstance(instanceId)
             instanceObj.setAllowSummon(False)
             instanceObj.setReturnTeleport(
                 ReturnPort[dataIndex][0], ReturnPort[dataIndex][1], ReturnPort[dataIndex][2]
             )
             print "近緣欲界-深淵之廳:使用 " + InstanceTemplate + " 即時地區:" + str(instanceId) + " 創造玩家:" + str(player.getName())
             runStartRoom(self, world)
             tele.instanceId = instanceId
             player.setKamaDate(1)
             player.removeActiveBuffForKama()
             teleportPlayer(self, player, tele)
             party = player.getParty()
             if party != None:
                 for partyMember in party.getPartyMembers().toArray():
                     partyMember.setKamaDate(1)
                     partyMember.removeActiveBuffForKama()
                     teleportPlayer(self, partyMember, tele)
     else:
         # party already in Kamaloka
         foundworld = False
         for worldid in self.world_ids:
             if worldid == instanceId:
                 foundworld = True
         if not foundworld:
             player.sendPacket(SystemMessage.sendString("你的隊員已進入其它的即時地區。"))
             return
         instanceObj = InstanceManager.getInstance().getInstance(instanceId)
         if instanceObj.getCountPlayers() >= KamaPartySize[dataIndex]:
             player.sendPacket(SystemMessage(SystemMessageId.PARTY_EXCEEDED_THE_LIMIT_CANT_ENTER))
             return
         tele.instanceId = instanceId
         player.removeActiveBuffForKama()
         teleportPlayer(self, player, tele)
     return
def enterInstance(self,player,template,teleto):
    instanceId = 0
    if not checkCondition(player):
        return 0
    party = player.getParty()
    # Check for existing instances of party members
    for partyMember in party.getPartyMembers().toArray():
        if partyMember.getInstanceId()!=0:
            instanceId = partyMember.getInstanceId()
            if debug: print "Emerald/Steam: found party member in instance:"+str(instanceId)
    # Existing instance
    if instanceId != 0:
        foundworld = False
        for worldid in self.world_ids:
            if worldid == instanceId:
                foundworld = True
        if not foundworld:
            player.sendPacket(SystemMessage.sendString("你的隊員已進入其它的即時地區。"))
            return 0
        teleto.instanceId = instanceId
        teleportplayer(self,player,teleto,True)
        return instanceId
    # New instance
    else:
        instanceId = InstanceManager.getInstance().createDynamicInstance(template)
        if not self.worlds.has_key(instanceId):
            world = PyObject()
            world.instanceId = instanceId
            world.bosses = 5
            self.worlds[instanceId]=world
            self.world_ids.append(instanceId)
            if debug: print "Emerald/Steam Instance: " +str(instanceId) + " created by player: " + str(player.getName()) 
            # Close all doors
            for door in InstanceManager.getInstance().getInstance(instanceId).getDoors():
                door.closeMe()
            # Start the first room
            runEmeraldAndSteamFirstRoom(self,world)
        # Teleports player
        for partyMember in party.getPartyMembers().toArray() :
            st = partyMember.getQuestState(qn)
            if not st : st = self.newQuestState(partyMember)
	    st.takeItems(9694,-1)
	    st.takeItems(9698,-1)
	    st.takeItems(9699,-1)
            teleto.instanceId = instanceId
            teleportplayer(self,partyMember,teleto,True)
        return instanceId
    return instanceId
Beispiel #7
0
def enterInstance(self, player, template, tele):
    if not checkPrimaryConditions(player):
        return
    tele = PyObject()
    dataIndex = getDcmIndex(DcmLevel)
    tele.x = DcmPorts[dataIndex][0]
    tele.y = DcmPorts[dataIndex][1]
    tele.z = DcmPorts[dataIndex][2]
    instanceId = getExistingInstanceId(player)
    if instanceId == 0:
        #brand new instance
        if not checkNewInstanceConditions(player):
            return
        instanceId = InstanceManager.getInstance().createDynamicInstance(
            DcmTemplate[dataIndex])
        if not self.worlds.has_key(instanceId):
            world = PyObject()
            world.rewarded = []
            world.instanceId = instanceId
            self.worlds[instanceId] = world
            self.world_ids.append(instanceId)
            self.currentWorld = instanceId
            instanceObj = InstanceManager.getInstance().getInstance(instanceId)
            instanceObj.setAllowSummon(False)
            instanceObj.setReturnTeleport(ReturnPort[dataIndex][0],
                                          ReturnPort[dataIndex][1],
                                          ReturnPort[dataIndex][2])
            print "暗雲宅邸:使用 " + InstanceTemplate + " 即時地區:" + str(
                instanceId) + " 創造玩家:" + str(player.getName())
            runStartRoom(self, world)
            tele.instanceId = instanceId
            teleportPlayer(self, player, tele)
            party = player.getParty()
            if party != None:
                for partyMember in party.getPartyMembers().toArray():
                    teleportPlayer(self, partyMember, tele)
    else:
        foundworld = False
        for worldid in self.world_ids:
            if worldid == instanceId:
                foundworld = True
        if not foundworld:
            player.sendPacket(SystemMessage.sendString("你的隊員已進入其它的即時地區。"))
            return
        tele.instanceId = instanceId
        teleportPlayer(self, player, tele)
    return
Beispiel #8
0
def enterInstance(self, player, template, tele) :
  if not checkPrimaryConditions(player) :
     return
  tele = PyObject()
  dataIndex = getDcmIndex(DcmLevel)
  tele.x = DcmPorts[dataIndex][0]
  tele.y = DcmPorts[dataIndex][1]
  tele.z = DcmPorts[dataIndex][2]
  instanceId = getExistingInstanceId(player)
  if instanceId == 0 :
     #brand new instance
     if not checkNewInstanceConditions(player) :
        return
     instanceId = InstanceManager.getInstance().createDynamicInstance(DcmTemplate[dataIndex])
     if not self.worlds.has_key(instanceId) :
        world = PyObject()
        world.rewarded = []
        world.instanceId = instanceId
        self.worlds[instanceId] = world
        self.world_ids.append(instanceId)
        self.currentWorld = instanceId
        instanceObj = InstanceManager.getInstance().getInstance(instanceId)
        instanceObj.setAllowSummon(False)
        instanceObj.setReturnTeleport(ReturnPort[dataIndex][0],ReturnPort[dataIndex][1],ReturnPort[dataIndex][2])
        print "暗雲宅邸:使用 " + InstanceTemplate + " 即時地區:" + str(instanceId) + " 創造玩家:" + str(player.getName()) 
        runStartRoom(self, world)
        tele.instanceId = instanceId
        teleportPlayer(self, player, tele)
        party = player.getParty()
        if party != None :
           for partyMember in party.getPartyMembers().toArray() :
               teleportPlayer(self, partyMember, tele)
  else:
     foundworld = False
     for worldid in self.world_ids :
         if worldid == instanceId :
            foundworld = True
     if not foundworld:
        player.sendPacket(SystemMessage.sendString("你的隊員已進入其它的即時地區。"))
        return
     tele.instanceId = instanceId
     teleportPlayer(self, player, tele)
  return
Beispiel #9
0
def enterInstance(self, player, template, teleto):
    instanceId = 0
    if not checkCondition(player):
        return 0
    party = player.getParty()
    # Check for existing instances of party members
    for partyMember in party.getPartyMembers().toArray():
        if partyMember.getInstanceId() != 0:
            instanceId = partyMember.getInstanceId()
    # Existing instance
    if instanceId != 0:
        foundWorld = False
        for worldid in self.world_ids:
            if worldid == instanceId:
                foundWorld = True
        if not foundWorld:
            player.sendPacket(SystemMessage.sendString("你的隊員已進入其它的即時地區。"))
            return
        teleto.instanceId = instanceId
        teleportPlayer(self, player, teleto)
        return instanceId
    # New instance
    else:
        instanceId = InstanceManager.getInstance().createDynamicInstance(
            template)
        if not self.worlds.has_key(instanceId):
            world = PyObject()
            world.instanceId = instanceId
            self.worlds[instanceId] = world
            self.world_ids.append(instanceId)
            print "Tower of Infinity: started " + template + " Instance: " + str(
                instanceId) + " created by player: " + str(player.getName())
            runFloor(self, world, 0)
        # teleports player
        for partyMember in party.getPartyMembers().toArray():
            st = partyMember.getQuestState(qn)
            if not st: st = self.newQuestState(partyMember)
            teleto.instanceId = instanceId
            teleportPlayer(self, partyMember, teleto)
        return instanceId
    return instanceId
Beispiel #10
0
def enterInstance(self, player, template, teleto) :
  instanceId = 0
  if not checkCondition(player) :
    return 0
  party = player.getParty()
  # Check for existing instances of party members
  for partyMember in party.getPartyMembers().toArray() :
    if partyMember.getInstanceId() != 0 :
      instanceId = partyMember.getInstanceId()
  # Existing instance
  if instanceId != 0 :
    foundWorld = False
    for worldid in self.world_ids :
      if worldid == instanceId :
        foundWorld = True
    if not foundWorld :
      player.sendPacket(SystemMessage.sendString("你的隊員已進入其它的即時地區。"))
      return
    teleto.instanceId = instanceId
    teleportPlayer(self, player, teleto)
    return instanceId
  # New instance
  else :
    instanceId = InstanceManager.getInstance().createDynamicInstance(template)
    if not self.worlds.has_key(instanceId) :
      world = PyObject()
      world.instanceId = instanceId
      self.worlds[instanceId] = world
      self.world_ids.append(instanceId)
      print "Tower of Infinity: started " + template + " Instance: " +str(instanceId) + " created by player: " + str(player.getName())
      runFloor(self, world, 0)
    # teleports player
    for partyMember in party.getPartyMembers().toArray() :
      st = partyMember.getQuestState(qn)
      if not st : st = self.newQuestState(partyMember)
      teleto.instanceId = instanceId
      teleportPlayer(self, partyMember, teleto)
    return instanceId
  return instanceId
Beispiel #11
0
def checkCondition(player):
    party = player.getParty()
    if party:
        player.sendPacket(SystemMessage.sendString("菲拉卡只能由單人挑戰。"))    
        return False
    return True
Beispiel #12
0
def checkCondition(player):
    party = player.getParty()
    if party:
        player.sendPacket(SystemMessage.sendString("菲拉卡只能由單人挑戰。"))
        return False
    return True