L2day и пекло на скории
Сборка: Interlude,Scoria 3.0 U84
Суть проблемы - не работает(
Помогите переделать эти ивенты
вот скрипты
Пекло
from net.sf.l2j.gameserver.model.quest import State
from net.sf.l2j.gameserver.model.quest import QuestState
from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
from net.sf.l2j.gameserver import Announcements
from net.sf.l2j import L2DatabaseFactory
from net.sf.l2j.gameserver.ai import CtrlIntention
from net.sf.l2j.util import Rnd
from java.lang import System
from net.sf.l2j.gameserver.model import L2World
qn = "5555_Peklo"
annom=1
ATTAKERS = []
tek = 0
nyj = 1
res_timer = 0
closed = 1
# =======================================
# config
# =======================================
NAME = "Peklo" # name
LOC = "Giran" # NPC loc.
REGISTER = 55557 # NPC id
locr = [83510,148831,-3405] # NPC (/loc)
PENI = 4037 # Item for registration
PENI_KOL = 0 # Items need for registration
LEVEL = 76 # Minimal level for registration
AFTER_RESTART = 60 # Time, after restart gameserver
TIME_FOR_WAIT = 90 # time for wait between events
TIME_FOR_REG = 10 # registration time
ANNOUNCE_INTERVAL = 2 # announce event interval
MOB = 55556 # id mob
locf = [149511,46714,-3410] # mob (/loc)
locfp = [149511,46714,-3410] # characters (/loc)
RESAEM = 1 # respawn players
RADIUS = 500 # radius of mob respawn with any mobs
YCH_MIN = 1 # minimal users
YCH_MAX = 60 # maximum users
MOBS_TO_CHEL = 2 # mobs for 1 player
CANCEL_TIME = 10 # time for cancel event
RES_TIME = 15 # respawn players time
REWARD =[[9999,4,100],[9997,15,100],[4037,3,15]] # Rewards
X_MIN = 79000 # min x
X_MAX = 86000 # max x
Y_MIN = -19000 # min y
Y_MAX = -14500 # max y
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def init_LoadGlobalData(self) :
self.startQuestTimer("open", AFTER_RESTART *60000, None, None)
return
def onTalk (Self,npc,player):
global closed
st = player.getQuestState(qn)
global ATTAKERS
npcId = npc.getNpcId()
if npcId == REGISTER:
if closed<>1:
if not player.isInOlympiadMode() :
if player.getLevel() >= LEVEL:
if player.getName() not in ATTAKERS :
kolych = len(ATTAKERS)
if kolych <= YCH_MAX :
if PENI_KOL<>0:
if st.getQuestItemsCount(PENI)>PENI_KOL:
st.takeItems(PENI,PENI_KOL)
ATTAKERS.append(player.getName())
return "reg.htm"
else:
st.exitQuest(1)
return "nopeni.htm"
else:
ATTAKERS.append(player.getName())
return "reg.htm"
else:
return "max.htm"
else:
return "yje.htm"
else:
return "lvl.htm"
else:
return "You register in olympiad games now"
else:
return "noreg.htm"
return
def onAdvEvent (self,event,npc,player):
global res_timer,tek,nyj,ATTAKERS,kolych,annom,closed,RESAEM
if event == "res" and res_timer==1 and RESAEM==1:
self.startQuestTimer("res", RES_TIME*1000, None, None)
for nm in ATTAKERS:
i=L2World.getInstance().getPlayer(nm)
if i<>None:
if i.isOnline():
if i.getX() not in range(X_MIN,X_MAX) or i.getY() not in range(Y_MIN,Y_MAX):
i.teleToLocation(locfp[0],locfp[1],locfp[2])
if i.isDead():
i.doRevive()
i.setCurrentCp(i.getMaxCp())
i.setCurrentHp(i.getMaxHp())
i.setCurrentMp(i.getMaxMp())
i.teleToLocation(locfp[0],locfp[1],locfp[2])
if event == "open" :
ATTAKERS=[]
closed=0
annom=1
npc=self.addSpawn(REGISTER,locr[0],locr[1],locr[2],30000,False,0)
self.startQuestTimer("close", TIME_FOR_REG*60000, npc, None)
self.startQuestTimer("announce", ANNOUNCE_INTERVAL*60000, None, None)
Announcements.getInstance().announceToAll("Opened registration for "+str(NAME)+" event! You can register in "+str(LOC)+".")
if event == "close":
res_timer = 1
tek=0
nyj=1
self.startQuestTimer("res", RES_TIME*1000, None, None)
self.startQuestTimer("open", TIME_FOR_WAIT*60000, None, None)
kolych = len(ATTAKERS)
if kolych < YCH_MIN :
npc.deleteMe()
closed=1
Announcements.getInstance().announceToAll("Event "+str(NAME)+" was canceled due lack of participation.")
else:
closed=1
Announcements.getInstance().announceToAll("Event "+str(NAME)+" has started!")
npc.deleteMe()
self.addSpawn(MOB,locf[0],locf[1],locf[2],30000,False,CANCEL_TIME*60000)
self.startQuestTimer("return_l", CANCEL_TIME*60000, None, None)
for nm in ATTAKERS :
i=L2World.getInstance().getPlayer(nm)
if i<>None:
if i.isOnline() :
i.teleToLocation(locfp[0],locfp[1],locfp[2])
if event == "announce" and closed==0 and (TIME_FOR_REG - ANNOUNCE_INTERVAL * annom)<>0:
Announcements.getInstance().announceToAll(str(TIME_FOR_REG - ANNOUNCE_INTERVAL * annom ) + " minutes until event "+str(NAME)+" will start! You can register in "+str(LOC)+". There are "+str(len(ATTAKERS))+" players in Event.")
annom=annom+1
self.startQuestTimer("announce", ANNOUNCE_INTERVAL*60000, None, None)
if event == "return" :
res_timer = 0
Announcements.getInstance().announceToAll("Event "+str(NAME)+" has ended. Players win!")
for nm in ATTAKERS :
i=L2World.getInstance().getPlayer(nm)
if i<>None:
if i.isOnline() :
i.teleToLocation(locr[0],locr[1],locr[2])
if event == "return_l" :
res_timer = 0
Announcements.getInstance().announceToAll("Event "+str(NAME)+" has ended. Monsters win!")
for nm in ATTAKERS :
i=L2World.getInstance().getPlayer(nm)
if i<>None:
if i.isOnline() :
i.teleToLocation(locr[0],locr[1],locr[2])
if event == "exit" :
ATTAKERS.remove(player.getName())
return "exit.htm"
return
def onAttack (self,npc,player,damage,isPet):
if player.getName() not in ATTAKERS :
player.teleToLocation(147725,-56517,9999)
return
def onKill(self,npc,player,isPet):
global tek,nyj,kolych
mobcount=(MOBS_TO_CHEL * kolych)
tek=tek+1
if tek==nyj and (2*nyj) < mobcount:
for i in range(0,2*tek) :
rand = Rnd.get(7)
if rand in [0,4] :
randx = 25*Rnd.get(20)
randy = 25*Rnd.get(20)
elif rand in [1,5] :
randx = -25*Rnd.get(20)
randy = -25*Rnd.get(20)
elif rand in [2,6] :
randx = 25*Rnd.get(20)
randy = -25*Rnd.get(20)
elif rand in [3,7] :
randx = -25*Rnd.get(20)
randy = 25*Rnd.get(20)
self.addSpawn(MOB,locf[0] + randx, locf[1] + randy, locf[2]+100,30000,False,CANCEL_TIME*60000)
nyj=2*tek
tek=0
self.cancelQuestTimer("return_l",None,None)
self.startQuestTimer("return_l", CANCEL_TIME*60000, None, None)
Announcements.getInstance().announceToAll("Event "+str(NAME)+": You have "+str(CANCEL_TIME)+" minutes for kill this monsters!")
elif tek==nyj and (2*nyj) > mobcount:
for i in range(0,mobcount) :
rand = Rnd.get(7)
if rand in [0,4] :
randx = 25*Rnd.get(20)
randy = 25*Rnd.get(20)
elif rand in [1,5] :
randx = -25*Rnd.get(20)
randy = -25*Rnd.get(20)
elif rand in [2,6] :
randx = 25*Rnd.get(20)
randy = -25*Rnd.get(20)
elif rand in [3,7] :
randx = -25*Rnd.get(20)
randy = 25*Rnd.get(20)
mobb=self.addSpawn(MOB,locf[0] + randx, locf[1] + randy, locf[2]+100,30000,False,CANCEL_TIME*60000)
nyj=mobcount+1
tek=0
self.cancelQuestTimer("return_l",None,None)
self.startQuestTimer("return_l", (CANCEL_TIME)*60000, None, None)
Announcements.getInstance().announceToAll("Event "+str(NAME)+": You have "+str(CANCEL_TIME)+" minutes for kill this monsters!")
elif tek==mobcount:
for nm in ATTAKERS :
i=L2World.getInstance().getPlayer(nm)
if i<>None:
for id, count, chance in REWARD :
if Rnd.get(100)<=chance :
i.getQuestState(qn).giveItems(id,count)
self.startQuestTimer("return", 30000, None, None)
self.cancelQuestTimer("return_l",None,None)
return
QUEST = Quest(5555, qn, "Peklo")
QUEST.addKillId(int(MOB))
QUEST.addAttackId(int(MOB))
QUEST.addStartNpc(int(REGISTER))
QUEST.addTalkId(int(REGISTER))
Л2дей
from net.l2emuproject.gameserver.model.quest import State
from net.l2emuproject.gameserver.model.quest import QuestState
from net.l2emuproject.gameserver.model.quest.jython import QuestJython as JQuest
### Settings
qn = "5011_l2day"
QuestDesc = "custom"
InitialHtml = "1.htm"
### Items - Format [name, giveItemId, giveItemQty, giveItem1Id, giveItem1Qty, giveItem2Id, giveItem2Qty, giveItem3Id, giveItem3Qty, giveItem4Id, giveItem4Qty, takeItem1Id, takeItem1Qty, takeItem2Id, takeItem2Qty, takeItem3Id, takeItem3Qty, takeItem4Id, takeItem4Qty, takeItem5Id, takeItem5Qty, takeItem6Id, takeItem6Qty, takeItem7Id, takeItem7Qty, takeItem8Id, takeItem8Qty, takeItem9Id, takeItem9Qty]
Items = [
["Lineage II", 3959, 3, 3958, 3, 3929, 3, 3932, 3, 3882, 1, 3881, 1, 3883, 1, 3877, 2, 3875, 1, 3879, 1, 3888, 1, 3876, 0, 3878, 0],
["NCSOFT", 3958, 1, 3959, 1, 3926, 1, 3927, 1, 3883, 1, 3876, 1, 3886, 1, 3884, 1, 3878, 1, 3887, 1, 3875, 0, 3877, 0, 3879, 0],
["CHRONICLE", 3934, 2, 3959, 2, 3958, 2, 3928, 2, 3876, 2, 3880, 1, 3885, 1, 3884, 1, 3883, 1, 3881, 1, 3882, 1, 3877, 1, 3887, 0]
]
def do_RequestedEvent(event, st, giveItem1Id, giveItem1Qty, giveItem2Id, giveItem2Qty, giveItem3Id, giveItem3Qty, giveItem4Id, giveItem4Qty, takeItem1Id, takeItem1Qty, takeItem2Id, takeItem2Qty, takeItem3Id, takeItem3Qty, takeItem4Id, takeItem4Qty, takeItem5Id, takeItem5Qty, takeItem6Id, takeItem6Qty, takeItem7Id, takeItem7Qty, takeItem8Id, takeItem8Qty, takeItem9Id, takeItem9Qty) :
if st.getQuestItemsCount(takeItem1Id) >= takeItem1Qty and st.getQuestItemsCount(takeItem2Id) >= takeItem2Qty and st.getQuestItemsCount(takeItem3Id) >= takeItem3Qty and st.getQuestItemsCount(takeItem4Id) >= takeItem4Qty and st.getQuestItemsCount(takeItem5Id) >= takeItem5Qty and st.getQuestItemsCount(takeItem6Id) >= takeItem6Qty and st.getQuestItemsCount(takeItem7Id) >= takeItem7Qty and st.getQuestItemsCount(takeItem8Id) >= takeItem8Qty and st.getQuestItemsCount(takeItem9Id) >= takeItem9Qty :
st.takeItems(takeItem1Id, takeItem1Qty)
st.takeItems(takeItem2Id, takeItem2Qty)
st.takeItems(takeItem3Id, takeItem3Qty)
st.takeItems(takeItem4Id, takeItem4Qty)
st.takeItems(takeItem5Id, takeItem5Qty)
st.takeItems(takeItem6Id, takeItem6Qty)
st.takeItems(takeItem7Id, takeItem7Qty)
st.takeItems(takeItem8Id, takeItem8Qty)
st.takeItems(takeItem9Id, takeItem9Qty)
st.giveItems(giveItem1Id, giveItem1Qty)
st.giveItems(giveItem2Id, giveItem2Qty)
st.giveItems(giveItem3Id, giveItem3Qty)
st.giveItems(giveItem4Id, giveItem4Qty)
return "2.htm"
else :
return "You do not have enough materials."
class Quest (JQuest) :
def __init__(self,id,name,descr):
JQuest.__init__(self,id,name,descr)
def onEvent (self,event,st) :
htmltext = event
if event == "0":
return InitialHtml
for item in Items:
if event == str(item[1]):
htmltext = do_RequestedEvent(event, st, item[1], item[2], item[3], item[4], item[5], item[6], item[7], item[8], item[9], item[10], item[11], item[12], item[13], item[14], item[15], item[16], item[17], item[18], item[19], item[20], item[21], item[22], item[23], item[24], item[25], item[26])
if htmltext != event:
st.setState(State.COMPLETED)
st.exitQuest(1)
return htmltext
def onTalk (Self,npcId,player):
st = player.getQuestState(qn)
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.set("cond","0")
st.setState(State.STARTED)
return InitialHtml
QUEST = Quest(QuestId,qn,QuestDesc)
QUEST.addStartNpc(31230)
QUEST.addTalkId(31230)
Попробовал как в бафере переделать net.sf.l2j. на com.l2scoria.
выдает следующие ошибки
L2day
Line: -1 - Column: -1
Traceback (innermost last):
File "__init__.py", line 65, in ?
NameError: QuestId
Пекло
Line: -1 - Column: -1
Traceback (innermost last):
(no code object) at line 0
SyntaxError: ('Lexical error at line 1, column 1. Encountered: "\\u00ff" (255), after : ""', ('__init__.py', 1, 1, '\xFFimport sys'))
Заранее большое спасибо
L2Day:
Найди это:
Поменяй на это
l2day редактнул сервер прогрузился без ошибки на л2дей вызываю нпса 31230 а он мне впаривает что я кв не выполнил
На счёт пекла: создай новый файл .py с такой же кодировкой, которая используется в остальных файлах!
На счёт L2Day: Меняй импорты к серверу в своём файле .py
нпс кот синий появляется при спавне может кто нибуть выложить полный эвент л2дей а то я скачал а там только скрипт и все?
импорты это net.sf.l2j. на com.l2scoria. ?
импорты я сменил все на
from com.l2scoria.gameserver.model.quest import State
from com.l2scoria.gameserver.model.quest import QuestState
from com.l2scoria.gameserver.model.quest.jython import QuestJython as JQuest
__http://depositfiles.com/files/cx4y739f2
Вот пак эвентов .
Тут есть и полный L2Day только под сборку La2base.
Думаю сможеш хтмлки переделать под скорию.
Большое спасибо л2дей заработал)
Может и мне поможите с евентом ПЕКЛО сборка la2base ошибка в логе : Error on: C:\Server\data\scripts\quests\5555_Peklo\__init__.py.error.log
Line: -1 - Column: -1
Traceback (innermost last):
(no code object) at line 0
SyntaxError: ('invalid syntax', ('__init__.py', 104, 103, ' Announcements.getInstance().announceToAll(str(TIME_FOR_REG - ANNOUNCE_INTERVAL * annom - 1) + " minutes until event "+str(NAME)+" will start! You can register in "+str(LOC)+".")'))
За помощью по серверам lineage II обращаться в аську 463659020
на пекле не получается кодировку сменить кто нибуть может выложить с норм кодировкой?
Вот
_http://dump.ru/file/3965037
здесь 2 инит
1)__init__.py - Кодировка ANSI
2)__init__2.py - Кодировка UTF-8
Пробуй что то из этих должно подойти
l2jdb: на пекле не получается кодировку сменить кто нибуть может выложить с норм кодировкой?
Используй редактор Notepad++
xsparco: Может и мне поможите с евентом ПЕКЛО сборка la2base ошибка в логе : Error on: C:\Server\data\scripts\quests\5555_Peklo\__init__.py.error.log
Line: -1 - Column: -1
Traceback (innermost last):
(no code object) at line 0
SyntaxError: ('invalid syntax', ('__init__.py', 104, 103, ' Announcements.getInstance().announceToAll(str(TIME_FOR_REG - ANNOUNCE_INTERVAL * annom - 1) + " minutes until event "+str(NAME)+" will start! You can register in "+str(LOC)+".")'))
Неправильный синтаксис а если быть точней ошибся с отступом.
Line: -1 - Column: -1
Traceback (innermost last):
(no code object) at line 0
SyntaxError: ('invalid syntax', ('__init__.py', 99, 1, 'def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)'))
l2jdb:КодError on: /home/akimm/scor/L2Jscoria-Game/data/scripts/quests/5555_Peklo/__init__.py.error.log
Line: -1 - Column: -1
Traceback (innermost last):
(no code object) at line 0
SyntaxError: ('invalid syntax', ('__init__.py', 99, 1, 'def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)'))
Не соблюдён отступ, редактируйте в notepad++ там всё очень понятно и наглядно.
А если соовсем не чего не понимаешь в Jython тогда не стоит туда лесть.
я не понимаю jython кто нибуть может помочь исправить этот синтаксис? я пользуюсь и ++ и gedit
Методом експерементирования у меня всё таки вышло загрузить квест
Вот рабочий инит . проверял.
Жму на регистрацию и нечего не происходит ошибок при загрузке нету
в общем
_http://dump.ru/file/3965922
вот , рабочий.... я заходил в игру , проверял , регает .
суть того что нужно его не в папку customs а в quests.
подправиш свой хтмл файл.
да и забыл * требовал он итем под идом 4037 ( Coin of Luck)
изменил в конфиге чтоб требовал адену.
всем большое спасибо все работает)


