<npc id="22852" name="Dragon Guard" title="">
<set name="aggroRange" value="400" />
<set name="ai_type" value="Fighter" />
<set name="baseAtkRange" value="80" />
<set name="baseAtkType" value="POLE" />
<set name="baseCON" value="43" />
<set name="baseCritRate" value="40" />
<set name="baseDEX" value="30" />
<set name="baseHpMax" value="55817.8012671518" />
<set name="baseHpRate" value="2" />
<set name="baseHpReg" value="187.410040552143" />
<set name="baseINT" value="21" />
<set name="baseMAtk" value="8707.81891430402" />
<set name="baseMAtkSpd" value="333" />
<set name="baseMDef" value="635.378064" />
<set name="baseMEN" value="20" />
<set name="baseMpMax" value="1846.8" />
<set name="baseMpReg" value="3" />
<set name="basePAtk" value="12008.0135566142" />
<set name="basePAtkSpd" value="253" />
<set name="basePDef" value="578.861024" />
<set name="baseRunSpd" value="200" />
<set name="baseSTR" value="40" />
<set name="baseShldDef" value="0" />
<set name="baseShldRate" value="0" />
<set name="baseWIT" value="20" />
<set name="baseWalkSpd" value="30" />
<set name="collision_height" value="55.0" />
<set name="collision_radius" value="40.0" />
<set name="corpse_time" value="7" />
<set name="level" value="85" />
<set name="race" value="DRAGON" />
<set name="rewardExp" value="1031278" />
<set name="rewardRp" value="0" />
<set name="rewardSp" value="103445" />
<set name="soulshot_count" value="0" />
<set name="spiritshot_count" value="0" />
<set name="type" value="Monster" />
<ai_params>
<set name="noRandomWalk" value="true" />
</ai_params>
<faction name="loa_antharas_clan" range="400"/>
<skills>
<skill id="4408" level="10" /> <!--HP Increase (2x)-->
<skill id="4409" level="1" /> <!--MP Increase (1x)-->
<skill id="4410" level="16" /> <!--Very Strong P. Atk.-->
<skill id="4411" level="15" /> <!--Strong M. Atk.-->
<skill id="4412" level="16" /> <!--Very Strong P. Def.-->
<skill id="4413" level="5" /> <!--Very Weak M. Def.-->
<skill id="4414" level="2" /> <!--Standard Type-->
<skill id="4415" level="11" /> <!--Spears-->
<skill id="4416" level="10" /> <!--Dragons-->
<skill id="5465" level="1" /> <!--Earth Attacks-->
<skill id="6768" level="1" /> <!--Stun Attack-->
</skills>
<rewardlist type="RATED_GROUPED">
<group chance="66.0">
<reward item_id="57" min="45317" max="105714" chance="100.0000" /> <!--Adena-->
</group>
<group chance="0.0293">
<reward item_id="13462" min="1" max="1" chance="8.3929" /> <!--Vesper Stormer-->
<reward item_id="13461" min="1" max="1" chance="8.3929" /> <!--Vesper Fighter-->
<reward item_id="13893" min="1" max="1" chance="41.9647" /> <!--Sealed Holy Spirit's Cloak-->
<reward item_id="14108" min="1" max="1" chance="41.2495" /> <!--Sealed Vesper Gaiters-->
</group>
<group chance="44.3337">
<reward item_id="1879" min="3" max="9" chance="33.9823" /> <!--Cokes-->
<reward item_id="1885" min="2" max="6" chance="25.4868" /> <!--High-Grade Suede-->
<reward item_id="9628" min="1" max="1" chance="9.5950" /> <!--Leonard-->
<reward item_id="9630" min="1" max="1" chance="6.4388" /> <!--Orichalcum-->
<reward item_id="9629" min="1" max="1" chance="5.3190" /> <!--Adamantine-->
<reward item_id="14166" min="1" max="1" chance="5.9100" /> <!--Life Stone - Level 84-->
<reward item_id="14167" min="1" max="1" chance="1.4757" /> <!--Mid-Grade Life Stone - Level 84-->
<reward item_id="14168" min="1" max="1" chance="0.1476" /> <!--High-Grade Life Stone - Level 84-->
<reward item_id="9554" min="1" max="1" chance="0.2447" /> <!--Earth Crystal-->
<reward item_id="9548" min="1" max="1" chance="9.7869" /> <!--Earth Stone-->
<reward item_id="15644" min="1" max="1" chance="0.7297" /> <!--Vesper Thrower Piece-->
<reward item_id="15642" min="1" max="1" chance="0.7205" /> <!--Vesper Caster Piece-->
<reward item_id="9626" min="1" max="1" chance="0.1630" /> <!--Giant's Codex - Discipline-->
</group>
</rewardlist>
<rewardlist type="SWEEP">
<reward item_id="9628" min="1" max="1" chance="84.1937" /> <!--Leonard-->
<reward item_id="2134" min="1" max="1" chance="21.4694" /> <!--Gemstone S-->
<reward item_id="15669" min="1" max="1" chance="72.7776" /> <!--Sealed Vesper Verteidiger Piece-->
<reward item_id="13459" min="1" max="1" chance="0.0150" /> <!--Vesper Buster-->
</rewardlist>
<attributes>
<attack attribute="unholy" value="250" />
<defence attribute="fire" value="220" />
<defence attribute="water" value="220" />
<defence attribute="wind" value="220" />
<defence attribute="earth" value="220" />
<defence attribute="holy" value="170" />
<defence attribute="unholy" value="250" />
</attributes>
</npc>
есть уже, но это ру гуаноEpeisodion?
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками Вход или Регистрация
На счет патча хз.
ну к примеруГде можно глянуть пример на запрет итемов? Мб по нему смогу сделать.
# Данные вещи не рейтуются.
NoRateItemIds = 6660,6662,6661,6659,6656,6658,8191,6657,10170,10314,16025,16026,10296
# Запрет рейта на количество эквипа.
NoRateEquipment = False
# Запрет рейта на количество рецептов
NoRateRecipes = False
Тогда уже взять за пример игроков с кармой...ну к примеру
Код:# Данные вещи не рейтуются. NoRateItemIds = 6660,6662,6661,6659,6656,6658,8191,6657,10170,10314,16025,16026,10296 # Запрет рейта на количество эквипа. NoRateEquipment = False # Запрет рейта на количество рецептов NoRateRecipes = False
# Вещи которые не будут дропаться при смерти
ListOfNonDroppableItems = 57,1147,425,1146,461,10,2368,7,6,2370,2369,3500,3501,3502,4422,4423,4424,2375,6648,6649,6650,6842,6834,6835,6836,6837,6838,6839,6840,5575,7694,6841,8181
ну илиТогда уже взять за пример игроков с кармой...
Код:# Вещи которые не будут дропаться при смерти ListOfNonDroppableItems = 57,1147,425,1146,461,10,2368,7,6,2370,2369,3500,3501,3502,4422,4423,4424,2375,6648,6649,6650,6842,6834,6835,6836,6837,6838,6839,6840,5575,7694,6841,8181
# Рейт дропа вещей.(Количество)
RateDropItems = 1
# Дроп вещей.(Выключено False) (Включено True)
RateDropitemss = False
больше конфигов плеаз в 2к16, это ведь эталон профессионализма разработчикаф!Вообще лучше всего выводить в конфиг вот такую вот вещь
# Настройка позволяющая убрать с дропа все вещи, кроме нижеуказанных (Пример: 57;6673;1073). Для включения всего дропа укажите -1
# Drop only the current items IDs i.e 57;6673;1073 --> set -1 to do server without drop
IgnoreAllDropButThis = -1
И я про тожеАга гений, и ничего, что будет рейт x1
У меня мозга на это не хватит. Вернее знаний.Псих, я тебе что сказал. При подгрузке всего этого говна подключить свой форматтер, в нем дергать все дроплисты из неписей и фильтрами чистить ненужное. Дальше десериализовать обратно в хмл
Вот где-то видел подобное, выдеинуть бы.Вообще лучше всего выводить в конфиг вот такую вот вещь
# Настройка позволяющая убрать с дропа все вещи, кроме нижеуказанных (Пример: 57;6673;1073). Для включения всего дропа укажите -1
# Drop only the current items IDs i.e 57;6673;1073 --> set -1 to do server without drop
IgnoreAllDropButThis = -1
примерно как я делаю если что-то нужно (хз как в лостах)У меня мозга на это не хватит. Вернее знаний.
//добавление объектов для работы с ними
final Map<Integer, L2NpcTemplate> allNpc = NpcData.getInstance().get_npcs();
allNpcs.addAll(allNpc.entrySet().stream().map(Entry::getValue).collect(Collectors.toList()));
...
//сериализация в новый темплейт
Document doc = DocumentHelper.createDocument();
Element element = doc.addElement("list");
allNpcs.stream().forEach(npcTemplate -> {
Element npc = element.addElement("npc");
npc.addAttribute("id", String.valueOf(npcTemplate.getId()));
...
//конкретно по дропу (лыжевская реализация)
if (npcTemplate.getDropLists() != null) {
Element drop_data = npc.addElement("drop_data");
for (Entry<DropListScope, List<IDropItem>> items : npcTemplate.getDropLists().entrySet()) {
if (items.getKey() == DropListScope.DEATH) {
Element death = drop_data.addElement("death");
for (IDropItem dropItem : items.getValue()) {
if (dropItem instanceof GeneralDropItem) {
final GeneralDropItem generalDropItem = (GeneralDropItem) dropItem;
Element item = death.addElement("item");
L2Item findItem = ItemTable.getInstance().getTemplate(generalDropItem.getItemId());
if (findItem != null) {
item.addAttribute("name", findItem.getName());
} else {
item.addAttribute("name", "Empty, Fix Me");
}
item.addAttribute("id", String.valueOf(generalDropItem.getItemId()));
item.addAttribute("chance", String.valueOf(generalDropItem.getChance()));
item.addAttribute("min", String.valueOf(generalDropItem.getMin()));
item.addAttribute("max", String.valueOf(generalDropItem.getMax()));
} else if (dropItem instanceof GroupedGeneralDropItem) {
final GroupedGeneralDropItem generalGroupedDropItem = (GroupedGeneralDropItem) dropItem;
for (GeneralDropItem generalDropItem : generalGroupedDropItem.getItems()) {
Element item = death.addElement("item");
L2Item findItem = ItemTable.getInstance().getTemplate(generalDropItem.getItemId());
if (findItem != null) {
item.addAttribute("name", findItem.getName());
} else {
item.addAttribute("name", "Empty, Fix Me");
}
item.addAttribute("id", String.valueOf(generalDropItem.getItemId()));
item.addAttribute("chance", String.valueOf(generalDropItem.getChance()));
item.addAttribute("min", String.valueOf(generalDropItem.getMin()));
item.addAttribute("max", String.valueOf(generalDropItem.getMax()));
}
}
}
}
if (items.getKey() == DropListScope.CORPSE) {
Element death = drop_data.addElement("corpse");
for (IDropItem dropItem : items.getValue()) {
if (dropItem instanceof GeneralDropItem) {
final GeneralDropItem generalDropItem = (GeneralDropItem) dropItem;
Element item = death.addElement("item");
L2Item findItem = ItemTable.getInstance().getTemplate(generalDropItem.getItemId());
if (findItem != null) {
item.addAttribute("name", findItem.getName());
} else {
item.addAttribute("name", "Empty, Fix Me");
}
item.addAttribute("id", String.valueOf(generalDropItem.getItemId()));
item.addAttribute("chance", String.valueOf(generalDropItem.getChance()));
item.addAttribute("min", String.valueOf(generalDropItem.getMin()));
item.addAttribute("max", String.valueOf(generalDropItem.getMax()));
} else if (dropItem instanceof GroupedGeneralDropItem) {
final GroupedGeneralDropItem generalGroupedDropItem = (GroupedGeneralDropItem) dropItem;
for (GeneralDropItem generalDropItem : generalGroupedDropItem.getItems()) {
Element item = death.addElement("item");
L2Item findItem = ItemTable.getInstance().getTemplate(generalDropItem.getItemId());
if (findItem != null) {
item.addAttribute("name", findItem.getName());
} else {
item.addAttribute("name", "Empty, Fix Me");
}
item.addAttribute("id", String.valueOf(generalDropItem.getItemId()));
item.addAttribute("chance", String.valueOf(generalDropItem.getChance()));
item.addAttribute("min", String.valueOf(generalDropItem.getMin()));
item.addAttribute("max", String.valueOf(generalDropItem.getMax()));
}
}
}
}
if (items.getKey() == DropListScope.LUCK) {
Element death = drop_data.addElement("luck");
for (IDropItem dropItem : items.getValue()) {
if (dropItem instanceof GeneralDropItem) {
final GeneralDropItem generalDropItem = (GeneralDropItem) dropItem;
Element item = death.addElement("item");
L2Item findItem = ItemTable.getInstance().getTemplate(generalDropItem.getItemId());
if (findItem != null) {
item.addAttribute("name", findItem.getName());
} else {
item.addAttribute("name", "Empty, Fix Me");
}
item.addAttribute("id", String.valueOf(generalDropItem.getItemId()));
item.addAttribute("chance", String.valueOf(generalDropItem.getChance()));
item.addAttribute("min", String.valueOf(generalDropItem.getMin()));
item.addAttribute("max", String.valueOf(generalDropItem.getMax()));
} else if (dropItem instanceof GroupedGeneralDropItem) {
final GroupedGeneralDropItem generalGroupedDropItem = (GroupedGeneralDropItem) dropItem;
for (GeneralDropItem generalDropItem : generalGroupedDropItem.getItems()) {
Element item = death.addElement("item");
L2Item findItem = ItemTable.getInstance().getTemplate(generalDropItem.getItemId());
if (findItem != null) {
item.addAttribute("name", findItem.getName());
} else {
item.addAttribute("name", "Empty, Fix Me");
}
item.addAttribute("id", String.valueOf(generalDropItem.getItemId()));
item.addAttribute("chance", String.valueOf(generalDropItem.getChance()));
item.addAttribute("min", String.valueOf(generalDropItem.getMin()));
item.addAttribute("max", String.valueOf(generalDropItem.getMax()));
}
}
}
}
}
}
// и конкретно сдесь ты выставляешь фильтры на подобии -> item.getItemType() == Type.ETC
item.addAttribute("name", "Empty, Fix Me"); сюда что, ид?примерно как я делаю если что-то нужно (хз как в лостах)
Код://добавление объектов для работы с ними final Map<Integer, L2NpcTemplate> allNpc = NpcData.getInstance().get_npcs(); allNpcs.addAll(allNpc.entrySet().stream().map(Entry::getValue).collect(Collectors.toList())); ... //сериализация в новый темплейт Document doc = DocumentHelper.createDocument(); Element element = doc.addElement("list"); allNpcs.stream().forEach(npcTemplate -> { Element npc = element.addElement("npc"); npc.addAttribute("id", String.valueOf(npcTemplate.getId())); ... //конкретно по дропу (лыжевская реализация) if (npcTemplate.getDropLists() != null) { Element drop_data = npc.addElement("drop_data"); for (Entry<DropListScope, List<IDropItem>> items : npcTemplate.getDropLists().entrySet()) { if (items.getKey() == DropListScope.DEATH) { Element death = drop_data.addElement("death"); for (IDropItem dropItem : items.getValue()) { if (dropItem instanceof GeneralDropItem) { final GeneralDropItem generalDropItem = (GeneralDropItem) dropItem; Element item = death.addElement("item"); L2Item findItem = ItemTable.getInstance().getTemplate(generalDropItem.getItemId()); if (findItem != null) { item.addAttribute("name", findItem.getName()); } else { item.addAttribute("name", "Empty, Fix Me"); } item.addAttribute("id", String.valueOf(generalDropItem.getItemId())); item.addAttribute("chance", String.valueOf(generalDropItem.getChance())); item.addAttribute("min", String.valueOf(generalDropItem.getMin())); item.addAttribute("max", String.valueOf(generalDropItem.getMax())); } else if (dropItem instanceof GroupedGeneralDropItem) { final GroupedGeneralDropItem generalGroupedDropItem = (GroupedGeneralDropItem) dropItem; for (GeneralDropItem generalDropItem : generalGroupedDropItem.getItems()) { Element item = death.addElement("item"); L2Item findItem = ItemTable.getInstance().getTemplate(generalDropItem.getItemId()); if (findItem != null) { item.addAttribute("name", findItem.getName()); } else { item.addAttribute("name", "Empty, Fix Me"); } item.addAttribute("id", String.valueOf(generalDropItem.getItemId())); item.addAttribute("chance", String.valueOf(generalDropItem.getChance())); item.addAttribute("min", String.valueOf(generalDropItem.getMin())); item.addAttribute("max", String.valueOf(generalDropItem.getMax())); } } } } if (items.getKey() == DropListScope.CORPSE) { Element death = drop_data.addElement("corpse"); for (IDropItem dropItem : items.getValue()) { if (dropItem instanceof GeneralDropItem) { final GeneralDropItem generalDropItem = (GeneralDropItem) dropItem; Element item = death.addElement("item"); L2Item findItem = ItemTable.getInstance().getTemplate(generalDropItem.getItemId()); if (findItem != null) { item.addAttribute("name", findItem.getName()); } else { item.addAttribute("name", "Empty, Fix Me"); } item.addAttribute("id", String.valueOf(generalDropItem.getItemId())); item.addAttribute("chance", String.valueOf(generalDropItem.getChance())); item.addAttribute("min", String.valueOf(generalDropItem.getMin())); item.addAttribute("max", String.valueOf(generalDropItem.getMax())); } else if (dropItem instanceof GroupedGeneralDropItem) { final GroupedGeneralDropItem generalGroupedDropItem = (GroupedGeneralDropItem) dropItem; for (GeneralDropItem generalDropItem : generalGroupedDropItem.getItems()) { Element item = death.addElement("item"); L2Item findItem = ItemTable.getInstance().getTemplate(generalDropItem.getItemId()); if (findItem != null) { item.addAttribute("name", findItem.getName()); } else { item.addAttribute("name", "Empty, Fix Me"); } item.addAttribute("id", String.valueOf(generalDropItem.getItemId())); item.addAttribute("chance", String.valueOf(generalDropItem.getChance())); item.addAttribute("min", String.valueOf(generalDropItem.getMin())); item.addAttribute("max", String.valueOf(generalDropItem.getMax())); } } } } if (items.getKey() == DropListScope.LUCK) { Element death = drop_data.addElement("luck"); for (IDropItem dropItem : items.getValue()) { if (dropItem instanceof GeneralDropItem) { final GeneralDropItem generalDropItem = (GeneralDropItem) dropItem; Element item = death.addElement("item"); L2Item findItem = ItemTable.getInstance().getTemplate(generalDropItem.getItemId()); if (findItem != null) { item.addAttribute("name", findItem.getName()); } else { item.addAttribute("name", "Empty, Fix Me"); } item.addAttribute("id", String.valueOf(generalDropItem.getItemId())); item.addAttribute("chance", String.valueOf(generalDropItem.getChance())); item.addAttribute("min", String.valueOf(generalDropItem.getMin())); item.addAttribute("max", String.valueOf(generalDropItem.getMax())); } else if (dropItem instanceof GroupedGeneralDropItem) { final GroupedGeneralDropItem generalGroupedDropItem = (GroupedGeneralDropItem) dropItem; for (GeneralDropItem generalDropItem : generalGroupedDropItem.getItems()) { Element item = death.addElement("item"); L2Item findItem = ItemTable.getInstance().getTemplate(generalDropItem.getItemId()); if (findItem != null) { item.addAttribute("name", findItem.getName()); } else { item.addAttribute("name", "Empty, Fix Me"); } item.addAttribute("id", String.valueOf(generalDropItem.getItemId())); item.addAttribute("chance", String.valueOf(generalDropItem.getChance())); item.addAttribute("min", String.valueOf(generalDropItem.getMin())); item.addAttribute("max", String.valueOf(generalDropItem.getMax())); } } } } } } // и конкретно сдесь ты выставляешь фильтры на подобии -> item.getItemType() == Type.ETC
Ну рейты равные нулю, это как-то странно...хз кароч, всем итемам с типом рецептов\кусков\материалов сделал шанс дропа 0, нужно тестить, не знаю как это может повлиять на дроп, так как в группе теперь получается <100% общего шанса, но лезть глубже не хочу
/summon AlexZrВот где-то видел подобное, выдеинуть бы.
Не видел у него подобного. У него только добавление дропа для НПЦ./summon @AlexZr
если не жлоб поделится))) помоему у него это есть...
# Айди вещей которые будут удалены в моба
# (пример 57,4356,4355.....)
ItemId = 0
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?