Короче, суть проблемы: не садятся тыквы..
При загрузке сервера пишет:
importing scriptable AI ...
failed to import quest : squash
... done
как я понял, проблема в squash.py.
плз проверти код, а я не очень понимаю питон.
import sys
from net.sf.l2j.gameserver.ai import CtrlIntention
from net.sf.l2j.gameserver.idfactory import IdFactory
from net.sf.l2j.gameserver.datatables import NpcTable
from net.sf.l2j.gameserver.model import L2CharPosition
from net.sf.l2j.gameserver.model.actor.instance import L2GourdInstance
from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
from net.sf.l2j.gameserver.serverpackets import CreatureSay
from net.sf.l2j.gameserver.serverpackets import SocialAction
from net.sf.l2j.util import Rnd
POLLEN = 6391
SKILL_NECTAR = 2005
class squash(JQuest) :
- init function. Add in here variables that you'd like to be inherited by subclasses (if any)
def __init__(self,id,name,descr):
JQuest.__init__(self,id,name,descr)
Поливаемые
self.wateredSquash = [12774,12775,12776,12777,12778,12779]
Выросшие
self.adultSmallSquash = [12775,12776]
self.adultLargeSquash = [12778,12779]
self.nectar = 0
for i in self.wateredSquash :
self.addSkillUseId(i)
self.addAttackId(i)
self.addKillId(i)
def onAdvEvent(self,event,npc,player) :
objId = npc.getObjectId()
if event == "Good By" and npc and player :
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"Good By!! LOL."))
npc.onDecay()
self.nectar = 0
elif event == "Good By1" and npc and player :
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"Каждый, до свидания... Большая тыква сказала до свидания ..."))
npc.onDecay()
self.nectar = 0
elif event == "Good By2" and npc and player :
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"Вы можете быстрее? Через 30 секунд я сбегу ..."))
elif event == "Good By3" and npc and player :
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"Я прерву отношения с Вами через 20 секунд!"))
elif event == "Good By4" and npc and player :
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"Торопитесь, у меня осталось всего 10 секунд! 9. 8. 7 ..!"))
elif event == "Good By5" and npc and player :
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"Эй! Счастливо оставаться! Идиот, забудь обо мне!"))
def onSkillUse (self,npc,player,skill):
npcId = npc.getNpcId()
skillId = skill.getId()
if skillId != SKILL_NECTAR : return
if npcId not in self.wateredSquash : return
objectId = npc.getObjectId()
if skillId == SKILL_NECTAR :
if self.nectar == 0 :
if npc.getLifeTime() == 1000 : # неудачный
mytext = ["Не спеши! Слишком часто, я не успеваю!"
"Я же не автомат, меня скорострельностью не напоиш"]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
elif npc.getLifeTime() == 2000 : # неудачный
mytext = ["Да не спеши же ты! Слишком часто, я не успеваю!"
"Ооопять, двадцать пять, я же говорила - не части"]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
elif npc.getLifeTime() == 3000 : # неудачный
mytext = ["Да куда же ты торопишься! Слишком часто, я не успеваю!"
"Упс, опять слишком быстро"]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
elif npc.getLifeTime() == 4000 : # неудачный
mytext = ["Давай чуток помедленней, не спеши, медленно достань бутылку и медленно ее вылей!"
"У тебя нет чувства скорости? Медленнее давай"]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
elif npc.getLifeTime() == 5000 : # удачный
mytext = ["Плод прекрасной молодой тыквы начинает блестеть, когда семя предано земле! С этого времени будет способен стать здоровым и сильным!",
"О, давно не виделись?",
"Неожидал увидеть мое красивое появление?",
"Отлично! Это - нечто! Нектар?",
"Дозаправка! Заправь 5 бутылок, чтобы я смогла превратиться в большую тыкву! О!"]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
self.nectar = 1
else :
npc.setLifeTime(0) # неудачный
mytext = ["Чтобы быть способной расти, я должна пить только нектар ... причем чаще",
"Если ты будеш быстрее выливать мне нектар - я быстрее выросту!",
"Ну, верьте мне, прыскайте нектар! Я могу конечно превратиться в большую тыкву!!!",
"Принеси нектар, чтобы вырастить тыкву!"]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
elif self.nectar == 1 :
if npc.getLifeTime() == 10000 : # удачный
mytext = ["Желаю стать большой тыквой!",
"Ням, ням, ням! Вышло! Заботится - хорошо!,"
"Как думаеш, я зрелая или гнилая?",
"Нектар - только лучшее! Ха! Ха! Ха!"]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
self.nectar = 2
else :
npc.setLifeTime(5000) # неудачный
mytext = ["О! Опять мимо! Может слишком быстро расходуеш нектар?",
"Если я умру такой как сейчас, Вы получите только молодую тыкву ...",
"Выращивают немного быстрее! Неплохо было бы стать большой тыквой, молодая тыква не хороша!",
"Такую маленькую тыкву вы все должны есть? Принесите нектар, я могу быть больше!"]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
elif self.nectar == 2 :
if npc.getLifeTime() == 15000 : # удачный
if npcId == 12774 :
newGuord = self.getPcSpawn(player).addSpawn(self.adultSmallSquash[Rnd.get(len(self.adultSmallSquash))],npc.getX(),npc.getY(),npc.getZ())
spawnGourd = self.getPcSpawn(player).getSpawn(newGuord).getLastSpawn()
self.startQuestTimer("Good By", 120000, spawnGourd, player) # # Через 2 минуты исчезновение
self.startQuestTimer("Good By2", 90000, spawnGourd, player) # 30 секунд до исчезновения
self.startQuestTimer("Good By3", 100000, spawnGourd, player) # 20 секунд до исчезновения
self.startQuestTimer("Good By4", 110000, spawnGourd, player) # 10 секунд до исчезновения
mytext = ["Молодая тыква, жаждящая! Как, уже выросла?",
"Я убегу через 2 минуты",
"Еще пару раз и я буду готова..."]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
npc.onDecay()
self.nectar = 3
else :
newGuord = self.getPcSpawn(player).addSpawn(self.adultLargeSquash[Rnd.get(len(self.adultLargeSquash))],npc.getX(),npc.getY(),npc.getZ())
spawnGourd = self.getPcSpawn(player).getSpawn(newGuord).getLastSpawn()
self.startQuestTimer("Good By1", 120000, spawnGourd, player) # Через 2 минуты исчезновение
self.startQuestTimer("Good By2", 90000, spawnGourd, player) # 30 секунд до исчезновения
self.startQuestTimer("Good By3", 100000, spawnGourd, player) # 20 секунд до исчезновения
self.startQuestTimer("Good By4", 110000, spawnGourd, player) # 10 секунд до исчезновения
mytext = ["Милосердность является очень хорошей чертой. Теперь посмотрите, я чувствую себя все более хорошо",
"Я убегу через 2 минуты"]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
npc.onDecay()
self.nectar = 3
else : # неудачный
npc.setLifeTime(10000)
mytext = ["Эй! Была - не была! Есть! Сейчас же! Ты не можешь должным образом заботиться? Я еще маленькая!",
"Ничего себе, остановки? За что тебя благодарить",
"Жажду нектара о ...",
"Вы хотите большую тыкву? Но я хочу остаться маленькой тыковкой ..."]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
elif self.nectar == 3 :
if npc.getLifeTime() == 20000 : # удачный
mytext = ["Большая тыква, изголодалась! Просит утолить жажду!",
"Ну наконец-то ..., это действительно вкусно! Есть еще?",
"Ухаживаешь за мной только для того, чтобы есть? Отлично, является случайным ваш ..., чтобы не дать манну на самоубийство"]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
self.nectar = 4
else :
npc.setLifeTime(15000) # неудачный
mytext = ["Не воду ли Вы добавляете? Какой вкус?",
"Хозяин, спасите меня... Я не имею аромата нектара, я должна умереть ..."]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
elif self.nectar == 4 :
if npc.getLifeTime() == 25000 : # удачный
mytext = ["Очень хорошо, делаешь чрезвычайно хорошо! Знаешь что следующим шагом должен делать?",
"Если Вы поймаете меня, я даю Вам 10 миллионов adena!!! Согласны?"]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
self.nectar = 5
else :
npc.setLifeTime(20000) # неудачный
mytext = ["Я голодна, Ты хочеш чтоб я засохла?",
"Требую нектар, чтобы расти немного быстрее."]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
return
def onAttack(self,npc,player) :
npcId = npc.getNpcId()
objId = npc.getObjectId()
if npcId not in self.wateredSquash : return
if npcId in self.adultLargeSquash :
if Rnd.get(30) < 2 : # надо бы подобрать частоту выкриков
mytext = ["Укусы плетут кружево крысой ..., чтобы заменить ... тело ...!",
"Ха ха, росла! Полностью на всех!",
"Не можете чтоли все прицелиться? Смотрите все, чтобы не сбежала ...",
"Я считаю ваши удары! О, напоминает удар снова!",
"Не тратьте впустую ваше время!",
"Ха, этот звук действительно приятно слышать?",
"Я потребляю ваши атаки, чтобы расти!",
"Время, чтобы ударить снова! Ударь еще разок!",
"Только полезная музыка может открыть большую тыкву... Меня нельзя открыть с оружием!"]
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
return
def onKill(self,npc,player) :
npcId = npc.getNpcId()
objId = npc.getObjectId()
if npcId not in self.wateredSquash : return
if npcId in self.adultSmallSquash :
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"Тыква открывается!!"))
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"Ееее! Открывается! Много хороших вещей ..."))
self.nectar = 0
elif npcId in self.adultLargeSquash :
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"Тыква открывается!!"))
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"Ееее! Открывается! Много хороших вещей ..."))
self.nectar = 0
else :
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"За что, хозяин?!"))
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"Ой, кишки вывалились!!"))
self.nectar = 0
return
QUEST = squash(-1,"group_template","ai")
print "AI: group template: The Fall Harvest...loaded!"