Перейти к содержанию
Авторизация  
TrueMan

Проблема Со Скриптом

Рекомендуемые сообщения

Не работает квест на сборке фрозен

Вот скрипт

import sys
from com.l2jfrozen import Config
from com.l2jfrozen.gameserver.model.quest import State
from com.l2jfrozen.gameserver.model.quest import QuestState
from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest

qn = "q902_FeatherGathering"

## нпц
NPC = 77777

## Мобы
MOBS = [22126,22124,22123]
#босс
BOSS = 70020

## Дроп
#id перьев с мобов в мос
FEATHER = 9983
#сколько нужно?
FEATHER_NEED = 300
#шанс дропа, %
FEATHER_CHANCE = 50
#id итема с босса
BOSS_ITEM = 9984

##Награда
#id крыльев
WINGS = 9996

class Quest (JQuest) :

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

def onEvent (self,event,st) :
  htmltext = event
  if event == "accept.htm":
 st.setState(State.STARTED)
 st.playSound("ItemSound.quest_accept")
 st.set("cond","1")
  elif event == "finish.htm":
 if st.getQuestItemsCount(FEATHER) >= FEATHER_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1:
   st.takeItems(FEATHER, -1)
   st.takeItems(BOSS_ITEM, -1)
   st.giveItems(WINGS, 1)
   st.set("cond","0")
   st.playSound("ItemSound.quest_finish")
   st.setState(State.COMPLETED)
 else:
   htmltext = "mobs.htm"
  return htmltext

def onTalk (self,npc,player):
  st = player.getQuestState(qn)
  if not st: 
 return "<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>"
  npcId = npc.getNpcId()
  idd = st.getState()
  cond = st.getInt("cond")
  if npcId == NPC:
 if idd == State.COMPLETED :
   htmltext = "completed.htm"
 if idd == State.CREATED :
   htmltext = "hello1.htm"
 elif cond == 1:
   if st.getQuestItemsCount(FEATHER) >= FEATHER_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1:
	 htmltext = "mobs2.htm"
   else:
	 htmltext = "mobs.htm"
  return htmltext

def onKill(self,npc,player,isPet):
  st = player.getQuestState(qn)
  if not st or st.getInt("cond") != 1:
 return
  npcId = npc.getNpcId()
  reward = 0
  limit = 1
  chance = 100
  if npcId in MOBS:
 reward = FEATHER
 limit = FEATHER_NEED
 chance = FEATHER_CHANCE
  if npcId == BOSS:
 reward = BOSS_ITEM
 limit = 1
  if reward > 0:
 party = player.getParty()
 if party:
   for member in party.getPartyMembers():
	 if not member.isAlikeDead():
	   st = member.getQuestState("q902_FeatherGathering")
	   if st and st.getQuestItemsCount(reward) < limit and st.getRandom(100) <= chance:
		 st.giveItems(reward, 1)
		 st.playSound("ItemSound.quest_itemget")
		 if st.getQuestItemsCount(reward) >= limit:
		   st.playSound("ItemSound.quest_middle")
 else:
   if st.getQuestItemsCount(reward) < limit and st.getRandom(100) <= chance:
	 st.giveItems(reward, 1)
	 st.playSound("ItemSound.quest_itemget")
  return  

QUEST = Quest(902, qn, "Feather Gathering")

QUEST.addStartNpc(NPC)
QUEST.addTalkId(NPC)
QUEST.addKillId(BOSS)

for m in MOBS:
 QUEST.addKillId(m)

 

Вот ошибка

E:\L2JFroZeNN\gameserver\data\scripts\quests\q902_FeatherGathering\__init__.py
Traceback (innermost last):
 File "__init__.py", line 61, in onTalk
AttributeError: class 'com.l2jfrozen.gameserver.model.quest.State' has no attrib
ute 'COMPLETED'

	at org.python.core.Py.AttributeError(Unknown Source)
	at org.python.core.PyObject.noAttributeError(Unknown Source)
	at org.python.core.PyObject.__getattr__(Unknown Source)
	at org.python.pycode._pyx406.onTalk$4(__init__.py:61)
	at org.python.pycode._pyx406.call_function(__init__.py)
	at org.python.core.PyTableCode.call(Unknown Source)
	at org.python.core.PyTableCode.call(Unknown Source)
	at org.python.core.PyTableCode.call(Unknown Source)
	at org.python.core.PyFunction.__call__(Unknown Source)
	at org.python.core.PyMethod.__call__(Unknown Source)
	at org.python.core.PyObject.__call__(Unknown Source)
	at org.python.core.PyObject._jcallexc(Unknown Source)
	at org.python.core.PyObject._jcall(Unknown Source)
	at org.python.proxies.main$Quest$404.onTalk(Unknown Source)
	at com.l2jfrozen.gameserver.model.quest.Quest.notifyTalk(Quest.java:519)

	at com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance.showQuest
Window(L2NpcInstance.java:2028)
	at com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance.onBypassF
eedback(L2NpcInstance.java:1273)
	at com.l2jfrozen.gameserver.network.clientpackets.RequestBypassToServer.
runImpl(RequestBypassToServer.java:234)
	at com.l2jfrozen.gameserver.network.clientpackets.L2GameClientPacket.run
(L2GameClientPacket.java:75)
	at com.l2jfrozen.gameserver.network.L2GameClient.run(L2GameClient.java:1
203)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source
)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

Изменено пользователем TrueMan

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, на сборке еон работало все

Изменено пользователем TrueMan

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот лови я его чуть переделал под себя (но думаю разберешся)

 

Скрытый текст
import sys

from com.l2jfrozen.gameserver.model.quest import State

from com.l2jfrozen.gameserver.model.quest import QuestState

from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest

from com.l2jfrozen.gameserver.network.serverpackets import PledgeShowInfoUpdate

from com.l2jfrozen.gameserver.network.serverpackets import RadarControl

from com.l2jfrozen.gameserver.network.serverpackets import SystemMessage

 

qn = "q902_FeatherGathering"

 

## нпц

NPC = 77777

 

## Мобы

MOBS = [22126,22124,22123]

#босс

BOSS = 25366

 

## Дроп

#id перьев с мобов в мос

FEATHER = 3344

#сколько нужно?

FEATHER_NEED = 150

#шанс дропа, %

FEATHER_CHANCE = 100

#id итема с босса

BOSS_ITEM = 9305

 

##Награда

#id крыльев

WINGS = 3481

 

class Quest (JQuest) :

 

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

 

def onEvent (self,event,st) :

htmltext = event

if event == "accept.htm":

st.setState(STARTED)

st.playSound("ItemSound.quest_accept")

st.set("cond","1")

elif event == "finish.htm":

if st.getQuestItemsCount(FEATHER) >= FEATHER_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1:

st.takeItems(FEATHER, -1)

st.takeItems(BOSS_ITEM, -1)

st.giveItems(WINGS, 1)

st.set("cond","0")

st.playSound("ItemSound.quest_finish")

st.setState(COMPLETED)

else:

htmltext = "mobs.htm"

return htmltext

 

def onTalk (self,npc,player):

htmltext = "hello1.htm"

st = player.getQuestState(qn)

if not st:

return "<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>"

npcId = npc.getNpcId()

idd = st.getState()

cond = st.getInt("cond")

if npcId == NPC:

if idd == COMPLETED :

htmltext = "completed.htm"

if idd == CREATED :

htmltext = "hello1.htm"

elif cond == 1:

if st.getQuestItemsCount(FEATHER) >= FEATHER_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1:

htmltext = "mobs2.htm"

else:

htmltext = "mobs.htm"

return htmltext

 

def onKill(self,npc,player,isPet):

st = player.getQuestState(qn)

if not st or st.getInt("cond") != 1:

return

npcId = npc.getNpcId()

reward = 0

limit = 1

chance = 100

if npcId in MOBS:

reward = FEATHER

limit = FEATHER_NEED

chance = FEATHER_CHANCE

if npcId == BOSS:

reward = BOSS_ITEM

limit = 1

if reward > 0:

party = player.getParty()

if party:

for member in party.getPartyMembers():

if not member.isAlikeDead():

st = member.getQuestState("q902_FeatherGathering")

if st and st.getQuestItemsCount(reward) < limit and st.getRandom(100) <= chance:

st.giveItems(reward, 1)

st.playSound("ItemSound.quest_itemget")

if st.getQuestItemsCount(reward) >= limit:

st.playSound("ItemSound.quest_middle")

else:

if st.getQuestItemsCount(reward) < limit and st.getRandom(100) <= chance:

st.giveItems(reward, 1)

st.playSound("ItemSound.quest_itemget")

return

 

 

 

QUEST = Quest(902, qn, "Feather Gathering")

CREATED = State('Start',QUEST)

STARTED = State('Started',QUEST)

COMPLETED = State('COMPLETED',QUEST)

 

QUEST.setInitialState(CREATED)

 

QUEST.addStartNpc(NPC)

QUEST.addTalkId(NPC)

QUEST.addKillId(BOSS)

 

 

for m in MOBS:

QUEST.addKillId(m)

 

 

жду спасибку =)

Изменено пользователем TryBat9

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спс, щас попробую

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Error on: E:\L2JFroZeNN\gameserver\data\scripts\quests\q902_FeatherGathering\__init__.py.error.log

Line: -1 - Column: -1

 

Traceback (innermost last):

(no code object) at line 0

SyntaxError: ('invalid syntax', ('__init__.py', 35, 1, 'def __init__(self,id,name,descr) : JQuest.__init__(self,id,name,descr)'))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у тебя путь правельно прописан? в scripts.cfg посмотри или все так же написано с таким размером букв как називается папка.

 

я хз у меня он работает ( сборка фрозен )

Изменено пользователем TryBat9

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

все правильно но не пашет:)

Дай свой файлик __init__.py

Изменено пользователем TrueMan

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

питон слишком чуствительный к отступам, форум кривит код

заливайте куда-нить.... сам файл

Изменено пользователем VREDNbIi

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дайте файлик плиз

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Он в quest у меня

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Заработало! Спасибо!)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...