-
Публикаций
228 -
Зарегистрирован
-
Посещение
-
Победитель дней
1 -
Отзывы
0%
Сообщения, опубликованные GUSTAVO
-
-
Добрый день! Кто может код который при запуске сервера делает запрос на хостинг, конкретно в текстовый файл на хостинге в котором в первой строке написано допустим test, ну и если в условии запроса надпись совпадает с надписью в текстовом файле на хостинге, то продолжать загрузку сервера, а если не совпадает, то выключать запуск сервера?? Крч кто эти слова может помочь на java язык перевести?) А ну и конечно же нужно, чтоб соединение было зашифровано) делаться будет под l2jserver, но думаю значения не имеет)
-
напиши вк, разберемсяНарод, помогите! Надо сделать так, что б в разных батл зонах давались разные итемы
-
отпиши в лс за пивасик помогу
Ответ был прост. Нужно указать ip 0.0.0.0 в сборке. Как то странно, даже если на ip статический порты открыть , толку 0, а если открыть порты на 0.0.0.0 и указать в сборке этот ip, все запускается и работает.
-
ищу человека, который поможет(Team viewer), сам не могу найти проблему(кодировка стоит везде UTF-8 без BOM). За некоторую оплату, в личку стучите.
Скачайте лучше IntelliJ IDEA, у меня с эклипсом такая же ерунда была, а в ИДЕА нормально все встает.
-
Ох и фетиш вы предлагаете =) но все же лучше чем не чего. спасибо.
Лучше data от zGosu возьми)
- 2
-
-
и да забыл (2. подучите грамматику ошибок очень много - без обид) сори я не в обиду но увы какой есть такой есть с русским у меня проблема грамматика не очень хотя книги очень много перечитал уж повер мне но вот *мат* с грамматикой ппц просто по этому очень мало пишу тут или где то еще стыдно мне за это ну чее я могу делать так что сори я надеюст вы меня поняли
Лучше L2jserver, команда работает много лет и до сих пор продолжает работать. Да и обновления выпускают ) ну это мое мнение, кому как)
-
Защита изначально на конфиг не реагирует, потому что она банально не вынесена в исходе. Дляавтора само проще будет найти скомпиленный dll на 127.0.0.1
Разве? Вроде отключается, либо я путаю с EmuRT
-
пример:
Файл Config.java
[spoiler=Файл Config.java]
String[] propertySplit = enchantSettings.getProperty("NormalWeaponEnchantLevel", "").split(";"); for (String readData : propertySplit) { String[] writeData = readData.split(","); if (writeData.length != 2) { continue; } try { NORMAL_WEAPON_ENCHANT_LEVEL.put(TypeFormat.parseInt(writeData[0]), TypeFormat.parseInt(writeData[1])); } catch (NumberFormatException nfe) { } } propertySplit = enchantSettings.getProperty("NormalArmorEnchantLevel", "").split(";"); for (String readData : propertySplit) { String[] writeData = readData.split(","); if (writeData.length != 2) { continue; } try { NORMAL_ARMOR_ENCHANT_LEVEL.put(TypeFormat.parseInt(writeData[0]), TypeFormat.parseInt(writeData[1])); } catch (NumberFormatException nfe) { } } propertySplit = enchantSettings.getProperty("NormalJewelryEnchantLevel", "").split(";"); for (String readData : propertySplit) { String[] writeData = readData.split(","); if (writeData.length != 2) { continue; } try { NORMAL_JEWELRY_ENCHANT_LEVEL.put(TypeFormat.parseInt(writeData[0]), TypeFormat.parseInt(writeData[1])); } catch (NumberFormatException nfe) { } }
Файл RequestEnchantItem.java
[spoiler=Файл RequestEnchantItem.java]
if (item.getItem().getType2() == L2Item.TYPE2_WEAPON) { for (int normalweaponscroll : NORMAL_WEAPON_SCROLLS) { if (scroll.getItemId() == normalweaponscroll) { if ((item.getEnchantLevel() + 1) > Config.NORMAL_WEAPON_ENCHANT_LEVEL.size()) { chance = Config.NORMAL_WEAPON_ENCHANT_LEVEL.get(Config.NORMAL_WEAPON_ENCHANT_LEVEL.size()); } else { chance = Config.NORMAL_WEAPON_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1); } maxEnchantLevel = Config.ENCHANT_MAX_WEAPON; // конфиг на макс заточку оружия } } } else if (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR) { for (int normalarmorscroll : NORMAL_ARMOR_SCROLLS) { if (scroll.getItemId() == normalarmorscroll) { if ((item.getEnchantLevel() + 1) > Config.NORMAL_ARMOR_ENCHANT_LEVEL.size()) { chance = Config.NORMAL_ARMOR_ENCHANT_LEVEL.get(Config.NORMAL_ARMOR_ENCHANT_LEVEL.size()); } else { chance = Config.NORMAL_ARMOR_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1); } maxEnchantLevel = Config.ENCHANT_MAX_ARMOR; // конфиг на макс заточку брони } } } else if (item.getItem().getType2() == L2Item.TYPE2_ACCESSORY) { for (int normaljewelscroll : NORMAL_ARMOR_SCROLLS) { if (scroll.getItemId() == normaljewelscroll) { if ((item.getEnchantLevel() + 1) > Config.NORMAL_JEWELRY_ENCHANT_LEVEL.size()) { chance = Config.NORMAL_JEWELRY_ENCHANT_LEVEL.get(Config.NORMAL_JEWELRY_ENCHANT_LEVEL.size()); } else { chance = Config.NORMAL_JEWELRY_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1); } maxEnchantLevel = Config.ENCHANT_MAX_JEWELRY; // конфиг на макс заточку бижутерии } } }
Файл enchant.properties
[spoiler=Файл enchant.properties]
# Weapon NormalWeaponEnchantLevel = 1,100;2,100;3,100;4,70;5,40;6,70;7,40;8,70;9,70;10,70;11,70;12,60;13,70;14,60;15,65;16,30;17,65;18,30;19,350;20,40;21,30;22,35;23,29;24,25;25,21;26,17;27,14;28,10;29,6;30,3; # Armor NormalArmorEnchantLevel = 1,100;2,100;3,100;4,63;5,60;6,65;7,63;8,60;9,60;10,55;11,45;12,40;13,35;14,35;15,30;16,40;17,41;18,41;19,40;20,38;21,49;22,47;23,67;24,59;25,41;26,41;27,41;28,41;29,31;30,21; # Jewelry NormalJewelryEnchantLevel = 1,100;2,100;3,100;4,63;5,60;6,65;7,63;8,60;9,60;10,55;11,45;12,40;13,35;14,35;15,30;16,40;17,41;18,41;19,40;20,38;21,49;22,47;23,67;24,59;25,41;26,41;27,41;28,41;29,31;30,21;
P.s. Если не помог то сорян.
Спасибо!
-
ограничение на заточку то я сделал, с шансом не могу разобраться.Я не уверен, но думаю стоит смотреть парсер xml где он там считывает и куда пишет данные... а уже оттуда плясать...
парсеры лежат здесь "com\l2jserver\gameserver\data\xml\impl"
-
запустил сборку grind-team HF, гоин и гейм работает без ошибок, а вот клиент не подключается к серверу вобще никак, менял 5 разных патчей, л2ини по 3 варианта ип, порты открыты, ип в конфигах написано поидее правильно, что делать?)
Или отключи защиту в конфиге FirstGuard.ini или rGuard.ini , проверь вобщем как то так называется)
-
Ребят, так и не разобрался с шансами в конфиг. Ткните носом, уже пару дней сижу туплю)
Пусть переменная будет
Config.CONFIG_ENCHANT_CHANCE;
Куда в код ее впихнуть чтоб шанс настраивать через конфиг?
В идеале отдельно сделать бы на шмот бижу и пухи, тогда возьмем
Config.CONFIG_ENCHANT_CHANCE_WEAPON;
Config.CONFIG_ENCHANT_CHANCE_ARMOR;
Config.CONFIG_ENCHANT_CHANCE_JEWELL;
В ядре нашел вот что:
package com.l2jserver.gameserver.model.items.enchant;
import java.util.logging.Logger;
import com.l2jserver.Config;
import com.l2jserver.gameserver.datatables.ItemTable;
import com.l2jserver.gameserver.model.StatsSet;
import com.l2jserver.gameserver.model.items.L2Item;
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
import com.l2jserver.gameserver.model.items.type.CrystalType;
import com.l2jserver.gameserver.model.items.type.EtcItemType;
import com.l2jserver.gameserver.model.items.type.ItemType;
import com.l2jserver.gameserver.util.Util;
/**
* @@Authority UnAfraid
*/
public abstract class AbstractEnchantItem
{
protected static final Logger _log = Logger.getLogger(AbstractEnchantItem.class.getName());
private static final ItemType[] ENCHANT_TYPES = new ItemType[]
{
EtcItemType.ANCIENT_CRYSTAL_ENCHANT_AM,
EtcItemType.ANCIENT_CRYSTAL_ENCHANT_WP,
EtcItemType.BLESS_SCRL_ENCHANT_AM,
EtcItemType.BLESS_SCRL_ENCHANT_WP,
EtcItemType.SCRL_ENCHANT_AM,
EtcItemType.SCRL_ENCHANT_WP,
EtcItemType.SCRL_INC_ENCHANT_PROP_AM,
EtcItemType.SCRL_INC_ENCHANT_PROP_WP,
};
private final int _id;
private final CrystalType _grade;
private final int _maxEnchantLevel;
private final double _bonusRate;
public AbstractEnchantItem(StatsSet set)
{
_id = set.getInt("id");
if (getItem() == null)
{
throw new NullPointerException();
}
else if (!Util.contains(ENCHANT_TYPES, getItem().getItemType()))
{
throw new IllegalAccessError();
}
_grade = set.getEnum("targetGrade", CrystalType.class, CrystalType.NONE);
_maxEnchantLevel = set.getInt("maxEnchant", Config.MAX_ENCHANT_LEVEL);
_bonusRate = set.getDouble("bonusRate", 0);
}
/**
* @return id of current item
*/
public final int getId()
{
return _id;
}
/**
* @return bonus chance that would be added
*/
public final double getBonusRate()
{
return _bonusRate;
}
/**
* @return {@link L2Item} current item/scroll
*/
public final L2Item getItem()
{
return ItemTable.getInstance().getTemplate(_id);
}
/**
* @return grade of the item/scroll.
*/
public final CrystalType getGrade()
{
return _grade;
}
/**
* @return {@code true} if scroll is for weapon, {@code false} for armor
*/
public abstract boolean isWeapon();
/**
* @return the maximum enchant level that this scroll/item can be used with
*/
public int getMaxEnchantLevel()
{
return _maxEnchantLevel;
}
/**
* @param itemToEnchant the item to be enchanted
* @param supportItem
* @return {@code true} if this support item can be used with the item to be enchanted, {@code false} otherwise
*/
public boolean isValid(L2ItemInstance itemToEnchant, EnchantSupportItem supportItem)
{
if (itemToEnchant == null)
{
return false;
}
else if (itemToEnchant.isEnchantable() == 0)
{
return false;
}
else if (!isValidItemType(itemToEnchant.getItem().getType2()))
{
return false;
}
else if ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))
{
return false;
}
else if (_grade != itemToEnchant.getItem().getItemGradeSPlus())
{
return false;
}
return true;
}
/**
* @param type2
* @return {@code true} if current type2 is valid to be enchanted, {@code false} otherwise
*/
private final boolean isValidItemType(int type2)
{
if (type2 == L2Item.TYPE2_WEAPON)
{
return isWeapon();
}
else if ((type2 == L2Item.TYPE2_SHIELD_ARMOR) || (type2 == L2Item.TYPE2_ACCESSORY))
{
return !isWeapon();
}
return false;
}
}package com.l2jserver.gameserver.model.items.enchant;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.l2jserver.gameserver.model.holders.RangeChanceHolder;
/**
* @@Authority UnAfraid
*/
public final class EnchantItemGroup
{
private static final Logger _log = Logger.getLogger(EnchantItemGroup.class.getName());
private final List _chances = new ArrayList<>();
private final String _name;
public EnchantItemGroup(String name)
{
_name = name;
}
/**
* @return name of current enchant item group.
*/
public String getName()
{
return _name;
}
/**
* @param holder
*/
public void addChance(RangeChanceHolder holder)
{
_chances.add(holder);
}
/**
* @param index
* @return chance for success rate for current enchant item group.
*/
public double getChance(int index)
{
if (!_chances.isEmpty())
{
for (RangeChanceHolder holder : _chances)
{
if ((holder.getMin() <= index) && (holder.getMax() >= index))
{
return holder.getChance();
}
}
_log.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't match proper chance for item group: " + _name, new IllegalStateException());
return _chances.get(_chances.size() - 1).getChance();
}
_log.log(Level.WARNING, getClass().getSimpleName() + ": item group: " + _name + " doesn't have any chances!");
return -1;
}
}package com.l2jserver.gameserver.model.items.enchant;
import com.l2jserver.gameserver.model.items.L2Item;
/**
* @@Authority UnAfraid
*/
public final class EnchantRateItem
{
private final String _name;
private int _itemId;
private int _slot;
private Boolean _isMagicWeapon = null;
public EnchantRateItem(String name)
{
_name = name;
}
/**
* @return name of enchant group.
*/
public String getName()
{
return _name;
}
/**
* Adds item id verification.
* @param id
*/
public void setItemId(int id)
{
_itemId = id;
}
/**
* Adds body slot verification.
* @param slot
*/
public void addSlot(int slot)
{
_slot |= slot;
}
/**
* Adds magic weapon verification.
* @param magicWeapon
*/
public void setMagicWeapon(boolean magicWeapon)
{
_isMagicWeapon = magicWeapon;
}
/**
* @param item
* @return {@code true} if item can be used with this rate group, {@code false} otherwise.
*/
public boolean validate(L2Item item)
{
if ((_itemId != 0) && (_itemId != item.getId()))
{
return false;
}
else if ((_slot != 0) && ((item.getBodyPart() & _slot) == 0))
{
return false;
}
else if ((_isMagicWeapon != null) && (item.isMagicWeapon() != _isMagicWeapon))
{
return false;
}
return true;
}
}package com.l2jserver.gameserver.model.items.enchant;
import java.util.HashSet;
import java.util.Set;
import java.util.logging.Level;
import com.l2jserver.Config;
import com.l2jserver.gameserver.data.xml.impl.EnchantItemGroupsData;
import com.l2jserver.gameserver.model.StatsSet;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
import com.l2jserver.gameserver.model.items.type.EtcItemType;
import com.l2jserver.gameserver.model.items.type.ItemType;
import com.l2jserver.gameserver.network.Debug;
import com.l2jserver.gameserver.util.Util;
import com.l2jserver.util.Rnd;
/**
* @@Authority UnAfraid
*/
public final class EnchantScroll extends AbstractEnchantItem
{
private final boolean _isWeapon;
private final boolean _isBlessed;
private final boolean _isSafe;
private final int _scrollGroupId;
private Set _items;
public EnchantScroll(StatsSet set)
{
super(set);
_scrollGroupId = set.getInt("scrollGroupId", 0);
final ItemType type = getItem().getItemType();
_isWeapon = (type == EtcItemType.ANCIENT_CRYSTAL_ENCHANT_WP) || (type == EtcItemType.BLESS_SCRL_ENCHANT_WP) || (type == EtcItemType.SCRL_ENCHANT_WP);
_isBlessed = (type == EtcItemType.BLESS_SCRL_ENCHANT_AM) || (type == EtcItemType.BLESS_SCRL_ENCHANT_WP);
_isSafe = (type == EtcItemType.ANCIENT_CRYSTAL_ENCHANT_AM) || (type == EtcItemType.ANCIENT_CRYSTAL_ENCHANT_WP);
}
@@override
public boolean isWeapon()
{
return _isWeapon;
}
/**
* @return {@code true} for blessed scrolls (enchanted item will remain on failure), {@code false} otherwise
*/
public boolean isBlessed()
{
return _isBlessed;
}
/**
* @return {@code true} for safe-enchant scrolls (enchant level will remain on failure), {@code false} otherwise
*/
public boolean isSafe()
{
return _isSafe;
}
/**
* @return id of scroll group that should be used
*/
public int getScrollGroupId()
{
return _scrollGroupId;
}
/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
*/
public void addItem(int itemId)
{
if (_items == null)
{
_items = new HashSet<>();
}
_items.add(itemId);
}
/**
* @param itemToEnchant the item to be enchanted
* @param supportItem the support item used when enchanting (can be null)
* @return {@code true} if this scroll can be used with the specified support item and the item to be enchanted, {@code false} otherwise
*/
@@override
public boolean isValid(L2ItemInstance itemToEnchant, EnchantSupportItem supportItem)
{
if ((_items != null) && !_items.contains(itemToEnchant.getId()))
{
return false;
}
else if ((supportItem != null))
{
if (isBlessed())
{
return false;
}
else if (!supportItem.isValid(itemToEnchant, supportItem))
{
return false;
}
else if (supportItem.isWeapon() != isWeapon())
{
return false;
}
}
return super.isValid(itemToEnchant, supportItem);
}
/**
* @param player
* @param enchantItem
* @return the chance of current scroll's group.
*/
public double getChance(L2PcInstance player, L2ItemInstance enchantItem)
{
if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
{
_log.log(Level.WARNING, getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getItem(), _scrollGroupId);
if (group == null)
{
_log.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
return -1;
}
return group.getChance(enchantItem.getEnchantLevel());
}
/**
* @param player
* @param enchantItem
* @param supportItem
* @return the total chance for success rate of this scroll
*/
public EnchantResultType calculateSuccess(L2PcInstance player, L2ItemInstance enchantItem, EnchantSupportItem supportItem)
{
if (!isValid(enchantItem, supportItem))
{
return EnchantResultType.ERROR;
}
final double chance = getChance(player, enchantItem);
if (chance == -1)
{
return EnchantResultType.ERROR;
}
final double bonusRate = getBonusRate();
final double supportBonusRate = (supportItem != null) ? supportItem.getBonusRate() : 0;
final double finalChance = Math.min(chance + bonusRate + supportBonusRate, 100);
final double random = 100 * Rnd.nextDouble();
final boolean success = (random < finalChance);
if (player.isDebug())
{
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getItem(), _scrollGroupId);
final StatsSet set = new StatsSet();
if (isBlessed())
{
set.set("isBlessed", isBlessed());
}
if (isSafe())
{
set.set("isSafe", isSafe());
}
set.set("chance", Util.formatDouble(chance, "#.##"));
if (bonusRate > 0)
{
set.set("bonusRate", Util.formatDouble(bonusRate, "#.##"));
}
if (supportBonusRate > 0)
{
set.set("supportBonusRate", Util.formatDouble(supportBonusRate, "#.##"));
}
set.set("finalChance", Util.formatDouble(finalChance, "#.##"));
set.set("random", Util.formatDouble(random, "#.##"));
set.set("success", success);
set.set("item group", group.getName());
set.set("scroll group", _scrollGroupId);
Debug.sendItemDebug(player, enchantItem, set);
}
return success ? EnchantResultType.SUCCESS : EnchantResultType.FAILURE;
}
}package com.l2jserver.gameserver.model.items.enchant;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.l2jserver.gameserver.model.items.L2Item;
/**
* @@Authority UnAfraid
*/
public final class EnchantScrollGroup
{
private final int _id;
private List _rateGroups;
public EnchantScrollGroup(int id)
{
_id = id;
}
/**
* @return id of current enchant scroll group.
*/
public int getId()
{
return _id;
}
/**
* Adds new rate group.
* @param group
*/
public void addRateGroup(EnchantRateItem group)
{
if (_rateGroups == null)
{
_rateGroups = new ArrayList<>();
}
_rateGroups.add(group);
}
/**
* @return {@code List} of all enchant rate items, Empty list if none.
*/
public List getRateGroups()
{
return _rateGroups != null ? _rateGroups : Collections. emptyList();
}
/**
* @param item
* @return {@link EnchantRateItem}, {@code NULL} in case non of rate items can be used with.
*/
public EnchantRateItem getRateGroup(L2Item item)
{
for (EnchantRateItem group : getRateGroups())
{
if (group.validate(item))
{
return group;
}
}
return null;
}
} -
weapon.getBodyPart() == L2Item.SLOT_LR_HAND
или
weapon.getItem().getBodyPart() == L2Item.SLOT_LR_HAND
Вот красавчик! weapon.getBodyPart() == L2Item.SLOT_LR_HAND помогло и работает) Спасибо!
-
не он так не понимает что такое lrhand
Нашел вот такое: L2Item.SLOT_LR_HAND
А с чем сравнивать хз. Подскажите)
TraitType.BLUNT == L2Item.SLOT_LR_HAND не подходит)
-
поправил то сообщение попробуй сделать так
не он так не понимает что такое lrhand
-
"=" это знак присваивания.
из того что ты выше написал я исхожу что проще сделать будет так if (bodypart(как мне показалось из вышеупомянутого тобой это меч) ==(если он) lrhand(двуручный)) { твой код }
"=" это знак присваивания. Нет я имел ввиду он так обозначен в item в датапаке.
Именно так я написал в первом сообщении, что хочу сделать проверку что если меч двурук , как ты написал ( if (bodypart(как мне показалось из вышеупомянутого тобой это меч) ==(если он) lrhand(двуручный)) { твой код } ) , но я хз как, вот и спрашиваю конкретно что написать) как происходит проверка для скила в ядре)
Тут скорее нужна помощь пользователей команды L2JSERVER ) кто знает где эта проверка лежит? или как мне сделать правильно?
-
надо смотреть перебрать каждый тип посмотреть как реализован, возможно с названием напутали в сурсе, если нету то дописать
Не не, тут сделано все так что просто проверяется меч двуручный или нет (bodypart=lrhand), а тип остается SWORD . Реализовано так. Вед работает и двурук распознается в игре и скилы пашет с ним. Просто тут проверка стоит на этот bodypart=lrhand , так вот я не могу найти где она написана под скилы например и как сделать мне под баланс соответсвенно.
И если дописать как ты сказал, что каждому двурук придется в xml item дописывать тип BIGSWORD И BIGBLUNT , ведь они сейчас работают на SWORD и BLUNT , ну и скилы соответственно для двурук тоже переписывать в датапаке)
-
Посмотреть метод WeaponType как у тебя в нем прописано каждое оружие
Все что есть:
SWORD(TraitType.SWORD),
BLUNT(TraitType.BLUNT),
DAGGER(TraitType.DAGGER),
BOW(TraitType.BOW),
POLE(TraitType.POLE),
NONE(TraitType.NONE),
DUAL(TraitType.DUAL),
ETC(TraitType.ETC),
FIST(TraitType.FIST),
DUALFIST(TraitType.DUALFIST),
FISHINGROD(TraitType.NONE),
RAPIER(TraitType.RAPIER),
ANCIENTSWORD(TraitType.ANCIENTSWORD),
CROSSBOW(TraitType.CROSSBOW),
FLAG(TraitType.NONE),
OWNTHING(TraitType.NONE),
DUALDAGGER(TraitType.DUALDAGGER);
И да кстати, смотрел с data/stat/items двуруки все обозначены простым SWORD ну и указано что он lrhand
<set name="weapon_type" val="SWORD" />
<set name="bodypart" val="lrhand" />
ну и как говорил так же и проверка в скилах идет на двурук
<cond msgId="113" addName="1"><and><using kind="SWORD,BLUNT" /><using slot="lrhand" /></and></cond> -
Я думаю многие видели конфиг баланса дамага оружия на броню.
(DaggerVsHeavy = 1.00
DaggerVsLight = 1.00DaggerVsRobe = 1.00) и тд..Так вот есть проблема. Я его хочу перетащить в L2JServer который с репозитория команды.
Но при добавлении ругается на :
if ((attacker.isPlayer() && (target instanceof L2PcInstance) && (weapon != null) && (weapon.getItemType() == WeaponType.
BIGSWORD) && (skill != null)))
{
L2Armor armor = ((L2PcInstance) target).getActiveChestArmorItem();
if (armor != null)
{
if (((L2PcInstance) target).isWearingHeavyArmor())
{
damage *= Config.BIGSWORD_VS_HEAVY;
}
if (((L2PcInstance) target).isWearingLightArmor())
{
damage *= Config.BIGSWORD_VS_LIGHT;
}
if (((L2PcInstance) target).isWearingMagicArmor())
{
damage *= Config.BIGSWORD_VS_ROBE;
}
}
}Посмотрел что да как и сделал выводы что в сборке двурук или двуручная дубина проверяются так:
<cond msgId="113" addName="1"><and><using kind="SWORD,BLUNT" /><using slot="lrhand" /></and></cond>Это взято из скила.Собственно вопрос: Как в код добавить проверку на то что одет двурук?Например:if ((attacker.isPlayer() && (target instanceof L2PcInstance) && (weapon != null) && (weapon.getItemType() == WeaponType.BIGSWORD) && (skill != null) && (пушка одета в виде lrhand)))
{
L2Armor armor = ((L2PcInstance) target).getActiveChestArmorItem();
if (armor != null)
{
if (((L2PcInstance) target).isWearingHeavyArmor())
{
damage *= Config.BIGSWORD_VS_HEAVY;
}
if (((L2PcInstance) target).isWearingLightArmor())
{
damage *= Config.BIGSWORD_VS_LIGHT;
}
if (((L2PcInstance) target).isWearingMagicArmor())
{
damage *= Config.BIGSWORD_VS_ROBE;
}
}
}Нужен конкретный код.Хелп!) -
Если нужно, то могу дать удобную реализацию настройки енчанта в xml (можно настроить шанс каждого уровня заточки для каждой точки)
-
Всем привет! Подскажите как вывести по отдельности шанс точки на шмот, пухи и бижу в конфиг. В EnchantData.xml не удобно. Хочу чтоб в конфиге прописал как надо и все)
Прошу ответы по теме. И не нужно говорить что разницы нет, там и так нормально и тд.. Мне нужно так, а как сделать хз, вот и спрашиваю людей поумнее в этой сфере) За адекватный ответ с меня +)
-
Можно попробывать в конфиг прописать ип и проверку значения с сервером проверки (на сервере файл проверки ip сделать) Если не совпадает, отключать загрузку)
-
Хекс, декомпил, переадрисация. Как минимум 3 уже есть.
Как лучше делать привязку?
-
расскажи)это самый убогий и костыльный способ. Могу рассказать обход такой привязки в два счета
Привязка
в Ядро сервера
Опубликовано
Спасибо!!