Witaj
Gość

Wątek: [Poradnik] NPC Buffer  (Przeczytany 27902 razy)

  • ******
  • Wiadomości: 1390

  • Pochwał: 15

  • Urażona dzidzia, urażona dzidzia!
[Poradnik] NPC Buffer
« dnia: Kwiecień 12, 2008, 11:00:52 am »
1. Html

Tworzymy plik html.

W nim piszemy coś takiego:
Cytuj
<html><title>Buffer</title>
<body>
<br>
<br>
Jakiś tekst
<br>
<img src="L2UI_CH3.onscrmsg_pattern01_1" width=300 height=32 align=left>
<center>
<table border="0" cellspacing="0">

   <tr>
   <td valign=top><img src=icon.skill1240 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1087 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1010 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1036 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1243 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1033 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1303 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1035 width=32 height=32 align=left></td>
   </tr>

   <tr>
   <td valign=top><img src=icon.skill1032 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1048 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1078 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1085 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1059 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1352 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1259 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1393 width=32 height=32 align=left></td>
   </tr>
   
</table>
<br>
<img src="L2UI_CH3.onscrmsg_pattern01_2" width=300 height=32 align=left>
<td><button value="Buff Me" action="bypass -h npc_%objectId%_Quest 9999_NPCBuffer" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
<br>
</body>
</center>
</html>


zapisujemy pod nazwą 40010.htm
2. Plik pythona:

Otwieramy notatnik i dodajemy takie linijki:
Cytuj
import sys
from net.sf.l2j.gameserver.model.actor.instance import L2PcInstance
from java.util import Iterator
from net.sf.l2j.gameserver.datatables import SkillTable
from net.sf.l2j                import L2DatabaseFactory
from net.sf.l2j.gameserver.model.quest import State
from net.sf.l2j.gameserver.model.quest import QuestState
from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Dzięki nim buffer może nas buffnąc. :P

Następnie dodajemy taką linijkę:
Cytuj
qn = "9999_NPCBuffer"
Jak sam pozątek wskazuje qn = quest name czyli nazwa questu :)

Cytuj
NPC=[40010]
ta linijka mówi nam do jakiego NPC sie odnosi
Cytuj
ADENA_ID=57
- tu podajemy ID adeny - można również dac inne ID za które buffer będzie buffował :)
Cytuj
QuestId     = 9999
- ID questu (Tu nic nie zmieniamy)
Cytuj
QuestName   = "NPCBuffer"
nie musze pisac
Cytuj
QuestDesc   = "custom"

Cytuj
print "importing custom: 9999: NPCBuffer"
- to akurat jest mało ważne - odpowiada za wyświetlanie w konsoli podczas ładowania questów

Teraz troche trudniejszych rzeczy:

Cytuj
class Quest (JQuest) :

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


   def onEvent(self,event,st):
      htmltext = event
      count=st.getQuestItemsCount(ADENA_ID)
      if count < 150000 or st.getPlayer().getLevel() < 40 :
         htmltext = "<html><head><body>No Tienes Adena.<br></body></html>"
      else:
         st.takeItems(ADENA_ID,0)
         st.getPlayer().setTarget(st.getPlayer())
         
         if event == "1":
            st.takeItems(ADENA_ID,1000)
            st.getPlayer().setCurrentCp(st.getPlayer().getMaxCp())
                                st.getPlayer().setCurrentHp(st.getPlayer().getMaxHp())
                                st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            st.setState(COMPLETED)

Ta całośc odpowiada za rozpoczęcie questu oraz za wyświetlenie htmlka kiedy dana osoba np nie ma adeny


Teraz dodajemy konkretne buffki:

if event == "2":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4342,2).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            st.setState(COMPLETED)



to jest akurat ww (wind Walk)

Kiedy chcemy dodac nastepnego robimy:

Cytuj
if event == "3":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4342,2).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())   
            st.setState(COMPLETED)
Zmieniamy kolejno
Cytuj
if event == "2":
            
na
Cytuj
if event == "3":
            
I tak dalej.
To co zaznaczyłem na pomarańczowo to ID buffka a 2 to level buffka. Zmieniamy poprostu wartości np:
« Ostatnia zmiana: Październik 03, 2010, 06:01:53 pm wysłana przez Matim »


  • ******
  • Wiadomości: 1390

  • Pochwał: 15

  • Urażona dzidzia, urażona dzidzia!
Odp: [Poradnik] NPC Bufferek
« Odpowiedź #1 dnia: Kwiecień 12, 2008, 11:03:20 am »
Cytuj
   #Wind Walk
         if event == "2":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4342,2).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            st.setState(COMPLETED)

         #Decrease Weight
         if event == "3":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4343,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            st.setState(COMPLETED)

         #Shield
         if event == "4":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4344,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            st.setState(COMPLETED)

         #Might
         if event == "5":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4345,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())   
            st.setState(COMPLETED)

         #Mental Shield
         if event == "6":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4346,4).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())   
            st.setState(COMPLETED)

         #Bless the Body
         if event == "7":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4347,6).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())   
            st.setState(COMPLETED)

         #Bless the Soul
         if event == "8":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4348,6).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())   
            st.setState(COMPLETED)

         #Magic Barrier
         if event == "9":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4349,2).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            st.setState(COMPLETED)

         #Resist Shock
         if event == "10":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4350,4).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())   
            st.setState(COMPLETED)

         #Concentration
         if event == "11":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4351,6).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            st.setState(COMPLETED)

         #Berserker Spirit
         if event == "12":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4352,2).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            st.setState(COMPLETED)

         #Bless Shield
         if event == "13":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4353,6).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())   
            st.setState(COMPLETED)

         #Vampiric Rage
         if event == "14":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4354,4).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            st.setState(COMPLETED)

         #Acumen
         if event == "15":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4355,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            st.setState(COMPLETED)

         #Empower
         if event == "16":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4356,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            st.setState(COMPLETED)

         #Haste
         if event == "17":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4357,2).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())   
            st.setState(COMPLETED)

         #Guidance
         if event == "18":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4358,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())   
            st.setState(COMPLETED)

         #Focus
         if event == "19":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4359,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            st.setState(COMPLETED)

         #Death Whisper
         if event == "20":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4360,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())   
            st.setState(COMPLETED)

         if event == "21":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(271,1).getEffects(st.getPlayer(),st.getPlayer())   
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "22":
            st.takeItems(ADENA_ID,20000)   
            SkillTable.getInstance().getInfo(272,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "23":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(273,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())

         if event == "24":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(274,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())

         if event == "25":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(275,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())

         if event == "26":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(276,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())

         if event == "27":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(277,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())

         if event == "28":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(307,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())

         if event == "29":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(309,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())


         if event == "30":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(310,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())


         if event == "31":
            st.takeItems(ADENA_ID,20000)      
            SkillTable.getInstance().getInfo(311,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())


         if event == "32":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(366,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())


         if event == "33":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(365,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())         

         if event == "34":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(264,1).getEffects(st.getPlayer(),st.getPlayer())   
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())

         if event == "35":
            st.takeItems(ADENA_ID,20000)   
            SkillTable.getInstance().getInfo(265,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())

         if event == "36":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(266,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())

         if event == "37":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(267,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())

         if event == "38":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(268,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())


         if event == "39":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(269,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())


         if event == "40":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(270,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())


         if event == "41":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(304,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())


         if event == "42":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(305,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())


         if event == "43":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(306,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())


         if event == "44":
            st.takeItems(ADENA_ID,20000)   
            SkillTable.getInstance().getInfo(308,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())


         if event == "45":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(363,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())


         if event == "46":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(364,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())

             
         if event == "47":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(349,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())

            st.setState(COMPLETED)
            
            
         #Chant of Battle
         if event == "48":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1007,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            st.setState(COMPLETED)
            
         #Chant of Shielding
         if event == "49":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1009,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            st.setState(COMPLETED)
            
         #Chant of Fire
         if event == "50":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1006,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            st.setState(COMPLETED)
            
         #Chant of Flame
         if event == "51":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1002,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            st.setState(COMPLETED)
            
         #Chant of life
         if event == "52":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1229,18).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            st.setState(COMPLETED)
            
         #Chant of Fury
         if event == "53":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1251,2).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            st.setState(COMPLETED)
            
         #Chant of Evasion
         if event == "54":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1252,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            st.setState(COMPLETED)
            
         #Chant of Rage
         if event == "55":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1253,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
   
            st.setState(COMPLETED)
            
         #Chant of Revenge
         if event == "56":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1284,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            
            st.setState(COMPLETED)
            
         #Chant of Vampire
         if event == "57":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1310,4).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            
            st.setState(COMPLETED)
            
         #Chant of Eagle
         if event == "58":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1309,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            
            st.setState(COMPLETED)
            
         #Chant of Predator
         if event == "59":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1308,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
         
            st.setState(COMPLETED)
            
         #Chant of Spirit
         if event == "60":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1362,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
         
            st.setState(COMPLETED)
            
         #Chant of Victory
         if event == "61":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1363,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            
            st.setState(COMPLETED)
            
         #chant of magnus
         if event == "62":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1413,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            
            st.setState(COMPLETED)   
         
         #MPreg
         if event == "63":
            st.takeItems(ADENA_ID,1000)
            SkillTable.getInstance().getInfo(1013,32).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
               
            st.setState(COMPLETED)         

         #greatmight
         if event == "64":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1388,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
         
            st.setState(COMPLETED)

         #greatshield
         if event == "65":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1389,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
               
            st.setState(COMPLETED)

         #holyresist
         if event == "66":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1392,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            
            st.setState(COMPLETED)

         #Unholyresist
         if event == "67":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1393,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
         
            st.setState(COMPLETED)

         #pof
         if event == "68":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1356,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
               
            st.setState(COMPLETED)

         #elemtprotect
         if event == "69":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1352,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            
            st.setState(COMPLETED)

         #wildmagic
         if event == "70":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1303,2).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
      
            st.setState(COMPLETED)

         #advblock
         if event == "71":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1304,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            
            st.setState(COMPLETED)

         #divProtect
         if event == "72":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1353,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            
            st.setState(COMPLETED)

         #pow
         if event == "73":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1355,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            
            st.setState(COMPLETED)

         #powi
         if event == "74":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1357,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            
            st.setState(COMPLETED)

         #manaregen
         if event == "75":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1047,4).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
      
            st.setState(COMPLETED)

         #ba
         if event == "76":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1311,6).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            
            st.setState(COMPLETED)
                        #noble
         if event == "77":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1323,1).getEffects(st.getPlayer(),st.getPlayer())
      
            st.setState(COMPLETED)
            

         #Cancellation
         if event == "78":
            st.takeItems(ADENA_ID,5000)
            st.getPlayer().useMagic(SkillTable.getInstance().getInfo(9950,1),False,False)
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
      
            st.setState(COMPLETED)      

Teraz kończymy plik pythona dopisując
Cytuj
return htmltext


   def onTalk (self,npc,player):
      st = player.getQuestState(qn)
      htmltext = "<html><head><body>I have nothing to say to you</body></html>"
      st.setState(State.STARTED)
      return InitialHtml

QUEST       = Quest(QuestId,str(QuestId) + "_" + QuestName,QuestDesc)

for npcId in NPC:
 QUEST.addStartNpc(npcId)
 QUEST.addTalkId(npcId)

i zapisujemy pod nazwą __init__.py.
« Ostatnia zmiana: Kwiecień 12, 2008, 05:38:39 pm wysłana przez Maślan »


  • ******
  • Wiadomości: 1390

  • Pochwał: 15

  • Urażona dzidzia, urażona dzidzia!
Odp: [Poradnik] NPC Bufferek
« Odpowiedź #2 dnia: Kwiecień 12, 2008, 11:03:58 am »
Cytuj
import sys
from net.sf.l2j.gameserver.model.actor.instance import L2PcInstance
from java.util import Iterator
from net.sf.l2j.gameserver.datatables import SkillTable
from net.sf.l2j                import L2DatabaseFactory
from net.sf.l2j.gameserver.model.quest import State
from net.sf.l2j.gameserver.model.quest import QuestState
from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest

qn = "9999_NPCBuffer"

NPC=[40010]
ADENA_ID=57
QuestId     = 9999
QuestName   = "NPCBuffer"
QuestDesc   = "custom"
InitialHtml = "1.htm"

print "importing custom: 9999: NPCBuffer"

class Quest (JQuest) :

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


   def onEvent(self,event,st):
      htmltext = event
      count=st.getQuestItemsCount(ADENA_ID)
      if count < 150000 or st.getPlayer().getLevel() < 40 :
         htmltext = "<html><head><body>No Tienes Adena.<br></body></html>"
      else:
         st.takeItems(ADENA_ID,0)
         st.getPlayer().setTarget(st.getPlayer())
         
         if event == "1":
            st.takeItems(ADENA_ID,1000)
            st.getPlayer().setCurrentCp(st.getPlayer().getMaxCp())
                                st.getPlayer().setCurrentHp(st.getPlayer().getMaxHp())
                                st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "1.htm"      
            st.setState(COMPLETED)

         #Wind Walk
         if event == "2":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4342,2).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #Decrease Weight
         if event == "3":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4343,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #Shield
         if event == "4":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4344,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #Might
         if event == "5":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4345,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #Mental Shield
         if event == "6":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4346,4).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #Bless the Body
         if event == "7":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4347,6).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #Bless the Soul
         if event == "8":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4348,6).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #Magic Barrier
         if event == "9":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4349,2).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #Resist Shock
         if event == "10":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4350,4).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #Concentration
         if event == "11":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4351,6).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #Berserker Spirit
         if event == "12":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4352,2).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #Bless Shield
         if event == "13":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4353,6).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #Vampiric Rage
         if event == "14":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4354,4).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #Acumen
         if event == "15":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4355,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #Empower
         if event == "16":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4356,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #Haste
         if event == "17":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4357,2).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #Guidance
         if event == "18":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4358,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #Focus
         if event == "19":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4359,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #Death Whisper
         if event == "20":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4360,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         if event == "21":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(271,1).getEffects(st.getPlayer(),st.getPlayer())   
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "22":
            st.takeItems(ADENA_ID,20000)   
            SkillTable.getInstance().getInfo(272,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "23":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(273,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "24":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(274,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "25":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(275,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "26":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(276,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "27":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(277,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "28":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(307,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "29":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(309,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "30":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(310,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "31":
            st.takeItems(ADENA_ID,20000)      
            SkillTable.getInstance().getInfo(311,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "32":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(366,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "33":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(365,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())         
            return "3.htm"

         if event == "34":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(264,1).getEffects(st.getPlayer(),st.getPlayer())   
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "35":
            st.takeItems(ADENA_ID,20000)   
            SkillTable.getInstance().getInfo(265,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "36":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(266,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "37":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(267,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "38":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(268,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "39":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(269,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "40":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(270,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "41":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(304,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "42":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(305,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "43":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(306,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"   

         if event == "44":
            st.takeItems(ADENA_ID,20000)   
            SkillTable.getInstance().getInfo(308,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "45":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(363,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "46":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(364,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"   
             
         if event == "47":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(349,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"   
            st.setState(COMPLETED)
            
            
         #Chant of Battle
         if event == "48":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1007,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
            
         #Chant of Shielding
         if event == "49":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1009,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
            
         #Chant of Fire
         if event == "50":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1006,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
            
         #Chant of Flame
         if event == "51":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1002,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
            
         #Chant of life
         if event == "52":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1229,18).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
            
         #Chant of Fury
         if event == "53":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1251,2).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
            
         #Chant of Evasion
         if event == "54":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1252,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
            
         #Chant of Rage
         if event == "55":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1253,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
            
         #Chant of Revenge
         if event == "56":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1284,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
            
         #Chant of Vampire
         if event == "57":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1310,4).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
            
         #Chant of Eagle
         if event == "58":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1309,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
            
         #Chant of Predator
         if event == "59":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1308,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
            
         #Chant of Spirit
         if event == "60":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1362,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
            
         #Chant of Victory
         if event == "61":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1363,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
            
         #chant of magnus
         if event == "62":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1413,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)   
         
         #MPreg
         if event == "63":
            st.takeItems(ADENA_ID,1000)
            SkillTable.getInstance().getInfo(1013,32).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "1.htm"      
            st.setState(COMPLETED)         

         #greatmight
         if event == "64":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1388,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #greatshield
         if event == "65":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1389,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #holyresist
         if event == "66":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1392,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #Unholyresist
         if event == "67":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1393,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #pof
         if event == "68":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1356,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #elemtprotect
         if event == "69":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1352,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #wildmagic
         if event == "70":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1303,2).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #advblock
         if event == "71":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1304,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #divProtect
         if event == "72":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1353,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #pow
         if event == "73":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1355,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #powi
         if event == "74":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1357,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #manaregen
         if event == "75":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1047,4).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)

         #ba
         if event == "76":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1311,6).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"      
            st.setState(COMPLETED)
                        #noble
         if event == "77":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1323,1).getEffects(st.getPlayer(),st.getPlayer())
            return "1.htm"      
            st.setState(COMPLETED)
            

         #Cancellation
         if event == "78":
            st.takeItems(ADENA_ID,5000)
            st.getPlayer().useMagic(SkillTable.getInstance().getInfo(9950,1),False,False)
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "1.htm"
            st.setState(COMPLETED)         
            
         if htmltext != event:
            st.setState(COMPLETED)
            st.exitQuest(1)
      return htmltext


   def onTalk (self,npc,player):
      st = player.getQuestState(qn)
      htmltext = "<html><head><body>I have nothing to say to you</body></html>"
      st.setState(State.STARTED)
      return InitialHtml

QUEST       = Quest(QuestId,str(QuestId) + "_" + QuestName,QuestDesc)

for npcId in NPC:
 QUEST.addStartNpc(npcId)
 QUEST.addTalkId(npcId)


  • ******
  • Wiadomości: 1390

  • Pochwał: 15

  • Urażona dzidzia, urażona dzidzia!
Odp: [Poradnik] NPC Buffer
« Odpowiedź #3 dnia: Kwiecień 12, 2008, 11:04:34 am »

Teraz bierzemy sie za poszczególne Html które wyświetlają buffki.

3. Notatnik i w droge

Cytuj
<html><title>Buffer</title>
<body>
<br>
<br>
Jakis tekst
<br>
<img src="L2UI_CH3.onscrmsg_pattern01_1" width=300 height=32 align=left>
<center>
<table border="0" cellspacing="0">

   <tr>
   <td valign=top><img src=icon.skill1240 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1087 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1010 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1036 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1243 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1033 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1303 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1035 width=32 height=32 align=left></td>
   </tr>

   <tr>
   <td valign=top><img src=icon.skill1032 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1048 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1078 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1085 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1059 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1352 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1259 width=32 height=32 align=left></td>
   <td valign=top><img src=icon.skill1393 width=32 height=32 align=left></td>
   </tr>
   
</table>
<br>
<img src="L2UI_CH3.onscrmsg_pattern01_2" width=300 height=32 align=left>
<table width="200" border="0">
  <tr>
    <td><button value="HP-MP-CP" action="bypass -h Quest 9999_NPCBuffer 1" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><button value="Noblesse" action="bypass -h Quest 9999_NPCBuffer 77" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><button value="Choose Buffs" action="bypass -h Quest 9999_NPCBuffer 2.htm" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
  <tr>
    <td><button value="Dances" action="bypass -h Quest 9999_NPCBuffer 3.htm" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><button value="Songs" action="bypass -h Quest 9999_NPCBuffer 4.htm" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><button value="Chants" action="bypass -h Quest 9999_NPCBuffer 5.htm" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><button value="Cancel Buff" action="bypass -h Quest 9999_NPCBuffer 78" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td>&nbsp;</td>
  </tr>
</table>
</body>
</center>
</html>


Zapisujemy jako html 1.htm

HTML 2 :D

Cytuj
<html><title>Choose Buffs</title>
<body>
<center>
<img src="L2UI_CH3.herotower_deco" height="32" width="256">
<table>

   <tr>
   <td valign=top><img src=icon.skill1204 width=32 height=32 align=left></td>
   <td valign=top><button value="WindWalk" action="bypass -h Quest 9999_NPCBuffer 2" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
   <td valign=top><img src=icon.skill1040 width=32 height=32 align=left></td>
   <td valign=top><button value="Shield" action="bypass -h Quest 9999_NPCBuffer 4" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
   </tr>

   <tr>
   <td valign=top><img src=icon.skill1068 width=32 height=32 align=left></td>
   <td valign=top><button value="Might" action="bypass -h Quest 9999_NPCBuffer 5" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
   <td valign=top><img src=icon.skill1035 width=32 height=32 align=left></td>
   <td valign=top><button value="MentalShield" action="bypass -h Quest 9999_NPCBuffer 6" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
   </tr>

   <tr>
   <td valign=top><img src=icon.skill1045 width=32 height=32 align=left></td>
   <td valign=top><button value="BlessBody" action="bypass -h Quest 9999_NPCBuffer 7" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
   <td valign=top><img src=icon.skill1048 width=32 height=32 align=left></td>
   <td valign=top><button value="BlessSoul" action="bypass -h Quest 9999_NPCBuffer 8" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
   </tr>

   <tr>
   <td valign=top><img src=icon.skill1036 width=32 height=32 align=left></td>
   <td valign=top><button value="MagicBarrier" action="bypass -h Quest 9999_NPCBuffer 9" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
   <td valign=top><img src=icon.skill1259 width=32 height=32 align=left></td>
   <td valign=top><button value="ResistShock" action="bypass -h Quest 9999_NPCBuffer 10" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
   </tr>

   <tr>
   <td valign=top><img src=icon.skill1078 width=32 height=32 align=left></td>
   <td valign=top><button value="Concentration" action="bypass -h Quest 9999_NPCBuffer 11" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
   <td valign=top><img src=icon.skill1062 width=32 height=32 align=left></td>
   <td valign=top><button value="BerserkerSpirit" action="bypass -h Quest 9999_NPCBuffer 12" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
   </tr>

   <tr>
   <td valign=top><img src=icon.skill1243 width=32 height=32 align=left></td>
   <td valign=top><button value="BlessShield" action="bypass -h Quest 9999_NPCBuffer 13" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
   <td valign=top><img src=icon.skill1268 width=32 height=32 align=left></td>
   <td valign=top><button value="VampiricRage" action="bypass -h Quest 9999_NPCBuffer 14" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
   </tr>

   <tr>
   <td valign=top><img src=icon.skill1085 width=32 height=32 align=left></td>
   <td valign=top><button value="Acumen" action="bypass -h Quest 9999_NPCBuffer 15" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
   <td valign=top><img src=icon.skill1059 width=32 height=32 align=left></td>
   <td valign=top><button value="Empower" action="bypass -h Quest 9999_NPCBuffer 16" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
   </tr>

   <tr>
   <td valign=top><img src=icon.skill1086 width=32 height=32 align=left></td>
   <td valign=top><button value="Haste" action="bypass -h Quest 9999_NPCBuffer 17" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
   <td valign=top><img src=icon.skill1240 width=32 height=32 align=left></td>
   <td valign=top><button value="Guidance" action="bypass -h Quest 9999_NPCBuffer 18" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
   </tr>

   <tr>
   <td valign=top><img src=icon.skill1077 width=32 height=32 align=left></td>
   <td valign=top><button value="Focus" action="bypass -h Quest 9999_NPCBuffer 19" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
   <td valign=top><font color="B09878"><img src=icon.skill1242 width=32 height=32 align=left></font></td>
   <td valign=top><button value="DeathWhisper" action="bypass -h Quest 9999_NPCBuffer 20" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
   </tr>

   <tr>
     <td valign=top><img src=icon.skill1388 width=32 height=32 align=left></td>
     <td valign=top><button value="GreaterMight" action="bypass -h Quest 9999_NPCBuffer 64" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
     <td valign=top><img src=icon.skill1389 width=32 height=32 align=left></td>
     <td valign=top><button value="GreaterShield" action="bypass -h Quest 9999_NPCBuffer 65" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    </tr>
   <tr>
     <td valign=top><img src=icon.skill1392 width=32 height=32 align=left></td>
     <td valign=top><button value="HolyResist" action="bypass -h Quest 9999_NPCBuffer 66" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
     <td valign=top><img src=icon.skill1393 width=32 height=32 align=left></td>
     <td valign=top><button value="UNHolyResis" action="bypass -h Quest 9999_NPCBuffer 67" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    </tr>
   <tr>
     <td valign=top><img src=icon.skill1356 width=32 height=32 align=left></td>
     <td valign=top><button value="PropheofFire" action="bypass -h Quest 9999_NPCBuffer 68" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
     <td valign=top><img src=icon.skill1352 width=32 height=32 align=left></td>
     <td valign=top><button value="ElementalProte" action="bypass -h Quest 9999_NPCBuffer 69" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    </tr>
   <tr>
     <td valign=top><img src=icon.skill1303 width=32 height=32 align=left></td>
     <td valign=top><button value="WildMagic" action="bypass -h Quest 9999_NPCBuffer 70" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
     <td valign=top><img src=icon.skill1304 width=32 height=32 align=left></td>
     <td valign=top><button value="AdvancedBlock" action="bypass -h Quest 9999_NPCBuffer 71" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    </tr>
   <tr>
     <td valign=top><img src=icon.skill1355 width=32 height=32 align=left></td>
     <td valign=top><button value="PropheofWater" action="bypass -h Quest 9999_NPCBuffer 73" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
     <td valign=top><img src=icon.skill1357 width=32 height=32 align=left></td>
     <td valign=top><button value="PropheofWind" action="bypass -h Quest 9999_NPCBuffer 74" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    </tr>
   <tr>
     <td valign=top><img src=icon.skill1047 width=32 height=32 align=left></td>
     <td valign=top><button value="ManaRegenera" action="bypass -h Quest 9999_NPCBuffer 75" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
     <td valign=top><img src=icon.skill1257 width=32 height=32 align=left></td>
     <td valign=top><button value="DecreaseWeight" action="bypass -h Quest 9999_NPCBuffer 3" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
</table>
<td>
<br>
<button value="Go Back" action="bypass -h Quest 9999_NPCBuffer 1.htm" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
<img src="L2UI_CH3.herotower_deco" height="32" width="256">
</center>
</body>
</html>


Zapsujemy jako 2.htm
Html nr 3:
Cytuj
<html><title>Dances</title>
<center>
<body>
<br>
<br>
<br>
<img src="L2UI_CH3.herotower_deco" height="32" width="256">
<table>
  <tr>
    <td><img src=icon.skill0271 width=32 height=32 align=left></td>
    <td><button value="Warrior" action="bypass -h Quest 9999_NPCBuffer 21" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><img src=icon.skill0272 width=32 height=32 align=left></td>
    <td><button value="Inspiration" action="bypass -h Quest 9999_NPCBuffer 22" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
  <tr>
    <td><img src=icon.skill0273 width=32 height=32 align=left></td>
    <td><button value="Mystic" action="bypass -h Quest 9999_NPCBuffer 23" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><img src=icon.skill0274 width=32 height=32 align=left></td>
    <td><button value="Fire" action="bypass -h Quest 9999_NPCBuffer 24" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
  <tr>
    <td><img src=icon.skill0275 width=32 height=32 align=left></td>
    <td><button value="Fury" action="bypass -h Quest 9999_NPCBuffer 25" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><img src=icon.skill0276 width=32 height=32 align=left></td>
    <td><button value="Concentration" action="bypass -h Quest 9999_NPCBuffer 26" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
  <tr>
    <td><img src=icon.skill0277 width=32 height=32 align=left></td>
    <td><button value="Light" action="bypass -h Quest 9999_NPCBuffer 27" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><img src=icon.skill0307 width=32 height=32 align=left></td>
    <td><button value="Aqua Guard" action="bypass -h Quest 9999_NPCBuffer 28" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
  <tr>
    <td><img src=icon.skill0309 width=32 height=32 align=left></td>
    <td><button value="Earth Guard" action="bypass -h Quest 9999_NPCBuffer 29" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><img src=icon.skill0310 width=32 height=32 align=left></td>
    <td><button value="Vampire" action="bypass -h Quest 9999_NPCBuffer 30" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
  <tr>
    <td><img src=icon.skill0311 width=32 height=32 align=left></td>
    <td><button value="Protection" action="bypass -h Quest 9999_NPCBuffer 31" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><img src=icon.skill0366 width=32 height=32 align=left></td>
    <td><button value="Shadow" action="bypass -h Quest 9999_NPCBuffer 32" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
  </tr>
  <tr>
    <td><img src=icon.skill0365 width=32 height=32 align=left></td>
    <td><button value="Siren" action="bypass -h Quest 9999_NPCBuffer 33" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td></td>
    <td></td>
  </tr>
</table>
<br>
  <td><button value="Go Back" action="bypass -h Quest 9999_NPCBuffer 1.htm" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
    </td>
      <img src="L2UI_CH3.herotower_deco" height="32" width="256">
</body>
</center>
</html>

Zapisujemy 3.htm

Html nr 4:
Cytuj
<html><title>Songs</title>
<center>
<body>
<img src="L2UI_CH3.herotower_deco" height="32" width="256">
<table border="0">
  <tr>
    <td><img src=icon.skill0264 width=32 height=32 align=left></td>
    <td><button value="Earth" action="bypass -h Quest 9999_NPCBuffer 34" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><img src=icon.skill0265 width=32 height=32 align=left></td>
    <td><button value="Life" action="bypass -h Quest 9999_NPCBuffer 35" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
  <tr>
    <td><img src=icon.skill0266 width=32 height=32 align=left></td>
    <td><button value="Water" action="bypass -h Quest 9999_NPCBuffer 36" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><img src=icon.skill0267 width=32 height=32 align=left></td>
    <td><button value="Warding" action="bypass -h Quest 9999_NPCBuffer 37" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
  <tr>
    <td><img src=icon.skill0268 width=32 height=32 align=left></td>
    <td><button value="Wind" action="bypass -h Quest 9999_NPCBuffer 38" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><img src=icon.skill0269 width=32 height=32 align=left></td>
    <td><button value="Hunter" action="bypass -h Quest 9999_NPCBuffer 39" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
  <tr>
    <td><img src=icon.skill0270 width=32 height=32 align=left></td>
    <td><button value="Invocation" action="bypass -h Quest 9999_NPCBuffer 40" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><img src=icon.skill0304 width=32 height=32 align=left></td>
    <td><button value="Vitality" action="bypass -h Quest 9999_NPCBuffer 41" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
  <tr>
    <td><img src=icon.skill0305 width=32 height=32 align=left></td>
    <td><button value="Vengeance" action="bypass -h Quest 9999_NPCBuffer 42" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><img src=icon.skill0306 width=32 height=32 align=left></td>
    <td><button value="Flame Guard" action="bypass -h Quest 9999_NPCBuffer 43" width=80 height=20 back"L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
  <tr>
    <td><img src=icon.skill0307 width=32 height=32 align=left></td>
    <td><button value="Storm Guard" action="bypass -h Quest 9999_NPCBuffer 44" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><img src=icon.skill0308 width=32 height=32 align=left></td>
    <td><button value="Meditation" action="bypass -h Quest 9999_NPCBuffer 45" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
  <tr>
    <td><img src=icon.skill0364 width=32 height=32 align=left></td>
    <td><button value="Champion" action="bypass -h Quest 9999_NPCBuffer 46" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><img src=icon.skill0349 width=32 height=32 align=left></td>
    <td><button value="Renewal" action="bypass -h Quest 9999_NPCBuffer 47" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
</table>
<br>
<td><button value="Go Back" action="bypass -h Quest 9999_NPCBuffer 1.htm" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
<img src="L2UI_CH3.herotower_deco" height="32" width="256">
</body>
</center>
</html>

save 4.htm

Html nr 5:

Cytuj
<html><title>Chants</title>
<body>
<center>
<img src="L2UI_CH3.herotower_deco" height="32" width="256">
<table border="0">
  <tr>
    <td><img src=icon.skill1007 width=32 height=32 align=left></td>
    <td><button value="Battle" action="bypass -h Quest 9999_NPCBuffer 48" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><img src=icon.skill1009 width=32 height=32 align=left></td>
    <td><button value="Shielding" action="bypass -h Quest 9999_NPCBuffer 49" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
  <tr>
    <td><img src=icon.skill1006 width=32 height=32 align=left></td>
    <td><button value="Fire" action="bypass -h Quest 9999_NPCBuffer 50" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><img src=icon.skill1002 width=32 height=32 align=left></td>
    <td><button value="Flame" action="bypass -h Quest 9999_NPCBuffer 51" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
  <tr>
    <td><img src=icon.skill1229 width=32 height=32 align=left></td>
    <td><button value="Life" action="bypass -h Quest 9999_NPCBuffer 52" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><img src=icon.skill1251 width=32 height=32 align=left></td>
    <td><button value="Fury" action="bypass -h Quest 9999_NPCBuffer 53" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
  <tr>
    <td><img src=icon.skill1252 width=32 height=32 align=left></td>
    <td><button value="Evasion" action="bypass -h Quest 9999_NPCBuffer 54" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><img src=icon.skill1253 width=32 height=32 align=left></td>
    <td><button value="Rage" action="bypass -h Quest 9999_NPCBuffer 55" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
  <tr>
    <td><img src=icon.skill1284 width=32 height=32 align=left></td>
    <td><button value="Revenge" action="bypass -h Quest 9999_NPCBuffer 56" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><img src=icon.skill1310 width=32 height=32 align=left></td>
    <td><button value="Vampire" action="bypass -h Quest 9999_NPCBuffer 57" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
  <tr>
    <td><img src=icon.skill1309 width=32 height=32 align=left></td>
    <td><button value="Eagle" action="bypass -h Quest 9999_NPCBuffer 58" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><img src=icon.skill1308 width=32 height=32 align=left></td>
    <td><button value="Predator" action="bypass -h Quest 9999_NPCBuffer 59" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
  <tr>
    <td><img src=icon.skill1362 width=32 height=32 align=left></td>
    <td><button value="Spirit" action="bypass -h Quest 9999_NPCBuffer 60" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td><img src=icon.skill1363 width=32 height=32 align=left></td>
    <td><button value="Victory" action="bypass -h Quest 9999_NPCBuffer 61" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  </tr>
  <tr>
    <td><img src=icon.skill1413 width=32 height=32 align=left></td>
    <td><button value="Magnus" action="bypass -h Quest 9999_NPCBuffer 62" width=80 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>
<button value="Go Back" action="bypass -h Quest 9999_NPCBuffer 1.htm" width=100 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
<img src="L2UI_CH3.herotower_deco" height="32" width="256">
</body>
</center>
</html>

Zapisujemy 5.htm

Dodawanie questu do gameservera.

tworzymy sobie Katalog 9999_NPCBuffer i wrzucamy do niego pliki:
1.htm
2.htm
3.htm
4.htm
5.htm
__init__.py


  • ******
  • Wiadomości: 1390

  • Pochwał: 15

  • Urażona dzidzia, urażona dzidzia!
Odp: [Poradnik] NPC Buffer
« Odpowiedź #4 dnia: Kwiecień 12, 2008, 11:12:46 am »
Następnie kopjujemy do katalogu /data/scripts/custom/
A plik 40010.htm kopjujemy do /data/html/default/

Teraz dodajemy wpis do pliku scripts.cfg

na samym końcu poniżej
Cytuj
# Custom
custom/3995_echo/__init__.py
custom/4000_ShadowWeapons/__init__.py
custom/7000_HeroItems/__init__.py
custom/8000_RaidbossInfo/__init__.py
custom/6050_KetraOrcSupport/__init__.py
custom/6051_VarkaSilenosSupport/__init__.py
custom/8500_Buffer/__init__.py
custom/8501_Regen/__init__.py
custom/8502_raid_antharas/__init__.py
custom/8502_raid_baium/__init__.py
custom/8502_raid_valakas/__init__.py
tego dodajemy:
Cytuj
custom/9999_NPCBuffer/__init__.py

i Zapisujemy plik.

Na koniec zostało dodanie wpisu do bazy mysql. A konkretniej:

Cytuj
INSERT INTO `npc` VALUES ('40010', '32174', 'Npc Buffer', '1', 'buu', '1', 'LineageNPC2.K_F1_guard', '13.00', '22.50', '70', 'female', 'L2Npc', '40', '3862', '1494', null, null, '40', '43', '30', '21', '20', '10', '5879', '590', '1444', '514', '760', '381', '253', '0', '253', '9644', '0', '0', '80', '120', null, null, '0', '0', 'LAST_HIT');

Wykonujemy to zapytanie sql. Teraz wystarczy zrestartowac serwer i mamy buffera po wcześniejszym spawnie //spawn 40010


Sory za kilka postów ale jest limit 4000 znaków. W razie problemów pisac.


  • Wiadomości: 5

  • Pochwał: 0

Odp: [Poradnik] NPC Buffer
« Odpowiedź #5 dnia: Kwiecień 12, 2008, 04:57:39 pm »
"Gratz" Maślan spisałeś się :D
Wszystko wydaje się proste.....ale mam już pierwszy problem gdy klikam na mojego Bufera w jej okienku zamiast  tekstu mam tylko -cyt."Html was too long "
I druga spraw jak zmienić jej Imię ,(Title)
Wpisałem niby w Navicat....no ale lipa:/ :_delf_2:
« Ostatnia zmiana: Kwiecień 12, 2008, 05:05:38 pm wysłana przez AnDrOx »
Jeżeli niechcesz pomóc ,to zignoruj tego posta ....a nie wyśilaj się na głupi komentarz


  • ******
  • Wiadomości: 1390

  • Pochwał: 15

  • Urażona dzidzia, urażona dzidzia!
Odp: [Poradnik] NPC Buffer
« Odpowiedź #6 dnia: Kwiecień 12, 2008, 05:07:17 pm »
"Gratz" Maślan spisałeś się :D
Wszystko wydaje się proste.....ale mam już pierwszy problem gdy klikam na mojego Bufera w jej okienku zamiast  tekstu mam tylko -cyt."Html was too long "
I druga spraw jak zmienić jej Imię ,(Title)
Wpisałem niby w Navicat....no ale lipa:/ :_delf_2:


Co do pierwszego. Htmlek jest za duży żeby mógłbyc wczytany :)

Co do Title. Baza sql, Tabela "npc", kolumna title


  • Wiadomości: 538

  • Pochwał: 26

Odp: [Poradnik] NPC Buffer
« Odpowiedź #7 dnia: Kwiecień 12, 2008, 05:26:47 pm »
Maslan 2 uwagi do skryptu pythona:

1) Czemu tak masakrycznie paskudnie powtarzasz ten sam kod, zamiast uzyc jakiejs prostej mapy w ktorej kluczem jest id eventu a wartoscia krotka skladajaca sie np z <id skilla, lv skilla, adena, return type> , przez co zamiast 80*6 wierszy kodu bedziesz miec 6 wierszy kodu + 80 na definicje mapy.

2)
         #Cancellation
         if event == "78":
            st.takeItems(ADENA_ID,5000)
            st.getPlayer().useMagic(SkillTable.getInstance().getInfo(9950,1),False,False)
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "1.htm"
            st.setState(COMPLETED)   
kod po 'return' sie nigdy nie wykona i masz tak w kazdym ifie.
« Ostatnia zmiana: Kwiecień 12, 2008, 06:03:01 pm wysłana przez Luno »


  • ******
  • Wiadomości: 1390

  • Pochwał: 15

  • Urażona dzidzia, urażona dzidzia!
Odp: [Poradnik] NPC Buffer
« Odpowiedź #8 dnia: Kwiecień 12, 2008, 05:30:41 pm »
Ten buffer jest bardziej rozbudowany i od razu pokazuje jak dodać buffa do buffera.

Pokazałbym prostego to wiesz. Jedno kliknięcie i od razu all buffy a mi chodziło o przedstawienie całości.

Ale jeżeli ktoś chce takiego prostego to napisac.


___edit____

A faktycznie. Thx za poprawke.

Soul: edytuj te posty, a nie
« Ostatnia zmiana: Kwiecień 12, 2008, 05:49:50 pm wysłana przez Soul »


  • Wiadomości: 5

  • Pochwał: 0

Odp: [Poradnik] NPC Buffer
« Odpowiedź #9 dnia: Kwiecień 12, 2008, 06:57:57 pm »
Chyba oszaleję  :shock:
Title---INSERT INTO npc
   (`id`, `idTemplate`, `name`, `serverSideName`, `title`, `serverSideTitle`, `class`, `collision_radius`, `collision_height`, `level`, `sex`, `type`, `attackrange`, `hp`, `mp`, `hpreg`, `mpreg`, `str`, `con`, `dex`, `int`, `wit`, `men`, `exp`, `sp`, `patk`, `pdef`, `matk`, `mdef`, `atkspd`, `aggro`, `matkspd`, `rhand`, `lhand`, `armor`, `walkspd`, `runspd`, `faction_id`, `faction_range`, `isUndead`, `absorb_level`, `absorb_type`, `ss`, `bss`, `ss_rate`, `AI`)
VALUES
   (99999, 30767, 'Sonia', 0, '', 0, 'L2Merchant', 8.00, 22.00, 70, 'female', 'L2Npc', 0, 3862, 1493, 11.85, 2.78, 40, 43, 30, 21, 20, 10, 0, 0, 278, 382, 780, 382, 278, 0, 333, 0, 0, 0, 33, 132, 'NULL', 0, 1, 0, 'LAST_HIT', 0, 0, 0, 'fighter');
I nic...:(
Jeżeli niechcesz pomóc ,to zignoruj tego posta ....a nie wyśilaj się na głupi komentarz


  • Wiadomości: 538

  • Pochwał: 26

Odp: [Poradnik] NPC Buffer
« Odpowiedź #10 dnia: Kwiecień 12, 2008, 07:08:43 pm »
Po kolejne:

Cytuj
from java.util import Iterator
from net.sf.l2j                import L2DatabaseFactory

Po co importujesz klasy, ktorych nie uzywasz ?
I fundamentalne pytanie: czy ty to napisales sam czy skads przekopiowales, bo sa watpliwosci.


  • ******
  • Wiadomości: 1390

  • Pochwał: 15

  • Urażona dzidzia, urażona dzidzia!
Odp: [Poradnik] NPC Buffer
« Odpowiedź #11 dnia: Kwiecień 12, 2008, 07:19:26 pm »
Po kolejne:

Cytuj
from java.util import Iterator
from net.sf.l2j                import L2DatabaseFactory

Po co importujesz klasy, ktorych nie uzywasz ?
I fundamentalne pytanie: czy ty to napisales sam czy skads przekopiowales, bo sa watpliwosci.

html są moje, reszta ściągnięta z emu plików bo nie miałem czasu własnego pisac - za dużo pracy z offem mam


  • Wiadomości: 5

  • Pochwał: 0

Odp: [Poradnik] NPC Buffer
« Odpowiedź #12 dnia: Kwiecień 12, 2008, 07:47:30 pm »
Odnośnie nazwy NPCa w Tabeli Name- Imię np. Czesio- i wartość SerwerSideName (0)zmieniamy na(1)  Tabela Title Czynność wykonywana przez NPCa np.Buffer-i wartość  w SerwerSideTitle z (0) na(1)   
To dla tych którzy mają z tym problem tak jak Ja miałem   :D



Soul: edytujemy posty, a nie wysyłamy następne. 



« Ostatnia zmiana: Kwiecień 13, 2008, 09:14:07 pm wysłana przez AnDrOx »
Jeżeli niechcesz pomóc ,to zignoruj tego posta ....a nie wyśilaj się na głupi komentarz


  • Wiadomości: 2

  • Pochwał: 0

Odp: [Poradnik] NPC Buffer
« Odpowiedź #13 dnia: Grudzień 23, 2008, 11:21:42 am »
Witam

Mam problem z NPC Bufferem , zrobiłem wszystko co trzeba było i jak wpisuje //spawn 40010 to nie działa nie chce się pokazać pisze że nie ma takiego targetu.Wiecie co może źle zrobiłem?

Pozdrawiam


  • *******
  • Wiadomości: 1092

  • Pochwał: 22

Odp: [Poradnik] NPC Buffer
« Odpowiedź #14 dnia: Grudzień 23, 2008, 11:27:55 am »
NPC się nie pokazuje ? Czy nie spawmuje sie bo pisze , ze takiego NPC'ka nie ma? Jeżeli 1 opcja to masz za stary system ( wyglad npc pewnie jest z nowszej kroniki niz Twój system ) A jezeli 2 opcja to pewnie zle wgrales . Np nie dodales sql'a do bazy .


  • Wiadomości: 2

  • Pochwał: 0

Odp: [Poradnik] NPC Buffer
« Odpowiedź #15 dnia: Grudzień 23, 2008, 11:42:56 am »
Właśnie chyba z dodaniem do bazy sql nie wiem za bardzo jak dodać , chyba o co chodzi.


  • *******
  • Wiadomości: 1092

  • Pochwał: 22

Odp: [Poradnik] NPC Buffer
« Odpowiedź #16 dnia: Grudzień 23, 2008, 08:47:30 pm »
Właśnie chyba z dodaniem do bazy sql nie wiem za bardzo jak dodać , chyba o co chodzi.


I dziwisz się , że coś Ci nie działa ? Nigdy nie powinieneś liczyc na to , że akurat może będzie działac bez wykonania wszystkich czynności . Mówisz , że nie wiesz jak dodac . A czy czytałes poradniki na ten temat ? Jest jeden taki ładnie opisany wraz ze screenami . Wchodzisz do MySQL'a , prawym przyciskiem myszy klikasz na Twoją bazę danych ( np l2jdb ) i wybierasz opcje

Execute Batch File

Zatwierdzasz , czekasz aż Ci wgra . Jak będzie pisalo succesfull to znaczy , że wszystko ok . Jeżeli unsuccesfull to znaczy , że coś nie pasuje . W tym wypadku możesz dodac ręcznie do bazy danych .


  • Wiadomości: 82

  • Pochwał: 0

Odp: [Poradnik] NPC Buffer
« Odpowiedź #17 dnia: Grudzień 23, 2008, 10:45:55 pm »
Jeżeli unsuccesfull to znaczy , że coś nie pasuje . W tym wypadku możesz dodac ręcznie do bazy danych .
Dzięki opcji "Insert record"(taki plusik)... A tak nawiasem to aż ręce opadają...

"Dopóki nie skorzystałem z internetu, nie wiedziałem, że na świecie jest tylu idiotów."
Stanisław Lem


  • Wiadomości: 2

  • Pochwał: 0

Odp: [Poradnik] NPC Buffer
« Odpowiedź #18 dnia: Kwiecień 04, 2009, 12:53:52 pm »
Teraz dodajemy wpis do pliku scripts.cfg

na samym końcu poniżej
Cytuj
# Custom
custom/3995_echo/__init__.py
custom/4000_ShadowWeapons/__init__.py
custom/7000_HeroItems/__init__.py
custom/8000_RaidbossInfo/__init__.py
custom/6050_KetraOrcSupport/__init__.py
custom/6051_VarkaSilenosSupport/__init__.py
custom/8500_Buffer/__init__.py
custom/8501_Regen/__init__.py
custom/8502_raid_antharas/__init__.py
custom/8502_raid_baium/__init__.py
custom/8502_raid_valakas/__init__.py
tego dodajemy:
Cytuj
custom/9999_NPCBuffer/__init__.py

i Zapisujemy plik.

Na koniec zostało dodanie wpisu do bazy mysql. A konkretniej:

Cytuj
INSERT INTO `npc` VALUES ('40010', '32174', 'Npc Buffer', '1', 'buu', '1', 'LineageNPC2.K_F1_guard', '13.00', '22.50', '70', 'female', 'L2Npc', '40', '3862', '1494', null, null, '40', '43', '30', '21', '20', '10', '5879', '590', '1444', '514', '760', '381', '253', '0', '253', '9644', '0', '0', '80', '120', null, null, '0', '0', 'LAST_HIT');

Wykonujemy to zapytanie sql. Teraz wystarczy zrestartowac serwer i mamy buffera po wcześniejszym spawnie //spawn 40010


pomoze ktos z tym...nie moge pliku scripts.cfg znalesc;//


  • *******
  • Wiadomości: 1092

  • Pochwał: 22

Odp: [Poradnik] NPC Buffer
« Odpowiedź #19 dnia: Kwiecień 04, 2009, 02:19:09 pm »
Folder data .


  • Wiadomości: 2

  • Pochwał: 0

Odp: [Poradnik] NPC Buffer
« Odpowiedź #20 dnia: Kwiecień 04, 2009, 08:14:09 pm »
a jeszcze jedno...
Na koniec zostało dodanie wpisu do bazy mysql. A konkretniej:

Cytuj
INSERT INTO `npc` VALUES ('40010', '32174', 'Npc Buffer', '1', 'buu', '1', 'LineageNPC2.K_F1_guard', '13.00', '22.50', '70', 'female', 'L2Npc', '40', '3862', '1494', null, null, '40', '43', '30', '21', '20', '10', '5879', '590', '1444', '514', '760', '381', '253', '0', '253', '9644', '0', '0', '80', '120', null, null, '0', '0', 'LAST_HIT');

Wykonujemy to zapytanie sql.

wchodze w mysql i co dalej??


  • *******
  • Wiadomości: 1092

  • Pochwał: 22

Odp: [Poradnik] NPC Buffer
« Odpowiedź #21 dnia: Kwiecień 04, 2009, 08:34:13 pm »
Jeśli wyjdzie komunikat succesfull to znaczy , że wgrało poprawnie - to wszystko .


  • ********
  • Wiadomości: 1980

  • Pochwał: 57

Odp: [Poradnik] NPC Buffer
« Odpowiedź #22 dnia: Kwiecień 05, 2009, 10:54:47 am »
PPM na bazie danych i Execute Batch File
Prepare for unforeseen consequences...


  • ******
  • Wiadomości: 1390

  • Pochwał: 15

  • Urażona dzidzia, urażona dzidzia!
Odp: [Poradnik] NPC Buffer
« Odpowiedź #23 dnia: Kwiecień 05, 2009, 11:22:26 am »
PPM na bazie danych i Execute Batch File

i gdzie wkei komende ? bo Execute jest do wgrywania plików *.sql a on raczej nie będzie wiedział że cały wpis INSERT into ma zapisac w pliku *.sql.

PPM na baze i Console - tam wpisz ten kod i enter


  • ********
  • Wiadomości: 1980

  • Pochwał: 57

Odp: [Poradnik] NPC Buffer
« Odpowiedź #24 dnia: Kwiecień 05, 2009, 12:01:32 pm »
Bo to jest wielka filozofia zrobić plik tekstowy, nie? :)
Prepare for unforeseen consequences...