estaz Posted November 25, 2010 Posted November 25, 2010 Hi everyone :) I wanted to ask you, what have to be the code, to take item in order to enter instance (party and solo instances) in .py files . Thanks. - estaz
0 SkyNet Posted November 27, 2010 Posted November 27, 2010 all the stuff exist already in game, so get it from your server files and re-write it by your self...
0 estaz Posted November 27, 2010 Author Posted November 27, 2010 yeah i tried.. I found only java file, that onenter to instance, it would take some items by id, but when i rewrote it from java to .py, it dropped me a syntax error..
0 SkyNet Posted November 27, 2010 Posted November 27, 2010 if u get an error maybe its a good idea to show them here ? :) there are also teleport .py scripts too which u could try to use...
0 estaz Posted November 27, 2010 Author Posted November 27, 2010 Sorry, every file, except Gracia_heart in teleports are rewritten in java :-\ After a fev. sec. i will upload the .py error.. And this is the error, when i load the instance not in py file but in java, because i have it in java too, but still: 1. ERROR in \BloodShedParty.java (at line 72) public BSPWorld() ^^^^^^^^^^ No enclosing instance of type InstanceManager is accessible to invoke the super constructor. Must define a constructor and explicitly qualify its super construc tor invocation with an instance of InstanceManager (e.g. x.super() where x is an instance of InstanceManager). ---------- 2. WARNING in \BloodShedParty.java (at line 374) private int GetKilledMobs(int npcId) ^^^^^^^^^^^^^^^^^^^^^^^^ The method GetKilledMobs(int) from the type BloodShedParty is never used locally
0 estaz Posted November 28, 2010 Author Posted November 28, 2010 Sorry that i didnt posted the error, that i get from .py file, its just a syntax error because i use private static final. I just ask for a example code, that would check onenter to instance if the player has the required item and onteleport, teleporter would take it (in .py file)..
0 estaz Posted November 29, 2010 Author Posted November 29, 2010 bump ---- edited Okey, here is the .py file, error and the lines i edited : The File Red lines - the edited qn = "Bloodshedparty" #Items E_APIGA = 14720 ADENA = 57 STONE = 9576 STONE82 = 10486 STONE84 = 14169 SCROLL = 960 SCROLLB = 6577 GOLDDRAGON = 3481 ECCACOIN = 4037 #NPCs ROSE = 2009001 CHEST = 2010010 #FIRST CHAMBER MOBS GUARD = 2010001 KEYKEEPER = 2010013 PROTECTOR = 2010005 BELETH = 2010007 BAYLOR = 2010008 TIAT = 2010009 #Doors DOOR = 20240001 class PyObject: pass def openDoor(doorId,instanceId): for door in InstanceManager.getInstance().getInstance(instanceId).getDoors(): if door.getDoorId() == doorId: door.openMe() def closeDoor(doorId,instanceId): for door in InstanceManager.getInstance().getInstance(instanceId).getDoors(): if door.getDoorId() == doorId: door.closeMe() def checkConditions(player, new): party = player.getParty() if not party: player.sendPacket(ExShowScreenMessage("You are not currently in a party, so you cannot enter.", 8000)) return False if party and party.getMemberCount() < 2: player.sendPacket(ExShowScreenMessage("You cannot enter because there is too less people in your party. Minimum is 6 people.", 8000)) return False for partyMember in party.getPartyMembers().toArray(): if partyMember.getLevel() < 80: player.sendPacket(SystemMessage.sendString(partyMember.getName()+"s level is too low and cannot be entered.")) return False if not Util.checkIfInRange(1000, player, partyMember, True) and new: player.sendPacket(SystemMessage.sendString(partyMember.getName()+" is too far away ask him to come here.")) return False return True def teleportplayer(self,player,teleto): player.setInstanceId(teleto.instanceId) player.teleToLocation(teleto.x, teleto.y, teleto.z) pet = player.getPet() if pet != None : pet.setInstanceId(teleto.instanceId) pet.teleToLocation(teleto.x, teleto.y, teleto.z) return def enterInstance(self,player,template,teleto): instanceId = 0 party = player.getParty() if party : for partyMember in party.getPartyMembers().toArray(): st = partyMember.getQuestState(qn) if not st : st = self.newQuestState(partyMember) if partyMember.getInstanceId()!=0: instanceId = partyMember.getInstanceId() else : if player.getInstanceId()!=0: instanceId = player.getInstanceId() if instanceId != 0: if not checkConditions(player,False): return 0 foundworld = False for worldid in self.world_ids: if worldid == instanceId: foundworld = True if not foundworld: player.sendPacket(SystemMessage.sendString("You have entered another zone, therefore you cannot enter this one.")) return 0 teleto.instanceId = instanceId teleportplayer(self,player,teleto) return instanceId else: if not checkConditions(player,True): return 0 instanceId = InstanceManager.getInstance().createDynamicInstance(template) if not instanceId in self.world_ids: world = PyObject() world.rewarded=[] world.instanceId = instanceId self.worlds[instanceId]=world self.world_ids.append(instanceId) print "Instance: Started " + template + " Instance: " +str(instanceId) + " created by " + str(player.getName()) teleto.instanceId = instanceId for partyMember in party.getPartyMembers().toArray(): teleportplayer(self,partyMember,teleto) return instanceId return instanceId def exitInstance(player,tele): party = player.getParty() if party : for partyMember in party.getPartyMembers().toArray(): partyMember.setInstanceId(0) partyMember.teleToLocation(tele.x, tele.y, tele.z) pet = partyMember.getPet() if pet != None : pet.setInstanceId(0) pet.teleToLocation(tele.x, tele.y, tele.z) else : player.setInstanceId(0) player.teleToLocation(tele.x, tele.y, tele.z) pet = player.getPet() if pet != None : pet.setInstanceId(0) pet.teleToLocation(tele.x, tele.y, tele.z) InstanceManager.getInstance().destroyInstance(player.getInstanceId()) class Bloodshedparty(JQuest): def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) self.worlds = {} self.world_ids = [] def onTalk (self,npc,player): st = player.getQuestState(qn) npcId = npc.getNpcId() if npcId == ROSE : if st.getQuestItemsCount(ECCACOIN) >= 4 : htmltext = "2009002.htm" else : st.takeItems(ECCACOIN,5) tele = PyObject() tele.x = 16345 tele.y = 209051 tele.z = -9357 enterInstance(self, player, "Bloodshedparty.xml", tele) st.playSound("ItemSound.quest_middle") elif npcId == CHEST : npc.decayMe() tele = PyObject() tele.x = 82200 tele.y = 148347 tele.z = -3467 party = player.getParty() if party : for partyMember in party.getPartyMembers().toArray(): exitInstance(partyMember,tele) else: exitInstance(player,tele) st.giveItems(ADENA,10000) if Rnd.get(100) < 10 : st.giveItems(STONE84,1) if Rnd.get(100) < 15 : st.giveItems(STONE82,1) if Rnd.get(100) < 25 : st.giveItems(STONE,1) if Rnd.get(100) < 25 : st.giveItems(SCROLLB,1) if Rnd.get(100) < 50 : st.giveItems(SCROLL,1) st.playSound("ItemSound.quest_finish") player.sendPacket(ExShowScreenMessage("This world was destroyed: Completed", 8000)) player.sendPacket(ExShowScreenMessage("Baylor: You fools, We will meet in your world soon.....Aha ha ha", 15000)) return def onKill(self,npc,player,isPet): st = player.getQuestState(qn) npcId = npc.getNpcId() if npcId == GUARD : if npc.getInstanceId() in self.worlds: world = self.worlds[npc.getInstanceId()] player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Master, Forgive Me! I failed")) #newNpc = self.addSpawn(int npcId,x,y,z,heading,randomOffset,despawnDelay,isSummonSpawn,instanceId) newNpc = self.addSpawn(PROTECTOR,16658,211498,-9357,0,False,0,False,npc.instanceId) player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "You fools, here's your end")) player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Ooo...It is a good day to die")) openDoor(DOOR,npc.instanceId) elif npcId == PROTECTOR : if npc.getInstanceId() in self.worlds: world = self.worlds[npc.getInstanceId()] player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Master, Forgive Me!")) player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "I failed, give me another chance to protect you")) st.giveItems(E_APIGA,2) player.sendPacket(ExShowScreenMessage("Fools, here's your end!", 8000)) #newNpc = self.addSpawn(int npcId,x,y,z,heading,randomOffset,despawnDelay,isSummonSpawn,instanceId) newNpc = self.addSpawn(BELETH,16344,213091,-9356,0,False,0,False,npc.instanceId) player.sendPacket(Earthquake(16344,213091,-9356,20,5)) elif npcId == BELETH : if npc.getInstanceId() in self.worlds: world = self.worlds[npc.getInstanceId()] player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "My world.....")) player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Baylorrrrr")) st.giveItems(E_APIGA,2) player.sendPacket(ExShowScreenMessage("Baylor:My Brother, I will avenge you!", 12000)) #newNpc = self.addSpawn(int npcId,x,y,z,heading,randomOffset,despawnDelay,isSummonSpawn,instanceId) newNpc = self.addSpawn(BAYLOR,16344,213091,-9356,0,False,0,False,npc.instanceId) player.sendPacket(Earthquake(16344,213091,-9356,20,5)) elif npcId == BAYLOR : if npc.getInstanceId() in self.worlds: world = self.worlds[npc.getInstanceId()] player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "My death is nothing, your end is near")) player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "You fools ....Aha ha ha ha")) st.giveItems(E_APIGA,1) player.sendPacket(ExShowScreenMessage("..............kill them all!", 8000)) #newNpc = self.addSpawn(int npcId,x,y,z,heading,randomOffset,despawnDelay,isSummonSpawn,instanceId) newNpc = self.addSpawn(TIAT,16344,213091,-9356,0,False,0,False,npc.instanceId) player.sendPacket(Earthquake(16344,213091,-9356,80,5)) elif npcId == TIAT : if npc.getInstanceId() in self.worlds: world = self.worlds[npc.getInstanceId()] player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Ugh.... Defeated.. How!?")) player.sendPacket(ExShowScreenMessage("Congratulations! You Have Defeated Demonic Lord.", 12000)) st.playSound("ItemSound.quest_finish") st.giveItems(E_APIGA,4) st.giveItems(GOLDDRAGON,4) #newNpc = self.addSpawn(int npcId,x,y,z,heading,randomOffset,despawnDelay,isSummonSpawn,instanceId) newNpc = self.addSpawn(CHEST,16225,213040,-9357,0,False,0,False,npc.instanceId) return QUEST = Bloodshedparty(-1, qn, "Bloodshedparty") QUEST.addStartNpc(ROSE) QUEST.addTalkId(ROSE) QUEST.addTalkId(CHEST) QUEST.addKillId(GUARD) QUEST.addKillId(PROTECTOR) QUEST.addKillId(BELETH) QUEST.addKillId(BAYLOR) QUEST.addKillId(TIAT) the error: Line: -1 - Column: -1 Traceback (innermost last): (no code object) at line 0 SyntaxError: ('invalid syntax', ('__init__.py', 160, 17, ' if st.getQuestItemsCount(ECCACOIN) >= 4 :')) Why does this error appear? Do i need to add something in the checkConditions section or what?
0 estaz Posted November 30, 2010 Author Posted November 30, 2010 please, someone, help me, i really need this code.. bump
0 estaz Posted December 4, 2010 Author Posted December 4, 2010 problem solved by varens :) thank you :) . someone can lock the topic now.
Question
estaz
Hi everyone :)
I wanted to ask you, what have to be the code, to take item in order to enter instance (party and solo instances) in .py files .
Thanks.
- estaz
13 answers to this question
Recommended Posts