Скачал Java сборку сервера от l2DC.
Все норм. настроил и т.п.
ГМ шоп от ГФ идет, а вот бафферы и другие нпц не подходят как то.
Я скачал Баффера.
Там внутри такие файлы:
Gameserver/data/html/default/121212.htm
Gameserver/data/scripts/custom/121212_NPCBuffer/__init__.py
Gameserver/data/scripts/custom/121212_NPCBuffer/1.htm
Gameserver/data/scripts/custom/121212_NPCBuffer/2.htm
Gameserver/data/scripts/custom/121212_NPCBuffer/3.htm
Gameserver/data/scripts/custom/121212_NPCBuffer/4.htm
Gameserver/data/scripts/custom/121212_NPCBuffer/5.htm
Их я скопировал в свой сервер. Sql файл(там токо ид на нпц) залил в базу. В scripts.CFG добавил строку "custom/121212_NPCBuffer/__init__.py"
Потом в игре написал "//spawn 121212" и появился баффер. Нажал на него и открылся диалог(тобишь "Gameserver/data/html/default/121212.htm" вот отсюда). И там нажимаю на кнопку "Buff" и дальше пишет "NPC`s minimum quest requirements..."(такое обы4но выскакивает когда на какого нибудь Npc'а нажимаешь Quest без квеста),
а должно было показать "Gameserver/data/scripts/custom/121212_NPCBuffer/1.htm" вот это.
Вот то что в __init__.py:
Скрытый текстimport sysfrom com.l2dc.gameserver.model.actor.instance import L2PcInstance
from java.util import Iterator
from com.l2dc.gameserver.datatables import SkillTable
from com.l2dc import L2DatabaseFactory
from com.l2dc.gameserver.model.quest import State
from com.l2dc.gameserver.model.quest import QuestState
from com.l2dc.gameserver.model.quest.jython import QuestJython as JQuest
qn = "121212_NPCBuffer"
NPC=[121212]
QuestId = 121212
QuestName = "NPCBuffer"
QuestDesc = "custom"
InitialHtml = "1.htm"
print "importing custom: 121212: NPCBuffer"
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onEvent(self,event,st):
htmltext = event
#Acumen
if event == "1":
SkillTable.getInstance().getInfo(1085,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Advanced Block
if event == "2":
SkillTable.getInstance().getInfo(1304,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Agility
if event == "3":
SkillTable.getInstance().getInfo(1087,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Arcane Protection
if event == "4":
SkillTable.getInstance().getInfo(1354,1).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Berserker Spirit
if event == "5":
SkillTable.getInstance().getInfo(1062,2).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Bless Shield
if event == "6":
SkillTable.getInstance().getInfo(1243,6).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Blessed Body
if event == "7":
SkillTable.getInstance().getInfo(1045,6).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Blessed Soul
if event == "8":
SkillTable.getInstance().getInfo(1048,6).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Clarity
if event == "9":
SkillTable.getInstance().getInfo(1397,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Chant of Protection
if event == "10":
SkillTable.getInstance().getInfo(1461,1).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Chant of Victory
if event == "11":
SkillTable.getInstance().getInfo(1363,1).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Concentration
if event == "12":
SkillTable.getInstance().getInfo(1078,6).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Death whisper
if event == "13":
SkillTable.getInstance().getInfo(1242,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Divine Protection
if event == "14":
SkillTable.getInstance().getInfo(1353,1).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Elemental Protection
if event == "15":
SkillTable.getInstance().getInfo(1352,1).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Empower
if event == "16":
SkillTable.getInstance().getInfo(1059,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Focus
if event == "17":
SkillTable.getInstance().getInfo(1077,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Greater Might
if event == "18":
SkillTable.getInstance().getInfo(1388,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Greater Shield
if event == "19":
SkillTable.getInstance().getInfo(1389,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Guidance
if event == "20":
SkillTable.getInstance().getInfo(1240,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Haste
if event == "21":
SkillTable.getInstance().getInfo(1086,2).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Holy Resistance
if event == "22":
SkillTable.getInstance().getInfo(1392,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Holy Weapon
if event == "23":
SkillTable.getInstance().getInfo(1043,1).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Invigor
if event == "24":
SkillTable.getInstance().getInfo(1032,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Magic Barrier
if event == "25":
SkillTable.getInstance().getInfo(1036,2).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Magnus' Chant
if event == "26":
SkillTable.getInstance().getInfo(1413,1).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Mana Gain
if event == "27":
SkillTable.getInstance().getInfo(1460,1).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Mental Shield
if event == "28":
SkillTable.getInstance().getInfo(1035,4).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Might
if event == "29":
SkillTable.getInstance().getInfo(1068,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Prophecy of Fire
if event == "30":
SkillTable.getInstance().getInfo(1356,1).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Prophecy of Water
if event == "31":
SkillTable.getInstance().getInfo(1355,1).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Prophecy of Wind
if event == "32":
SkillTable.getInstance().getInfo(1357,1).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Regeneration
if event == "33":
SkillTable.getInstance().getInfo(1044,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Resist Aqua
if event == "34":
SkillTable.getInstance().getInfo(1182,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Resist Fire
if event == "35":
SkillTable.getInstance().getInfo(1191,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Resist Poison
if event == "36":
SkillTable.getInstance().getInfo(1033,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Resist Shock
if event == "37":
SkillTable.getInstance().getInfo(1259,4).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Resist Wind
if event == "38":
SkillTable.getInstance().getInfo(1189,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Shield
if event == "39":
SkillTable.getInstance().getInfo(1040,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Unholy Resistance
if event == "40":
SkillTable.getInstance().getInfo(1393,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Vampiric Rage
if event == "41":
SkillTable.getInstance().getInfo(1268,4).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Wild Magic
if event == "42":
SkillTable.getInstance().getInfo(1303,2).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Dance of Alignment
if event == "43":
SkillTable.getInstance().getInfo(530,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "3.htm"
st.setState(COMPLETED)
#Dance of Aqua Guard
if event == "44":
SkillTable.getInstance().getInfo(307,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "3.htm"
st.setState(COMPLETED)
#Dance of Concentration
if event == "45":
SkillTable.getInstance().getInfo(276,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "3.htm"
st.setState(COMPLETED)
#Dance of Earth Guard
if event == "46":
SkillTable.getInstance().getInfo(309,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "3.htm"
st.setState(COMPLETED)
#Dance of Fire
if event == "47":
SkillTable.getInstance().getInfo(274,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "3.htm"
st.setState(COMPLETED)
#Dance of Fury
if event == "48":
SkillTable.getInstance().getInfo(275,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "3.htm"
st.setState(COMPLETED)
#Dance of Inspiration
if event == "49":
SkillTable.getInstance().getInfo(272,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "3.htm"
st.setState(COMPLETED)
#Dance of Light
if event == "50":
SkillTable.getInstance().getInfo(277,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "3.htm"
st.setState(COMPLETED)
#Dance of Protection
if event == "51":
SkillTable.getInstance().getInfo(311,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "3.htm"
st.setState(COMPLETED)
#Dance of the Mystic
if event == "52":
SkillTable.getInstance().getInfo(273,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "3.htm"
st.setState(COMPLETED)
#Dance of the Vampire
if event == "53":
SkillTable.getInstance().getInfo(310,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "3.htm"
st.setState(COMPLETED)
#Dance of the Warrior
if event == "54":
SkillTable.getInstance().getInfo(271,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "3.htm"
st.setState(COMPLETED)
#Siren's Dance
if event == "55":
SkillTable.getInstance().getInfo(365,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "3.htm"
st.setState(COMPLETED)
#Song of Champion
if event == "56":
SkillTable.getInstance().getInfo(364,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "4.htm"
st.setState(COMPLETED)
#Song of Earth
if event == "57":
SkillTable.getInstance().getInfo(264,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "4.htm"
st.setState(COMPLETED)
#Song of Elemental
if event == "58":
SkillTable.getInstance().getInfo(529,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "4.htm"
st.setState(COMPLETED)
#Song of Flame Guard
if event == "59":
SkillTable.getInstance().getInfo(306,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "4.htm"
st.setState(COMPLETED)
#Song of Hunter
if event == "60":
SkillTable.getInstance().getInfo(269,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "4.htm"
st.setState(COMPLETED)
#Song of Invocation
if event == "61":
SkillTable.getInstance().getInfo(270,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "4.htm"
st.setState(COMPLETED)
#Song of Life
if event == "62":
SkillTable.getInstance().getInfo(265,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "4.htm"
st.setState(COMPLETED)
#Song of Meditation
if event == "63":
SkillTable.getInstance().getInfo(363,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "4.htm"
st.setState(COMPLETED)
#Song of Renewal
if event == "64":
SkillTable.getInstance().getInfo(349,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "4.htm"
st.setState(COMPLETED)
#Song of Storm Guard
if event == "65":
SkillTable.getInstance().getInfo(308,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "4.htm"
st.setState(COMPLETED)
#Song of Vengeance
if event == "66":
SkillTable.getInstance().getInfo(305,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "4.htm"
st.setState(COMPLETED)
#Song of Vitality
if event == "67":
SkillTable.getInstance().getInfo(304,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "4.htm"
st.setState(COMPLETED)
#Song of Warding
if event == "68":
SkillTable.getInstance().getInfo(267,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "4.htm"
st.setState(COMPLETED)
#Song of Water
if event == "69":
SkillTable.getInstance().getInfo(266,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "4.htm"
st.setState(COMPLETED)
#Song of Wind
if event == "70":
SkillTable.getInstance().getInfo(268,1).getEffects(st.getPlayer(),st.getPlayer()
)
return "4.htm"
st.setState(COMPLETED)
#Heal
if event == "71":
st.takeItems
st.getPlayer().setCurrentCp(st.getPlayer().getMaxCp())
st.getPlayer().setCurrentHp(st.getPlayer().getMaxHp())
st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
return "1.htm"
st.setState(COMPLETED)
#Cancel Buffs
if event == "72":
st.getPlayer().stopAllEffects()
return "1.htm"
st.setState(COMPLETED)
#Wind Walk
if event == "73":
SkillTable.getInstance().getInfo(1204,2).getEffects(st.getPlayer(),st.getPlayer(
))
return "2.htm"
st.setState(COMPLETED)
#Malaria
if event == "74":
SkillTable.getInstance().getInfo(4554,4).getEffects(st.getPlayer(),st.getPlayer(
))
return "5.htm"
st.setState(COMPLETED)
#Flu
if event == "75":
SkillTable.getInstance().getInfo(4553,4).getEffects(st.getPlayer(),st.getPlayer(
))
return "5.htm"
st.setState(COMPLETED)
#Rheumatismo
if event == "76":
SkillTable.getInstance().getInfo(4551,4).getEffects(st.getPlayer(),st.getPlayer(
))
return "5.htm"
st.setState(COMPLETED)
#Nobles
if event == "77":
SkillTable.getInstance().getInfo(1323,1).getEffects(st.getPlayer(),st.getPlayer(
))
return "1.htm"
st.setState(COMPLETED)
#Blessing of Queen
if event == "78":
SkillTable.getInstance().getInfo(4699,13).getEffects(st.getPlayer(),st.getPlayer
())
return "5.htm"
st.setState(COMPLETED)
#Blessing of Seraphim
if event == "79":
SkillTable.getInstance().getInfo(4702,13).getEffects(st.getPlayer(),st.getPlayer
())
return "5.htm"
st.setState(COMPLETED)
#Gift of Seraphim
if event == "80":
SkillTable.getInstance().getInfo(4703,13).getEffects(st.getPlayer(),st.getPlayer
())
return "5.htm"
st.setState(COMPLETED)
#Gift of Queen
if event == "81":
SkillTable.getInstance().getInfo(4700,13).getEffects(st.getPlayer(),st.getPlayer
())
return "5.htm"
st.setState(COMPLETED)
#Chant of Victory
if event == "82":
SkillTable.getInstance().getInfo(1363,1).getEffects(st.getPlayer(),st.getPlayer(
))
return "5.htm"
st.setState(COMPLETED)
#Chant of Magnus
if event == "83":
SkillTable.getInstance().getInfo(1413,1).getEffects(st.getPlayer(),st.getPlayer(
))
return "5.htm"
st.setState(COMPLETED)
#Prophecy of Fire
if event == "84":
SkillTable.getInstance().getInfo(1356,1).getEffects(st.getPlayer(),st.getPlayer(
))
return "5.htm"
st.setState(COMPLETED)
#Prophecy of Wind
if event == "85":
SkillTable.getInstance().getInfo(1357,1).getEffects(st.getPlayer(),st.getPlayer(
))
return "5.htm"
st.setState(COMPLETED)
#Prochecy of Water
if event == "86":
SkillTable.getInstance().getInfo(1355,1).getEffects(st.getPlayer(),st.getPlayer(
))
return "5.htm"
st.setState(COMPLETED)
#Greater Might
if event == "87":
SkillTable.getInstance().getInfo(1388,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "5.htm"
st.setState(COMPLETED)
#Greater Shield
if event == "88":
SkillTable.getInstance().getInfo(1389,3).getEffects(st.getPlayer(),st.getPlayer(
))
return "5.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><center>ERROR<br1>Please, contact the administrator.</center></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)
Я там(в __init__.py) изменил
from com.l2dc.gameserver.model.actor.instance import L2PcInstance
from java.util import Iterator
from com.l2dc.gameserver.datatables import SkillTable
from com.l2dc import L2DatabaseFactory
from com.l2dc.gameserver.model.quest import State
from com.l2dc.gameserver.model.quest import QuestState
from com.l2dc.gameserver.model.quest.jython import QuestJython as JQuest
то что красным написано это я вписал вместо той которая стаяла.
Я еще поставил 2го баффера по "строению" и файлам почти такой же как 1ый.
Там когда на нем я нажимал "Buff" открывался диалог( тобишь "Gameserver/data/scripts/custom/40015_NPCBuffer/1.htm" вот отсюда), а в первом баффере не открывался хотя они почти похожи.
Но во 2ом баффере когда открылся диалог "Gameserver/data/scripts/custom/40015_NPCBuffer/1.htm" с выбором типов баффов(ПП, Данс , Сонг и т.д.), когда на любую кнопку нажимаешь выходит "NPC`s minimum quest requirements..." как и в 1ом баффере. Например если нажал на ПП бафы должно открыться "Gameserver/data/scripts/custom/40015_NPCBuffer/2.htm".
Сорри если слишком многа текста... Я пытаюсь подробно описывать все.
Кто знает в чем дело тут?
Или ссылки на бафферов, телепортеров спец для сборки сервера Epilogue L2DC дайте пож.
И еще подскажите как мне настроить вот это:
Например пишешь акк, пасс и войти тыкаешь -> правила принять нажимаешь -> дальше окно выбора сервера и под ней еще окошко и там написано посетите наш сайт www.*.ru и еще что та написано. Это в самом клиенте в каком-то файле настраивать нада, только я незнаю в каком.
ПОМОГИТЕ МНЕ ПОЖ!