GUSTAVO 11 Опубликовано 17 октября, 2017 (изменено) Я думаю многие видели конфиг баланса дамага оружия на броню. (DaggerVsHeavy = 1.00 DaggerVsLight = 1.00 DaggerVsRobe = 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;}}} Нужен конкретный код. Хелп!) Изменено 17 октября, 2017 пользователем akcent Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Edgar 356 Опубликовано 17 октября, 2017 Посмотреть метод WeaponType как у тебя в нем прописано каждое оружие 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GUSTAVO 11 Опубликовано 17 октября, 2017 Посмотреть метод 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> Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Edgar 356 Опубликовано 17 октября, 2017 Все что есть: 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> надо смотреть перебрать каждый тип посмотреть как реализован, возможно с названием напутали в сурсе, если нету то дописать Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GUSTAVO 11 Опубликовано 17 октября, 2017 (изменено) надо смотреть перебрать каждый тип посмотреть как реализован, возможно с названием напутали в сурсе, если нету то дописать Не не, тут сделано все так что просто проверяется меч двуручный или нет (bodypart=lrhand), а тип остается SWORD . Реализовано так. Вед работает и двурук распознается в игре и скилы пашет с ним. Просто тут проверка стоит на этот bodypart=lrhand , так вот я не могу найти где она написана под скилы например и как сделать мне под баланс соответсвенно. И если дописать как ты сказал, что каждому двурук придется в xml item дописывать тип BIGSWORD И BIGBLUNT , ведь они сейчас работают на SWORD и BLUNT , ну и скилы соответственно для двурук тоже переписывать в датапаке) Изменено 17 октября, 2017 пользователем akcent Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Edgar 356 Опубликовано 17 октября, 2017 (изменено) "=" это знак присваивания. из того что ты выше написал я исхожу что проще сделать будет так if (TraitType.SWORD == lrhend)) { твой код } и естественно добавить проверки которые есть на остальном оружии Изменено 17 октября, 2017 пользователем Solution 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GUSTAVO 11 Опубликовано 17 октября, 2017 (изменено) "=" это знак присваивания. из того что ты выше написал я исхожу что проще сделать будет так if (bodypart(как мне показалось из вышеупомянутого тобой это меч) ==(если он) lrhand(двуручный)) { твой код } "=" это знак присваивания. Нет я имел ввиду он так обозначен в item в датапаке. Именно так я написал в первом сообщении, что хочу сделать проверку что если меч двурук , как ты написал ( if (bodypart(как мне показалось из вышеупомянутого тобой это меч) ==(если он) lrhand(двуручный)) { твой код } ) , но я хз как, вот и спрашиваю конкретно что написать) как происходит проверка для скила в ядре) Тут скорее нужна помощь пользователей команды L2JSERVER ) кто знает где эта проверка лежит? или как мне сделать правильно? Изменено 17 октября, 2017 пользователем akcent Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Edgar 356 Опубликовано 17 октября, 2017 "=" это знак присваивания. Нет я имел ввиду он так обозначен в item в датапаке. Именно так я написал в первом сообщении, что хочу сделать проверку что если меч двурук , как ты написал ( if (bodypart(как мне показалось из вышеупомянутого тобой это меч) ==(если он) lrhand(двуручный)) { твой код } ) , но я хз как, вот и спрашиваю конкретно что написать) как происходит проверка для скила в ядре) Тут скорее нужна помощь пользователей команды L2JSERVER ) кто знает где эта проверка лежит? или как мне сделать правильно? поправил то сообщение попробуй сделать так Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GUSTAVO 11 Опубликовано 17 октября, 2017 поправил то сообщение попробуй сделать так не он так не понимает что такое lrhand Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GUSTAVO 11 Опубликовано 17 октября, 2017 не он так не понимает что такое lrhand Нашел вот такое: L2Item.SLOT_LR_HAND А с чем сравнивать хз. Подскажите) TraitType.BLUNT == L2Item.SLOT_LR_HAND не подходит) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
CalypsoToolz 451 Опубликовано 17 октября, 2017 Нашел вот такое: L2Item.SLOT_LR_HAND А с чем сравнивать хз. Подскажите) TraitType.BLUNT == L2Item.SLOT_LR_HAND не подходит) weapon.getBodyPart() == L2Item.SLOT_LR_HAND или weapon.getItem().getBodyPart() == L2Item.SLOT_LR_HAND 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GUSTAVO 11 Опубликовано 17 октября, 2017 weapon.getBodyPart() == L2Item.SLOT_LR_HAND или weapon.getItem().getBodyPart() == L2Item.SLOT_LR_HAND Вот красавчик! weapon.getBodyPart() == L2Item.SLOT_LR_HAND помогло и работает) Спасибо! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты