Jump to content

Question

Posted

I spent the following script in freya server

import sys
from com.l2jserver.gameserver.instancemanager        import InstanceManager
from com.l2jserver.gameserver.model                  import L2ItemInstance
from com.l2jserver.gameserver.model.actor            import L2Summon
from com.l2jserver.gameserver.model.entity           import Instance
from com.l2jserver.gameserver.model.itemcontainer    import PcInventory
from com.l2jserver.gameserver.model.quest            import State
from com.l2jserver.gameserver.model.quest            import QuestState
from com.l2jserver.gameserver.model.quest.jython     import QuestJython as JQuest
from com.l2jserver.gameserver.network.serverpackets  import CreatureSay
from com.l2jserver.gameserver.network.serverpackets  import InventoryUpdate
from com.l2jserver.gameserver.network.serverpackets  import MagicSkillUse
from com.l2jserver.gameserver.network.serverpackets  import SystemMessage
from com.l2jserver.gameserver.network.serverpackets  import ExShowScreenMessage
from com.l2jserver.gameserver.network.serverpackets  import Earthquake
from com.l2jserver.gameserver.network                import SystemMessageId
from com.l2jserver.gameserver.util                   import Util
from com.l2jserver.util                              import Rnd

qn = "BloodEmpires"

#Items
E_APIGA	= 14720
ADENA	= 57
STONE	= 9576
SCROLL	= 960

#NPCs
ROSE = 65051
CHEST = 65052

#Monsters
NAGLFAR = 65053
SENTRY1 = 65054
SENTRY2 = 65055
HOUND = 65056
#Doors
DOOR1	= 12240001
DOOR2	= 12240002

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 party:
	player.sendPacket(SystemMessage.sendString("You may not enter with a party."))
	return False
if not player.getLevel() >= 84:
	player.sendPacket(SystemMessage.sendString("You must be level 84 or higher to enter."))
	return False
if not party:
	return True
return False

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
	teleportplayer(self,player,teleto)
	return instanceId
return instanceId

def exitInstance(player,tele):
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)

class TrueFight(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 :
		tele = PyObject()
		tele.x = -238599
		tele.y = 219983
		tele.z = -10144
		enterInstance(self, player, "BloodEmpires.xml", tele)
		st.playSound("ItemSound.quest_middle")
	elif npcId == CHEST :
		npc.decayMe()
		tele = PyObject()
		tele.x = 82200
		tele.y = 148347
		tele.z = -3467
		exitInstance(player,tele)
		st.giveItems(ADENA,27500000)
		st.giveItems(STONE,2)
		st.giveItems(SCROLL,2)
		st.playSound("ItemSound.quest_finish")
		player.sendPacket(ExShowScreenMessage("Solo Instance Event (84+): Completed", 8000))
	return

def onKill(self,npc,player,isPet):
	st = player.getQuestState(qn)
	npcId = npc.getNpcId()
	if npcId == SENTRY1 :
		if npc.getInstanceId() in self.worlds:
			world = self.worlds[npc.getInstanceId()]
			st.playSound("ItemSound.quest_middle")
			player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Master, Fight or Die!!!"))
			st.giveItems(E_APIGA,2)
			openDoor(DOOR1,npc.instanceId)
	elif npcId == SENTRY2 :
		if npc.getInstanceId() in self.worlds:
			world = self.worlds[npc.getInstanceId()]
			st.playSound("ItemSound.quest_middle")
			player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Master, Fight or Die!!!"))
			st.giveItems(E_APIGA,2)
			openDoor(DOOR2,npc.instanceId)
	elif npcId == HOUND :
		if npc.getInstanceId() in self.worlds:
			world = self.worlds[npc.getInstanceId()]
			st.playSound("ItemSound.quest_middle")
			st.giveItems(E_APIGA,3)
			player.sendPacket(ExShowScreenMessage("Demonic Lord Naglfar Has Appeared!", 8000))
			newNpc = self.addSpawn(NAGLFAR,-242754,219982,-9985,306,False,0,False,npc.instanceId)
			player.sendPacket(Earthquake(240826,219982,-9985,20,10))
	elif npcId == NAGLFAR :
		if npc.getInstanceId() in self.worlds:
			world = self.worlds[npc.getInstanceId()]
			player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "-beep-!-beep-!-beep-!!!... Defeated... How!???"))
			player.sendPacket(ExShowScreenMessage("Congratulations Adventurer! You Have Defeated Demonic Lord Naglfar.", 12000))
			st.playSound("ItemSound.quest_fanfare_2")
			st.giveItems(E_APIGA,6)
			newNpc = self.addSpawn(CHEST,-242754,219982,-9985,306,False,0,False,npc.instanceId)
	return

QUEST = BloodEmpires(-1, qn, "BloodEmpires")

QUEST.addStartNpc(65051)

QUEST.addTalkId(65051)
QUEST.addTalkId(65052)

QUEST.addKillId(65053)
QUEST.addKillId(65056)
QUEST.addKillId(65054)
QUEST.addKillId(65054)

and I caused the error below

Error on: C:\Users\Jimmat0s\Desktop\sever1\gameserver\data\scripts\instances\BloodEmpires\__init__.py.error.log
Line: -1 - Column: -1

Traceback (innermost last):
  File "__init__.py", line 189, in ?
NameError: BloodEmpires

plz help me...

5 answers to this question

Recommended Posts

  • 0
Posted

now have this error

Error on: C:\Users\Jimmat0s\Desktop\sever1\gameserver\data\scripts\instances\BloodEmpires\__init__.py.error.log
Line: -1 - Column: -1

Traceback (innermost last):
  File "__init__.py", line 189, in ?
NameError: Quest

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • SSAO was in the game but was removed due to performance. I will revisit it. We have god rays and volumetric fog already (mind you, the god rays are a low-resolution screen-space radial effect, and fog volumes are unshadowed). It is something else I want to revisit, but I need to balance performance and quality. The only thing we haven't added is depth of field, which I might look into.    
    • Put your NC Soft rules in the Ass and shut da fak up! Nobody cares what theres money grabers think or write or claim! If not people like Elfo and other fans this game will be not known, NC Soft must suck the dicks to Everyone coz olif not people this will be another garbage.
    • the problem isnt the tech, its what you build on top of it. running a live server on a closed binary you didnt compile is risky by default. you cant audit it, you cant patch it, and when something breaks you dont have the source to know why.   the usual “but everyone uses the ncsoft client” is exactly the point. that binary isnt safe because its third party, its safe DESPITE being third party, for one reason only: 20 years of thousands of ppl tearing it apart byte by byte. whole protocol is documented, no surprises left. if it had anything weird in it we would have found it a decade ago.   this client is the opposite. its a fresh binary that a couple ppl looked at for a few days. and who made it matters. ncsoft is a dead corp that couldnt care less about your private server. this one is from a project thats alive, from someone who most likely doesnt want his client running someone elses server. im not saying it has anything in it. im saying you cant audit it and the author is not a neutral party. add that this same thread shows it gets reversed in days, so it gives you zero protection and full dependency.   for a weekend project who cares. for something with real players i wouldnt build my server on that.
    • Can I suggest some things. I'm not experienced with 3D graphics but I have the belief that they are easily implemented with high impact: Screen-Space Ambient Occlusion : Can this be added for mesh/objects (not npc/players cause it might be too tough on performance). Volumetric Fog / Gods Rays : Going through trees or local structures / meshes such as ruins, this will look amazing.   Depth of Field : I'm not sure if this is going to look good, but when you target a player, make the game focus on that layer of distance ? 
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..