whiter: Все сообщения за 09 Июня 2006 года

 
ПнВтСрЧтПтСбВс
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

whiter

новичок
Подскажите пожалуйста, как можно сделать для третьей профессии эллементарный квест, типа купи марки, отдай грандмастеру, и профа у теб в кармане ?
Просто кот слишком дырявый =(
 


А зачем ходить, если можно купить на месте профу?
Вот у Эвент менеджера покупаем профу за 1000000(кинь в custom и пропиши загрузку квеста).

code text
  1. import sys
  2.  
  3. from net.sf.l2j.gameserver.model.quest        import State
  4. from net.sf.l2j.gameserver.model.quest        import QuestState
  5. from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
  6.  
  7. ADENA_ID = 57
  8.  
  9. class Quest (JQuest) :
  10.  
  11.  def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
  12.  
  13.  def onEvent (self,event,st) :
  14.     htmltext = event
  15.     if event == "3333" :
  16.        if st.getQuestItemsCount(ADENA_ID)>= 1000000 :  # Проверка на количество аден
  17.           if st.getPlayer().getClassId().getId() == 0x02 :    # Проверка на класс
  18.              htmltext = "12260-03.htm"
  19.              st.takeItems(ADENA_ID,1000000) # Стоимость профы
  20.              st.player.setClassId(88)        # На какую менять  
  21.              st.player.broadcastUserInfo()
  22.              st.setState(COMPLETED)
  23.              st.playSound("ItemSound.quest_finish")
  24.              st.set("onlyone","1")
  25.           elif st.getPlayer().getClassId().getId() == 0x03 :
  26.              htmltext = "12260-03.htm"
  27.              st.takeItems(ADENA_ID,1000000)
  28.              st.player.setClassId(89)
  29.              st.player.broadcastUserInfo()
  30.              st.setState(COMPLETED)
  31.              st.playSound("ItemSound.quest_finish")
  32.              st.set("onlyone","1")
  33.           elif st.getPlayer().getClassId().getId() == 0x05 :
  34.              htmltext = "12260-03.htm"
  35.              st.takeItems(ADENA_ID,1000000)
  36.              st.player.setClassId(90)
  37.              st.player.broadcastUserInfo()
  38.              st.setState(COMPLETED)
  39.              st.playSound("ItemSound.quest_finish")
  40.              st.set("onlyone","1")
  41.           elif st.getPlayer().getClassId().getId() == 0x06 :
  42.              htmltext = "12260-03.htm"
  43.              st.takeItems(ADENA_ID,1000000)
  44.              st.player.setClassId(91)
  45.              st.player.broadcastUserInfo()
  46.              st.setState(COMPLETED)
  47.              st.playSound("ItemSound.quest_finish")
  48.              st.set("onlyone","1")
  49.           elif st.getPlayer().getClassId().getId() == 0x08 :
  50.              htmltext = "12260-03.htm"
  51.              st.takeItems(ADENA_ID,1000000)
  52.              st.player.setClassId(93)
  53.              st.player.broadcastUserInfo()
  54.              st.setState(COMPLETED)
  55.              st.playSound("ItemSound.quest_finish")
  56.              st.set("onlyone","1")
  57.           elif st.getPlayer().getClassId().getId() == 0x09 :
  58.              htmltext = "12260-03.htm"
  59.              st.takeItems(ADENA_ID,1000000)
  60.              st.player.setClassId(92)
  61.              st.player.broadcastUserInfo()
  62.              st.setState(COMPLETED)
  63.              st.playSound("ItemSound.quest_finish")
  64.              st.set("onlyone","1")
  65.           # Продолжать остальные профы
  66.           else:
  67.              htmltext = "<html><head><body>Ne tot klacc</body></html>"
  68.              st.exitQuest(1)
  69.        else:
  70.           htmltext = "<html><head><body>Net Mani</body></html>"
  71.           st.exitQuest(1)
  72.     return htmltext
  73.  
  74.  def onTalk (Self,npc,st) :
  75.    npcId = npc.getNpcId()
  76.    htmltext = "<html><head><body>I have nothing to say you</body></html>"
  77.    id = st.getState()
  78.    if id == CREATED :
  79.      st.set("onlyone","0")   # Если хотим чтоб больше одного раза не брали
  80.    if npcId == 12260 and int(st.get("onlyone"))==0 :
  81.      if st.getPlayer().getLevel()>=76 :  # проверка на лвл
  82.         htmltext = "12260-01.htm"
  83.         st.setState(STARTED)
  84.      else:
  85.         htmltext = "12260-02.htm" # диалог о том что еще мал лвл
  86.         st.exitQuest(1)
  87.    elif npcId == 12260 and int(st.get("onlyone"))==1 :
  88.         htmltext = "<html><head><body>Bolhe nelzy brat</body></html>"
  89.    return htmltext
  90.  
  91.  


Дальше »»»
 

whiter

новичок
Обновляем клиент, добавляем запись в хост и радуемся счастливому коннекту!
Но русификацию чата плд 660 протокол пока нигде не могу найти, так что игроки курят у меня =)
Если кто найдет или знает какие байты изменить в nwindow.dll киньте ссылку плиз!
 


Присутствует нужда в наличии протокола 660?

Можно откатить на старый:

code text
  1. trunk.L2_Gameserver.java.net.sf.l2j.loginserver.LoginController
  2. -
  3.         public static class SessionKey  
  4.          {  
  5.                  public int playOkID1;  
  6.                  public int playOkID2;  
  7.                  public int loginOkID1;  
  8.                  public int loginOkID2;  
  9.                    
  10. +                 public SessionKey(int loginOK1, int loginOK2, int playOK1, int playOK2)  
  11. -                 public SessionKey(int playOK1, int loginOK2, int loginOK1, int playOK2)  
  12.                  {  
  13.                          playOkID1 = playOK1;  
  14.                          playOkID2 = playOK2;  
 

whiter

новичок
Вся проблема в том, это нет проверки уже после нажатия "Взять профу" равно как и у кота, а значит это остаеться дыра мультипроф =(

Но все равно +1, спасибо.

З.Ы. Кста, так и не понял какой контент должен быть у 12260-01.htm ...о.0
 

Какая именно проверка нужна?

В 12260-01 можно описать сколько стоит профа, упомянуть о том что только персонажи 76 лвл могут менять и после выдать ссылку
<a action="bypass -h Quest 3333_profa 3333">Купить</a><br>

Дальше профа сменится в зависимости от класса покупающего, другую он не сможет выбрать.
 

whiter

новичок
Странно.... я прописал квест на импорт, а при загрузке он даже не упоминаеться....
 


Правильно, код то неправильный :)

Класс нужно писать в hex значении – т.е.

code text
  1.           #orc mage
  2.                   elif st.getPlayer().getClassId().getId() == 0x51
  3.  
  4. Правильное:
  5.           #orc mage
  6.                   elif st.getPlayer().getClassId().getId() == 0x33


И не забуть про разметку, а то с ней тоже проблемы.
 

whiter

новичок
Это всё хорошо, но в SF с декабря 2005 есть баг со спавном квест мобов, по этому и определено жестко в одной точке.(помнится в Fortress-е данного бага не было, правда как сейчас хз.)

Можно облегчить пользователям нахождение таких мобов, сделав радар на моба при появлении и убирание оного при смерти.
 

whiter

новичок
В Фортрессе такое дело не ломали, поэтому спавним мы как угодно, хоть в заданной точке, хоть рядом с игроком.
 

Речь я вел о SF, так как выше в коде отчетливо видно что он принадлежит SF(там же они пишут о проблемы со спавном).

Нафиг радар?
 

Для того что бы не писали на форуме о том что мобы не появляются, к тому же многие играют без звуков или не обращают внимание на них, а тут над головой загорится радар и сразу понятно что моб появился.
 

whiter

новичок
Конечно, если будет ОДИН квестовый моб (что очень редко, когда они появляются только после убийства некоторых других мобов), то это ещё можно сделать, но вопрос - зачем?! По логике он как раз и должен отспавниться около игрока.
 


Должен, но речь то про SF, где с этим проблемы.
Обратимся к квесту выше приведенному – мобы Дриады отспавнены на обширной территории, спавн квестого моба глючит(моб спавнится, но его место спавна зависит от непонятных причин и меняется от рестарта к рестарту), избежать этого можно зафиксировать спавн моба в одной точке(что и делают SF-офовцы);
если спавн не фиксировать то часто возникает ситуация что игрок бьёт мобов до посинения, в это время например в Гиране(если спавн моба не жесткий, если жесткий то в той точке) их плодится десятками. Появление радара самое красноречивое доказательство для игроков что моб появился.
 
Это сообщение редактировалось 09.06.2006 в 22:00

в начало страницы | новое
 
Поиск
Поддержка
Поддержи форум!
ЯндексЯндекс. ДеньгиХочу такую же кнопку
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru