↑ ↓

заточка шмоток водой

Тема в разделе "Помощь", создана пользователем nokiafan1111, 11 июл 2018.

  1. TopicStarter Overlay
    Offline

    nokiafan1111 Ефрейтор

    331
    21
    51
    Кредиты:
    $329,63
    Репутация:
    2
    Всем привет, столкнулся с проблемой заточки шмоток/пушек водой. (сборка 4.9)
    Немного подумав, на основе простой заточки сделал вот это
    Код:
    private int getArmorAuthorizeMod(int autorizeLvl, Stat2 applyStat) {
    		ArmorType armorType = item.getItemTemplate().getArmorType();
    		if (armorType == null) {
    			log.warn("Missing item ArmorType itemId: " + item.getItemId() + " EquipmentSlot: " + item.getEquipmentSlot() + " playerObjectId: "
    					+ applyStat.getOwner().getObjectId());
    			return 0;
    		}
    
    		int equipmentSlot = (int) (item.getEquipmentSlot() & 0xFFFFFFFF);
    		switch (item.getItemTemplate().getArmorType()) {
    			case ROBE: // 4.9 check
    				switch (equipmentSlot) {
    					case 1 << 5:
    					case 1 << 11:
    					case 1 << 4:
    						switch (stat) {
    							case PHYSICAL_ATTACK:
    								return 1 * autorizeLvl;
    							case BOOST_MAGICAL_SKILL:
    								return 4 * autorizeLvl;
    							case PHYSICAL_DEFENSE:
    								return autorizeLvl;
    							case MAXHP:
    								return 20 * autorizeLvl;
    							case PHYSICAL_CRITICAL_RESIST:
    								return 2 * autorizeLvl;
    							case MAGICAL_DEFEND:
    								return 2 * autorizeLvl;
    						default:
    							break;
    						}
    						return 0;
    					case 1 << 12:
    						switch (stat) {
    							case PHYSICAL_ATTACK:
    								return 1 * autorizeLvl;
    							case BOOST_MAGICAL_SKILL:
    								return 4 * autorizeLvl;
    							case PHYSICAL_DEFENSE:
    								return 2 * autorizeLvl;
    							case MAXHP:
    								return 22 * autorizeLvl;
    							case PHYSICAL_CRITICAL_RESIST:
    								return 3 * autorizeLvl;
    							case MAGICAL_DEFEND:
    								return 2 * autorizeLvl;
    						default:
    							break;
    						}
    						return 0;
    					case 1 << 3:
    						switch (stat) {
    							case PHYSICAL_ATTACK:
    								return 1 * autorizeLvl;
    							case BOOST_MAGICAL_SKILL:
    								return 4 * autorizeLvl;
    							case PHYSICAL_DEFENSE:
    								return 3 * autorizeLvl;
    							case MAXHP:
    								return 24 * autorizeLvl;
    							case PHYSICAL_CRITICAL_RESIST:
    								return 4 * autorizeLvl;
    							case MAGICAL_DEFEND:
    								return 3 * autorizeLvl;
    						default:
    							break;
    						}
    						return 0;
    				}
    				return 0;
    			case LEATHER: // 4.9 check
    				switch (equipmentSlot) {
    					case 1 << 5:
    					case 1 << 11:
    					case 1 << 4:
    						switch (stat) {
    							case PHYSICAL_ATTACK:
    								return 1 * autorizeLvl;
    							case BOOST_MAGICAL_SKILL:
    								return 4 * autorizeLvl;
    							case PHYSICAL_DEFENSE:
    								return 2 * autorizeLvl;
    							case MAXHP:
    								return 18 * autorizeLvl;
    							case PHYSICAL_CRITICAL_RESIST:
    								return 2 * autorizeLvl;
    							case MAGICAL_DEFEND:
    								return 2 * autorizeLvl;
    						default:
    							break;
    						}
    						return 0;
    					case 1 << 12:
    						switch (stat) {
    							case PHYSICAL_ATTACK:
    								return 1 * autorizeLvl;
    							case BOOST_MAGICAL_SKILL:
    								return 4 * autorizeLvl;
    							case PHYSICAL_DEFENSE:
    								return 3 * autorizeLvl;
    							case MAXHP:
    								return 20 * autorizeLvl;
    							case PHYSICAL_CRITICAL_RESIST:
    								return 3 * autorizeLvl;
    							case MAGICAL_DEFEND:
    								return 2 * autorizeLvl;
    						default:
    							break;
    						}
    						return 0;
    					case 1 << 3:
    						switch (stat) {
    							case PHYSICAL_ATTACK:
    								return 1 * autorizeLvl;
    							case BOOST_MAGICAL_SKILL:
    								return 4 * autorizeLvl;
    							case PHYSICAL_DEFENSE:
    								return 4 * autorizeLvl;
    							case MAXHP:
    								return 22 * autorizeLvl;
    							case PHYSICAL_CRITICAL_RESIST:
    								return 4 * autorizeLvl;
    							case MAGICAL_DEFEND:
    								return 3 * autorizeLvl;
    						default:
    							break;
    						}
    						return 0;
    				}
    				return 0;
    			case CHAIN: // 4.9 check
    				switch (equipmentSlot) {
    					case 1 << 5:
    					case 1 << 11:
    					case 1 << 4:
    						switch (stat) {
    							case PHYSICAL_ATTACK:
    								return 1 * autorizeLvl;
    							case BOOST_MAGICAL_SKILL:
    								return 4 * autorizeLvl;
    							case PHYSICAL_DEFENSE:
    								return 3 * autorizeLvl;
    							case MAXHP:
    								return 16 * autorizeLvl;
    							case PHYSICAL_CRITICAL_RESIST:
    								return 2 * autorizeLvl;
    							case MAGICAL_DEFEND:
    								return 2 * autorizeLvl;
    						default:
    							break;
    						}
    						return 0;
    					case 1 << 12:
    						switch (stat) {
    							case PHYSICAL_ATTACK:
    								return 1 * autorizeLvl;
    							case BOOST_MAGICAL_SKILL:
    								return 4 * autorizeLvl;
    							case PHYSICAL_DEFENSE:
    								return 4 * autorizeLvl;
    							case MAXHP:
    								return 18 * autorizeLvl;
    							case PHYSICAL_CRITICAL_RESIST:
    								return 3 * autorizeLvl;
    							case MAGICAL_DEFEND:
    								return 2 * autorizeLvl;
    						default:
    							break;
    						}
    						return 0;
    					case 1 << 3:
    						switch (stat) {
    							case PHYSICAL_ATTACK:
    								return 1 * autorizeLvl;
    							case BOOST_MAGICAL_SKILL:
    								return 4 * autorizeLvl;
    							case PHYSICAL_DEFENSE:
    								return 5 * autorizeLvl;
    							case MAXHP:
    								return 20 * autorizeLvl;
    							case PHYSICAL_CRITICAL_RESIST:
    								return 4 * autorizeLvl;
    							case MAGICAL_DEFEND:
    								return 3 * autorizeLvl;
    						default:
    							break;
    						}
    						return 0;
    				}
    				return 0;
    			case PLATE: // 4.9 check
    				switch (equipmentSlot) {
    					case 1 << 5:
    					case 1 << 11:
    					case 1 << 4:
    						switch (stat) {
    							case PHYSICAL_ATTACK:
    								return 1 * autorizeLvl;
    							case BOOST_MAGICAL_SKILL:
    								return 4 * autorizeLvl;
    							case PHYSICAL_DEFENSE:
    								return 4 * autorizeLvl;
    							case MAXHP:
    								return 14 * autorizeLvl;
    							case PHYSICAL_CRITICAL_RESIST:
    								return 2 * autorizeLvl;
    							case MAGICAL_DEFEND:
    								return 2 * autorizeLvl;
    						default:
    							break;
    						}
    						return 0;
    					case 1 << 12:
    						switch (stat) {
    							case PHYSICAL_ATTACK:
    								return 1 * autorizeLvl;
    							case BOOST_MAGICAL_SKILL:
    								return 4 * autorizeLvl;
    							case PHYSICAL_DEFENSE:
    								return 5 * autorizeLvl;
    							case MAXHP:
    								return 16 * autorizeLvl;
    							case PHYSICAL_CRITICAL_RESIST:
    								return 3 * autorizeLvl;
    							case MAGICAL_DEFEND:
    								return 2 * autorizeLvl;
    						default:
    							break;
    						}
    						return 0;
    					case 1 << 3:
    						switch (stat) {
    							case PHYSICAL_ATTACK:
    								return 1 * autorizeLvl;
    							case BOOST_MAGICAL_SKILL:
    								return 4 * autorizeLvl;
    							case PHYSICAL_DEFENSE:
    								return 6 * autorizeLvl;
    							case MAXHP:
    								return 18 * autorizeLvl;
    							case PHYSICAL_CRITICAL_RESIST:
    								return 4 * autorizeLvl;
    							case MAGICAL_DEFEND:
    								return 3 * autorizeLvl;
    						default:
    							break;
    						}
    						return 0;
    				}
    				return 0;
    			case SHIELD:
    				switch (stat) {
    					case DAMAGE_REDUCE:
    						float reduceRate = autorizeLvl > 10 ? 0.2f : autorizeLvl * 0.02f;
    						return Math.round(reduceRate * applyStat.getBase());
    					case BLOCK:
    						if (autorizeLvl > 10) {
    							return 30 * (autorizeLvl - 10);
    						}
    						return 0;
    					case MAXHP:
    					if (autorizeLvl > 20) {
    							return 100 * (autorizeLvl - 20);
    						}
    						return 0;
    					case PHYSICAL_DEFENSE:
    						if (autorizeLvl > 20) {
    							return 50 * (autorizeLvl - 20);
    						}
    						return 0;
    					case MAGIC_SKILL_BOOST_RESIST:
    					if (autorizeLvl > 20) {
    							return 20 * (autorizeLvl - 20);
    						}
    						return 0;
    				default:
    					break;
    				}
    		}
    		return 0;
    	}
    Код:
    if (item.getItemTemplate().getCategory() == ItemCategory.JACKET) {
    					int id = item.getItemTemplate().getAuthorizeName();
    					switch (id) {
    						case 10086:
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_ATTACK, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.BOOST_MAGICAL_SKILL, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.MAXHP, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_DEFENSE, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_CRITICAL_RESIST, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.MAGICAL_CRITICAL_RESIST, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO_PHYSICAL, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO_MAGICAL, 0));
    							break;
    						default:
    							break;
    					if (item.getItemTemplate().getCategory() == ItemCategory.PANTS) {
    					int id = item.getItemTemplate().getAuthorizeName();
    					switch (id) {
    						case 10087:
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_ATTACK, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.BOOST_MAGICAL_SKILL, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.MAXHP, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_DEFENSE, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_CRITICAL_RESIST, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.MAGICAL_CRITICAL_RESIST, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO_PHYSICAL, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO_MAGICAL, 0));
    							break;
    						default:
    							break;
    					}
    					if (item.getItemTemplate().getCategory() == ItemCategory.SHOULDERS) {
    					int id = item.getItemTemplate().getAuthorizeName();
    					switch (id) {
    						case 10088:
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_ATTACK, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.BOOST_MAGICAL_SKILL, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.MAXHP, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_DEFENSE, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_CRITICAL_RESIST, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.MAGICAL_CRITICAL_RESIST, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO_PHYSICAL, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO_MAGICAL, 0));
    							break;
    						default:
    							break;
    					}
    					if (item.getItemTemplate().getCategory() == ItemCategory.GLOVES) {
    					int id = item.getItemTemplate().getAuthorizeName();
    					switch (id) {
    						case 10089:
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_ATTACK, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.BOOST_MAGICAL_SKILL, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.MAXHP, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_DEFENSE, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_CRITICAL_RESIST, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.MAGICAL_CRITICAL_RESIST, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO_PHYSICAL, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO_MAGICAL, 0));
    							break;
    						default:
    							break;
    					}
    					if (item.getItemTemplate().getCategory() == ItemCategory.SHOES) {
    					int id = item.getItemTemplate().getAuthorizeName();
    					switch (id) {
    						case 10090:
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_ATTACK, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.BOOST_MAGICAL_SKILL, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.MAXHP, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_DEFENSE, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_CRITICAL_RESIST, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.MAGICAL_CRITICAL_RESIST, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO_PHYSICAL, 0));
    							modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO_MAGICAL, 0));
    							break;
    						default:
    							break;
    					}

    Все скомпилировалось удачно, но заточка все равно не засчитывается, статы отображаются в клиенте, но вот не прибавляют при заточке, т.е "на вид" все есть. На еделе статы самой шмотки в 0 заточке висят.
    Может кто помочь с этим? куда еще нужно что-то прописать, чтобы заработало все?
     
  2. Offline

    klubheads Сержант Команда форума Модератор

    2.011
    356
    189
    Кредиты:
    $2.142,45
    Репутация:
    54
    Если не ошибаюсь, у тех же Ger Cor это(статы) висело отдельным файлом в статик дата.
     
  3. TopicStarter Overlay
    Offline

    nokiafan1111 Ефрейтор

    331
    21
    51
    Кредиты:
    $329,63
    Репутация:
    2
    enchant_tables или enchant_templates ? в котором надо прописать? и как потом закрепить итем под эти статы, в итем тамплейтс я просто не нашел параметр который берется с этих файлов.
     
  4. Offline

    SG Shaiy Ефрейтор

    402
    95
    61
    Кредиты:
    $15.767,72
    Репутация:
    9
    чтобы найти это значение в клиенте case 10086: открываешь файл client_item_authorizetable.xml и оно тут, чтобы найти у какого итема <name>lt_torso_master</name>, открываешь client_items_armor.xml или client_items_etc.xml и ищешь <authorize_name>lt_torso_master</authorize_name>, а вообще у тебя в item_template.xml это 10086 должно присвоено быть итему
     
    Последние данные очков репутации:
    nokiafan1111: 1 Очко 13 июл 2018
    nokiafan1111 нравится это.
  5. TopicStarter Overlay
    Offline

    nokiafan1111 Ефрейтор

    331
    21
    51
    Кредиты:
    $329,63
    Репутация:
    2
    Оно у меня присвоено итемам, вот один из них
    Код:
    <item_template id="110301918" name="Purified Marchutan Protector's Magic Jerkin" desc="1697041" name_desc="lt_torso_d_v_m3_q_65b" level="65" mask="36926" category="JACKET" armor_type="LEATHER" max_authorize="5" authorize_name="10086" max_stack_count="1" item_type="DEVANION" quality="MYTHIC" price="1612381" race="PC_ALL" restrict="65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65" bonus_apply="EQUIP" equipment_type="ARMOR" slot="8" max_enchant_bonus="0" m_slots="6">
    		<modifiers>
    			<add name="EVASION" value="320"/>
    			<add name="MAGIC_SKILL_BOOST_RESIST" value="214"/>
    			<add name="MAGICAL_RESIST" value="164"/>
    			<add name="PHYSICAL_DEFENSE" value="335"/>
    			<add name="MAXHP" value="594" bonus="true"/>
    			<add name="PHYSICAL_DEFENSE" value="195" bonus="true"/>
    			<add name="MAGIC_SKILL_BOOST_RESIST" value="77" bonus="true"/>
    			<add name="MAGICAL_RESIST" value="49" bonus="true"/>
    			<add name="PHYSICAL_CRITICAL_RESIST" value="40" bonus="true"/>
    			<add name="BOOST_MAGICAL_SKILL" value="125" bonus="true"/>
    			<rate name="FLY_SPEED" value="10" bonus="true"/>
    			<rate name="BOOST_HATE" value="-38" bonus="true"/>
    			<add name="PHYSICAL_ATTACK" value="10" bonus="true"/>
    			<add name="PVP_DEFEND_RATIO" value="50" bonus="true"/>
    		</modifiers>
    		<actions>
    			<remodel type="1"/>
    		</actions>
    	</item_template>
    Вопрос был в том, что не так с тем кодом, который я скинул выше, или же где нужно что-то закрепить. Если это enchant_tables или enchant_templates , как правильно туда прописать?
     
  6. Offline

    klubheads Сержант Команда форума Модератор

    2.011
    356
    189
    Кредиты:
    $2.142,45
    Репутация:
    54
    Please login or register to view links, у тебя скорее всего не правильно считываются эти статы из самой пакетки(либо пакет не полный).
     
  7. TopicStarter Overlay
    Offline

    nokiafan1111 Ефрейтор

    331
    21
    51
    Кредиты:
    $329,63
    Репутация:
    2
    можете сказать, какой пакет?
     
  8. Offline

    klubheads Сержант Команда форума Модератор

    2.011
    356
    189
    Кредиты:
    $2.142,45
    Репутация:
    54
    тут ещё посмотри в сам modifiers.xsd добавлены ли у тебя эти статы.
     
  9. TopicStarter Overlay
    Offline

    nokiafan1111 Ефрейтор

    331
    21
    51
    Кредиты:
    $329,63
    Репутация:
    2
    все статы прописаны там
     
  10. Offline

    klubheads Сержант Команда форума Модератор

    2.011
    356
    189
    Кредиты:
    $2.142,45
    Репутация:
    54
    в StatEnum тоже всё добавлено ?:)
    ItemEnchantBonus, ItemEnchantTemplate.
    сам пакет SM_STATS_INFO
    вообще правильно выше было написано
     
    Последнее редактирование: 12 июл 2018
    nokiafan1111 нравится это.
  11. TopicStarter Overlay
    Offline

    nokiafan1111 Ефрейтор

    331
    21
    51
    Кредиты:
    $329,63
    Репутация:
    2
    знаю что сборки геров кривые, решил проверить authorize_name, открыл клиент и в файле как сказали выше <authorize_name>lt_torso_master</authorize_name> и сверил с item_template.xml.
    authorize_name прописан
    верно
    открыл StatEnum, проверил прописаны ли статы, они оказались прописаны тоже.
    SM_STATS_INFO открыл пакет, там тоже статы прописаны.

    Не могу разобраться с логикой ItemEnchantBonus, ItemEnchantTemplate. этих двух файлов, точнее enchant_tables и enchant_templates
    В файле enchant_tables есть вот такие строчки.
    <enchant_table id="48" type="AUTHORIZE">

    Вопрос, могу ли я например создать enchant_table id="49" type="AUTHORIZE" и записать туда статы с client_item_authorizetable?
    Или же надо записывать в enchant_templates ?

    Совсем в них запутался, немного не въезжаю:D Можете плиз "разжевать" по простенькому, мануалов нету просто.
    Знаю что щас пару людей могут сказать "иди учи статику" вот я и до конца пытаюсь понять эти файлы.:minion_curious:
     
  12. Offline

    SG Shaiy Ефрейтор

    402
    95
    61
    Кредиты:
    $15.767,72
    Репутация:
    9
    ааа вообще чья сборка ?
     
  13. TopicStarter Overlay
    Offline

    nokiafan1111 Ефрейтор

    331
    21
    51
    Кредиты:
    $329,63
    Репутация:
    2
    геров 4.9
     
  14. Offline

    SG Shaiy Ефрейтор

    402
    95
    61
    Кредиты:
    $15.767,72
    Репутация:
    9
    аа тогда делай дальше реализацию там криво
     
  15. TopicStarter Overlay
    Offline

    nokiafan1111 Ефрейтор

    331
    21
    51
    Кредиты:
    $329,63
    Репутация:
    2
    вот пытаюсь реализовать заточку даэваниона и водного дракона, код составил, все компилится но не идет. Есть ли еще какие пакеты кроме stats_info которые отвечают за статы при заточке?
     
  16. TopicStarter Overlay
    Offline

    nokiafan1111 Ефрейтор

    331
    21
    51
    Кредиты:
    $329,63
    Репутация:
    2
    допер в чем была проблема, забыл создать нов параметр в StatEnchantFunction.java на подобие getEnchantAdditionModifier.
    Сэп всем за помощь) особенно за инфу с клиентской частью.:beer2-38:
     
  17. Offline

    Dev4ik Ефрейтор

    223
    8
    51
    Кредиты:
    $15.254,23
    Репутация:
    -1
    с тебя пивка :D