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.


  • Posts

    • My official facebook profile!: https://www.facebook.com/spectrumL2 Specifications: Revamped L2JACIS revision FROM the core Private project!!! Revision that has been receiving corrections for over 3 years!!! Events already installed in the revision: TVT CTF KTB PARTY FARM SPOIL EVENT CRAZY RATES TOURNAMENT TIME ZONE (INSTANCE) All working correctly!!! SIEGE ESSENTIAL FEATURES: Walls fix Gates fix Flags fix 100% functional: OLYMPIADS: Implemented settings Hero receives enchanted Weapons with equal status PvP Weapons Optional /true/false Hero can acquire all Hero Weapons Optional true/false OTHER IMPLEMENTATIONS: Teleport fixed (directly to Giran) Teleport effect classic Vip skins vip collor name Pack NPCs with effect already configured BOSES already configured Mobs already configured CLASS BALANCE SPECIAL SYSTEM We have a SPECIAL system developed for Class Balance with only 1 digit in XML %tage of configurable debuffs Player limitation system in BOSES or PvP zones BS blocking system in FLEG zones or events Among others dozens of improvements made in the review... price: 390 USD !  OBS: WE CAN CHANGE THE BANNER AND NAME OF THE SERVICE TO THE ONE OF YOUR PREFERENCE BUT THE SETTINGS MUST BE KEPT ANY CHANGES REQUIRE ADDITION        
    • Server is Online – 1,000+ Active Players! We’re excited to announce the addition of a Europe Proxy to improve connectivity for our EU players! Clans can now benefit from VIP Access to help you catch up faster. 🎯 If you're a clan leader with at least 9 active members, join our Discord and open a ticket to claim your VIP rewards!  
    • The Telegram team is rolling out a new batch of Stars-only gifts you’ll be able to mint as NFTs. Don’t miss your chance to join the next Telegram trend and earn from it! Buy Telegram Stars cheap and KYC-free 1 Star from $0.0149 (min. 50 Stars, bulk discounts available) Promo code STARS5 — 5 % off Pay any way you like: bank cards · crypto · other popular methods How to purchase: ➡Online Store — Click ➡ Telegram bot — Click Other services: ➡ SMM panel — Click Regular buyers get extra discounts and promo codes. Support: ➡ Telegram: https://t.me/solomon_bog ➡ Telegram channel: https://t.me/accsforyou_shop ➡ Discord: https://discord.gg/y9AStFFsrh ➡ WhatsApp: https://wa.me/79051904467 ➡ Email: solomonbog@socnet.store Use these contacts to discuss wholesale orders, partnerships (current list: https://socnet.bgng.io/partners) or to become a supplier. SocNet — your shop for digital goods and premium subscriptions
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock