Доброго времени суток уважаемые форумчане.
Простите если эта тема уже поднималась, я пользовался поиском но точный ответ найти так и не смог.
Суть моей проблемы заключается в следующем.
Есть квест, он грузиться нормально все работает и за определеные монеты дает Геройство.
Но стоит персонажу перезайти и геройсто у него спадает.
Я проверял командой //sethero тоже самое и нет разници укажу я 1 день или 360 дней ,все равно после релога нет геройство и все тут.
вот код евента
kristo1980: Доброго времени суток уважаемые форумчане.
Простите если эта тема уже поднималась, я пользовался поиском но точный ответ найти так и не смог.
Суть моей проблемы заключается в следующем.
Есть квест, он грузиться нормально все работает и за определеные монеты дает Геройство.
Но стоит персонажу перезайти и геройсто у него спадает.
Я проверял командой //sethero тоже самое и нет разници укажу я 1 день или 360 дней ,все равно после релога нет геройство и все тут.
вот код евентаКодimport sys
from net.sf.l2j.gameserver.model.actor.instance import L2PcInstance
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
qn = "9000_NPCHeroAndNobles"
# Quest NPC
NPC=[40000]
# Wings of Destiny Circlet (Hero)
DESTINY=6842
# Noblesse Tiara (Noblesse)
TIARA=7694
# Coin of Luck
COINOFLUCK=4037
# Start pages for quest
StartPages = "startPages.htm"
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onEvent(self,event,st):
htmltext = event
count=st.getQuestItemsCount(COINOFLUCK)
if count < 1 :
htmltext = "noCoinOfLuck.htm"
else:
if event == "1":
if st.getPlayer().isHero() :
return "youHero.htm"
st.setState(State.COMPLETED)
if not st.getPlayer().isHero() :
st.takeItems(COINOFLUCK,1000)
st.getPlayer().setHero(True)
st.giveItems(DESTINY,1)
return "congrYouIsHero.htm"
st.setState(State.COMPLETED)
if event == "3":
if st.getPlayer().isNoble() :
return "youNoble.htm"
st.setState(State.COMPLETED)
if not st.getPlayer().isNoble() :
st.takeItems(COINOFLUCK,15)
st.getPlayer().setNoble(True)
st.giveItems(TIARA,1)
return "congrYouIsNoble.htm"
st.setState(State.COMPLETED)
if htmltext != event:
st.setState(State.COMPLETED)
st.exitQuest(1)
return htmltext
def onTalk (self,npc,st):
htmltext = "exitQuest.htm"
st = st.getQuestState(qn)
st.setState(State.STARTED)
return StartPages
QUEST = Quest(9000, qn, "Hero and Nobles")
for npcId in NPC:
QUEST.addStartNpc(npcId)
QUEST.addTalkId(npcId)
если проблема в коде просьба подсказать где именно.
в базе данных вовремя покупки Геройство не создается строка с таблице `heroes` но геройсто дается и скилы поеявляютя, но стоит сделать релог все слетает(в рюкзаке остается только # Wings of Destiny Circlet (Hero))
Подскажите пожалуйста каким образом в квесте поправить чтоб геройство не слетало и держалось 30 дней.
Заранее большое спасибо за ответ
Спасибо за подсказку, тогда поставлю вопрос ребром как дописать данное чудо приведенное в виде эвента чтоб оно писало в базу? ... пусть даже с активацией херо после рестарта сервера.
Если это не возможно , тогда пожалуйста подскажите где раздобыть эвент наподобие ,последнего героя, для явы.
Если возможно ссылку на данный эвент.
Заранее большое спасибо за ответ.
Я думаю можно вытащить способ из этого скрипта - http://la2base.ru/forum/index.php?s=&s...st&p=212337
— Заболел
DeadAdsl: Я думаю можно вытащить способ из этого скрипта - http://la2base.ru/forum/index.php?s=&s...st&p=212337
kristo1980: Я прошу прощенья за свою назойливость и заранее извиняюсь.
Пожалуйста подробнее покажите что из этого скрипта - http://la2base.ru/forum/index.php?s=&s...st&p=212337
вставить в мой код евента чтоб писало в базу.
вот код евентаКодКод
import sys
from net.sf.l2j.gameserver.model.actor.instance import L2PcInstance
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
qn = "9000_NPCHeroAndNobles"
# Quest NPC
NPC=[40000]
# Wings of Destiny Circlet (Hero)
DESTINY=6842
# Noblesse Tiara (Noblesse)
TIARA=7694
# Coin of Luck
COINOFLUCK=4037
# Start pages for quest
StartPages = "startPages.htm"
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onEvent(self,event,st):
htmltext = event
count=st.getQuestItemsCount(COINOFLUCK)
if count < 1 :
htmltext = "noCoinOfLuck.htm"
else:
if event == "1":
if st.getPlayer().isHero() :
return "youHero.htm"
st.setState(State.COMPLETED)
if not st.getPlayer().isHero() :
st.takeItems(COINOFLUCK,1000)
st.getPlayer().setHero(True)
st.giveItems(DESTINY,1)
return "congrYouIsHero.htm"
st.setState(State.COMPLETED)
if event == "3":
if st.getPlayer().isNoble() :
return "youNoble.htm"
st.setState(State.COMPLETED)
if not st.getPlayer().isNoble() :
st.takeItems(COINOFLUCK,15)
st.getPlayer().setNoble(True)
st.giveItems(TIARA,1)
return "congrYouIsNoble.htm"
st.setState(State.COMPLETED)
if htmltext != event:
st.setState(State.COMPLETED)
st.exitQuest(1)
return htmltext
def onTalk (self,npc,st):
htmltext = "exitQuest.htm"
st = st.getQuestState(qn)
st.setState(State.STARTED)
return StartPages
QUEST = Quest(9000, qn, "Hero and Nobles")
for npcId in NPC:
QUEST.addStartNpc(npcId)
QUEST.addTalkId(npcId)
Я уверен очень многие люди скажут вам спасибо и сейчас и в будущем когда столкнуться с данной проблемой.
Заранее большое спасибо за ответ.
— Заболел
покопался в ядре, откопал следующее:
попытался разобраться в структуре подключения к бд через пион, пока что вышло следующее:
— ^_^
что то я не понял, о каких моментах идет речь
о LaZyHERO что ли? :)
а для чего сделанна двояная проверка?
mazillka, а ты умешь заставлять людей думать :), один тока твой энчантер чего стоит :)
xameleon: mazillka, а ты умешь заставлять людей думать :), один тока твой энчантер чего стоит :)
— ^_^
xameleon:Раскрывающийся текстКодimport sys
from net.sf.l2j.gameserver.model.actor.instance import L2PcInstance
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
qn = "9000_NPCHeroAndNobles"
# Quest NPC
NPC=[90000]
# Wings of Destiny Circlet (Hero)
DESTINY=6842
# Noblesse Tiara (Noblesse)
TIARA=7694
# Coin of Luck
Item=4037
CountHero=2000
CountNooblesse=500
# Start pages for quest
StartPages = "startPages.htm"
#SQL
INSERT_HERO = "INSERT INTO heroes VALUES (?,?,?,?,?)"
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onEvent(self,event,st):
player = st.getPlayer()
count = st.getQuestItemsCount(Item)
charid = player.getObjectId()
classid = player.getClassId().getId()
charname = player.getName()
if count < 1 :
htmltext = "noCoinOfLuck.htm"
elif player.isHero() :
htmltext = "youHero.htm"
st.setState(State.COMPLETED)
elif not player.isNoble() :
htmltext = "noNoble.htm"
st.setState(State.COMPLETED)
else :
if event == "1":
if not player.isHero() :
st.takeItems(Item,CountHero)
st.getPlayer().setHero(True)
st.giveItems(DESTINY,1)
else :
con=L2DatabaseFactory.getInstance().getConnection()
statement = con.prepareStatement(INSERT_HERO)
statement.setInt(1, charid)
statement.setString(2, charname)
statement.setInt(3, classid)
statement.setInt(4, 1)
statement.setInt(5, 1)
statement.execute()
player.sendPacket(UserInfo(player))
htmltext = "congrYouIsHero.htm"
st.setState(State.COMPLETED)
if event == "3":
if player.isNoble() :
htmltext = "youNoble.htm"
st.setState(State.COMPLETED)
if not player.isNoble() :
st.takeItems(Item,CountNooblesse)
player.setNoble(True)
st.giveItems(TIARA,1)
htmltext = "congrYouIsNoble.htm"
st.setState(State.COMPLETED)
if htmltext != event:
st.setState(State.COMPLETED)
st.exitQuest(1)
return htmltext
def onTalk (self,npc,st):
st = player.getQuestState(qn)
if not st : htmltext = "exitQuest.htm"
return htmltext
npcId=npc.getNpcId()
if npcId == NPC :
st.setState(State.STARTED)
return StartPages
QUEST = Quest(9000, qn, "Hero and Nobles")
for npcId in NPC:
QUEST.addStartNpc(npcId)
QUEST.addTalkId(npcId)
print "importing Quest: 9000_NPCHeroAndNobles done"
пишет следующую ошибку:
SyntaxError: ('inconsistent dedent', ('__init__.py', 51, 49, '\t\t\t\t\t\tst.getPlayer().setHero(True)'))
квест отладил, вроде все работает, единственное, методом setHero(True) херо дается только до рестарта клиента, а данные херо которые заносятся в базу, только после рестарта сервера :).
как исправить этот промежуток я не знаю :(, есть у кого нибудь соображения по этому поводу?
мое предположение: херо дается и без рестарта сервера в том случае если у вас есть необходимое чисто очков, и по определенным дням, м.б. можно как то вызвать эту функцию на определенного игрока при выполнении квеста?!
кто то писал что есть команда getHero то есть //gethero nick 1 (1-кол-во дней)
по поводу хиро, подскажите плз как можно сделать хиро ауру(само свечение) нпсу(ч-з скилл или еще как то?)
p.s. ребят может коды под спойлер уберете?