Initial changes.

This commit is contained in:
MobiusDevelopment
2019-07-26 10:40:03 +00:00
parent 24a2cc615e
commit e70ad4bdb2
68 changed files with 1869 additions and 1955 deletions

View File

@@ -1,6 +1,6 @@
@echo off
title L2D geodata converter
java -version:1.8 -Xmx512m -cp ./../libs/* org.l2jmobius.tools.geodataconverter.GeoDataConverter
java -Xmx512m -cp ./../libs/* org.l2jmobius.tools.geodataconverter.GeoDataConverter
pause

View File

@@ -80,4 +80,7 @@ RemotePrivStoreFactor = 12
# To exacute the server under debugger with eclipse use:
# DatapackRoot = ../L2jMobius_DataPack
# or point the folder directly to your server.
DatapackRoot = .
DatapackRoot = .
# Scripts root directory.
ScriptRoot = ./data/scripts

View File

@@ -1,11 +0,0 @@
# Enable / disable display information about the load on each object
EnableScriptDebug = False
# Enable / disable the mandatory compilation of all the objects
AllowCompilation = True
# Enable / disable hash loaded objects
UseCache = False
# Enable / disable error output
EnableScriptErrorLog = True

View File

@@ -0,0 +1,17 @@
# ---------------------------------------------------------------------------
# Script Engine Settings
# ---------------------------------------------------------------------------
# The parent class loader for isolated script class loaders.
# When this property is not specified, has an invalid value or is a class name which could not be found, the System classloader is used.
# Values: System, ThreadContext or a fully qualified java class name.
classloader=System
# Source compatibility.
source=1.8
# The java sourcepath, when you have a different datapack root, you must change this too.
sourcepath=data/scripts
# The debug informations to generate for compiled class files.
g=source,lines,vars

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../data/xsd/Scripts.xsd">
<!-- Skip these filenames from script loading, because they are already loaded using a different way. -->
<exclude file="package-info.java" />
<!--
With this file you can exclude/include specific folders/files from within the scripts directory.
In order to exclude a folder/file simply add the following line:
<exclude file="{FOLDER/FILE NAME HERE}" />
For example to exclude the quests directory, use:
<exclude file="quests" />
If you want to exclude all files within a directory except certain file(s), you can do it like so:
<exclude file="{FOLDER NAME HERE}">
<include file="{FOLDER/FILE NAME HERE}" />
<include file="{FOLDER/FILE NAME HERE}" />
...
</exclude>
For example to exclude ForgeOfTheGods folder except Valakas script, use:
<exclude file="ForgeOfTheGods">
<include file="Valakas.java" />
</exclude>
-->
</list>

View File

@@ -1,129 +0,0 @@
# Boss AI
ai/bosses/Antharas.java
ai/bosses/Baium.java
ai/bosses/Barakiel.java
ai/bosses/benom.py
ai/bosses/Core.java
ai/bosses/drchaos.py
ai/bosses/Frintezza.java
ai/bosses/Golkonda.java
ai/bosses/Gordon.java
ai/bosses/gustav.py
ai/bosses/Hallate.java
ai/bosses/IceFairySirra.java
ai/bosses/Kernon.java
ai/bosses/nurka.py
ai/bosses/Orfen.java
ai/bosses/QueenAnt.java
ai/bosses/Tyrannosaurus.java
ai/bosses/sailren.py
ai/bosses/Valakas.java
ai/bosses/VanHalter.java
ai/bosses/Zaken.java
# Other AI
ai/others/AncientEgg.java
ai/others/cats_eye_bandit.py
ai/others/chests.py
ai/others/delu_lizardman_special_agent.py
ai/others/delu_lizardman_special_commander.py
ai/others/evabox.py
ai/others/feedable_beasts.py
ai/others/karul_bugbear.py
ai/others/Monastery.java
ai/others/ol_mahum_general.py
ai/others/retreat_onattack.py
ai/others/scarlet_stokate_noble.py
ai/others/splendor.py
#ai/others/squash.py
ai/others/SummonMinions.java
ai/others/timak_orc_overlord.py
ai/others/timak_orc_troop_leader.py
ai/others/Transform.java
ai/others/turek_orc_footman.py
ai/others/turek_orc_supplier.py
ai/others/turek_orc_warlord.py
ai/others/ZombieGatekeepers.java
# Custom
custom/EchoCrystals/EchoCrystals.java
custom/HeroCirclet/HeroCirclet.java
custom/HeroWeapon/HeroWeapon.java
custom/KetraOrcSupport/KetraOrcSupport.java
custom/MissQueen/MissQueen.java
custom/NpcLocationInfo/NpcLocationInfo.java
custom/RaidbossInfo/RaidbossInfo.java
custom/VarkaSilenosSupport/VarkaSilenosSupport.java
custom/ShadowWeapon/ShadowWeapon.java
custom/8003_MeetBaium/__init__.py
custom/8009_HotSpringsBuffs/__init__.py
#custom/6666_NoblessTrader/__init__.py
#custom/6667_ClanManager/__init__.py
# Quests - Python
quests/24_InhabitantsOfTheForrestOfTheDead/__init__.py
quests/25_HidingBehindTheTruth/__init__.py
quests/115_TheOtherSideOfTruth/__init__.py
quests/120_PavelsResearch/__init__.py
quests/137_TempleChampionPart1/__init__.py
quests/138_TempleChampionPart2/__init__.py
quests/139_ShadowFoxPart1/__init__.py
quests/140_ShadowFoxPart2/__init__.py
quests/141_ShadowFoxPart3/__init__.py
quests/142_FallenAngelRequestOfDawn/__init__.py
quests/143_FallenAngelRequestOfDusk/__init__.py
quests/178_IconicTrinity/__init__.py
quests/183_Relic_Exploration/__init__.py
quests/186_Contract_Execution/__init__.py
quests/187_Nikolas_Heart/__init__.py
quests/188_Seal_Removal/__init__.py
quests/189_Contract_Completion/__init__.py
quests/191_Vain_Conclusion/__init__.py
quests/236_SeedsOfChaos/__init__.py
quests/255_Tutorial/__init__.py
quests/269_InventionAmbition/__init__.py
quests/280_TheFoodChain/__init__.py
quests/281_HeadForTheHills/__init__.py
quests/283_TheFewTheProudTheBrave/__init__.py
quests/284_MuertosFeather/__init__.py
quests/286_FabulousFeathers/__init__.py
quests/334_TheWishingPotion/__init__.py
quests/335_TheSongOfTheHunter/__init__.py
quests/336_CoinOfMagic/__init__.py
quests/343_UnderTheShadowOfTheIvoryTower/__init__.py
quests/350_EnhanceYourWeapon/__init__.py
quests/386_StolenDignity/__init__.py
quests/501_ProofOfClanAlliance/__init__.py
quests/503_PursuitClanAmbition/__init__.py
quests/504_CompetitionfortheBanditStronghold/__init__.py
quests/505_BloodOffering/__init__.py
quests/508_TheClansReputation/__init__.py
quests/509_TheClansPrestige/__init__.py
quests/510_AClansReputation/__init__.py
quests/635_InTheDimensionalRift/__init__.py
quests/636_TruthBeyond/__init__.py
quests/648_AnIceMerchantsDream/__init__.py
quests/655_AGrandPlanforTamingWildBeasts/__init__.py
quests/999_C3Tutorial/__init__.py
# Quests - Java
quests/QuestMasterHandler.java
# Teleports
teleports/ElrokiTeleporters/ElrokiTeleporters.java
teleports/HuntingGroundsTeleport/HuntingGroundsTeleport.java
teleports/NewbieTravelToken/NewbieTravelToken.java
teleports/NoblesseTeleport/NoblesseTeleport.java
teleports/OracleTeleport/OracleTeleport.java
teleports/PaganTeleporters/PaganTeleporters.java
teleports/RaceTrack/RaceTrack.java
teleports/TeleportWithCharm/TeleportWithCharm.java
teleports/ToIVortex/ToIVortex.java
teleports/2400_toivortex_exit/__init__.py
teleports/6000_GrandBossTeleporters/__init__.py
# Village Master
village_master/ClanMaster/ClanMaster.java
village_master/AllianceMaster/AllianceMaster.java
village_master/FirstClassChange/FirstClassChange.java
village_master/SecondClassChange/SecondClassChange.java

View File

@@ -1,202 +0,0 @@
import sys
from org.l2jmobius.gameserver.ai import CtrlIntention
from org.l2jmobius.gameserver.model.quest import State
from org.l2jmobius.gameserver.model.quest import QuestState
from org.l2jmobius.gameserver.model.quest.jython import QuestJython as JQuest
from org.l2jmobius.gameserver.network.serverpackets import CreatureSay
from org.l2jmobius.commons.util import Rnd
POLLEN = 6391
SKILL_NECTAR = 9998
# Поливаемые
WATERED_SQUASH = [12774,12775,12776,12777,12778,12779]
class squash(JQuest) :
def __init__(self,id,name,descr):
JQuest.__init__(self,id,name,descr)
# Выросшие
self.adultSmallSquash = [12775,12776]
self.adultLargeSquash = [12778,12779]
def onAdvEvent(self,event,npc,player) :
objId = npc.getObjectId()
if event == "Good By" and npc and player :
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"Good By!! LOL."))
npc.onDecay()
elif event == "Good By1" and npc and player :
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"Всем, до свидания... Большая тыква сказала до свидания ..."))
npc.onDecay()
elif event == "Good By2" and npc and player :
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"Вы можете быстрее? Через 30 секунд я сбегу ..."))
elif event == "Good By3" and npc and player :
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"Я прерву отношения с Вами через 20 секунд!"))
elif event == "Good By4" and npc and player :
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"У меня осталось всего 10 секунд! 9. 8. 7 ..!"))
elif event == "Good By5" and npc and player :
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"Эй! Счастливо оставаться! Идиот, забудь обо мне!"))
return
def onSkillUse(self,npc,player,skill):
npcId = npc.getNpcId()
skillId = skill.getId()
if skillId != SKILL_NECTAR : return
if npcId not in WATERED_SQUASH : return
objectId = npc.getObjectId()
if skillId == SKILL_NECTAR :
# Первый полив
if npc.getNectar() == 0 :
if Rnd.get(2) == 1 :
mytext = ["Чтобы быть способной расти, я должна пить только нектар ... причем чаще",
"Если ты будеш быстрее выливать мне нектар - я быстрее выросту!",
"Ну, верьте мне, прыскайте нектар! Я могу конечно превратиться в большую тыкву!!!",
"Принеси нектар, чтобы вырастить тыкву!",
"Плод прекрасной молодой тыквы начинает блестеть, когда семя предано земле! С этого времени будет способен стать здоровым и сильным!",
"О, давно не виделись?",
"Неожидал увидеть мое красивое появление?",
"Отлично! Это - нечто! Нектар?",
"Дозаправка! Заправь 5 бутылок, чтобы я смогла превратиться в большую тыкву! О!"]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
npc.addNectar()
npc.addGood()
else :
mytext = ["Не спеши! Слишком часто, я не успеваю!",
"Я же не автомат, меня скорострельностью не напоиш",
"Да куда же ты торопишься! Слишком часто, я не успеваю!",
"Упс, опять слишком быстро",
"Давай чуток помедленней, не спеши, медленно достань бутылку и медленно ее вылей!",
"У тебя нет чувства скорости? Медленнее давай"]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
npc.addNectar()
# Второй полив
elif npc.getNectar() == 1 :
if Rnd.get(2) == 1 :
mytext = ["Желаю стать большой тыквой!",
"Ням, ням, ням! Вышло! Заботится - хорошо!",
"Как думаеш, я зрелая или гнилая?",
"Нектар - только лучшее! Ха! Ха! Ха!"]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
npc.addNectar()
npc.addGood()
else :
mytext = ["О! Опять мимо! Может слишком быстро расходуеш нектар?",
"Если я умру такой как сейчас, Вы получите только молодую тыкву ...",
"Выращивают немного быстрее! Неплохо было бы стать большой тыквой, молодая тыква не хороша!",
"Tакую маленькую тыкву вы все должны есть? Принесите нектар, я могу быть больше!"]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
npc.addNectar()
# Третий полив
elif npc.getNectar() == 2 :
if Rnd.get(2) == 1 :
mytext = ["Tыква, изголодалась! Просит утолить жажду!",
"Ну наконец-то ..., это действительно вкусно! Есть еще?",
"Ухаживаешь за мной только для того, чтобы есть? Отлично, является случайным ваш ..., чтобы не дать манну на самоубийство"]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
npc.addNectar()
npc.addGood()
else :
mytext = ["Не воду ли Вы добавляете? Какой вкус?",
"Хозяин, спасите меня... Я не имею аромата нектара, я должна умереть ..."]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
npc.addNectar()
# Четвертый полив
elif npc.getNectar() == 3 :
if Rnd.get(2) == 1 :
mytext = ["Очень хорошо, делаешь чрезвычайно хорошо! Знаешь что следующим шагом должен делать?",
"Если Вы поймаете меня, я даю Вам 10 миллионов adena!!! Согласны?"]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
npc.addNectar()
npc.addGood()
else :
mytext = ["Я голодна, Tы хочеш чтоб я засохла?",
"Tребую нектар, чтобы расти немного быстрее."]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
npc.addNectar()
# Пятый полив
elif npc.getNectar() == 4 :
if Rnd.get(2) == 1 :
npc.addGood()
if npc.getGood() >= 3 :
if npcId == 12774 :
newGourd = self.addSpawn(12775,npc)
newGourd.setOwner(player.getName())
self.startQuestTimer("Good By", 120000, newGourd, player) # Через 2 минуты исчезновение
self.startQuestTimer("Good By2", 90000, newGourd, player) # 30 секунд до исчезновения
self.startQuestTimer("Good By3", 100000, newGourd, player) # 20 секунд до исчезновения
self.startQuestTimer("Good By4", 110000, newGourd, player) # 10 секунд до исчезновения
mytext = ["Молодая тыква, жаждящая! Как, уже выросла?",
"Я убегу через 2 минуты"]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
npc.onDecay()
else :
newGourd = self.addSpawn(12778,npc)
newGourd.setOwner(player.getName())
self.startQuestTimer("Good By1", 120000, newGourd, player) # Через 2 минуты исчезновение
self.startQuestTimer("Good By2", 90000, newGourd, player) # 30 секунд до исчезновения
self.startQuestTimer("Good By3", 100000, newGourd, player) # 20 секунд до исчезновения
self.startQuestTimer("Good By4", 110000, newGourd, player) # 10 секунд до исчезновения
mytext = ["Милосердность является очень хорошей чертой. Tеперь посмотрите, я чувствую себя все более хорошо",
"Я убегу через 2 минуты"]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
npc.onDecay()
else :
if npcId == 12774 :
newGourd = self.addSpawn(12776,npc)
newGourd.setOwner(player.getName())
mytext = ["Эй! Была - не была! Есть! Сейчас же! Tы не можешь должным образом заботиться? Я же так сгнию!",
"Ничего себе, остановки? За что тебя благодарить",
"Жажду нектара о ...",
"Вы хотите большую тыкву? Но я хочу остаться маленькой тыковкой ..."]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
npc.onDecay()
if npcId == 12777 :
newGourd = self.addSpawn(12779,npc)
newGourd.setOwner(player.getName())
mytext = ["Эй! Была - не была! Есть! Сейчас же! Tы не можешь должным образом заботиться? Я так сгнию!",
"Ничего себе, остановки? За что тебя благодарить",
"Жажду нектара о ...",
"Вы хотите большую тыкву? Но я хочу остаться маленькой тыковкой ..."]
npc.broadcastPacket(CreatureSay(objectId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
npc.onDecay()
return
def onAttack(self,npc,player,damage,isPet) :
npcId = npc.getNpcId()
objId = npc.getObjectId()
if npcId not in WATERED_SQUASH : return
if npcId in self.adultLargeSquash :
if Rnd.get(30) < 2 :
mytext = ["Укусы плетут кружево крысой ..., чтобы заменить ... тело ...!",
"Ха ха, росла! Полностью на всех!",
"Не можете чтоли все прицелиться? Смотрите все, чтобы не сбежала ...",
"Я считаю ваши удары! О, напоминает удар снова!",
"Не тратьте впустую ваше время!",
"Ха, этот звук действительно приятно слышать?",
"Я потребляю ваши атаки, чтобы расти!",
"Время, чтобы ударить снова! Ударь еще разок!",
"Tолько полезная музыка может открыть большую тыкву... Меня нельзя открыть с оружием!"]
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),mytext[Rnd.get(len(mytext))]))
return
def onKill(self,npc,player,isPet) :
npcId = npc.getNpcId()
objId = npc.getObjectId()
if npcId not in WATERED_SQUASH : return
if npcId in self.adultSmallSquash :
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"Tыква открывается!!"))
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"Ееее! Открывается! Много хороших вещей ..."))
elif npcId in self.adultLargeSquash :
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"Tыква открывается!!"))
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"Ееее! Открывается! Много хороших вещей ..."))
else :
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"За что, хозяин?!"))
npc.broadcastPacket(CreatureSay(objId,0,npc.getName(),"Ой, кишки вывалились!!"))
return
QUEST = squash(-1,"group_template","ai")
for i in WATERED_SQUASH:
QUEST.addSkillUseId(i)
QUEST.addAttackId(i)
QUEST.addKillId(i)

View File

@@ -1,18 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
NoblessTrader:<br>
Do you know the story of the seventeen heroes who challenged the Land
Dragon Antharas? It's fascinating! Such a heroic sacrifice! It could be
an epic poem! In fact, it's one of my all-time favorite stories! It's
what motivated me to become a bohemian poet! It's always been my dream
to write a great epic poem tying all the pieces of this story together.<br>
Well forget all that because we have made the quest simple !!<br>
I will make you Noblesse if you have a second Subclass at Level
70+ and if you have 2 gold bars in your inventory.<br>
<a action="bypass -h Quest 6666_NoblessTrader 31739-3.htm">"Make
me Noblesse."</a>
</body>
</html>

View File

@@ -1,10 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
NoblessTrader:<br>
Sorry but I will make you Noblesse only if you have a second Subclass at Level
70+ and if you have not 2 gold bars in your inventory.<br>
</body>
</html>

View File

@@ -1,10 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
Talien:<br>
Awesome! Thank you! For comming to see me, we have saved you a lot of
time you are now Noblesse.! Only at Titan energy:}
</body>
</html>

View File

@@ -1,67 +0,0 @@
import sys
from org.l2jmobius.gameserver.model.actor.instance import L2PcInstance
from org.l2jmobius.gameserver.model.actor.instance import L2NpcInstance
from java.util import Iterator
from org.l2jmobius.gameserver.model.quest import State
from org.l2jmobius.gameserver.model.quest import QuestState
from org.l2jmobius.gameserver.model.quest.jython import QuestJython as JQuest
qn = "6666_NoblessTrader"
NPC=[66666]
NOBLESS_TIARA=7694
GOLD_BAR=3470
QuestId = 6666
QuestName = "NoblessTrade"
QuestDesc = "custom"
InitialHtml = "31739-1.htm"
print "INFO Nobless Trader (66666) Enabled..."
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onEvent(self,event,st):
htmltext = "<html><head><body>I have nothing to say you</body></html>"
cond = st.getInt("cond")
count=st.getQuestItemsCount(GOLD_BAR)
if event == "31739-3.htm" :
if cond == 0 and st.getPlayer().isSubClassActive() :
if st.getPlayer().getLevel() >= 70 and count > 1:
htmltext=event
st.set("cond","0")
st.getPlayer().setNoble(True)
st.giveItems(NOBLESS_TIARA,1)
st.playSound("ItemSound.quest_finish")
st.exitQuest(1)
st.takeItems(GOLD_BAR,2)
else :
htmltext="31739-2.htm"
st.exitQuest(1)
else :
htmltext="31739-2.htm"
st.exitQuest(1)
return htmltext
def onTalk (self,npc,player):
htmltext = "<html><head><body>I have nothing to say you</body></html>"
st = player.getQuestState(qn)
if not st : return htmltext
npcId = npc.getNpcId()
id = st.getState()
if id == State.CREATED :
st.set("cond","0")
htmltext="31739-1.htm"
elif id == State.COMPLETED :
htmltext = "<html><head><body>This quest have already been completed.</body></html>"
else :
st.exitQuest(1)
return htmltext
QUEST = Quest(6666,qn,"custom")
for npcId in NPC:
QUEST.addStartNpc(npcId)
QUEST.addTalkId(npcId)

View File

@@ -1,23 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
Clan Manager:<br>
Do you know the story of the seventeen heroes who challenged the Land
Dragon Antharas? It's fascinating! Such a heroic sacrifice! It could be
an epic poem! In fact, it's one of my all-time favorite stories! It's
what motivated me to become a bohemian poet! It's always been my dream
to write a great epic poem tying all the pieces of this story together.<br>
Well forget all that because we have made the quest simple !!<br>
I will make your clan Level 8 if you are Noble and have 13 Gold Bar... <br>
<a action="bypass -h Quest 6667_ClanManager 66667-clanOk.htm">"Make Clan Lvl 8"</a><br>
I will give to your clan 3kk Reputation Points if you are Noble and 13 Gold Bar<br>
have ...
<a action="bypass -h Quest 6667_ClanManager 66667-repOk.htm">"Give me 3kk Rep. Points"</a><br>
</body>
</html>

View File

@@ -1,10 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
Clan Manager:<br>
Awesome! Thank you! For comming to see me, we have saved you a lot of
time! Your clan has now lvl 8!!!
</body>
</html>

View File

@@ -1,10 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
Clan Manager:<br>
Sorry but I can't give you lvl 8 Clan: check requirements!<br>
</body>
</html>

View File

@@ -1,9 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
Clan Manager:<br>
Sorry but I can't give you 3kk Reputation Points: check requirements!<br>
</body>
</html>

View File

@@ -1,10 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
Clan Manager:<br>
Awesome! Thank you! For comming to see me, we have saved you a lot of
time! Your clan has now 3kk Reputation Points!!!
</body>
</html>

View File

@@ -1,76 +0,0 @@
import sys
from org.l2jmobius.gameserver.model.actor.instance import L2PcInstance
from org.l2jmobius.gameserver.model.actor.instance import L2NpcInstance
from java.util import Iterator
from org.l2jmobius.gameserver.model.quest import State
from org.l2jmobius.gameserver.model.quest import QuestState
from org.l2jmobius.gameserver.model.quest.jython import QuestJython as JQuest
qn = "6667_ClanManager"
NPC=[66667]
REQUESTED_ITEM=3470
REQUESTED_AMOUNT=2
NEW_REP_SCORE=3000000
QuestId = 6667
QuestName = "ClanManager"
QuestDesc = "custom"
InitialHtml = "66667-1.htm"
print "INFO Clan Manager (66667) Enabled..."
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onEvent(self,event,st):
htmltext = "<html><head><body>I have nothing to say you</body></html>"
count=st.getQuestItemsCount(REQUESTED_ITEM)
if event == "66667-clanOk.htm" :
if st.getPlayer().isClanLeader() and st.getPlayer().getClan().getLevel()<8:
if st.getPlayer().isNoble() and count >= REQUESTED_AMOUNT:
htmltext=event
st.getPlayer().getClan().changeLevel(8)
st.playSound("ItemSound.quest_finish")
st.takeItems(REQUESTED_ITEM,REQUESTED_AMOUNT)
else :
htmltext="66667-no_clan.htm"
st.exitQuest(1)
else :
htmltext="66667-no_clan.htm"
st.exitQuest(1)
elif event == "66667-repOk.htm" :
if st.getPlayer().isClanLeader() and st.getPlayer().getClan().getLevel() >= 5 and st.getPlayer().getClan().getReputationScore() < NEW_REP_SCORE :
if st.getPlayer().isNoble() and count > REQUESTED_AMOUNT:
htmltext=event
st.getPlayer().getClan().setReputationScore(NEW_REP_SCORE, 1);
st.playSound("ItemSound.quest_finish")
st.takeItems(REQUESTED_ITEM,REQUESTED_AMOUNT)
else :
htmltext="66667-no_points.htm"
st.exitQuest(1)
else :
htmltext="66667-no_points.htm"
st.exitQuest(1)
return htmltext
def onTalk (self,npc,player):
htmltext = "<html><head><body>I have nothing to say you</body></html>"
st = player.getQuestState(qn)
if not st : return htmltext
npcId = npc.getNpcId()
id = st.getState()
if id == State.CREATED :
htmltext="66667-1.htm"
elif id == State.COMPLETED :
htmltext = "<html><head><body>This quest have already been completed.</body></html>"
else :
st.exitQuest(1)
return htmltext
QUEST = Quest(6667,qn,"custom")
for npcId in NPC:
QUEST.addStartNpc(npcId)
QUEST.addTalkId(npcId)

View File

@@ -679,7 +679,7 @@ public class QuestMasterHandler
{
try
{
quest.newInstance();
quest.getDeclaredConstructor().newInstance();
}
catch (Exception e)
{

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="list">
<xs:complexType>
<xs:sequence>
<xs:element name="exclude" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="include" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="file" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="file" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@@ -1 +1 @@
-server -Dfile.encoding=UTF-8 -Djava.util.logging.manager=org.l2jmobius.log.ServerLogManager -Dorg.slf4j.simpleLogger.log.com.zaxxer.hikari=error -XX:+AggressiveOpts -Xnoclassgc -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseParNewGC -XX:SurvivorRatio=8 -Xmx4g -Xms2g -Xmn1g
-server -Dfile.encoding=UTF-8 -Djava.util.logging.manager=org.l2jmobius.log.ServerLogManager -Dorg.slf4j.simpleLogger.log.com.zaxxer.hikari=error -Xnoclassgc -XX:+CMSParallelRemarkEnabled -XX:SurvivorRatio=8 -Xmx4g -Xms2g -Xmn1g