Jump to content
  • 0

[HELP] onEnter fee for instance


Question

Posted

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

  • 0
Posted

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
Posted

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
Posted

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
Posted

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?

Guest
This topic is now closed to further replies.


×
×
  • Create New...