Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
проблема с Евентом
#1
возникла проблема после добавления евента LastHiro на сборку скории, суть проблемы в том что после нажатия в окошке Участвовать, окошко проподает и в геим сервере показивает вот ето: http://s016.radikal.ru/i336/1010/97/1705bd07ac01.jpg

Но после второй попытке регает без проблем, может кто подскажит в чём проблема? может в импортах или питоне?
Ответ
#2
Твой захламленный рабочий стол видно, но вот ошибку не очень.
Заодно скрипт эвента бы выложил.
P.S. ошибку из консоли можно было в виде текста показать.
Ответ
#3
Array Написал:Твой захламленный рабочий стол видно, но вот ошибку не очень.
Заодно скрипт эвента бы выложил.
P.S. ошибку из консоли можно было в виде текста показать.


Не повериш, рабочий стол каждый день чишюBig Grin,

PHP код:
<?php 
Вот сам инит
.ру :

import sys
from com
.l2scoria.gameserver.model.quest import State
from com
.l2scoria.gameserver.model.quest import QuestState
from com
.l2scoria.gameserver.datatables.csv import DoorTable
from com
.l2scoria.gameserver.datatables import SkillTable
from com
.l2scoria.gameserver.model.quest.jython import QuestJython as JQuest
from com
.l2scoria.gameserver.model.entity import Announcements
from com
.l2scoria.util.database import L2DatabaseFactory
from com
.l2scoria.gameserver.ai import CtrlIntention
from com
.l2scoria.util.random import Rnd
from java
.lang import System
from com
.l2scoria.gameserver.model import L2World

qn
= "777_LastHero"
# =======================================#
# Настройки #
# =======================================#
# Название Эвента (только английские символы)
Event_name = "LastHero"

# Город, в котором вы хотите поставить регистрирующего НПЦ.
StartLocation = "Giran"

# ID-номер регистрирующего нпц
Reg_Npc = 31230

# Координаты, где будет появляться регистрирующий НПЦ
StartNpcCoordinat = [83238,148623,-3400]

# Вещи, необходимый для участия в Эвенте.
# Формат записи [itemId1,itemId2,....]
Price = [57]

# Сколько заданных вещей необходимых для участия в Эвенте. Если хотите чтобы участие было бесплатным - поставте 0.
# Формат записи [itemId1_count,itemId2_count,....]
Price_count = [0]

# Минимальный уровень, на котором игрок сможет принять участие в Эвенте.
Min_level = 1

# Через какое время эвент запустится после рестарта сервера.(указывать в секундах)
Time_to_start_after_restart = 3600

# Через какое время после телепортации на эвент начнеться битва.(указывать в секундах)
Time_to_wait_battle = 30

# Длительность эвента. (указывать в минутах)
EVENT_INTERVAL = 5

# Время между Эвентами.(указывать в минутах)
Time_to_next_start = 3600

# Время на регистрацию.(указывать в минутах)
Time_for_regestration = 20

# Как часто аннонсить о регистрации на Эвент.(указывать в секундах)
Announce_reg_delay = 300

# Минимальное количество игроков(не меньше 2).
Min_participate_count = 2

# Максимальное количество игроков.
Max_participate_count = 80

# Список наград при победе в эвенте. Выдаётся каждому игроку.
# Формат записи: [[itemId1,count1,chance1],[itemId2,count2,chanceN],...]
Rewards = [[4356,500,100],[6393,100,100]]

# Координаты точки куда будут телепортироваться игроки.
Teleport_coordinat = [149438, 46785, -3413]

# Двери которые будут закрываться на периоод прохождения эвента.
# Формат записи: [Door_id1,Door_id2,...]
Doors = [24190002,24190003]


# ================Неизменять================ #
lastPlayers = []
lastX = []
lastY = []
lastZ = []
closed = 1
Players
= []
Deadplayers = []
annom = 1
f
= 0
# ========================================== #

class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

def init_LoadGlobalData(self) :
self.startQuestTimer("open_reg", Time_to_start_after_restart *1000, None, None)
return

def onTalk (Self,npc,player):
global
Players,closed
st
= player.getQuestState(qn)
npcId = npc.getNpcId()
if
npcId == Reg_Npc:
if
closed<>1:
if
not player.isInOlympiadMode() :
if
player.getLevel() >= Min_level:
if
player.getName() not in Players:
if
len(Players) <= Max_participate_count :
if
Price_count[0]<>0:
if
st.getQuestItemsCount(Price[0])>Price_count[0]:
st.takeItems(Price[0],Price_count[0])
Players.append(player.getName())
return
"reg.htm"
else:
st.exitQuest(1)
return
"noPrice.htm"
else:
Players.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
Deadplayers,Players,annom,closed,Doors,lastPlayers,lastX,lastY,lastZ,f,n
if event == "open_reg" :
closed = 0
annom
= 1
lastPlayers
= []
Players = []
Deadplayers = []
lastX = []
lastY = []
lastZ = []
npc = self.addSpawn(Reg_Npc,StartNpcCoordinat[0],StartNpcCoordinat[1],StartNpcCoordinat[2],30000,False,0)
self.startQuestTimer("wait_battle", Time_for_regestration*60000, npc, None)
self.startQuestTimer("announce", Announce_reg_delay*1000, None, None)
Announcements.getInstance().announceToAll("Opened registration for "+str(Event_name)+" event! You can register in "+str(StartLocation)+".")
if
event == "start_event":
if
len(Players)< Min_participate_count :
closed=1
Announcements
.getInstance().announceToAll("Event "+str(Event_name)+" was canceled due lack of participation.")
self.startQuestTimer("set_winner", 1000, None, None)
self.startQuestTimer("open_reg", Time_to_next_start*60000, None, None)
else:
closed=1
Announcements
.getInstance().announceToAll("Event "+str(Event_name)+" has started!")
self.startQuestTimer("konec", EVENT_INTERVAL*60000, None, None)
f=0
for nm in Players :
i=L2World.getInstance().getPlayer(nm)
if
i<>None:
if
i.isOnline() :
i.getAppearance().setVisible()
i.broadcastStatusUpdate()
i.broadcastUserInfo()
while
len(Players)>1 :
for
nm in Players :
i=L2World.getInstance().getPlayer(nm)
if
i<>None:
if
i.isDead():
i.reviveAnswer(0)
Deadplayers.append(i.getName())
Players.remove(i.getName())
self.startQuestTimer("set_winner", 1000, None, None)
if
event == "announce" and closed==0 and (Time_for_regestration*60 - Announce_reg_delay * annom)>0:
Announcements.getInstance().announceToAll(str(Time_for_regestration*60 - Announce_reg_delay * annom ) + " seconds until event "+str(Event_name)+" will start! You can register in "+str(StartLocation)+".")
annom=annom+1
self
.startQuestTimer("announce", Announce_reg_delay*1000, None, None)
if
event == "set_winner" :
if
len(Players) > 0 and len(Players + Deadplayers) >= Min_participate_count:
winner=L2World.getInstance().getPlayer(Players[0])
Deadplayers.append(Players[0])
if
winner.isDead():
Announcements.getInstance().announceToAll("Event "+str(Event_name)+" has ended. All players is dead. Nobody Win")
else :
f=1
Announcements
.getInstance().announceToAll("Event "+str(Event_name)+" has ended. "+str(Players[0])+" win!")
for
nm in Deadplayers :
i=L2World.getInstance().getPlayer(nm)
if
i<>None and i.isOnline():
if
i.isDead():
i.doRevive()
i.setCurrentCp(i.getMaxCp())
i.setCurrentHp(i.getMaxHp())
i.setCurrentMp(i.getMaxMp())
i.stopAllEffects()
i.broadcastStatusUpdate()
i.broadcastUserInfo()
if
len(Deadplayers)>0:
n = 0
for nm in lastPlayers :
i=L2World.getInstance().getPlayer(nm)
i.teleToLocation(lastX[n],lastY[n],lastZ[n])
n = n + 1
if winner<>None:
if
winner.isOnline() :
L2World.getInstance().getPlayer(Players[0]).setHero(True)
Announcements.getInstance().announceToAll("Next time registration opend at "+str(Time_to_next_start)+" minute(s)")
for
d in Doors:
door = DoorTable.getInstance().getDoor(d)
door.openMe()
lastPlayers = []
Players = []
Deadplayers = []
lastX = []
lastY = []
lastZ = []
self.startQuestTimer("open_reg", Time_to_next_start*60000, None, None)
if
event == "exit" :
if
player.getName() in Players:
Players.remove(player.getName())
return
"exit.htm"
else:
return
"default.htm"

if event == "konec" :
if
f==0:
for
nm in Players :
i=L2World.getInstance().getPlayer(nm)
if
i<>None:
if
i.isOnline() :
i.teleToLocation(82698,148638,-3468)
i.broadcastStatusUpdate()
i.broadcastUserInfo()
Announcements.getInstance().announceToAll("Event "+str(Event_name)+" was ended in drawn.")
self.startQuestTimer("open_reg", Time_to_next_start*60000, None, None)

if
event == "wait_battle":
npc.deleteMe()
if
len(Players) >= Min_participate_count:
for
nm in Players:
i=L2World.getInstance().getPlayer(nm)
if
i<>None:
if
not i.isOnline() or i.isInOlympiadMode() or i.isInJail():
Players.remove(nm)
else:
Players.remove(nm)
for
nm in Players:
i=L2World.getInstance().getPlayer(nm)
if
i<>None:
if
i.isOnline() :
if
i.isDead():
i.doRevive()
i.setCurrentCp(i.getMaxCp())
i.setCurrentHp(i.getMaxHp())
i.setCurrentMp(i.getMaxMp())
i.stopAllEffects()
i.getAppearance().setInvisible();
i.broadcastStatusUpdate()
i.broadcastUserInfo()
lastPlayers.append(nm)
lastX.append(i.getX())
lastY.append(i.getY())
lastZ.append(i.getZ())
i.teleToLocation(Teleport_coordinat[0],Teleport_coordinat[1],Teleport_coordinat[2])
for
d in Doors:
door = DoorTable.getInstance().getDoor(d)
door.closeMe()
Announcements.getInstance().announceToAll("Event "+str(Event_name)+": Registration close. You have "+str(Time_to_wait_battle)+" seconds for buffs before battle start")
self.startQuestTimer("start_event", Time_to_wait_battle*1000, None, None)
else :
self.startQuestTimer("start_event", 1000, None, None)

QUEST = Quest(777, qn, "Custom")

QUEST.addStartNpc(int(Reg_Npc))
QUEST.addTalkId(int(Reg_Npc))

шяс сделаю по больше скрин ГС

Вот: http://s013.radikal.ru/i324/1010/ef/f61500c195ec.jpg

Добавлено через 11 часов 7 минут
может что то с питоном? вот с другова квеста:

PHP код:
<?php 
# Made by Mr. - Version 0.3 by DrLecter
import sys
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

qn
= "4_LongLiveLordOfFlame"

HONEY_KHANDAR,BEAR_FUR_CLOAK,BLOODY_AXE,ANCESTOR_SKULL,SPIDER_DUST,DEEP_SEA_ORB = range(1541,1547)
NPC_GIFTS = {30585:BEAR_FUR_CLOAK,30566:HONEY_KHANDAR,30562:BLOODY_AXE,30560:ANCESTOR_SKULL,30559:SPIDER_DUST,30587:DEEP_SEA_ORB}

class
Quest (JQuest) :

def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

def onEvent (self,event,st) :
htmltext = event
if event == "30578-03.htm" :
st.set("cond","1")
st.set("id","1")
st.setState(STARTED)
st.playSound("ItemSound.quest_accept")
return
htmltext

def onTalk
(self,npc,player):
htmltext = "<html><body>You are either not carrying out your quest or don't meet the criteria.</body></html>"
st = player.getQuestState(qn)
if
not st : return htmltext

npcId
= npc.getNpcId()
id = st.getState()
cond = st.getInt("cond")
if
id == COMPLETED :
htmltext = "<html><body>This quest has already been completed.</body></html>"
elif npcId == 30578 :
if
cond == 0 :
if
player.getRace().ordinal() != 3 :
htmltext = "30578-00.htm"
st.exitQuest(1)
elif player.getLevel() >= 2 :
htmltext = "30578-02.htm"
else:
htmltext = "30578-01.htm"
st.exitQuest(1)
elif cond == 1 :
htmltext = "30578-04.htm"
elif cond == 2 :
htmltext = "30578-06.htm"
st.giveItems(4,1)
for
item in NPC_GIFTS.values():
st.takeItems(item,-1)
st.unset("cond")
st.setState(COMPLETED)
st.playSound("ItemSound.quest_finish")
elif npcId in NPC_GIFTS.keys() and cond == 1 and id == STARTED:
item=NPC_GIFTS[npcId]
npc=str(npcId)
if
st.getQuestItemsCount(item) :
htmltext = npc+"-02.htm"
else :
st.giveItems(item,1)
htmltext = npc+"-01.htm"
count = 0
for item in NPC_GIFTS.values():
count += st.getQuestItemsCount(item)
if
count == 6 :
st.set("cond","2")
st.set("id","2")
st.playSound("ItemSound.quest_middle")
else :
st.playSound("ItemSound.quest_itemget")
return
htmltext

QUEST
= Quest(4,qn,"Long Live the Paagrio Lord")
CREATED = State('Start', QUEST)
STARTING = State('Starting', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30578)

QUEST.addTalkId(30578)

QUEST.addTalkId(30559)
QUEST.addTalkId(30560)
QUEST.addTalkId(30562)
QUEST.addTalkId(30566)
QUEST.addTalkId(30578)
QUEST.addTalkId(30585)
QUEST.addTalkId(30587)

for
i in range(1541,1547) :
STARTED.addQuestDrop(30578,i,1)

Добавлено через 23 часа 7 минут
вот после окончания евента ( тоесть не хватило сареганых на евент )
выдаёт питон ошыбку вот скрин http://s010.radikal.ru/i314/1011/25/d4fc44f7f689.jpg

вот пункт 202 :

Announcements.getInstance().announceToAll("Next time registration opend at "+str(Time_to_next_start)+" minute(s)")
for d in Doors:
door = DoorTable.getInstance().getDoor(d)
door.openMe()

может изза етого?
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Проблема с квестами "Письма Кекропуса" Metallurg1985 0 550 11-05-2023, 07:01 PM
Последний пост: Metallurg1985
  Проблема с баферами Mor9k400 4 1,918 09-10-2018, 09:08 PM
Последний пост: Mor9k400
  Проблема с созданием персонажа Trufan 3 1,935 08-18-2016, 01:26 PM
Последний пост: Gaikotsu
  Проблема с custom jscripts. Сборка pw ESCfromReality 2 1,993 08-14-2016, 04:05 PM
Последний пост: KID
  Проблема с компилом Nez 2 1,736 08-04-2016, 04:08 PM
Последний пост: Nez
  Проблема с квестом взросление дракончика nemoruss 3 1,786 01-29-2016, 01:35 AM
Последний пост: nemoruss
  Проблема с квестом Elrokian Hunter's Proof Goffa 1 1,488 01-26-2016, 12:04 PM
Последний пост: GenCloud
  Проблема с лучниками vanyahunter123 3 1,700 12-13-2015, 09:15 AM
Последний пост: HiredKiller
  Проблема с скриптом DroNik 1 1,371 08-10-2015, 12:20 AM
Последний пост: Mosinnik
  Проблема с скриптом ownedbyhard 0 1,095 07-16-2015, 03:48 PM
Последний пост: ownedbyhard

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)