def checkCondition(player) : party = player.getParty() if not party : player.sendPacket(SystemMessage(SystemMessageId.NOT_IN_PARTY_CANT_ENTER)) return False if not player.getParty().isLeader(player) : player.sendPacket(SystemMessage(SystemMessageId.ONLY_PARTY_LEADER_CAN_ENTER)) return False membersCount = player.getParty().getMemberCount() if membersCount < 2 : player.sendPacket(SystemMessage(SystemMessageId.PARTY_EXCEEDED_THE_LIMIT_CANT_ENTER)) return False for partyMember in party.getPartyMembers().toArray() : if not partyMember.getLevel() >= 78 : sm = SystemMessage(SystemMessageId.C1_LEVEL_REQUIREMENT_NOT_SUFFICIENT) sm.addCharName(partyMember) player.sendPacket(sm) return False for partyMember in player.getParty().getPartyMembers().toArray() : if not partyMember.isInsideRadius(player, 500, False, False) : sm = SystemMessage(SystemMessageId.C1_IS_IN_LOCATION_THAT_CANNOT_BE_ENTERED) sm.addCharName(partyMember) player.sendPacket(sm) return False return True
def onTalk(self, npc, player): html = "fine" npcId = npc.getNpcId() st = player.getQuestState(qn) if not st: st = self.newQuestState(player) party = player.getParty() if not party: html = "32330-01.htm" else: have_quest = False wrong_Level = False for partyMember in party.getPartyMembers().toArray(): pst = partyMember.getQuestState("179_IntoTheLargeCavern") if pst: have_quest = True if partyMember.getLevel() < 15 or partyMember.getLevel( ) > 22 or partyMember.getClassId().level() != 0: wrong_Level = True player_name = partyMember.getName() if not have_quest: html = "32330-02.htm" elif player != party.getLeader(): party.broadcastToPartyMembers(SystemMessage(2185)) html = "32330-03.htm" elif wrong_Level: party.broadcastToPartyMembers( SystemMessage(2097).addString(player_name)) html = "32330-03.htm" else: for partyMember in party.getPartyMembers().toArray(): partyMember.teleToLocation(-111188, 74555, -12432) html = "" st.exitQuest(1) return html
def checkLeader(player) : party = player.getParty() if not party: player.sendPacket(SystemMessage(SystemMessageId.NOT_IN_PARTY_CANT_ENTER)) return False elif not player.getParty().isLeader(player): player.sendPacket(SystemMessage(SystemMessageId.ONLY_PARTY_LEADER_CAN_ENTER)) return False else : return True
def checkConditions(player, new): party = player.getParty() if not party: player.sendPacket(SystemMessage(SystemMessageId.NOT_IN_PARTY_CANT_ENTER)) return False for partyMember in party.getPartyMembers().toArray(): if not partyMember.getLevel() >= 60: player.sendPacket(SystemMessage(SystemMessageId.PARTY_EXCEEDED_THE_LIMIT_CANT_ENTER)) return False if not partyMember.isInsideRadius(player, 1000, False, False): sm = SystemMessage(SystemMessageId.C1_IS_IN_LOCATION_THAT_CANNOT_BE_ENTERED) sm.addCharName(partyMember) player.sendPacket(sm) return False return True
def onAcquireSkill(self, npc, player, skill): if player.isSubClassActive(): player.sendMessage("You are trying to learn skill that u can't..") Util.handleIllegalPlayerAction( player, "Player " + player.getName() + " tried to learn skill that he can't!!!", Config.DEFAULT_PUNISH) return "false" st = player.getQuestState(qn) for i in SKILLITEMS: if skill.getId() in SUBSKILLS[i]: for var in QUESTVARSITEMS: if i in QUESTVARSITEMS[var]: for j in range(Config.MAX_SUBCLASS): qvar = st.getGlobalQuestVar(var + str(j + 1)) if qvar != "" and qvar != "0" and not qvar.endswith( ";"): Item = player.getInventory().getItemByObjectId( int(qvar)) if Item and Item.getItemId() == i: player.destroyItem(qn, int(qvar), 1, player, 0) st.saveGlobalQuestVar( var + str(j + 1), str(skill.getId()) + ";") return "true" player.sendPacket( SystemMessage(SystemMessageId.ITEM_MISSING_TO_LEARN_SKILL)) return "false"
def onTalk(self, npc, player): htmltext = "<html><body>目前沒有執行任務,或條件不符。</body></html>" st = player.getQuestState(qn) if not st: return htmltext clan = player.getClan() npcId = npc.getNpcId() if player.getClan() == None or player.isClanLeader() == 0: st.exitQuest(1) htmltext = "31331-0.htm" elif player.getClan().getLevel() < 5: st.exitQuest(1) htmltext = "31331-0.htm" else: cond = st.getInt("cond") id = st.getState() if id == State.CREATED and cond == 0: htmltext = "31331-1.htm" elif id == State.STARTED and cond == 1: count = st.getQuestItemsCount(Claw) if not count: htmltext = "31331-4.htm" elif count >= 1: htmltext = "31331-7.htm" # custom html st.takeItems(Claw, -1) reward = int(CLAN_POINTS_REWARD * count) clan.addReputationScore(reward, True) player.sendPacket(SystemMessage(1777).addNumber(reward)) clan.broadcastToOnlineMembers(PledgeShowInfoUpdate(clan)) return htmltext
def checkCondition(player): if not player.getLevel() >= 78: sm = SystemMessage(SystemMessageId.C1_LEVEL_REQUIREMENT_NOT_SUFFICIENT) sm.addCharName(player) player.sendPacket(sm) return False return True
def onTalk (self,npc,player) : htmltext = "<html><body>You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.</body></html>" st = player.getQuestState(qn) if not st : return htmltext clan = player.getClan() npcId = npc.getNpcId() if player.getClan() == None or player.isClanLeader() == 0 : st.exitQuest(1) htmltext = "31331-0a.htm" elif player.getClan().getLevel() < 6 : st.exitQuest(1) htmltext = "31331-0b.htm" else : cond = st.getInt("cond") raid = st.getInt("raid") id = st.getState() if id == State.CREATED and cond == 0 : htmltext = "31331-0c.htm" elif id == State.STARTED and cond == 1 and raid in REWARDS_LIST.keys() : npc,item,min,max=REWARDS_LIST[raid] count = st.getQuestItemsCount(item) CLAN_POINTS_REWARD = Rnd.get(min, max) if not count : htmltext = "31331-"+str(raid)+"a.htm" elif count == 1 : htmltext = "31331-"+str(raid)+"b.htm" st.takeItems(item,1) clan.addReputationScore(CLAN_POINTS_REWARD,True) player.sendPacket(SystemMessage(1777).addNumber(CLAN_POINTS_REWARD)) clan.broadcastToOnlineMembers(PledgeShowInfoUpdate(clan)) return htmltext
def EvolvePet(player, item, striderControlItem): con = L2DatabaseFactory.getInstance().getConnection() statement = con.prepareStatement( "UPDATE items SET item_id =? WHERE object_id=? AND owner_id=?") statement.setInt(1, striderControlItem) statement.setInt(2, item.getObjectId()) statement.setInt(3, player.getObjectId()) statement.execute() statement.close() con.close() sm1 = SystemMessage(SystemMessageId.S2_S1_DISAPPEARED) sm1.addItemName(item.getItemId()) sm1.addNumber(1) sm2 = SystemMessage(SystemMessageId.YOU_PICKED_UP_A_S1_S2) sm2.addNumber(item.getEnchantLevel()) sm2.addItemName(striderControlItem) player.sendPacket(sm1) player.sendPacket(sm2) player.sendPacket(ItemList(player, False)) return
def getCertified(player, itemId, var): st = player.getQuestState(qn) qvar = st.getGlobalQuestVar(var) if qvar != "" and qvar != "0": return "" item = player.getInventory().addItem("Quest", itemId, 1, player, player.getTarget()) st.saveGlobalQuestVar(var, str(item.getObjectId())) smsg = SystemMessage(SystemMessageId.EARNED_ITEM) smsg.addItemName(item) player.sendPacket(smsg) return
def onAcquireSkillList(self, npc, player): asl = AcquireSkillList(AcquireSkillList.SkillType.unk4) st = player.getQuestState(qn) oldSkills = player.getAllSkills() count = 0 for i in SKILLITEMS: for j in SUBSKILLS[i]: minLevel = 0 maxLevel = SkillTable.getInstance().getMaxLevel(j) for oldsk in oldSkills: if oldsk.getId() == j: minLevel = oldsk.getLevel() if minLevel < maxLevel: count += 1 asl.addSkill(j, minLevel + 1, maxLevel, 0, 0) player.sendPacket(asl) if count == 0: player.sendPacket( SystemMessage(SystemMessageId.NO_MORE_SKILLS_TO_LEARN)) return ""