Max 0 Опубликовано 25 октября, 2010 Видел такое чудо на одном из серверов и вот решел реализовать на своем проекте La2Ultra.ru В двух словах о самом квесте. Дополнение с помощью которого мир Lineage II разделяется на две половины - светлую и темную. Игроки смогут принять одну из древних противоборствующих сторон, Ангелов или Демонов. В славном городе Гиран перед входом в храм, игроки смогут найти Мастеров каждой стороны, и вступить в то или иное братство. После вступления игрок получает отличительный знак братства - маленькие крылья, обладающие следующими магическими свойствами: в случае смерти с персонажа не спадают заклинания, а также увеличивается скорость атаки и шанс критического удара. Лидер Клана, достигшего 5-го уровня, получает возможность приобрести у Мастера своей стороны Крылья Лидера Клана, которые имеют более высокие статы, чем обычные крылья братства. В случае достижения кланом 8-го уровня, Лидер такого Клана получает возможность приобрести у Мастера своего братства специальное оружие Лидера. Для каждой из противоборствующих сторон этот итем уникален и представляет из себя двуручное древковое оружие, которое по своим боевым характеристикам превосходит характеристики большинства видов оружия S грейда. Достигнув 76-го лвл Лидеры Кланов приобретают активный навык, позволяющий немедленно призвать к себе всех членов клана, находящихся в этот момент в игре. Каждый персонаж, вступивший в братство, получает возможность приобрести у своего Мастера персонального питомца. У каждого братства есть свой баффер. Теперь детали: За неделю бессонных ночей удалось реализовать следующее.... Скрытый текст#Angels_vs_Demons Quest Written By Maxon qn = "2010_A_vs_D" #NPC GKBELLA_ID = 30256 ABUFFER_ID = 70000 AMASTER_ID = 71000 DMASTER_ID = 72000 DBUFFER_ID = 73000 #QUEST ITEMS DLWINGS_ID = 10579 ANWINGS_ID = 10580 DEWINGS_ID = 10581 ALWINGS_ID = 10582 ADENA = 57 PDEMON_ID = 6650 PANGEL_ID = 6648 #MESSAGES default='<html><body>Go away a feathery creature while I haven"t split you into slices!</body></html>' class Quest (JQuest) : def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) def onEvent (self,event,st) : htmltext = event cond=st.getInt("cond") if event == "30256-1.htm" : if cond==0: st.set("cond","1") st.setState(STARTED) else: htmltext=default if event == "72000-3.htm" : if cond==1: st.giveItems(DEWINGS_ID,1) st.set("cond","2") if event == "71000-3.htm" : if cond==1: st.giveItems(ANWINGS_ID,1) st.set("cond","3") if event == "71000-7.htm" : if st.getQuestItemsCount(ADENA_ID) < 5000000 : if st.getQuestItemsCount(PANGEL_ID) > 0 : st.takeItems(ADENA_ID,5000000) st.giveItems(PANGEL_ID,1) else: htmltext=default else: htmltext="The section to be in a development stage!" if event == "72000-7.htm" : if st.getQuestItemsCount(ADENA_ID) < 5000000 : if st.getQuestItemsCount(PDEMON_ID) > 0 : st.takeItems(ADENA_ID,5000000) st.giveItems(PDEMON_ID,1) else: htmltext=default else: htmltext="The section to be in a development stage!" return htmltext def onTalk (self,npc,player): htmltext = default st = player.getQuestState(qn) if st : npcId = npc.getNpcId() id = st.getState() if id == CREATED : st.set("cond","0") cond = st.getInt("cond") if npcId == 30256 and cond == 0 : if player.getLevel() >= 1 and player.getLevel() <= 80 : htmltext = "30256-0.htm" elif id == STARTED : if npcId == 72000 and cond == 1 : htmltext = "72000-1.htm" elif npcId == 72000 and cond == 2 : htmltext = "72000-4.htm" elif npcId == 71000 and cond == 1 : htmltext = "71000-1.htm" elif npcId == 71000 and cond == 3 : htmltext = "71000-4.htm" elif npcId == 30256 and cond == 1 : htmltext = "30256-1.htm" elif npcId == 30256 and cond == 2 : htmltext = "30256-1.htm" elif npcId == 30256 and cond == 3 : htmltext = "30256-1.htm" return htmltext QUEST = Quest(2010,qn,"custom") CREATED = State("Start", QUEST) STARTED = State("Started", QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30256) QUEST.addTalkId(30256) for i in range(70000,74000): QUEST.addTalkId(i) А теперь по порядку: 1. Необходимые НПС созданы и выставлены. 2. Начало квеста сделал у ГК в Глудио (т.к. через него проходят все новые чары) при этом игрок этого не заметит. (единственно добавлен новый "30256-0.htm" в котором написано "бла...бла...бла ты наконецто достиг момента чтобы отправиться в мир полный приключений но помни что опасность тебе подстерегает....бла..бла..бла", который появиться 1 раз для каждого нового чара начавшего диалог с ГК в Глудио. Скрытый текст def onEvent (self,event,st) : htmltext = event cond=st.getInt("cond") if event == "30256-1.htm" : if cond==0: st.set("cond","1") st.setState(STARTED) def onTalk (self,npc,player): htmltext = default st = player.getQuestState(qn) if st : npcId = npc.getNpcId() id = st.getState() if id == CREATED : st.set("cond","0") cond = st.getInt("cond") if npcId == 30256 and cond == 0 : htmltext = "30256-0.htm" 3. Добавляем соответственно главных НПС (Мастеров братства) Скрытый текст (def onTalk (self,npc,player) elif id == STARTED : if npcId == 72000 and cond == 1 : htmltext = "72000-1.htm" elif npcId == 72000 and cond == 2 : htmltext = "72000-4.htm" elif npcId == 71000 and cond == 1 : htmltext = "71000-1.htm" elif npcId == 71000 and cond == 3 : htmltext = "71000-4.htm" (def onEvent (self,event,st) if event == "72000-3.htm" : if cond==1: st.giveItems(DEWINGS_ID,1) st.set("cond","2") if event == "71000-3.htm" : if cond==1: st.giveItems(ANWINGS_ID,1) st.set("cond","3") В этой части любой из мастеров предложит вам вступить в его братство и выбрав одного из них вы получаете крылья братства Обратим внимание на "cond" при вступлении в братство он становиться разным (3 или 4) соответственно если вы подойдете к Мастеру чужого братства квест не продолжиться и он вас пошлет в лес за ягодами а если вы подойдете к НПС своего братства то уже попадете сразу на страницу "71000-4.htm" или "72000-4.htm" (т.е. второй раз вам уже не предложат вступить в братство) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Max 0 Опубликовано 25 октября, 2010 Теперь пойдем дальше: В настоящее время занимаюсь реализацией пункта "получить слугу" Скрытый текстif event == "71000-7.htm" : if st.getQuestItemsCount(ADENA_ID) < 5000000 : if st.getQuestItemsCount(PANGEL_ID) > 0 : st.takeItems(ADENA_ID,5000000) st.giveItems(PANGEL_ID,1) else: htmltext=default else: htmltext="The section to be in a development stage!" Слугу я сделал из baby kokabura и baby buffalo поменяв им внешний вид и статы. По задумке эта часть квеста должна определять: 1. У персонажа есть 5кк адены и если нету написать что у него нехватает денег 2. У персонажа нет питомца PDEMON_ID и если есть то написать что питомец уже есть А если есть деньги и нет питомца соответственно отнять деньги и выдать питомца! Но увы не работает( так что присоединяемся помогаем кто чем может. Теперь дальше вопрос к знатокам по проверкам: помогите написать проверку персонажа, что он является Клан лидером и его клан имеет 5 лвл и если условия удовлетворяется забрать у него маленькие крылья ANWINGS_ID = 10580 или DEWINGS_ID = 10581 и выдать ему большие ALWINGS_ID = 10582 или DLWINGS_ID = 10579 в зависимости от братства в котором он состоит. Пока вот эти 2 важных момента дальше по ходу будем вместе с вами разбирать остальные пункты. Я так же продолжаю работать над квестом и если чтото будет получаться буду дополнять тему! Заранее спасибо всем кто присоединиться к обсуждению! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Max 0 Опубликовано 26 октября, 2010 Сегодня сделал блок выхода из братства все работает нормально единственно опять же нужна проверка на количество адены так как пока адена есть она отнимается по 500кк когда у вас допустим всего 300кк то отнимется 300кк если у вас 0 соответственно ничего не отнимется но из братства вы выйдите соответственно нужна проверка что ADENA_ID>500000000 теоретически должно быть так: if event == "72000-10.htm" : if st.getQuestItemsCount(ADENA_ID) > 500000000 : if cond==2: st.takeItems(ADENA_ID,500000000) st.takeItems(DEWINGS_ID,1) st.takeItems(DLWINGS_ID,1) st.takeItems(PDEMON_ID,1) st.set("cond","1") else: htmltext="72000-11.htm" #У вас недостаточно денег чтобы покинуть братство Не знаю почему но это не работает! Помогаем! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Max 0 Опубликовано 29 октября, 2010 Да форум оказывается мертвый может кто хоть подскажет нормальный форум где темку разместить? 56 просмотров и ни одного ответа( Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Blayzer 0 Опубликовано 29 октября, 2010 без обид но мой сервак на 256 адсл с бесплатным хостингом ито популярнее был =) посоветую сначало поставить нормальный шаблон на сайт так как у вас сейчас он очень стрёмный и особености сервера каторые вы написали Особенности нашего сервера: - безопасная заточка +3; - максимальная +35; - NPC-баффер, баффы длительностью 1 час; - работающие Катакомбы и Некрополи; - Олимпиада, герои, геройское оружие и скиллы; - клановая система, кланвары, клановые скилы; Для полного баланса: - осады замков, кланхоллы и клановые привилегии; - демоническое оружие: Зарич и Акаманахи; - TvT эвент и многое другое... Больше вы можете увидеть, выбрав наш сервер. Только здесь каждый может создать свой клан и покорить мир, также на сервере действует система донейта. Удачи в игре... совесм не особенные кеакието ) скажу как игрок зйадя на ваш сайт нечего особенного и монящего я неувидел! так как всё както не качествено и сразу мелькнула мысль чем вы думал админ когда делала сайт ? =) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Misha 0 Опубликовано 29 октября, 2010 if event == "72000-10.htm" : if st.getQuestItemsCount(57) >= 500000000 : if cond==2: st.takeItems(57,500000000) st.takeItems(DEWINGS_ID,1) st.takeItems(DLWINGS_ID,1) st.takeItems(PDEMON_ID,1) st.set("cond","1") else: htmltext="72000-11.htm" #У вас недостаточно денег чтобы покинуть братство Попробуй и видпышы. Какая лутшая зборка под сервер Gracia Final ?? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Max 0 Опубликовано 1 ноября, 2010 без обид но мой сервак на 256 адсл с бесплатным хостингом ито популярнее был =)посоветую сначало поставить нормальный шаблон на сайт так как у вас сейчас он очень стрёмный и особености сервера каторые вы написали совесм не особенные кеакието ) скажу как игрок зйадя на ваш сайт нечего особенного и монящего я неувидел! так как всё както не качествено и сразу мелькнула мысль чем вы думал админ когда делала сайт ? =) Был сначала офигенный сайт во флеше но изза того что невозможно разместить во флеше кнопку л2топ пришлось перейти на статику а на статике что хорошее сложно сделать но видимо когда ты заходил это самое начало мы потихоньку дорабатываем так что думаю все будет нормально в итоге. Добавлю что онлайн перейдет с другого сервера как только все настроим так что через месяцок зайди посмотри онлайн 1000+ будет как минимум и описания на сайте особо никому не нужны если честно написать можно что угодно Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Misha 0 Опубликовано 1 ноября, 2010 Ну што з квестом розабрался? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
KFan 7 Опубликовано 2 ноября, 2010 да) выложи нам суда весь код) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Max 0 Опубликовано 9 ноября, 2010 if event == "72000-10.htm" :if st.getQuestItemsCount(57) >= 500000000 : if cond==2: st.takeItems(57,500000000) st.takeItems(DEWINGS_ID,1) st.takeItems(DLWINGS_ID,1) st.takeItems(PDEMON_ID,1) st.set("cond","1") else: htmltext="72000-11.htm" #У вас недостаточно денег чтобы покинуть братство Попробуй и видпышы. Какая лутшая зборка под сервер Gracia Final ?? С этой частью разобрался выглядит это так: if event == "72000-10.htm" : #Выйти из братства if cond==2 and count > 499999999 : #Проверка на принадлежность к братству и наличие адены st.takeItems(ADENA_ID,500000000) #забираем 500кк st.takeItems(DEWINGS_ID,1) #забираем маленькие крылья (если они есть) st.takeItems(DLWINGS_ID,1) #забираем большие крылья (если они есть) st.takeItems(PDEMON_ID,1) #забираем питомца (если он есть) st.takeItems(DLWEPN_ID,1) #забираем оружие Лидера (если есть) st.set("cond","1") #переводим квест в состояние когда мы можем вступить в любое братство else: htmltext="72000-21.htm" #У тебя недостаточно денег Для Ангелов эдентично. В самом начале раздела def onEvent ввел константу count=st.getQuestItemsCount(ADENA_ID) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Max 0 Опубликовано 9 ноября, 2010 Теперь е*сь вот с чем: if event == "71000-5.htm" : #Получить крылья Лидера if leader and clanLevel > 4 : #Проверка на лидера клана и лвл клана st.takeItems(ANWINGS_ID,1) #забрать маленькие крылья st.giveItems(ALWINGS_ID,1) #дать большие крылья else: htmltext="71000-19.htm" #ты не КЛ либо уровень клана меньше 5 ввожу константы: leader=st.getPlayer().getClan(). getClanLeader() clanLevel=st.getPlayer().getClan().getLevel() в итоге ошибка: Traceback (innermost last): File "__init__.py", line 43, in onEvent AttributeError: 'NoneType' object has no attribute 'getClanLeader' Полный лог ошибки: Скрытый текстTraceback (innermost last): File "__init__.py", line 43, in onEvent AttributeError: 'NoneType' object has no attribute 'getClanLeader' 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.core.PyObject.invoke(Unknown Source) at org.python.pycode._pyx43.onEvent$3(__init__.py:43) at org.python.pycode._pyx43.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$40.onEvent(Unknown Source) at com.l2scoria.gameserver.model.quest.Quest.onAdvEvent(Quest.java:586) at com.l2scoria.gameserver.model.quest.Quest.notifyEvent(Quest.java:419) at com.l2scoria.gameserver.model.actor.instance.L2PcInstance.processQuestEvent(L2Pc Instance.java:1552) at com.l2scoria.gameserver.network.clientpackets.RequestBypassToServer.runImpl(Requ estBypassToServer.java:227) at com.l2scoria.gameserver.network.clientpackets.L2GameClientPacket.run(L2GameClien tPacket.java:99) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Тут есть вобще питонисты ппц я вобще не программист сам все ковыряю методом сравнения поучаствуйте хоть ктото а то я буду продолжать в одиночку так как не вижу смысла тут дальше чтото выкладывать. Кстати баферов и питомцев тоже прикрутил все работает питомцев выдает с проверкой на наличие адены. Если ктото будет обсуждать могу делиться дальше а так ну нафик таких тем нигде больше нет поражаюсь безразличием Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Max 0 Опубликовано 9 ноября, 2010 P.S. интуитивно предполагаю что чтото нужно сюда добавить: def onEvent (self,event,st) : Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
KFan 7 Опубликовано 9 ноября, 2010 если все таки допишешь будь добр выложи его нам Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Max 0 Опубликовано 23 ноября, 2010 все квест дописан все работает даже пет бафера вкрутил туда теперь думаю над тем как уйти от того чтобы квест начинался у телепортера в глудио так как изначально была мысль что все новые персонажи чтобы попасть в мир из нубской деревни обязательно общаются с этим телепортером НО не учел то обстоятельство, что в дальнейшем игроки используют сумонеров (варк, котовод, коневод) и сразу могут присумонить нового чара в гиран тогда квест уже не работает и они не могут общаться с нпс пока случайно не попадут в глудио. Еще 1 момент над которым я сейчас думаю это как забирать большие крылья у лидера клана и давать ему маленькие если он распускает клан но это скорее всего реализую тут впринципе нет особо сложного надо просто в квест впихнуть хтмлки виладж мастеров и зарегить их в квесте и перенести в него функцию роспуска кланов. Следующий момент это сделать чтоб при вступлении противоположной стороны в клан противоположной стороны для всех игроков этого клана переставали работать телепорты и в шаут шло сообщение "Внимание Ангелы возможны предательства...." и еще чтоб при вступлении в братство об этом тоже сообщалось в чате на весь мир игрок с ником таким то втупил в братство демонов (ангелов) ну вот впринципе и все дополнение. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты