Skip to content
La2Base
Home
DownloadsWikiForumFAQ
Search
ruen
Sign up Login
HomeFilesWikiLogin
  • Home
  • Downloads
  • Wiki
  • FAQ
  • Contact Us
  • About
  • Rules
  • Privacy
  • Terms of Service

© 2026 la2base.com · All rights reserved

ruen
Forum/Форум для новичков[JAVA]/[question]Статы
Search

[question]Статы

16 replies202 viewsCurrently viewing: 1
~
~Frost~

User

Участник

Posts: 30

На форуме с: 02/08/2009

Репутация: +1

Рейтинг: 0

· 09/08/2009, 07:16 AM

Кто может помочь и дать Хтмл строчку что когда точеш например Армор При каждой заточки прибовлялось Жызни например +10хп затачил на 10 уже даёт 100 хп

0
-=[BloodKill]=-
-=[BloodKill]=-

User

Ветеран

Posts: 1355

На форуме с: 09/01/2008

Репутация: +1179

Рейтинг: 0

· 09/08/2009, 07:18 AM

Цитата
За темы, НЕ составленные таким образом ни я ни модераторы НЕ отвечают

Темы не по шаблону будут немедленно удаляться в мусорку.

— Оо

0
~
~Frost~

User

Участник

Posts: 30

На форуме с: 02/08/2009

Репутация: +1

Рейтинг: 0

· 09/08/2009, 07:23 AM

Сборка:la2base 1.1.7
Вопрос: Кто может помочь и дать Хтмл строчку что когда точеш например Армор При каждой заточки прибовлялось Жызни например +10хп затачил на 10 уже даёт 100 хп

0
Станислав
Станислав

User

Бывалый

Posts: 367

На форуме с: 03/30/2009

Репутация: +18

Рейтинг: 0

· 09/08/2009, 07:32 AM

~Frost~: Сборка:la2base 1.1.7
Вопрос: Кто может помочь и дать Хтмл строчку что когда точеш например Армор При каждой заточки прибовлялось Жызни например +10хп затачил на 10 уже даёт 100 хп


Пример

<item id='1' name="Dagger">
<for>
<set val='528' order='0x08' stat='pAtk'/>
<set val='125' order='0x08' stat='mAtk'/>
<set val='12' order='0x08' stat='rCrit'/>
<add val='-3' order='0x10' stat='accCombat'/>
<set val='227' order='0x08' stat='pAtkSpd'/>
<enchant mul='1.02' order='0x30C' stat='pAtk'/>
<enchant Mul='1.02' order='0x30C' stat='mAtk'/>
</for>
</item>

<enchant Mul='1.02' order='0x30C' stat='maxhp'/> так
<enchant val='10' order='0x30C' stat='maxhp'/> и так

Теперь если точнуть Соул Бов +1 то он даст +"2% мАтк и пАтк.
(по такому примеру можно добавлять вместо mAtk и pAtk


pDef - П деф
pAtkSpd - Атак спид
rCrit - Шанс крита
maxHp - Максимальное количество НР
maxMp - Максимальное количество МР
mAtkSpd - Кастинг спид
mDef - М деф
runSpd - Скорость бега

Вроде вот так.

0
Димон
Димон

User

Ветеран

Posts: 1105

На форуме с: 09/12/2008

Репутация: +356

Рейтинг: 0

· 09/08/2009, 07:36 AM

xLaPax: Пример

<item id='1' name="Dagger">
<for>
<set val='528' order='0x08' stat='pAtk'/>
<set val='125' order='0x08' stat='mAtk'/>
<set val='12' order='0x08' stat='rCrit'/>
<add val='-3' order='0x10' stat='accCombat'/>
<set val='227' order='0x08' stat='pAtkSpd'/>
<enchant mul='1.02' order='0x30C' stat='pAtk'/>
<enchant Mul='1.02' order='0x30C' stat='mAtk'/>
</for>
</item>

<enchant Mul='1.02' order='0x30C' stat='maxhp'/> так
<enchant val='10' order='0x30C' stat='maxhp'/> и так

Теперь если точнуть Соул Бов +1 то он даст +"2% мАтк и пАтк.
(по такому примеру можно добавлять вместо mAtk и pAtk


pDef - П деф
pAtkSpd - Атак спид
rCrit - Шанс крита
maxHp - Максимальное количество НР
maxMp - Максимальное количество МР
mAtkSpd - Кастинг спид
mDef - М деф
runSpd - Скорость бега

Вроде вот так.


Ты такой умный, тебе череп не жмет? Нече что добавление иных статов при заточке - надо менять в ядре??

0
~
~Frost~

User

Участник

Posts: 30

На форуме с: 02/08/2009

Репутация: +1

Рейтинг: 0

· 09/08/2009, 07:42 AM

простите но у меня вылетает ошбыка при загруске ГС

0
Станислав
Станислав

User

Бывалый

Posts: 367

На форуме с: 03/30/2009

Репутация: +18

Рейтинг: 0

· 09/08/2009, 07:53 AM

reb00t2: Ты такой умный, тебе череп не жмет? Нече что добавление иных статов при заточке - надо менять в ядре??

а ты типа умний? я написал "Вроде Так"

0
W
Walker

User

Бывалый

Posts: 190

На форуме с: 03/02/2009

Репутация: +22

Рейтинг: 0

· 09/08/2009, 08:03 AM

rebot скажы ты как правилино то *?

— la2rus.com

0
Димон
Димон

User

Ветеран

Posts: 1105

На форуме с: 09/12/2008

Репутация: +356

Рейтинг: 0

· 09/08/2009, 08:08 AM

xLaPax: а ты типа умний? я написал "Вроде Так"

Почти все твои посты сплошной бред, "сделайте мне то" "выложите мне это" и тд.

Walker, берешь исходы открываешь исходный ява файл заточек (к сожалению уже не помню как он называется) ищешь параметры заточек и если знаешь ява язык - дописываешь, что будет добавлятся при заточке помимо м и п атак. Затем сохраняешь и компилиш.

0
андрей
андрей

User

Бывалый

Posts: 287

На форуме с: 05/02/2008

Репутация: +348

Рейтинг: 0

· 09/08/2009, 08:20 AM

RequestEnchantItem???
Этот?:) Ткни меня носом где статы пишуться:)

Раскрывающийся текст
package net.sf.l2j.gameserver.clientpackets;

import java.util.logging.Logger;

import net.sf.l2j.Config;
import net.sf.l2j.gameserver.model.Inventory;
import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.L2World;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.clientpackets.TradeDone;
import net.sf.l2j.gameserver.serverpackets.EnchantResult;
import net.sf.l2j.gameserver.serverpackets.InventoryUpdate;
import net.sf.l2j.gameserver.serverpackets.ItemList;
import net.sf.l2j.gameserver.serverpackets.StatusUpdate;
import net.sf.l2j.gameserver.serverpackets.SystemMessage;
import net.sf.l2j.gameserver.templates.L2Item;
import net.sf.l2j.gameserver.templates.L2WeaponType;
import net.sf.l2j.gameserver.util.IllegalPlayerAction;
import net.sf.l2j.gameserver.util.Util;
import net.sf.l2j.gameserver.util.FloodProtector;
import net.sf.l2j.util.Rnd;

public final class RequestEnchantItem extends L2GameClientPacket
{
protected static final Logger _log = Logger.getLogger(Inventory.class.getName());
private static final String _C__58_REQUESTENCHANTITEM = "[C] 58 RequestEnchantItem";
private static final int[] CRYSTAL_SCROLLS = { 731, 732, 949, 950, 953, 954, 957, 958, 961, 962 };

private int _objectId;

@Override
protected void readImpl()
{
_objectId = readD();
}

@Override
protected void runImpl()
{
L2PcInstance activeChar = getClient().getActiveChar();
if (activeChar == null || _objectId == 0) return;

activeChar.cancelActiveTrade();

L2ItemInstance item = activeChar.getInventory().getItemByObjectId(_objectId);
L2ItemInstance scroll = activeChar.getActiveEnchantItem();
activeChar.setActiveEnchantItem(null);
if (item == null || scroll == null) return;

// can't enchant rods, hero weapons and shadow items
if(item.getItem().getItemType() == L2WeaponType.ROD
|| item.getItemId() >= 6611 && item.getItemId() <= 6621
|| item.isShadowItem())
{
activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));
return;
}
if(item.isWear())
{
Util.handleIllegalPlayerAction(activeChar,"Player "+activeChar.getName()+" tried to enchant a weared Item", IllegalPlayerAction.PUNISH_KICK);
return;
}
int itemType2 = item.getItem().getType2();
boolean enchantItem = false;
boolean blessedScroll = false;
boolean blesseddScroll = false;
boolean crystallScroll = false;
int crystalId = 0;

/** pretty code ;D */
switch (item.getItem().getCrystalType())
{
case L2Item.CRYSTAL_A:
crystalId = 1461;
switch(scroll.getItemId())
{
case 729: case 731: case 6569:
if(itemType2 == L2Item.TYPE2_WEAPON)
enchantItem = true;
break;
case 730: case 732: case 6570:
if((itemType2 == L2Item.TYPE2_SHIELD_ARMOR) || (itemType2 == L2Item.TYPE2_ACCESSORY))
enchantItem = true;
break;
}
break;
case L2Item.CRYSTAL_B:
crystalId = 1460;
switch(scroll.getItemId())
{
case 947: case 949: case 6571:
if(itemType2 == L2Item.TYPE2_WEAPON)
enchantItem = true;
break;
case 948: case 950: case 6572:
if((itemType2 == L2Item.TYPE2_SHIELD_ARMOR) || (itemType2 == L2Item.TYPE2_ACCESSORY))
enchantItem = true;
break;
}
break;
case L2Item.CRYSTAL_C:
crystalId = 1459;
switch(scroll.getItemId())
{
case 951: case 953: case 6573:
if(itemType2 == L2Item.TYPE2_WEAPON)
enchantItem = true;
break;
case 952: case 954: case 6574:
if((itemType2 == L2Item.TYPE2_SHIELD_ARMOR) || (itemType2 == L2Item.TYPE2_ACCESSORY))
enchantItem = true;
break;
}
break;
case L2Item.CRYSTAL_D:
crystalId = 1458;
switch(scroll.getItemId())
{
case 955: case 957: case 6575:
if(itemType2 == L2Item.TYPE2_WEAPON)
enchantItem = true;
break;
case 956: case 958: case 6576:
if((itemType2 == L2Item.TYPE2_SHIELD_ARMOR) || (itemType2 == L2Item.TYPE2_ACCESSORY))
enchantItem = true;
break;
}
break;
case L2Item.CRYSTAL_S:
crystalId = 1462;
switch(scroll.getItemId())
{
case 959: case 961: case 6577:
if(itemType2 == L2Item.TYPE2_WEAPON)
enchantItem = true;
break;
case 960: case 962: case 6578:
if((itemType2 == L2Item.TYPE2_SHIELD_ARMOR) || (itemType2 == L2Item.TYPE2_ACCESSORY))
enchantItem = true;
break;
}
break;
}

if (!enchantItem)
{
activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));
return;
}

// Get the scroll type - Yesod
if (scroll.getItemId() >= 6569 && scroll.getItemId() <= 6578)
{
blesseddScroll = true;
blessedScroll = true;
}
else
for (int crystalscroll : CRYSTAL_SCROLLS)
if(scroll.getItemId() == crystalscroll)
{
crystallScroll = true;
blessedScroll = true;
break;
}

scroll = activeChar.getInventory().destroyItem("Enchant", scroll, activeChar, item);
if(scroll == null)
{
activeChar.sendPacket(new SystemMessage(SystemMessageId.NOT_ENOUGH_ITEMS));
Util.handleIllegalPlayerAction(activeChar,"Player "+activeChar.getName()+" tried to enchant with a scroll he doesnt have", Config.DEFAULT_PUNISH);
return;
}

// SystemMessage sm = new SystemMessage(SystemMessageId.ENCHANT_SCROLL_CANCELLED);
// activeChar.sendPacket(sm);

SystemMessage sm;

int chance = 0;
int maxEnchantLevel = 0;

if (item.getItem().getType2() == L2Item.TYPE2_WEAPON)
{
if((item.getEnchantLevel() < 10) && !blesseddScroll && !crystallScroll) chance = Config.ENCHANT_CHANCE_WEAPON;
else
if((item.getEnchantLevel() < 16 && item.getEnchantLevel() > 9) && !blesseddScroll && !crystallScroll) chance = Config.ENCHANT_CHANCE_WEAPON_1015;
else
if((item.getEnchantLevel() > 15) && !blesseddScroll && !crystallScroll) chance = Config.ENCHANT_CHANCE_WEAPON_16;
else
if(item.getEnchantLevel() < 10 && blesseddScroll) chance = Config.BLESSED_CHANCE_WEAPON;
else
if((item.getEnchantLevel() < 16 && item.getEnchantLevel() > 9) && blesseddScroll) chance = Config.BLESSED_CHANCE_WEAPON_1015;
else
if(item.getEnchantLevel() > 15 && blesseddScroll) chance = Config.BLESSED_CHANCE_WEAPON_16;
else
if(item.getEnchantLevel() < 10 && crystallScroll) chance = Config.CRYSTAL_CHANCE_WEAPON;
else
if((item.getEnchantLevel() < 16 && item.getEnchantLevel() > 9) && crystallScroll) chance = Config.CRYSTAL_CHANCE_WEAPON_1015;
else
if(item.getEnchantLevel() > 15 && crystallScroll) chance = Config.CRYSTAL_CHANCE_WEAPON_16;
maxEnchantLevel = Config.ENCHANT_MAX_WEAPON;

if (Config.ENABLE_MODIFY_ENCHANT_CHANCE_WEAPON && !blesseddScroll && !crystallScroll)
{
if (Config.ENCHANT_CHANCE_LIST_WEAPON.containsKey(item.getEnchantLevel()))
{
chance = Config.ENCHANT_CHANCE_LIST_WEAPON.get(item.getEnchantLevel());
}
}
}
else if (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR)
{
if((item.getEnchantLevel() < 10) && !blesseddScroll && !crystallScroll) chance = Config.ENCHANT_CHANCE_ARMOR;
else
if((item.getEnchantLevel() < 16 && item.getEnchantLevel() > 9) && !blesseddScroll && !crystallScroll) chance = Config.ENCHANT_CHANCE_ARMOR_1015;
else
if((item.getEnchantLevel() > 15) && !blesseddScroll && !crystallScroll) chance = Config.ENCHANT_CHANCE_ARMOR_16;
else
if(item.getEnchantLevel() < 10 && blesseddScroll) chance = Config.BLESSED_CHANCE_ARMOR;
else
if((item.getEnchantLevel() < 16 && item.getEnchantLevel() > 9) && blesseddScroll) chance = Config.BLESSED_CHANCE_ARMOR_1015;
else
if(item.getEnchantLevel() > 15 && blesseddScroll) chance = Config.BLESSED_CHANCE_ARMOR_16;
else
if(item.getEnchantLevel() < 10 && crystallScroll) chance = Config.CRYSTAL_CHANCE_ARMOR;
else
if((item.getEnchantLevel() < 16 && item.getEnchantLevel() > 9) && crystallScroll) chance = Config.CRYSTAL_CHANCE_ARMOR_1015;
else
if(item.getEnchantLevel() > 15 && crystallScroll) chance = Config.CRYSTAL_CHANCE_ARMOR_16;
maxEnchantLevel = Config.ENCHANT_MAX_ARMOR;

if (Config.ENABLE_MODIFY_ENCHANT_CHANCE_ARMOR && !blesseddScroll && !crystallScroll)
{
if (Config.ENCHANT_CHANCE_LIST_ARMOR.containsKey(item.getEnchantLevel()))
{
chance = Config.ENCHANT_CHANCE_LIST_ARMOR.get(item.getEnchantLevel());
}
}
}
else if (item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)
{
if((item.getEnchantLevel() < 10) && !blesseddScroll && !crystallScroll) chance = Config.ENCHANT_CHANCE_JEWELRY;
else
if((item.getEnchantLevel() < 16 && item.getEnchantLevel() > 9) && !blesseddScroll && !crystallScroll) chance = Config.ENCHANT_CHANCE_JEWELRY_1015;
else
if((item.getEnchantLevel() > 15) && !blesseddScroll && !crystallScroll) chance = Config.ENCHANT_CHANCE_JEWELRY_16;
else
if(item.getEnchantLevel() < 10 && blesseddScroll) chance = Config.BLESSED_CHANCE_JEWELRY;
else
if((item.getEnchantLevel() < 16 && item.getEnchantLevel() > 9) && blesseddScroll) chance = Config.BLESSED_CHANCE_JEWELRY_1015;
else
if(item.getEnchantLevel() > 15 && blesseddScroll) chance = Config.BLESSED_CHANCE_JEWELRY_16;
else
if(item.getEnchantLevel() < 10 && crystallScroll) chance = Config.CRYSTAL_CHANCE_JEWELRY;
else
if((item.getEnchantLevel() < 16 && item.getEnchantLevel() > 9) && crystallScroll) chance = Config.CRYSTAL_CHANCE_JEWELRY_1015;
else
if(item.getEnchantLevel() > 15 && crystallScroll) chance = Config.CRYSTAL_CHANCE_JEWELRY_16;
maxEnchantLevel = Config.ENCHANT_MAX_JEWELRY;

if (Config.ENABLE_MODIFY_ENCHANT_CHANCE_JEWELRY && !blesseddScroll && !crystallScroll)
{
if (Config.ENCHANT_CHANCE_LIST_JEWELRY.containsKey(item.getEnchantLevel()))
{
chance = Config.ENCHANT_CHANCE_LIST_JEWELRY.get(item.getEnchantLevel());
}
}
}

if (item.getEnchantLevel() < Config.ENCHANT_SAFE_MAX
|| (item.getItem().getBodyPart() == L2Item.SLOT_FULL_ARMOR
&& item.getEnchantLevel() < Config.ENCHANT_SAFE_MAX_FULL))
chance = 100;

if (Rnd.get(100) < chance)
{
synchronized(item)
{
if (item.getOwnerId() != activeChar.getObjectId() // has just lost the item
|| (item.getEnchantLevel() >= maxEnchantLevel && maxEnchantLevel != 0))
{
activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));
return;
}
if (item.getLocation() != L2ItemInstance.ItemLocation.INVENTORY && item.getLocation() != L2ItemInstance.ItemLocation.PAPERDOLL)
{
activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));
return;
}
if (item.getEnchantLevel() == 0)
{
sm = new SystemMessage(SystemMessageId.S1_SUCCESSFULLY_ENCHANTED);
sm.addItemName(item.getItemId());
activeChar.sendPacket(sm);
}
else
{
sm = new SystemMessage(SystemMessageId.S1_S2_SUCCESSFULLY_ENCHANTED);
sm.addNumber(item.getEnchantLevel());
sm.addItemName(item.getItemId());
activeChar.sendPacket(sm);
}
item.setEnchantLevel(item.getEnchantLevel()+1);
item.updateDatabase();
}
}
else
{
if (!blessedScroll)
{
if (item.getEnchantLevel() > 0)
{
sm = new SystemMessage(SystemMessageId.ENCHANTMENT_FAILED_S1_S2_EVAPORATED);
sm.addNumber(item.getEnchantLevel());
sm.addItemName(item.getItemId());
activeChar.sendPacket(sm);
}
else
{
sm = new SystemMessage(SystemMessageId.ENCHANTMENT_FAILED_S1_EVAPORATED);
sm.addItemName(item.getItemId());
activeChar.sendPacket(sm);
}
}
else
{
sm = new SystemMessage(SystemMessageId.BLESSED_ENCHANT_FAILED);
activeChar.sendPacket(sm);
}

if (!blessedScroll)
{
if (item.getEnchantLevel() > 0)
{
sm = new SystemMessage(SystemMessageId.EQUIPMENT_S1_S2_REMOVED);
sm.addNumber(item.getEnchantLevel());
sm.addItemName(item.getItemId());
activeChar.sendPacket(sm);
}
else
{
sm = new SystemMessage(SystemMessageId.S1_DISARMED);
sm.addItemName(item.getItemId());
activeChar.sendPacket(sm);
}

if(item.getAugmentation()!=null)
item.getAugmentation().removeBoni(activeChar);

L2ItemInstance[] unequiped = activeChar.getInventory().unEquipItemInSlotAndRecord(item.getEquipSlot());
if (item.isEquipped())
{
InventoryUpdate iu = new InventoryUpdate();
for (int i = 0; i < unequiped.length; i++)
{
iu.addModifiedItem(unequiped[i]);
}
activeChar.sendPacket(iu);
activeChar.broadcastUserInfo();
}

int count = item.getCrystalCount() - (item.getItem().getCrystalCount() +1) / 2;
if (count < 1) count = 1;

L2ItemInstance destroyItem = activeChar.getInventory().destroyItem("Enchant", item, activeChar, null);
if (destroyItem == null) return;

L2ItemInstance crystals = activeChar.getInventory().addItem("Enchant", crystalId, count, activeChar, destroyItem);

sm = new SystemMessage(SystemMessageId.EARNED_S2_S1_S);
sm.addItemName(crystals.getItemId());
sm.addNumber(count);
activeChar.sendPacket(sm);

if (!Config.FORCE_INVENTORY_UPDATE)
{
InventoryUpdate iu = new InventoryUpdate();
if (destroyItem.getCount() == 0) iu.addRemovedItem(destroyItem);
else iu.addModifiedItem(destroyItem);
iu.addItem(crystals);

activeChar.sendPacket(iu);
}
else activeChar.sendPacket(new ItemList(activeChar, true));

StatusUpdate su = new StatusUpdate(activeChar.getObjectId());
su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad());
activeChar.sendPacket(su);

activeChar.broadcastUserInfo();

L2World world = L2World.getInstance();
world.removeObject(destroyItem);
}
else
{
item.setEnchantLevel(15);
item.updateDatabase();
}
}
sm = null;

StatusUpdate su = new StatusUpdate(activeChar.getObjectId());
su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad());
activeChar.sendPacket(su);
su = null;

activeChar.sendPacket(new EnchantResult(item.getEnchantLevel())); //FIXME i'm really not sure about this...
activeChar.sendPacket(new ItemList(activeChar, false)); //TODO update only the enchanted item
activeChar.broadcastUserInfo();
}

/* (non-Javadoc)
* @see net.sf.l2j.gameserver.clientpackets.ClientBasePacket#getType()
*/
@Override
public String getType()
{
return _C__58_REQUESTENCHANTITEM;
}
}

0
Станислав
Станислав

User

Бывалый

Posts: 367

На форуме с: 03/30/2009

Репутация: +18

Рейтинг: 0

· 09/08/2009, 08:30 AM

reb00t2: Почти все твои посты сплошной бред, "сделайте мне то" "выложите мне это" и тд.

Walker, берешь исходы открываешь исходный ява файл заточек (к сожалению уже не помню как он называется) ищешь параметры заточек и если знаешь ява язык - дописываешь, что будет добавлятся при заточке помимо м и п атак. Затем сохраняешь и компилиш.

да молодец

где ты видеш "сделайте мне то"?
я писал "Прошу выложыте ктота пак" (допустим)

0
P
PlainROL

User

Участник

Posts: 25

На форуме с: 09/02/2009

Репутация: +2

Рейтинг: 0

· 09/08/2009, 08:42 AM

Прекратите... ето тема не для флуда

0
Димон
Димон

User

Ветеран

Posts: 1105

На форуме с: 09/12/2008

Репутация: +356

Рейтинг: 0

· 09/08/2009, 09:23 AM

darknaemnuk: RequestEnchantItem???
Этот?:) Ткни меня носом где статы пишуться:)
Раскрывающийся текст
package net.sf.l2j.gameserver.clientpackets;

import java.util.logging.Logger;

import net.sf.l2j.Config;
import net.sf.l2j.gameserver.model.Inventory;
import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.L2World;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.clientpackets.TradeDone;
import net.sf.l2j.gameserver.serverpackets.EnchantResult;
import net.sf.l2j.gameserver.serverpackets.InventoryUpdate;
import net.sf.l2j.gameserver.serverpackets.ItemList;
import net.sf.l2j.gameserver.serverpackets.StatusUpdate;
import net.sf.l2j.gameserver.serverpackets.SystemMessage;
import net.sf.l2j.gameserver.templates.L2Item;
import net.sf.l2j.gameserver.templates.L2WeaponType;
import net.sf.l2j.gameserver.util.IllegalPlayerAction;
import net.sf.l2j.gameserver.util.Util;
import net.sf.l2j.gameserver.util.FloodProtector;
import net.sf.l2j.util.Rnd;

public final class RequestEnchantItem extends L2GameClientPacket
{
protected static final Logger _log = Logger.getLogger(Inventory.class.getName());
private static final String _C__58_REQUESTENCHANTITEM = "[C] 58 RequestEnchantItem";
private static final int[] CRYSTAL_SCROLLS = { 731, 732, 949, 950, 953, 954, 957, 958, 961, 962 };

private int _objectId;

@Override
protected void readImpl()
{
_objectId = readD();
}

@Override
protected void runImpl()
{
L2PcInstance activeChar = getClient().getActiveChar();
if (activeChar == null || _objectId == 0) return;

activeChar.cancelActiveTrade();

L2ItemInstance item = activeChar.getInventory().getItemByObjectId(_objectId);
L2ItemInstance scroll = activeChar.getActiveEnchantItem();
activeChar.setActiveEnchantItem(null);
if (item == null || scroll == null) return;

// can't enchant rods, hero weapons and shadow items
if(item.getItem().getItemType() == L2WeaponType.ROD
|| item.getItemId() >= 6611 && item.getItemId() <= 6621
|| item.isShadowItem())
{
activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));
return;
}
if(item.isWear())
{
Util.handleIllegalPlayerAction(activeChar,"Player "+activeChar.getName()+" tried to enchant a weared Item", IllegalPlayerAction.PUNISH_KICK);
return;
}
int itemType2 = item.getItem().getType2();
boolean enchantItem = false;
boolean blessedScroll = false;
boolean blesseddScroll = false;
boolean crystallScroll = false;
int crystalId = 0;

/** pretty code ;D */
switch (item.getItem().getCrystalType())
{
case L2Item.CRYSTAL_A:
crystalId = 1461;
switch(scroll.getItemId())
{
case 729: case 731: case 6569:
if(itemType2 == L2Item.TYPE2_WEAPON)
enchantItem = true;
break;
case 730: case 732: case 6570:
if((itemType2 == L2Item.TYPE2_SHIELD_ARMOR) || (itemType2 == L2Item.TYPE2_ACCESSORY))
enchantItem = true;
break;
}
break;
case L2Item.CRYSTAL_B:
crystalId = 1460;
switch(scroll.getItemId())
{
case 947: case 949: case 6571:
if(itemType2 == L2Item.TYPE2_WEAPON)
enchantItem = true;
break;
case 948: case 950: case 6572:
if((itemType2 == L2Item.TYPE2_SHIELD_ARMOR) || (itemType2 == L2Item.TYPE2_ACCESSORY))
enchantItem = true;
break;
}
break;
case L2Item.CRYSTAL_C:
crystalId = 1459;
switch(scroll.getItemId())
{
case 951: case 953: case 6573:
if(itemType2 == L2Item.TYPE2_WEAPON)
enchantItem = true;
break;
case 952: case 954: case 6574:
if((itemType2 == L2Item.TYPE2_SHIELD_ARMOR) || (itemType2 == L2Item.TYPE2_ACCESSORY))
enchantItem = true;
break;
}
break;
case L2Item.CRYSTAL_D:
crystalId = 1458;
switch(scroll.getItemId())
{
case 955: case 957: case 6575:
if(itemType2 == L2Item.TYPE2_WEAPON)
enchantItem = true;
break;
case 956: case 958: case 6576:
if((itemType2 == L2Item.TYPE2_SHIELD_ARMOR) || (itemType2 == L2Item.TYPE2_ACCESSORY))
enchantItem = true;
break;
}
break;
case L2Item.CRYSTAL_S:
crystalId = 1462;
switch(scroll.getItemId())
{
case 959: case 961: case 6577:
if(itemType2 == L2Item.TYPE2_WEAPON)
enchantItem = true;
break;
case 960: case 962: case 6578:
if((itemType2 == L2Item.TYPE2_SHIELD_ARMOR) || (itemType2 == L2Item.TYPE2_ACCESSORY))
enchantItem = true;
break;
}
break;
}

if (!enchantItem)
{
activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));
return;
}

// Get the scroll type - Yesod
if (scroll.getItemId() >= 6569 && scroll.getItemId() <= 6578)
{
blesseddScroll = true;
blessedScroll = true;
}
else
for (int crystalscroll : CRYSTAL_SCROLLS)
if(scroll.getItemId() == crystalscroll)
{
crystallScroll = true;
blessedScroll = true;
break;
}

scroll = activeChar.getInventory().destroyItem("Enchant", scroll, activeChar, item);
if(scroll == null)
{
activeChar.sendPacket(new SystemMessage(SystemMessageId.NOT_ENOUGH_ITEMS));
Util.handleIllegalPlayerAction(activeChar,"Player "+activeChar.getName()+" tried to enchant with a scroll he doesnt have", Config.DEFAULT_PUNISH);
return;
}

// SystemMessage sm = new SystemMessage(SystemMessageId.ENCHANT_SCROLL_CANCELLED);
// activeChar.sendPacket(sm);

SystemMessage sm;

int chance = 0;
int maxEnchantLevel = 0;

if (item.getItem().getType2() == L2Item.TYPE2_WEAPON)
{
if((item.getEnchantLevel() < 10) && !blesseddScroll && !crystallScroll) chance = Config.ENCHANT_CHANCE_WEAPON;
else
if((item.getEnchantLevel() < 16 && item.getEnchantLevel() > 9) && !blesseddScroll && !crystallScroll) chance = Config.ENCHANT_CHANCE_WEAPON_1015;
else
if((item.getEnchantLevel() > 15) && !blesseddScroll && !crystallScroll) chance = Config.ENCHANT_CHANCE_WEAPON_16;
else
if(item.getEnchantLevel() < 10 && blesseddScroll) chance = Config.BLESSED_CHANCE_WEAPON;
else
if((item.getEnchantLevel() < 16 && item.getEnchantLevel() > 9) && blesseddScroll) chance = Config.BLESSED_CHANCE_WEAPON_1015;
else
if(item.getEnchantLevel() > 15 && blesseddScroll) chance = Config.BLESSED_CHANCE_WEAPON_16;
else
if(item.getEnchantLevel() < 10 && crystallScroll) chance = Config.CRYSTAL_CHANCE_WEAPON;
else
if((item.getEnchantLevel() < 16 && item.getEnchantLevel() > 9) && crystallScroll) chance = Config.CRYSTAL_CHANCE_WEAPON_1015;
else
if(item.getEnchantLevel() > 15 && crystallScroll) chance = Config.CRYSTAL_CHANCE_WEAPON_16;
maxEnchantLevel = Config.ENCHANT_MAX_WEAPON;

if (Config.ENABLE_MODIFY_ENCHANT_CHANCE_WEAPON && !blesseddScroll && !crystallScroll)
{
if (Config.ENCHANT_CHANCE_LIST_WEAPON.containsKey(item.getEnchantLevel()))
{
chance = Config.ENCHANT_CHANCE_LIST_WEAPON.get(item.getEnchantLevel());
}
}
}
else if (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR)
{
if((item.getEnchantLevel() < 10) && !blesseddScroll && !crystallScroll) chance = Config.ENCHANT_CHANCE_ARMOR;
else
if((item.getEnchantLevel() < 16 && item.getEnchantLevel() > 9) && !blesseddScroll && !crystallScroll) chance = Config.ENCHANT_CHANCE_ARMOR_1015;
else
if((item.getEnchantLevel() > 15) && !blesseddScroll && !crystallScroll) chance = Config.ENCHANT_CHANCE_ARMOR_16;
else
if(item.getEnchantLevel() < 10 && blesseddScroll) chance = Config.BLESSED_CHANCE_ARMOR;
else
if((item.getEnchantLevel() < 16 && item.getEnchantLevel() > 9) && blesseddScroll) chance = Config.BLESSED_CHANCE_ARMOR_1015;
else
if(item.getEnchantLevel() > 15 && blesseddScroll) chance = Config.BLESSED_CHANCE_ARMOR_16;
else
if(item.getEnchantLevel() < 10 && crystallScroll) chance = Config.CRYSTAL_CHANCE_ARMOR;
else
if((item.getEnchantLevel() < 16 && item.getEnchantLevel() > 9) && crystallScroll) chance = Config.CRYSTAL_CHANCE_ARMOR_1015;
else
if(item.getEnchantLevel() > 15 && crystallScroll) chance = Config.CRYSTAL_CHANCE_ARMOR_16;
maxEnchantLevel = Config.ENCHANT_MAX_ARMOR;

if (Config.ENABLE_MODIFY_ENCHANT_CHANCE_ARMOR && !blesseddScroll && !crystallScroll)
{
if (Config.ENCHANT_CHANCE_LIST_ARMOR.containsKey(item.getEnchantLevel()))
{
chance = Config.ENCHANT_CHANCE_LIST_ARMOR.get(item.getEnchantLevel());
}
}
}
else if (item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)
{
if((item.getEnchantLevel() < 10) && !blesseddScroll && !crystallScroll) chance = Config.ENCHANT_CHANCE_JEWELRY;
else
if((item.getEnchantLevel() < 16 && item.getEnchantLevel() > 9) && !blesseddScroll && !crystallScroll) chance = Config.ENCHANT_CHANCE_JEWELRY_1015;
else
if((item.getEnchantLevel() > 15) && !blesseddScroll && !crystallScroll) chance = Config.ENCHANT_CHANCE_JEWELRY_16;
else
if(item.getEnchantLevel() < 10 && blesseddScroll) chance = Config.BLESSED_CHANCE_JEWELRY;
else
if((item.getEnchantLevel() < 16 && item.getEnchantLevel() > 9) && blesseddScroll) chance = Config.BLESSED_CHANCE_JEWELRY_1015;
else
if(item.getEnchantLevel() > 15 && blesseddScroll) chance = Config.BLESSED_CHANCE_JEWELRY_16;
else
if(item.getEnchantLevel() < 10 && crystallScroll) chance = Config.CRYSTAL_CHANCE_JEWELRY;
else
if((item.getEnchantLevel() < 16 && item.getEnchantLevel() > 9) && crystallScroll) chance = Config.CRYSTAL_CHANCE_JEWELRY_1015;
else
if(item.getEnchantLevel() > 15 && crystallScroll) chance = Config.CRYSTAL_CHANCE_JEWELRY_16;
maxEnchantLevel = Config.ENCHANT_MAX_JEWELRY;

if (Config.ENABLE_MODIFY_ENCHANT_CHANCE_JEWELRY && !blesseddScroll && !crystallScroll)
{
if (Config.ENCHANT_CHANCE_LIST_JEWELRY.containsKey(item.getEnchantLevel()))
{
chance = Config.ENCHANT_CHANCE_LIST_JEWELRY.get(item.getEnchantLevel());
}
}
}

if (item.getEnchantLevel() < Config.ENCHANT_SAFE_MAX
|| (item.getItem().getBodyPart() == L2Item.SLOT_FULL_ARMOR
&& item.getEnchantLevel() < Config.ENCHANT_SAFE_MAX_FULL))
chance = 100;

if (Rnd.get(100) < chance)
{
synchronized(item)
{
if (item.getOwnerId() != activeChar.getObjectId() // has just lost the item
|| (item.getEnchantLevel() >= maxEnchantLevel && maxEnchantLevel != 0))
{
activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));
return;
}
if (item.getLocation() != L2ItemInstance.ItemLocation.INVENTORY && item.getLocation() != L2ItemInstance.ItemLocation.PAPERDOLL)
{
activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));
return;
}
if (item.getEnchantLevel() == 0)
{
sm = new SystemMessage(SystemMessageId.S1_SUCCESSFULLY_ENCHANTED);
sm.addItemName(item.getItemId());
activeChar.sendPacket(sm);
}
else
{
sm = new SystemMessage(SystemMessageId.S1_S2_SUCCESSFULLY_ENCHANTED);
sm.addNumber(item.getEnchantLevel());
sm.addItemName(item.getItemId());
activeChar.sendPacket(sm);
}
item.setEnchantLevel(item.getEnchantLevel()+1);
item.updateDatabase();
}
}
else
{
if (!blessedScroll)
{
if (item.getEnchantLevel() > 0)
{
sm = new SystemMessage(SystemMessageId.ENCHANTMENT_FAILED_S1_S2_EVAPORATED);
sm.addNumber(item.getEnchantLevel());
sm.addItemName(item.getItemId());
activeChar.sendPacket(sm);
}
else
{
sm = new SystemMessage(SystemMessageId.ENCHANTMENT_FAILED_S1_EVAPORATED);
sm.addItemName(item.getItemId());
activeChar.sendPacket(sm);
}
}
else
{
sm = new SystemMessage(SystemMessageId.BLESSED_ENCHANT_FAILED);
activeChar.sendPacket(sm);
}

if (!blessedScroll)
{
if (item.getEnchantLevel() > 0)
{
sm = new SystemMessage(SystemMessageId.EQUIPMENT_S1_S2_REMOVED);
sm.addNumber(item.getEnchantLevel());
sm.addItemName(item.getItemId());
activeChar.sendPacket(sm);
}
else
{
sm = new SystemMessage(SystemMessageId.S1_DISARMED);
sm.addItemName(item.getItemId());
activeChar.sendPacket(sm);
}

if(item.getAugmentation()!=null)
item.getAugmentation().removeBoni(activeChar);

L2ItemInstance[] unequiped = activeChar.getInventory().unEquipItemInSlotAndRecord(item.getEquipSlot());
if (item.isEquipped())
{
InventoryUpdate iu = new InventoryUpdate();
for (int i = 0; i < unequiped.length; i++)
{
iu.addModifiedItem(unequiped[i]);
}
activeChar.sendPacket(iu);
activeChar.broadcastUserInfo();
}

int count = item.getCrystalCount() - (item.getItem().getCrystalCount() +1) / 2;
if (count < 1) count = 1;

L2ItemInstance destroyItem = activeChar.getInventory().destroyItem("Enchant", item, activeChar, null);
if (destroyItem == null) return;

L2ItemInstance crystals = activeChar.getInventory().addItem("Enchant", crystalId, count, activeChar, destroyItem);

sm = new SystemMessage(SystemMessageId.EARNED_S2_S1_S);
sm.addItemName(crystals.getItemId());
sm.addNumber(count);
activeChar.sendPacket(sm);

if (!Config.FORCE_INVENTORY_UPDATE)
{
InventoryUpdate iu = new InventoryUpdate();
if (destroyItem.getCount() == 0) iu.addRemovedItem(destroyItem);
else iu.addModifiedItem(destroyItem);
iu.addItem(crystals);

activeChar.sendPacket(iu);
}
else activeChar.sendPacket(new ItemList(activeChar, true));

StatusUpdate su = new StatusUpdate(activeChar.getObjectId());
su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad());
activeChar.sendPacket(su);

activeChar.broadcastUserInfo();

L2World world = L2World.getInstance();
world.removeObject(destroyItem);
}
else
{
item.setEnchantLevel(15);
item.updateDatabase();
}
}
sm = null;

StatusUpdate su = new StatusUpdate(activeChar.getObjectId());
su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad());
activeChar.sendPacket(su);
su = null;

activeChar.sendPacket(new EnchantResult(item.getEnchantLevel())); //FIXME i'm really not sure about this...
activeChar.sendPacket(new ItemList(activeChar, false)); //TODO update only the enchanted item
activeChar.broadcastUserInfo();
}

/* (non-Javadoc)
* @see net.sf.l2j.gameserver.clientpackets.ClientBasePacket#getType()
*/
@Override
public String getType()
{
return _C__58_REQUESTENCHANTITEM;
}
}

Нет не этот, этот ява файл содержит то что может точится, и какой тип точки может затачивать какой тип вещи. Вроде бы так, понятно надеюсь выразился). Есть исходный файл САМИХ заточек, там есть параметр POWER(п и м атак), вроде так, может не так все точно, но смысл тот же.

0
W
Walker

User

Бывалый

Posts: 190

На форуме с: 03/02/2009

Репутация: +22

Рейтинг: 0

· 09/08/2009, 09:46 AM

<enchant val='50' order='0x0C' stat='maxHp'/>
Даный скрипт работает
как меняю хп = патаку то всё вылетает ошыбка гс

— la2rus.com

0
Станислав
Станислав

User

Бывалый

Posts: 367

На форуме с: 03/30/2009

Репутация: +18

Рейтинг: 0

· 09/08/2009, 10:01 AM

Walker: <enchant val='50' order='0x0C' stat='maxHp'/>
Даный скрипт работает
как меняю хп = патаку то всё вылетает ошыбка гс

хм.........

0
-=[BloodKill]=-
-=[BloodKill]=-

User

Ветеран

Posts: 1355

На форуме с: 09/01/2008

Репутация: +1179

Рейтинг: 0

· 09/08/2009, 10:30 AM

Walker: <enchant val='50' order='0x0C' stat='maxHp'/>
Даный скрипт работает
как меняю хп = патаку то всё вылетает ошыбка гс



p.s:ЖИ, ШИ

— Оо

0
Войдите или зарегистрируйтесь чтобы ответить