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

Изменить Квет На Крылья Под Квест На Броню Lucera

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

Приветствую, добавил в сборку квест на крылья вот такой

 

## квест на крылья для Lucera 1.7 от 1d3x.

import sys

from ru.catssoftware import Config

from ru.catssoftware.gameserver.model.quest import State

from ru.catssoftware.gameserver.model.quest import QuestState

from ru.catssoftware.gameserver.model.quest.jython import QuestJython as JQuest

 

qn = "q902_WingsQuest"

 

## нпц

NPC = 77777

 

## Мобы

MOBS = [22132,22130,22131,22135] ##Ид мобов (сейчас на 2 этаже моса)

#босс

BOSS = 29021

 

## Дроп

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

FEATHER = 2129

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

FEATHER_NEED = 336

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

FEATHER_CHANCE = 80

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

BOSS_ITEM = 2125

 

##Награда

#id крыльев

WINGS = 75000

 

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 "You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements."

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_WingsQuest")

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, "Wings Quest")

 

QUEST.addStartNpc(NPC)

QUEST.addTalkId(NPC)

QUEST.addKillId(BOSS)

 

for m in MOBS:

QUEST.addKillId(m)

 

 

 

и хотел его переделать на квест под броню, вот так

 

 

## квест на крылья для Lucera 1.7 от 1d3x.

import sys

from ru.catssoftware import Config

from ru.catssoftware.gameserver.model.quest import State

from ru.catssoftware.gameserver.model.quest import QuestState

from ru.catssoftware.gameserver.model.quest.jython import QuestJython as JQuest

 

qn = "q903_WingsQuest"

 

## нпц

NPC = 77778

 

## Мобы

MOBS = 21386

#босс

BOSS = 555777

 

## Дроп

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

FEATHER = 17874

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

FEATHER_NEED = 200

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

FEATHER_CHANCE = 100

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

BOSS_ITEM = 17875

 

##Награда

#id крыльев

WINGS = 17876

 

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("q903_WingsQuest")

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(903, qn, "Wings Quest")

 

QUEST.addStartNpc(NPC)

QUEST.addTalkId(NPC)

QUEST.addKillId(BOSS)

 

for m in MOBS:

QUEST.addKillId(m)

 

 

 

 

Поменял везде только 902 на 903 + поменял id мобов, боса итп... но пре этом первый грузится нормально а второй пишет ошибку:

 

Line: -1 - Column: -1

 

Traceback (innermost last):

File "__init__.py", line 111, in ?

TypeError: iteration over non-sequence

 

111 for m in MOBS:

112 QUEST.addKillId(m)

 

Пробовал поменять вот так:

 

for n in MOBS:

QUEST.addKillId(n)

 

но результат не поменлся. В чом трабла ? Ведь 2 скрипта эдентичные но второй не работает.

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

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


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

Приветствую, добавил в сборку квест на крылья вот такой

 

## квест на крылья для Lucera 1.7 от 1d3x.

import sys

from ru.catssoftware import Config

from ru.catssoftware.gameserver.model.quest import State

from ru.catssoftware.gameserver.model.quest import QuestState

from ru.catssoftware.gameserver.model.quest.jython import QuestJython as JQuest

 

qn = "q902_WingsQuest"

 

## нпц

NPC = 77777

 

## Мобы

MOBS = [22132,22130,22131,22135] ##Ид мобов (сейчас на 2 этаже моса)

#босс

BOSS = 29021

 

## Дроп

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

FEATHER = 2129

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

FEATHER_NEED = 336

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

FEATHER_CHANCE = 80

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

BOSS_ITEM = 2125

 

##Награда

#id крыльев

WINGS = 75000

 

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 "You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements."

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_WingsQuest")

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, "Wings Quest")

 

QUEST.addStartNpc(NPC)

QUEST.addTalkId(NPC)

QUEST.addKillId(BOSS)

 

for m in MOBS:

QUEST.addKillId(m)

 

 

 

и хотел его переделать на квест под броню, вот так

 

 

## квест на крылья для Lucera 1.7 от 1d3x.

import sys

from ru.catssoftware import Config

from ru.catssoftware.gameserver.model.quest import State

from ru.catssoftware.gameserver.model.quest import QuestState

from ru.catssoftware.gameserver.model.quest.jython import QuestJython as JQuest

 

qn = "q903_WingsQuest"

 

## нпц

NPC = 77778

 

## Мобы

MOBS = 21386

#босс

BOSS = 555777

 

## Дроп

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

FEATHER = 17874

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

FEATHER_NEED = 200

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

FEATHER_CHANCE = 100

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

BOSS_ITEM = 17875

 

##Награда

#id крыльев

WINGS = 17876

 

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("q903_WingsQuest")

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(903, qn, "Wings Quest")

 

QUEST.addStartNpc(NPC)

QUEST.addTalkId(NPC)

QUEST.addKillId(BOSS)

 

for m in MOBS:

QUEST.addKillId(m)

 

 

 

 

Поменял везде только 902 на 903 + поменял id мобов, боса итп... но пре этом первый грузится нормально а второй пишет ошибку:

 

Line: -1 - Column: -1

 

Traceback (innermost last):

File "__init__.py", line 111, in ?

TypeError: iteration over non-sequence

 

111 for m in MOBS:

112 QUEST.addKillId(m)

 

Пробовал поменять вот так:

 

for n in MOBS:

QUEST.addKillId(n)

 

но результат не поменлся. В чом трабла ? Ведь 2 скрипта эдентичные но второй не работает.

Может нужно ид моба в квадратных скобках написать?

  • Upvote 1

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


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

Может нужно ид моба в квадратных скобках написать?

точняк, + дал =)))) Спасибо)
  • Upvote 1

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


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

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

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

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

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

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

Войти

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

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

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

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

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