1. HtmlTworzymy plik html.
W nim piszemy coś takiego:
Cytat
<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:
Cytatimport 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ę:
Cytatqn = "9999_NPCBuffer"
Jak sam pozątek wskazuje qn = quest name czyli nazwa questu :)
CytatNPC=[40010]
ta linijka mówi nam do jakiego NPC sie odnosi
CytatADENA_ID=57
- tu podajemy ID adeny - można również dac inne ID za które buffer będzie buffował :)
CytatQuestId = 9999
- ID questu (Tu nic nie zmieniamy)
CytatQuestName = "NPCBuffer"
nie musze pisac
CytatQuestDesc = "custom"
Cytatprint "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:
Cytatclass 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:
Cytatif 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
Cytatif event == "2":
na
Cytatif 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:
Cytat#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
Cytatreturn 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.
Cytatimport 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)
Teraz bierzemy sie za poszczególne Html które wyświetlają buffki.
3. Notatnik i w drogeCytat
<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> </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> </td>
</tr>
</table>
</body>
</center>
</html>
Zapisujemy jako html 1.htm
HTML 2 :D
Cytat
<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:
Cytat
<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:
Cytat
<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:
Cytat
<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> </td>
<td> </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
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
Cytat# 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:
Cytatcustom/9999_NPCBuffer/__init__.py
i Zapisujemy plik.
Na koniec zostało dodanie wpisu do bazy mysql. A konkretniej:
CytatINSERT 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.
"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:
Cytat: AnDrOx w 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:
Co do pierwszego. Htmlek jest za duży żeby mógłbyc wczytany :)
Co do Title. Baza sql, Tabela "npc", kolumna title
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.
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
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...:(
Po kolejne:
Cytat
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.
Cytat: Luno w Kwiecień 12, 2008, 07:08:43 PM
Po kolejne:
Cytat
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
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.
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
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 .
Właśnie chyba z dodaniem do bazy sql nie wiem za bardzo jak dodać , chyba o co chodzi.
Cytat: grzeh11 w 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.
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 FileZatwierdzasz , 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 .
Cytat: Matim22 w Grudzień 23, 2008, 08:47:30 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ą...
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;//
Folder data .
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??
Jeśli wyjdzie komunikat succesfull to znaczy , że wgrało poprawnie - to wszystko .
PPM na bazie danych i Execute Batch File
Cytat: Soul w Kwiecień 05, 2009, 10:54:47 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
Bo to jest wielka filozofia zrobić plik tekstowy, nie? :)
Cytat: Soul w Kwiecień 05, 2009, 12:01:32 PM
Bo to jest wielka filozofia zrobić plik tekstowy, nie? :)
uwierz mi ze dla niektórych tak ....
Maślan pewnie głupie pytanie zadam ale gdzie znajdę plik scripts.cfg?
A może mam go stworzyć? jeśli tak to gdzie go umieścić?
Wystarczy czytać cały temat .
Folder data .
Spokojnie, przeczytałem cały, sęk w tym że w całym folderze serwa nie mam takiego pliku. Użyłem opcji Wyszukaj i nie znalazł.
Dlatego pytam, ale już chyba doszedłem do tego że mam kiepskie pliki serwerowe.
meaby you need dp ?
Znowu angielski ćwiczysz na mnie ? :P
Zaciągne L2JFree Interlude Final.
Zaciągnąłem i nie ma w katalogu data takiego pliku? Czy to nie dziwne? Dodatkowo jest tam oddzielne archimu o nazwie l2jfree_datapack i nie ma tam.
Swoją drogą jaka jest różnica pomiędzy plikami Free a L2JDB?
Cytat: CriminaL w Kwiecień 08, 2009, 10:43:55 PM
Znowu angielski ćwiczysz na mnie ? :P
Zaciągne L2JFree Interlude Final.
Zaciągnąłem i nie ma w katalogu data takiego pliku? Czy to nie dziwne? Dodatkowo jest tam oddzielne archimu o nazwie l2jfree_datapack i nie ma tam.
Swoją drogą jaka jest różnica pomiędzy plikami Free a L2JDB?
Jak z ang sobie nie radzisz to tym bardziej z l2j sobie nie poradzisz
Nie jest tak tragicznie u mnie z angielskim. Nie jarze tylko Twoich skrótów, ale zgaduje ze dp to datapack.
Ściągnij najnowsze pliki a z pewnością będziesz miał . W starszych też zawsze był.
Witam Was. przpraszam że odkopuje temat
Mam problem z wgraniem do SQL tej części
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', '0', '0', '0', 'fighter');
próbwalem z róznymi kombinacjami, zmienianiem konca polecenia i dalej to samo :
[Err] 1136 - Column count doesn't match value count at row 1
[Msg] Zakończono bez powodzenia
może mi ktos pomoc?
Cytat: Dodgers w Maj 26, 2009, 10:30:18 PM
Witam Was. przpraszam że odkopuje temat
Mam problem z wgraniem do SQL tej części
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', '0', '0', '0', 'fighter');
próbwalem z róznymi kombinacjami, zmienianiem konca polecenia i dalej to samo :
[Err] 1136 - Column count doesn't match value count at row 1
[Msg] Zakończono bez powodzenia
może mi ktos pomoc?
Możliwe, że korzystasz z innej kroniki i nie zgadzają się kolumny. Odpal Navicat'a, wejdź w tabele 'npc', kliknij na przycisk Export Wizard -> No -> SQL script file (*.sql) -> Next -> Next -> ... Wybierz gdzie chcesz exportować plik i podaj jakąkolwiek nazwę -> Next -> Next -> Start -> Poczekaj chwilę
Otwórz zaexportowany plik notatnikiem, skopiuj pierwszy wpis np:
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, drop_herbs)
VALUES
(1, 1, "Thomas D. Turkey", 0, "Misguided Holiday Scrooge", 0, "Branch.br_crazy_turkey", 22, 32, 85, "male", "L2Npc", 40, 751, 331, "2,37", "1,53", 80, 80, 80, 80, 80, 80, 0, 0, 88, 119, 37, 112, 282, 0, 5000, 0, 0, 0, 30, 132, "NULL", 0, 0, 0, "LAST_HIT", 0, 0, 0, "fighter", "false");
Stwórz nowy plik z rozszerzeniem *.sql pozmieniaj żeby był podany do tego który Ci nie działa np:
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, drop_herbs)
VALUES
(40010, 32174, "Npc Buffer", 0, "buu", 1, "LineageNPC2.K_F1_guard", 22, 32, 85, "male", "L2Npc", 40, 751, 331, "2,37", "1,53", 80, 80, 80, 80, 80, 80, 0, 0, 88, 119, 37, 112, 282, 0, 5000, 0, 0, 0, 30, 132, "NULL", 0, 0, 0, "LAST_HIT", 0, 0, 0, "fighter", "false");
Zapisz i zaimportuj navicatem, będzie śmigać na 100% ;)
no tak ;)
korzystam z gracii final ;)
ale nie rozumiem koncowki posta ze zrobieniem tego pliku;/
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, drop_herbs)
VALUES
(1, 1, "Thomas D. Turkey", 0, "Misguided Holiday Scrooge", 0, "Branch.br_crazy_turkey", 22, 32, 85, "male", "L2Npc", 40, 751, 331, "2,37", "1,53", 80, 80, 80, 80, 80, 80, 0, 0, 88, 119, 37, 112, 282, 0, 5000, 0, 0, 0, 30, 132, "NULL", 0, 0, 0, "LAST_HIT", 0, 0, 0, "fighter", "false");
tak to u mnie wyglada
moglbys mi napisac gotowy kod mojego buffera? bo nie bardzo lapie, co chodzi;/
Edit:
To juz zrobilem ;)
Ale mam pewien inny problem, mianowcie u mnie scripts tak wyglada:
# Custom
custom/1000_NonTalkingNpcs/__init__.py
custom/1001_FortuneTelling/__init__.py
custom/1002_Nottingale/__init__.py
custom/3995_echo/__init__.py
custom/4000_ShadowWeapons/__init__.py
custom/5000_MissQueen/__init__.py
custom/5001_NewbieCoupons/__init__.py
custom/6050_KetraOrcSupport/__init__.py
custom/6051_VarkaSilenosSupport/__init__.py
custom/7000_HeroItems/__init__.py
custom/8000_RaidbossInfo/__init__.py
custom/8001_NpcLocationInfo/__init__.py
custom/8004_PurchaseBracelet/__init__.py
custom/9999_NPCBuffer/__init__.py
i kiedy staram sie gadac z bufferem, otrzymuje bezczelna odpowiedz ;/
(https://forum.lineage2.com.pl/proxy.php?request=http%3A%2F%2Fimg38.imageshack.us%2Fimg38%2F7788%2Fshot00000e.th.jpg&hash=bf55d01b83916d3af611047b7d22c491401f510b) (http://img38.imageshack.us/my.php?image=shot00000e.jpg)
Sprawdź czy w pliku scripts na sto procent podałeś dokładną ścieżkę do pliku .py , dodatkowo sprawdź ten plik .py i popatrz czy importy są pod Twój serwer pack . A na koniec przeczytaj regulamin , w którym piszę aby zamieszczać wszelkiego rodzaju kody w :
lub :
Cytat
Wtedy nasze wypowiedzi są bardziej czytelne .
mam pytanie co powoduje ze wyświetla mi takie coś http://www.fotosik.pl/pokaz_obrazek/pelny/c0cbf93a6afc5883.html
Bardzo wyraźnie... coś skaszanione i musisz wejść do logu o wskazanej nazwie aby poznać szczegóły.
jeszcze zauważyłem ze w katalogu: 9999_NPCBuffer pojawił się plik: __init__.py.error w ktorym jest tresc:
[i]Error on: C:\Documents and Settings\Pawloo\Pulpit\serwerCT1.5\Gameserver\data\scripts\custom\9999_NPCBuffer\__init__.py.error.log
Line: -1 - Column: -1
Traceback (innermost last):
(no code object) at line 0
SyntaxError: ('Lexical error at line 30, column 56. Encountered: "\\r" (13), after : ""', ('__init__.py', 30, 56, ' htmltext = "<html><head><body>No Tienes Adena.'))
[/i]
o co może chodzić??
O tym przecież właśnie pisał Impos , a w errorze pisze Ci , w której linijce masz błąd , pisze Ci także jaki .
Cytat: Matim w Czerwiec 01, 2009, 01:34:15 PM
O tym przecież właśnie pisał Impos , a w errorze pisze Ci , w której linijce masz błąd , pisze Ci także jaki .
Dokładnie tak. Ja tak samo miałem na początku, ale w końcu zacząłem czytać dokładnie co tam pisze i na prawdę wszystko masz opisane.
ok już wiem o co biega dzięki za przywrócenie mnie do porządku xd
Ale warto napisać rozwiązanie do tego problemu ... może przyda się innym użytkownikom , nie bądźmy pesymistami .
jednak nic mi to nie dało ze naprawiłem błąd który opisałem wyżej :
Cytatjeszcze zauważyłem ze w katalogu: 9999_NPCBuffer pojawił się plik: __init__.py.error w ktorym jest tresc:
Error on: C:\Documents and Settings\Pawloo\Pulpit\serwerCT1.5\Gameserver\data\scripts\custom\9999_NPCBuffer\__init__.py.error.log
Line: -1 - Column: -1
Traceback (innermost last):
(no code object) at line 0
SyntaxError: ('Lexical error at line 30, column 56. Encountered: "\\r" (13), after : ""', ('__init__.py', 30, 56, ' htmltext = "<html><head><body>No Tienes Adena.'))
o co może chodzić??
po jego naprawienie posypała się sera błędów tego pliku przy 56 zdenerwowałem nie i usunąłem pliki dotyczące npc buffera.
musiałem zmieniać cały tekst pliku __init__.py, każdą linijke
nie wiem dlaczego?
czy może być to wina plików serwerowych?
Zrobiłem wszystko jak tu napisaliściee, jednak w konsoli wyskakuje mi taki błąd ktoś wie o co może chodzić?
-nie ważne poradziłęm sobie sorki za kłopot.
to może podzielisz się z innymi tajemną wiedzą, JAK sobie poradziłeś? Komuś może to też się przydać.
Pozdrawiam
zrobiłem podstawowy błąd, teraz jednak mam błąd taki jak opisywany powyżej i nie wiem jak go przeskoczyć, może ktoś zamiescić tu lekarstwo na to:
Error on: C:\Server\gameserver\data\scripts\custom\9999_NPCBuffer\__init__.py.error.log
Line: -1 - Column: -1
Traceback (innermost last):
(no code object) at line 0
SyntaxError: ('Lexical error at line 30, column 56. Encountered: "\\r" (13), after : ""', ('__init__.py', 30, 56, ' htmltext = "<html><head><body>No Tienes Adena.'))
edytujcie plik __init__.py
tam gdzie występuje:
htmltext = "<html><head><body>No Tienes Adena.
</body></html>"
zmieńcie na
htmltext = "<html><head><body>No Tienes Adena</body></html>"
Dzięki pomogło, jednakże jest kolejny błąd mianowicie taki:
Error on: C:\Server\gameserver\data\scripts\custom\9999_NPCBuffer\__init__.py.error.log
Line: -1 - Column: -1
Traceback (innermost last):
(no code object) at line 0
SyntaxError: ('invalid syntax', ('__init__.py', 38, 33, ' st.getPlayer().setCurrentHp(st.getPlayer().getMaxHp())'))
Pokaż script całego Buffera. Zresztą tych nawiasów jest trochę za dużo ... dla przykładu :
Cytat.getEffects(st.getPlayer(),st.getPlayer())
st.getPlayer().restoreHPMP()
Proszę bardzo, przepisany zywcem z tego tematu ;
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</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)
//Matim , wszelkie kody itp umieszczamy w odpowiednim "bloku" , tak jak zrobiłem to ja
Matim a miałbyś czas żeby te bloki porobić w skrypcie jak mają być?
Bo nie tylko ja mam taki problem, a temat bedzie powracał, z góry dzięki
Pisząc bloki miałem na myśli :
Cytat
lub :
:)
Co do buffera to zaraz go naprawię . Cierpliwości tylko przetestuje .
oki dzięki, ja w tym czasie sprawdzę twojego npc vote :p czekam na poprawionego NPC Buffera jeszcze raz thx
mariucha - przepraszam, ale aktualnie nie mam żadnego clienta L2 na dysku, ale w tym czasie możesz przecież użyć innych gotowych NPC Bufferów, lub L2J Buff Creator'a autorstwa DragonHunter'a, a o to link do niego :
Click (http://www.maxcheaters.com/forum/index.php?topic=50065.0)
Ten owy program automatycznie wygeneruje Ci skrypt i html'e do buffera. Jeśli chcesz mieć już gotowego to przeszukaj : www.maxcheaters.com lub www.ragezone.com
Dzięki poszukam i na pewno cos znajde, chciałem tylko zasygnalizować, że poradnik zawiera błędy.
Znajdę chwilę czasu to go zredaguje .
Witam czy mógłby ktoś te skrypty poprawić, sambym poprawił jak bym wiedział jak :P
Matim czy naprawiłeś te skrypty jak tak to plz. wstaw w temat napewno się komuś przydadzą. Z góry dzięki 8)
Ok poradziłem sobie z poprzednim błędem ale z tym to już nie :D
Error on: D:\serwer\serwerCT1.5\Gameserver\data\scripts\custom\9999_NPCBuffer\__init__.py.error.log
Line: -1 - Column: -1
Traceback (innermost last):
File "__init__.py", line 2, in ?
ImportError: no module named net
hmm... co jest z tym nie tak :x
Cytat: piterrr70 w Luty 17, 2010, 03:33:45 PM
Traceback (innermost last):
File "__init__.py", line 2, in ?
ImportError: no module named net[/code]
hmm... co jest z tym nie tak :x
Tak jak mówi komunikat błędu "no module named net", zgaduje, że chcesz użyć skryptu, który znajduje się parę postów wyżej, gdzie mamy importu chociażby
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
Czyli (czytamy) "Z modulu net.sf.l2j.(...) zaimportuj L2PcInstance" itd.
A jeśli używasz nowego kodu l2j, to tam takich modułów nie uświadczysz (moduly jythonowe, są mapowane na pakiety javowe). Struktura pakietów w l2j wygląda teraz "com.l2jserver....".
Musisz to po prostu poprawić.
Mam pliki l2jfree i zmieniłem na :
import sys
from com.l2jfree.gameserver.model.actor.instance import L2PcInstance
from java.util import Iterator
from com.l2jfree.gameserver.datatables import SkillTable
from com.l2jfree.gameserver.model.quest import State
from com.l2jfree.gameserver.model.quest import QuestState
from com.l2jfree.gameserver.model.quest.jython import QuestJython as JQuest
lecz nie będzie:
Error on: D:\serwer\serwerCT1.5\Gameserver\data\scripts\custom\997_Buffer\__init__.py.error.log
Line: -1 - Column: -1
Traceback (innermost last):
File "__init__.py", line 569, in ?
TypeError: com.l2jfree.gameserver.model.quest.State(): expected 0 args; got 2
Nie widze tu zadnego jawnego tworzenia State, co dokladnie zawiera ta linijka kodu, o ktora sie pluje ?
Btw, ten kod ma w sobie troche innego typu usterek:
1) Ma przemasakryczna ilosc powtorzonego kodu ( zrobionego metoda copy&paste ), co nie tylko wyglada tragicznie, ale jest tragiczne w utrzymaniu i ewentualnych zmianach, znalezienie bledu jest ciezkie.
2) W ifach jest tu taka kolejnosc:
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)
Oczywistym jest ze to setState sie nigdy nie wykona
tak samo na koncu jest
if htmltext != event:
st.setState(COMPLETED)
st.exitQuest(1)
ktore tez sie nigdy nie wykona, bo sterowanie tu nie ma szans dojsc.
Sugeruje uprzątniecie tego kodu w nastepujący sposob:
import sys
from com.l2jfree.gameserver.model.actor.instance import L2PcInstance
from java.util import Iterator
from com.l2jfree.gameserver.datatables import SkillTable
from com.l2jfree.gameserver.model.quest import State
from com.l2jfree.gameserver.model.quest import QuestState
from com.l2jfree.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"
BUFFS = {
#event id, adena, sk_id, sk_lv, html
"2":[25000, 4342, 2, "2.htm"], #Wind walk
"3":[25000, 4343, 3, "2.htm"], #Decrease weight
"4":[25000, 4344, 3, "2.htm"], #Shield
"5":[25000, 4345, 3, "2.htm"], #Might
"6":[25000, 4346, 4, "2.htm"], #Mental Shield
"7":[25000, 4347, 6, "2.htm"], #Bless the body
"8":[25000, 4348, 6, "2.htm"], #Bless the soul
"9":[25000, 4349, 2, "2.htm"], #Magic Barrier
"10":[25000, 4350, 4, "2.htm"], #Resist Shock
"11":[25000, 4351, 6, "2.htm"], #Concentration
"12":[25000, 4352, 2, "2.htm"], #Berserker Spirit
"13":[25000, 4353, 6, "2.htm"], #Bless Shield
"14":[25000, 4354, 4, "2.htm"], #Vampiric Rage
"15":[25000,4355,3,"2.html"], #Acumen
"16":[25000,4356,3,"2.html"], #Empower
"17":[25000,4357,2,"2.html"], #Haste
"18":[25000,4358,3,"2.html"], #Guidance
"19":[25000,4359,3,"2.html"], #Focus
"20":[25000,4360,3,"2.html"], #DeathWhisper
"21":[20000,271,1,"3.html"],
"22":[20000,272,1,"3.html"],
"23":[20000,273,1,"3.html"],
"24":[20000,274,1,"3.html"],
"25":[20000,275,1,"3.html"],
"26":[20000,276,1,"3.html"],
"27":[20000,277,1,"3.html"],
"28":[20000,307,1,"3.html"],
"29":[20000,309,1,"3.html"],
"30":[20000,310,1,"3.html"],
"31":[20000,311,1,"3.html"],
"32":[20000,366,1,"3.html"],
"33":[20000,365,1,"3.html"],
"34":[20000,264,1,"4.html"],
"35":[20000,265,1,"4.html"],
"36":[20000,266,1,"4.html"],
"37":[20000,267,1,"4.html"],
"38":[20000,268,1,"4.html"],
"39":[20000,269,1,"4.html"],
"40":[20000,270,1,"4.html"],
"41":[20000,304,1,"4.html"],
"42":[20000,305,1,"4.html"],
"43":[20000,306,1,"4.html"],
"44":[20000,308,1,"4.html"],
"45":[20000,363,1,"4.html"],
"46":[20000,364,1,"4.html"],
"47":[20000,349,1,"4.html"],
"48":[20000,1007,3,"5.html"], #ChantofBattle
"49":[20000,1009,3,"5.html"], #ChantofShielding
"50":[20000,1006,3,"5.html"], #ChantofFire
"51":[20000,1002,3,"5.html"], #ChantofFlame
"52":[20000,1229,18,"5.html"], #Chantoflife
"53":[20000,1251,2,"5.html"], #ChantofFury
"54":[20000,1252,3,"5.html"], #ChantofEvasion
"55":[20000,1253,3,"5.html"], #ChantofRage
"56":[20000,1284,3, "5.html"], #ChantofRevenge
"57":[20000,1310,4,"5.html"], #ChantofVampire
"58":[20000,1309,3,"5.html"], #ChantofEagle
"59":[20000,1308,3,"5.html"], #ChantofPredator
"60":[20000,1362,1,"5.html"], #ChantofSpirit
"61":[20000,1363,1,"5.html"], #ChantofVictory
"62":[20000,1413,1,"5.html"], #chantofmagnus
"63":[1000,1013,32,"1.html"], #MPreg
"64":[25000,1388,3,"2.html"], #greatmight
"65":[25000,1389,3,"2.html"], #greatshield
"66":[25000,1392,3,"2.html"], #holyresist
"67":[25000,1393,3,"2.html"], #Unholyresist
"68":[25000,1356,1,"2.html"], #pof
"69":[25000,1352,1,"2.html"], #elemtprotect
"70":[25000,1303,2,"2.html"], #wildmagic
"71":[25000,1304,3,"2.html"], #advblock
"72":[25000,1353,1,"2.html"], #divProtect
"73":[25000,1355,1,"2.html"], #pow
"74":[25000,1357,1,"2.html"], #powi
"75":[25000,1047,4,"2.html"], #manaregen
"76":[25000,1311,6,"2.html"], #ba
"77":[25000,1323,1,"1.html"] #noble
}
class Quest (JQuest) :
def __init__(self, id, name, descr): JQuest.__init__(self, id, name, descr)
def buffPlayer(self, event, st):
if not BUFFS.has_key(event):
return event
adena, skill_id, skill_lv, html = BUFFS[event]
player = st.getPlayer()
st.takeItems(ADENA_ID, adena)
SkillTable.getInstance().getInfo(skill_id, skill_lv).getEffects(player, player)
player.setCurrentMp(player.getMaxMp())
return html
def onEvent(self, event, st):
player = st.getPlayer()
htmltext = event
if st.getQuestItemsCount(ADENA_ID) < 150000 or player.getLevel() < 40 :
htmltext = "<html><head><body>No Tienes Adena</body></html>"
else:
player.setTarget(st.getPlayer())
if event == "1":
st.takeItems(ADENA_ID, 1000)
player.setCurrentCp(player.getMaxCp())
player.setCurrentHp(player.getMaxHp())
player.setCurrentMp(player.getMaxMp())
htmltext = "1.htm"
elif event == "78": #cancellation
st.takeItems(ADENA_ID, 5000)
player.useMagic(SkillTable.getInstance().getInfo(9950, 1), False, False)
player.setCurrentMp(player.getMaxMp())
htmltext = "1.htm"
else:
htmltext = self.buffPlayer(event, st)
return htmltext
def onTalk (self, npc, player):
st = player.getQuestState(qn)
st.setState(State.STARTED)
return InitialHtml
QUEST = Quest(QuestId, str(QuestId) + "_" + QuestName, QuestDesc)
for npcId in NPC:
QUEST.addStartNpc(npcId)
QUEST.addTalkId(npcId)
Error on: D:\serwer\serwerCT1.5\Gameserver\data\scripts\custom\997_Buffer\__init__.py.error.log
Line: -1 - Column: -1
Traceback (innermost last):
(no code object) at line 0
SyntaxError: ('invalid syntax', ('__init__.py', 117, 9, ' st.takeItems(ADENA_ID, adena)'))
Next error.
Taki blad masz dokladnie na tym skrypcie co wkleilem wyzej ?
Bo patrzac po numeracji wierszy, to niezbyt.
tak na tym co wkleiłeś :? i nie mogę go rozgryźć
Nie mam jak tego przetestowac "na żywo", ale jak napisałem w pythonie klasy dla Playera i State i odpalilem to jako program pythonowy, to wszystko dziala jak powinno, bez bledow.
Upewnij sie ze przekopiowales poprawnie ( czy przez przypadek sie wciecia gdzies nie popsuly ).
W razie czego zamieszczam jeszcze wersje w pliku.
ok buffer działa :)
Sorq, że odświeżam temat, ale to przy okazji nawiązanie do tego, bo czytając to wszystko jednego nie rozumiem, tj. nie znalazłem odp. pisząc własnego buffera. Mianowicie skill "Cancellation", który jest podpisany pod Id 9950. Tylko, że skill o takim Id nie istnieje, więc nie bardzo rozumiem sens tego jak i samo działanie (lub raczej nie-działanie).
Luno ładnie przepisał kod i zrobił to na tablicach, wyodrębnił ten skill, więc pewnie zna odpowiedź.
Zwyczajnie wydaje mi się to trochę dziwne rozwiązanie, no ale zobaczymy co inni mają do powiedzenia...
-------
Ok, już nie ważne. Znalazłem o wiele ładniejszą funkcję. Nie dość, że działa to wygląda estetyczniej ;)
Tak więc błąd w bufferze błędem, ale sorki za wskrzeszanie tematu ;)
Szczerze mowiac, nawet nie sprawdzalem czy jest taki skill ani co dokladnie by robil, wydzielilem dlatego, ze jego uzycie bylo inaczej zrobione, a nie zaglebialem sie zbytnio :) chcialem tylko uporzadkowac troche ten kod.
Jesli to ma byc po prostu usuniecie wszystkich buffow, to fakt, wystarczy wywolac jedna metode.
Witam,
Mam problem z tym bufferem w momencie gdy chce wgrac tego npc do bazy mysql to wywala mi taki blad : 1048 - Column 'runspd' cannot be null ktos wie o co chodzi prosze o pomoc (zaznaczam ze zrobilem w wszystko tak jak Maślan opisał).
Cytat: Manhuntt w Styczeń 22, 2012, 05:17:08 PM
Witam,
Mam problem z tym bufferem w momencie gdy chce wgrac tego npc do bazy mysql to wywala mi taki blad : 1048 - Column 'runspd' cannot be null ktos wie o co chodzi prosze o pomoc (zaznaczam ze zrobilem w wszystko tak jak Maślan opisał).
Wyjście 1Jeżeli wgrywasz przez nawicata, to żeby nie mieć błędu musisz sprawdzić ilość kolumn npck'a i ilość kolumn na twoim serwerze. Jeżeli wszystko się zgadza, to sprawdź (jeżeli np wyskakuje Ci błąd z runspd, to zobacz w której kolumnie znajduje się w folderze, który ściągnąłeś, a w której kolumnie w twoim navicacie, jeżeli jest to ta sama cyfra, nie ma mowy o błędzie) czy wszystko dobrze zrobiłeś.Możesz ew. sprawdzić, czy nie masz takiego już npcka w bazie danych.
Wyjście 2Drugim wyjściem, jakie mogę Ci zaproponować, jest wgranie "ręczne" do bazy danych. Po prostu tworzysz nową tabelę, i wpisujesz pokolei, ID,IDTemplated,Name itp. Dzięki temu rozwiązaniu, możesz mieć później kłopoty (tak słyszałem), ale jak jeszcze się w to bawiłem, i wgrywałem npcka ręcznie, to żadnych problemów nie doświadczyłem.
Wyjście 3Pamiętaj o tym, że wszędzie musi być jakaś cyfra. W żadnym wypadku, nie możesz pozostawić np. "". Musi to być "0", ale nigdy puste. Sprawdź, czy nie masz tak w runspd.
Nie mam pojęcia jak zrobić 1wyjscie 2wpisalem ręcznie i spawnuje mi npc ale nie widzę go no i jak kliknę na niego i biorę q wtedy mam komunikat "you are either not on a quest that involves this NPC,or you don't meet this npc's minimum quest requirements." i nie wiem co jest gdzie znajdę tego runspd bo nie wiem gdzie szukać :( a buffera nie ściągałem zrobiłem krok po kroku jak pisal maslan chyba muszę sobie odpuścić buffera na servie bo za długo sie z tym mecze tak samo jak z global gk i gm shop ^^.
Cytat: Manhuntt w Styczeń 24, 2012, 06:20:52 PM
Nie mam pojęcia jak zrobić 1wyjscie 2wpisalem ręcznie i spawnuje mi npc ale nie widzę go no i jak kliknę na niego i biorę q wtedy mam komunikat "you are either not on a quest that involves this NPC,or you don't meet this npc's minimum quest requirements." i nie wiem co jest gdzie znajdę tego runspd bo nie wiem gdzie szukać :( a buffera nie ściągałem zrobiłem krok po kroku jak pisal maslan chyba muszę sobie odpuścić buffera na servie bo za długo sie z tym mecze tak samo jak z global gk i gm shop ^^.
Przecież to są najprostsze rzeczy jakie mogą być. Odpalasz nawicata, wklejasz npcki, podmieniasz html'e, //spawn 1234 i masz gotowe.
Może i są to proste sprawy ale widzisz jak sie pracuje po 10-12 godzin dziennie,ma sie żonę i od dość długiego czasu nie bawiło się serwerem to teraz jest to trudne :) nawet baaaardzo trudne dlatego pisze tutaj bo wole zapytać,zrobić tak jak ktoś odpowie i pobawić się z godzinę na serwie kiedyś to robiłem i działało ale na Gracji a teraz odpaliłem Freye i sa problemy :( mógłbyś dać jakiś konkretny link do takich npc'kow (tzn. global gk,buffer,gm shop)?? ale wracajac do tematu i tak będę próbował zrobić tego buffera :) zajmie mi to dość dużo czasu ale uda mi się bo jestem strasznie uparty ... :) dziękuje ze tak szybko odpisałeś .
Link do gotowego GM Shop'a :
http://www.4shared.com/file/2DucTTLv/Freya_Shop_By_Lucifer.html
Autor: Lucifer
Link do gotowego Global Gatekeepera :
http://www.4shared.com/file/SJfqFViY/Freya_GK_By_Lucifer.html
Autor: Lucifer
Link do gotowego Buffera :
http://www.4shared.com/file/ZHuorANE/Freya_Buffer_By_Lucifer.html
Autor : Lucifer
Polecam się na przyszłość :)
Dziękuje ci bardzo za szybką i bardzo przydatna pomoc,pobrałem wszystko :) ale i tak nie działa w każdym razie dziękuje ci :)
Jakiej paczki używasz? Postaram Ci się pomóc.
Nayana, plusik :)
przypomnialem sobie o 2 wyjsciu i wlasnie postawilem gm shop !!! :) dziekuje,bede mial prosbe ale to napisze na pm jak zrobie jeszcze buffera i gk :)
Cytat: GenesiZ w Styczeń 24, 2012, 08:37:15 PM
Nayana, plusik :)
Jednak genek czuwa ze mną, w tematach stawiania serwerów!
Świetnie, myślałem, że już nikt tu nie zagląda.
Co do Manhuntt, to mogę zrobić Ci poradnik, w którym będzie wszystko ładnie opisane, jak wgrać npcki, jakie ewentualne mogą być przeszkody z ich wgraniem itp.
wiesz co bardziej zalezalo by mi na kontakcie z toba bo widzisz tak jak pisalem duzo pracuje,mam zone a co za tym idzie malo czasu w lutym sie przeprowadzam i na prawde nie mam kiedy grac dlatego robie serwer tylko dla siebie zeby nie bylo zdziwienia np: wchodze po miesiacu bez l2 a tu byl wipe ^^,zrobilem juz sobie np: moby na hb,kolorowe poswiaty zalezne od stopnia enchantu broni itp... jak bys mogl to daj mi swoje gg bo na 100% bedemial kolejne pytania/problemy a jesli ty mi pomozesz to nie bede musial tutaj postow pisac :) chyba ze wolisz to nie ma problemu. moge podpowiedziec jak poustawiam npc'ki to bedesie bawil ustawieniem Offline bo nie dziala ale to w przyszlym tygodniu jak bede mial chwile. i popieram PLUS OGROMNY PLUS DLA CIEBIE !! własnie mam problem z bufferem chce go wpisac recznie ale nie moge boma takie ID "1000003" masz jakis sposob na to ?? ;)
Według mnie, najlepiej wpisywać sobie wszystkie nowe NPC'ki w tabeli custom_npc, wtedy jest najmniej zamieszania z wpisywaniem. Ale jeśli chcesz wpisać tego npcka, to najlepiej zjedź na sam koniec w tabeli npc, zobacz jakie jest ostatnie ID npcka, a następnie wpisz swojego buffera. Np. jeżeli ostatni npc ma ID 77777 to wpisujesz 77778, tylko pamiętaj żeby też zmienić ID w pliku buffera na takie samo.
Cytat: GenesiZ w Styczeń 24, 2012, 09:28:24 PM
Według mnie, najlepiej wpisywać sobie wszystkie nowe NPC'ki w tabeli custom_npc, wtedy jest najmniej zamieszania z wpisywaniem. Ale jeśli chcesz wpisać tego npcka, to najlepiej zjedź na sam koniec w tabeli npc, zobacz jakie jest ostatnie ID npcka, a następnie wpisz swojego buffera. Np. jeżeli ostatni npc ma ID 77777 to wpisujesz 777778, tylko pamiętaj żeby też zmienić ID w pliku buffera na takie samo.
Dokładnie.
Btw: Jeżeli będziesz pisał posty tutaj, to zawsze ktoś - kto miał ten sam problem co Ty, znajdzie w nim odpowiedź.
Ale jeżeli chcesz moje gg, to proszę - 37515928
Witam (Na wstępie powiem, że jestem tu nowy)
Mam problem z działeniem NPC buffera na mojim serverze Lineage 2.
Kożystam z plików pobranych z tej strony: http://www.l2jserver.com/nightly/index.php?dir=old%2FInterlude%2F
Problem polega na tym, że po wybraniu odpowiedniego buffa wyskakuje mi puste okienko Z tytulem Script Error
Domyślam sie ze coś może być nie tak w pliku __init__.py , ale specjalistą nie jestem. Chciał bym aby po kliknięciu na buff i kolejno zabaffowaniu program skierował gracza do miejsca skąd wybrał buffa. Jeśli ktoś bedzie w stanie to zrobić będe bardzo wdzięczny :)
Oto Link to mojego buffera: https://rapidshare.com/files/1317432717/NPC-Buffer-by-H0M3R.exe
Jeżeli popełniłem jakieś błedy co to struktury postu to bardzo przepraszam ;S.
Pozdrawiam Greaver178
Cytat: Greaver178 w Maj 07, 2012, 12:49:59 PM
Witam (Na wstępie powiem, że jestem tu nowy)
Mam problem z działeniem NPC buffera na mojim serverze Lineage 2.
Kożystam z plików pobranych z tej strony: http://www.l2jserver.com/nightly/index.php?dir=old%2FInterlude%2F
Problem polega na tym, że po wybraniu odpowiedniego buffa wyskakuje mi puste okienko Z tytulem Script Error
Domyślam sie ze coś może być nie tak w pliku __init__.py , ale specjalistą nie jestem. Chciał bym aby po kliknięciu na buff i kolejno zabaffowaniu program skierował gracza do miejsca skąd wybrał buffa. Jeśli ktoś bedzie w stanie to zrobić będe bardzo wdzięczny :)
Oto Link to mojego buffera: https://rapidshare.com/files/1317432717/NPC-Buffer-by-H0M3R.exe
Jeżeli popełniłem jakieś błedy co to struktury postu to bardzo przepraszam ;S.
Pozdrawiam Greaver178
1. Wszystkie pliki zostały wgrane prawidłowo? Jeżeli tak to wgraj screena.
2. Na pewno dobrze go skonfigurowałeś? Miejsce plików, etc.
3. Polecam Ci pobrać inną paczkę, jeżeli bawisz się tylko w stawianie głównie dla celów osobistych to - http://www.l2jfrozen.com/, jeżeli planujesz w przyszłości postawić serwer dla szerszej gruby osób, to - http://acis.i-live.eu/.
4. Na moje - ściągnij frozena, wgraj buffera i napisz czy działa.
Tak wszystkie pliki zostały wgrane prawidłowo, ale nie wiem ocb bo gdy wchodze na stronke frozena do działu download to w podfolderze npc interlude nie ma nic ;S znalazłem jakiegoś npc by frozen na necie ale nie wiem gdzie dać nie które pliki.
Oto link do buffera
http://search.4shared.com/postDownload/KCocB_WU/NPC_Buffer_L2_J_Frozen.html
chodzi o pliki w folderze arquivos da pasta 9999_NPCBuffer.
http://www.l2jfrozen.com/index.php?topic=202.240 tu masz najnowszy rev frozena. Jest wbudowany buffer tylko podczaj instalacji bazy mysql daj "Install Custom Npc" i w grze komenda //spawn ID NPC
Sciągnąłem paczki z L2jFrozen wszystko ładnie działa, ale buffera musiałem i tak wgrywać, zkorzystałem z Buffera na tej stronie (Post nr 13):
http://www.l2jfrozen.com/index.php?action=profile;u=357;area=showposts
Dzięki wielkie za pomoc :)
Co zrobić, gdy wywala ''You are either not carrying out your quest or don't meet the criteria" po kliknięciu buff me? Tworzę właśnie serwer na L2j Interlude i żaden buffer nie chce mi działać, nawet ten z tego tematu.
Cytat: Scythe w Styczeń 10, 2013, 07:41:35 PM
Co zrobić, gdy wywala ''You are either not carrying out your quest or don't meet the criteria" po kliknięciu buff me? Tworzę właśnie serwer na L2j Interlude i żaden buffer nie chce mi działać, nawet ten z tego tematu.
Jakich dokładnie plików używasz i czy na pewno nie masz żadnych problemów z wgraniem plików NPC?
http://www.l2jserver.com/nightly/index.php?dir=old%2FInterlude%2F (http://www.l2jserver.com/nightly/index.php?dir=old%2FInterlude%2F)
Użyłem tych plików. Przy wrzucaniu .sql od buffera nie było żadnych błędów. W konsoli od game server podczas ładowania serwera wyskakuje: failed to import quest : 15010_NPCBuffer
Wczoraj dodałem GM-Shop i nie było żadnych problemów.
edit: http://forum.lineage2.com.pl/index.php/topic,48679.0.html (http://forum.lineage2.com.pl/index.php/topic,48679.0.html) to ten buffer i dokładnie ten sam problem