Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Jython ошибка синтакса(клан квест)
#1
Привет всем, я хочу поговорить о питоне которых стрелять надо с их синтаксом. Трабла такова:

В квест 9000_clan дефолт создание клана я решил добавить Донат фишку, репы 3кк за колы и тд. В итоге ошибки синтакса, не получается исправить.

Дефолт код:

Код:
#
# Created by DraX on 2005.08.12
# minor fixes by DrLecter 2005.09.10

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

qn = "9000_clan"
#print "9000. Clan"
NPC=[4,30026,30031,30037,30066,30070,30109,30115,30120,30154,30174,30175,30176,30187,30191,30195,30288,30289,30290,30297,30358,30373,30462,30474,30498,30499,30500,30503,30504,30505,30508,30511,30512,30513,30520,30525,30565,30594,30595,30676,30677,30681,30685,30687,30689,30694,30699,30704,30845,30847,30849,30854,30857,30862,30865,30894,30897,30900,30905,30910,30913,31269,31272,31276,31279,31285,31288,31314,31317,31321,31324,31326,31328,31331,31334,31755,31958,31961,31965,31968,31974,31977,31996,32092,32093,32094,32095,32096,32097,32098]

class Quest (JQuest) :

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

def onAdvEvent (self,event,npc, player) :
   htmltext = event
   if event == "9000-03.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-03-no.htm"
   elif event == "9000-04.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-04-no.htm"
   elif event == "9000-05.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-05-no.htm"
   elif event == "9000-07.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-06a.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-12a.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-12b.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-13a.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-13b.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-14a.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-14b.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-15.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   return htmltext

def onTalk (Self,npc,player):
   st = player.getQuestState(qn)
   npcId = npc.getNpcId()
   if npcId in NPC:
     st.set("cond","0")
     st.setState(STARTED)
     return "9000-01.htm"

QUEST       = Quest(9000,qn,"village_master")
CREATED     = State('Start',     QUEST)
STARTED     = State('Started',   QUEST)
COMPLETED   = State('Completed', QUEST)

QUEST.setInitialState(CREATED)


for item in NPC:
### Quest NPC starter initialization
   QUEST.addStartNpc(item)
### Quest NPC initialization
   QUEST.addTalkId(item)






Хотел добавить вот эти строчки:

Код:
if event == "66667-clanOk.htm" :
                   if st.getPlayer().isClanLeader() and st.getPlayer().getClan().getLevel()<8:
                       if st.getPlayer().isNoble() and count >= REQUESTED_AMOUNT:
                            htmltext=event
                            st.getPlayer().getClan().changeLevel(8)
                            st.playSound("ItemSound.quest_finish")
                            st.takeItems(REQUESTED_ITEM,REQUESTED_AMOUNT)
                       else :
                            htmltext="66667-no_clan.htm"
                            st.exitQuest(1)
                   else :
                       htmltext="66667-no_clan.htm"
                       st.exitQuest(1)
               elif event == "66667-repOk.htm" :
                   if st.getPlayer().isClanLeader() and st.getPlayer().getClan().getLevel() >= 5 and st.getPlayer().getClan().getReputationScore() < NEW_REP_SCORE :
                       if st.getPlayer().isNoble() and count > REQUESTED_AMOUNT:
                            htmltext=event
                            st.getPlayer().getClan().setReputationScore(NEW_REP_SCORE, 1);
                            st.playSound("ItemSound.quest_finish")
                            st.takeItems(REQUESTED_ITEM,REQUESTED_AMOUNT)
                       else :
                            htmltext="66667-no_points.htm"
                            st.exitQuest(1)
                   else :
                       htmltext="66667-no_points.htm"
                       st.exitQuest(1)

Собственно говоря даже прописал их с нуля, с отступами и тд. Итог: соснул, ошибка синтакса то у else то еще где нибудь. Как исправить? Совет есть?


Пример ласт кода:

Код:
#
# Created by DraX on 2005.08.12
# minor fixes by DrLecter 2005.09.10

import sys

from com.l2jfrozen.gameserver.model.actor.instance import L2PcInstance
from com.l2jfrozen.gameserver.model.actor.instance import L2NpcInstance
from java.util import Iterator
from com.l2jfrozen.util.database import L2DatabaseFactory
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 = "9000_clan"
#print "9000. Clan"
NPC=[4,30026,30031,30037,30066,30070,30109,30115,30120,30154,30174,30175,30176,30187,30191,30195,30288,30289,30290,30297,30358,30373,30462,30474,30498,30499,30500,30503,30504,30505,30508,30511,30512,30513,30520,30525,30565,30594,30595,30676,30677,30681,30685,30687,30689,30694,30699,30704,30845,30847,30849,30854,30857,30862,30865,30894,30897,30900,30905,30910,30913,31269,31272,31276,31279,31285,31288,31314,31317,31321,31324,31326,31328,31331,31334,31755,31958,31961,31965,31968,31974,31977,31996,32092,32093,32094,32095,32096,32097,32098]
REQUESTED_ITEM=4037
REQUESTED_AMOUNT=20
NEW_REP_SCORE=3000000

class Quest (JQuest) :

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

def onAdvEvent (self,event,npc, player) :
   htmltext = event
   count=st.getQuestItemsCount(REQUESTED_ITEM)
   if event == "9000-20.htm" :
       if st.getPlayer().isClanLeader() and st.getPlayer().getClan().getLevel()<8:
            if st.getPlayer().isNoble() and count >= REQUESTED_AMOUNT:
               htmltext=event
               st.getPlayer().getClan().changeLevel(8)
               st.takeItems(REQUESTED_ITEM,REQUESTED_AMOUNT)
            else :
                htmltext="9000-20.htm"
                st.exitQuest(1)
          else :
                htmltext="9000-21.htm"
                st.exitQuest(1)
   if event == "9000-03.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-03-no.htm"
   elif event == "9000-04.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-04-no.htm"
   elif event == "9000-05.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-05-no.htm"
   elif event == "9000-07.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-06a.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-12a.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-12b.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-13a.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-13b.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-14a.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-14b.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-15.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   return htmltext



def onTalk (Self,npc,player):
   st = player.getQuestState(qn)
   npcId = npc.getNpcId()
   if npcId in NPC:
     st.set("cond","0")
     st.setState(STARTED)
     return "9000-01.htm"

QUEST       = Quest(9000,qn,"village_master")
CREATED     = State('Start',     QUEST)
STARTED     = State('Started',   QUEST)
COMPLETED   = State('Completed', QUEST)

QUEST.setInitialState(CREATED)


for item in NPC:
### Quest NPC starter initialization
   QUEST.addStartNpc(item)
### Quest NPC initialization
   QUEST.addTalkId(item)
Ответ
#2
При компиле показывает же в какой строке ошибка?! идите по порядочкуSmile
Ответ
#3
DakChe Написал:При компиле показывает же в какой строке ошибка?! идите по порядочкуSmile

Да ты юморист я смотрю?

Код:
Error on: C:\DRAYVER\Projects\Java Servers\OSTAGE\build\dist\gameserver\data\scripts\village_master\9000_clan\__init__.py.error.log
Line: -1 - Column: -1

Traceback (innermost last):
  (no code object) at line 0
SyntaxError: ('invalid syntax', ('__init__.py', 39, 12, '           else :'))

И так постоянно, когда исправляешь чтонибудь идет другая и тд и тд. Мне что весь день удалять по строчке и серв запускать? Причем тут компил? Ты что упоролся?
Ответ
#4
Код:
#
# Created by DraX on 2005.08.12
# minor fixes by DrLecter 2005.09.10

import sys

from com.l2jfrozen.gameserver.model.actor.instance import L2PcInstance
from com.l2jfrozen.gameserver.model.actor.instance import L2NpcInstance
from java.util import Iterator
from com.l2jfrozen.util.database import L2DatabaseFactory
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 = "9000_clan"
#print "9000. Clan"
NPC=[4,30026,30031,30037,30066,30070,30109,30115,30120,30154,30174,30175,30176,30187,30191,30195,30288,30289,30290,30297,30358,30373,30462,30474,30498,30499,30500,30503,30504,30505,30508,30511,30512,30513,30520,30525,30565,30594,30595,30676,30677,30681,30685,30687,30689,30694,30699,30704,30845,30847,30849,30854,30857,30862,30865,30894,30897,30900,30905,30910,30913,31269,31272,31276,31279,31285,31288,31314,31317,31321,31324,31326,31328,31331,31334,31755,31958,31961,31965,31968,31974,31977,31996,32092,32093,32094,32095,32096,32097,32098]
REQUESTED_ITEM=4037
REQUESTED_AMOUNT=20
NEW_REP_SCORE=3000000

class Quest (JQuest) :

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

def onAdvEvent (self,event,npc, player) :
   htmltext = event
   count=st.getQuestItemsCount(REQUESTED_ITEM)
   if event == "9000-20.htm" :
       [B]if[/B] st.getPlayer().isClanLeader() and st.getPlayer().getClan().getLevel()<8:
            if st.getPlayer().isNoble() and count >= REQUESTED_AMOUNT:
               htmltext=event
               st.getPlayer().getClan().changeLevel(8)
               st.takeItems(REQUESTED_ITEM,REQUESTED_AMOUNT)
            else :
                htmltext="9000-20.htm"
                st.exitQuest(1)
          [B]else :[/B]
                htmltext="9000-21.htm"
                st.exitQuest(1)
   if event == "9000-03.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-03-no.htm"
   elif event == "9000-04.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-04-no.htm"
   elif event == "9000-05.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-05-no.htm"
   elif event == "9000-07.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-06a.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-12a.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-12b.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-13a.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-13b.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-14a.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-14b.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-15.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   return htmltext



def onTalk (Self,npc,player):
   st = player.getQuestState(qn)
   npcId = npc.getNpcId()
   if npcId in NPC:
     st.set("cond","0")
     st.setState(STARTED)
     return "9000-01.htm"

QUEST       = Quest(9000,qn,"village_master")
CREATED     = State('Start',     QUEST)
STARTED     = State('Started',   QUEST)
COMPLETED   = State('Completed', QUEST)

QUEST.setInitialState(CREATED)


for item in NPC:
### Quest NPC starter initialization
   QUEST.addStartNpc(item)
### Quest NPC initialization
   QUEST.addTalkId(item)

Добавлено через 1 минуту
жирным выделил, отступ не соблюдается

p.s если не можешь сам всё раставить, то запускай сервер 100 раз, кто мешаетSmile
Ответ
#5
DakChe Написал:
Код:
#
# Created by DraX on 2005.08.12
# minor fixes by DrLecter 2005.09.10

import sys

from com.l2jfrozen.gameserver.model.actor.instance import L2PcInstance
from com.l2jfrozen.gameserver.model.actor.instance import L2NpcInstance
from java.util import Iterator
from com.l2jfrozen.util.database import L2DatabaseFactory
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 = "9000_clan"
#print "9000. Clan"
NPC=[4,30026,30031,30037,30066,30070,30109,30115,30120,30154,30174,30175,30176,30187,30191,30195,30288,30289,30290,30297,30358,30373,30462,30474,30498,30499,30500,30503,30504,30505,30508,30511,30512,30513,30520,30525,30565,30594,30595,30676,30677,30681,30685,30687,30689,30694,30699,30704,30845,30847,30849,30854,30857,30862,30865,30894,30897,30900,30905,30910,30913,31269,31272,31276,31279,31285,31288,31314,31317,31321,31324,31326,31328,31331,31334,31755,31958,31961,31965,31968,31974,31977,31996,32092,32093,32094,32095,32096,32097,32098]
REQUESTED_ITEM=4037
REQUESTED_AMOUNT=20
NEW_REP_SCORE=3000000

class Quest (JQuest) :

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

def onAdvEvent (self,event,npc, player) :
   htmltext = event
   count=st.getQuestItemsCount(REQUESTED_ITEM)
   if event == "9000-20.htm" :
       [B]if[/B] st.getPlayer().isClanLeader() and st.getPlayer().getClan().getLevel()<8:
            if st.getPlayer().isNoble() and count >= REQUESTED_AMOUNT:
               htmltext=event
               st.getPlayer().getClan().changeLevel(8)
               st.takeItems(REQUESTED_ITEM,REQUESTED_AMOUNT)
            else :
                htmltext="9000-20.htm"
                st.exitQuest(1)
          [B]else :[/B]
                htmltext="9000-21.htm"
                st.exitQuest(1)
   if event == "9000-03.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-03-no.htm"
   elif event == "9000-04.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-04-no.htm"
   elif event == "9000-05.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-05-no.htm"
   elif event == "9000-07.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-06a.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-12a.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-12b.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-13a.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-13b.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-14a.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-14b.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-15.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   return htmltext



def onTalk (Self,npc,player):
   st = player.getQuestState(qn)
   npcId = npc.getNpcId()
   if npcId in NPC:
     st.set("cond","0")
     st.setState(STARTED)
     return "9000-01.htm"

QUEST       = Quest(9000,qn,"village_master")
CREATED     = State('Start',     QUEST)
STARTED     = State('Started',   QUEST)
COMPLETED   = State('Completed', QUEST)

QUEST.setInitialState(CREATED)


for item in NPC:
### Quest NPC starter initialization
   QUEST.addStartNpc(item)
### Quest NPC initialization
   QUEST.addTalkId(item)

Затролил. Поздравляю. [Изображение: Комиксы-гифки-медведь-медведь-и-шлюха-175432.jpeg]

p.s: дело не в нем.
Ответ
#6
Неплохо,удачиSmile
Ответ
#7
DakChe Написал:Неплохо,удачиSmile

И тебе, гений.
Ответ
#8
Из Википедии:

Одной из интересных синтаксических особенностей языка является выделение блоков кода с помощью отступов (пробелов или табуляций), поэтому в Питоне отсутствуют операторные скобки begin/end, как в языке Паскаль, или фигурные скобки, как в Си. Такой «трюк» позволяет сократить количество строк и символов в программе и приучает к «хорошему» стилю программирования. С другой стороны, поведение и даже корректность программы может зависеть от начальных пробелов в тексте. Некоторым такое поведение может показаться неинтуитивным и неудобным.
Fortuna - non penis, in manus non recipe.
Ответ
#9
Ashe Написал:Из Википедии:

Одной из интересных синтаксических особенностей языка является выделение блоков кода с помощью отступов (пробелов или табуляций), поэтому в Питоне отсутствуют операторные скобки begin/end, как в языке Паскаль, или фигурные скобки, как в Си. Такой «трюк» позволяет сократить количество строк и символов в программе и приучает к «хорошему» стилю программирования. С другой стороны, поведение и даже корректность программы может зависеть от начальных пробелов в тексте. Некоторым такое поведение может показаться неинтуитивным и неудобным.
Фрозены же.
2автор, пишите на яве, а питон оставьте тому, кто в нем разбирается.
[Изображение: 4e38c909fcd08c5fcdf363b54a62.png]
Ответ
#10
Код:
#

def onAdvEvent (self,event,npc, player) :
   htmltext = event
   if event == "9000-03.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-03-no.htm"
   elif event == "9000-04.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-04-no.htm"
   elif event == "9000-05.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-05-no.htm"
   elif event == "9000-07.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-06a.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-12a.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-12b.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-13a.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-13b.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-14a.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-14b.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   elif event == "9000-15.htm" :
      if player.getClan() == None or not player.isClanLeader():
         return "9000-07-no.htm"
   return htmltext

Найдите с 3 попыток способ в три раза сократить этот код :redlol:

для 'неупоротых'

Код:
if event == "9000-03.htm" :

Хороший Python-программист не станет сравнивать с None используя оператор сравнения.

По остальному - в лес вместе со своим гонором, увы.
// aka Deft
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  клан знаки\ али знаки teznaa 0 1,933 03-23-2020, 11:41 AM
Последний пост: teznaa
  НПС не дает квест Dilar 1 1,628 03-20-2018, 08:17 PM
Последний пост: Emperor
  Ошибка запуска гейм сервера Kensiro 1 1,758 01-23-2018, 04:41 PM
Последний пост: PROGRAMMATOR
  Решение ошибка в алт+б за оплату Valent 1 1,742 04-29-2017, 10:57 PM
Последний пост: zGoSu
  Квест 7 печатей как включить, как управлять! v1kt0r 5 2,948 04-29-2017, 01:17 PM
Последний пост: zGoSu
  Ошибка Nez 0 1,311 08-06-2016, 04:43 AM
Последний пост: Nez
  Ошибка в логах игрового сервера KateKate7912 6 1,794 10-13-2015, 07:52 AM
Последний пост: KateKate7912
  Квест 7 печатей. Гварды не видят под шд CKREPKA 3 1,986 08-06-2015, 02:49 AM
Последний пост: Deazer
  квест, концепция, структура, логика mountaineer 2 1,755 07-31-2015, 08:01 PM
Последний пост: DroNik
  Ошибка при изменении файла в l2fileedit loodgieter 1 4,479 01-06-2015, 05:46 PM
Последний пост: SmileForMe

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


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