03-29-2014, 06:55 PM
Куда можно поставить обновление, чтобы оно менялось при снятии/одевании шмотки?
Сделал вот такую штуку, все прекрасно работает, поставил обновление в EnterWorld, но надо чтобы все обновлялось при изменение шмота:
[SRC="java"] public void updatePrice()
{
int temp = 9;
ItemInstance weapon = getActiveWeaponInstance();
if (weapon != null)
{
switch (weapon.getCrystalType().externalOrdinal)
{
case 5: // S grade
if (weapon.getEnchantLevel() > 3)
{
temp += 8;
}
else
{
temp += 6;
}
break;
case 4: // A grade
if (weapon.getEnchantLevel() > 3)
{
temp += 7;
}
else
{
temp += 5;
}
break;
case 3: // B grade
if (weapon.getEnchantLevel() > 3)
{
temp += 6;
}
else
{
temp += 4;
}
break;
}
}
Inventory i = getInventory();
List<ItemInstance> armor = new ArrayList<ItemInstance>();
armor.add(i.getPaperdollItem(Inventory.PAPERDOLL_HEAD));
armor.add(i.getPaperdollItem(Inventory.PAPERDOLL_CHEST));
armor.add(i.getPaperdollItem(Inventory.PAPERDOLL_GLOVES));
armor.add(i.getPaperdollItem(Inventory.PAPERDOLL_FEET));
armor.add(i.getPaperdollItem(Inventory.PAPERDOLL_LEGS));
armor.add(i.getPaperdollItem(Inventory.PAPERDOLL_NECK));
armor.add(i.getPaperdollItem(Inventory.PAPERDOLL_REAR));
armor.add(i.getPaperdollItem(Inventory.PAPERDOLL_LEAR));
armor.add(i.getPaperdollItem(Inventory.PAPERDOLL_RFINGER));
armor.add(i.getPaperdollItem(Inventory.PAPERDOLL_LFINGER));
int avg_enchant = 0, avg_grade = 0, count = 0;
for (ItemInstance item : armor)
{
if (item == null)
{
continue;
}
count++;
avg_enchant += item.getEnchantLevel();
avg_grade += item.getCrystalType().externalOrdinal;
}
if (count > 0)
{
avg_enchant = Math.round(avg_enchant / count);
if (avg_enchant >= 6)
{
temp += 8;
}
else if (avg_enchant >= 3)
{
temp += 3;
}
avg_grade = Math.round(avg_grade / count);
switch (avg_grade)
{
case 5: // S grade
temp += 6;
break;
case 4: // A grade
temp += 5;
break;
case 3: // B grade
temp += 4;
break;
}
}
if (isHero())
{
temp += 25;
}
if (getPvpKills() >= 100)
{
temp += 15;
}
_price = temp;
broadcastUserInfo(false);
broadcastCharInfo();
}[/SRC]
Подскажите пожалуйста куда можно поставить апдейт?
Сделал вот такую штуку, все прекрасно работает, поставил обновление в EnterWorld, но надо чтобы все обновлялось при изменение шмота:
[SRC="java"] public void updatePrice()
{
int temp = 9;
ItemInstance weapon = getActiveWeaponInstance();
if (weapon != null)
{
switch (weapon.getCrystalType().externalOrdinal)
{
case 5: // S grade
if (weapon.getEnchantLevel() > 3)
{
temp += 8;
}
else
{
temp += 6;
}
break;
case 4: // A grade
if (weapon.getEnchantLevel() > 3)
{
temp += 7;
}
else
{
temp += 5;
}
break;
case 3: // B grade
if (weapon.getEnchantLevel() > 3)
{
temp += 6;
}
else
{
temp += 4;
}
break;
}
}
Inventory i = getInventory();
List<ItemInstance> armor = new ArrayList<ItemInstance>();
armor.add(i.getPaperdollItem(Inventory.PAPERDOLL_HEAD));
armor.add(i.getPaperdollItem(Inventory.PAPERDOLL_CHEST));
armor.add(i.getPaperdollItem(Inventory.PAPERDOLL_GLOVES));
armor.add(i.getPaperdollItem(Inventory.PAPERDOLL_FEET));
armor.add(i.getPaperdollItem(Inventory.PAPERDOLL_LEGS));
armor.add(i.getPaperdollItem(Inventory.PAPERDOLL_NECK));
armor.add(i.getPaperdollItem(Inventory.PAPERDOLL_REAR));
armor.add(i.getPaperdollItem(Inventory.PAPERDOLL_LEAR));
armor.add(i.getPaperdollItem(Inventory.PAPERDOLL_RFINGER));
armor.add(i.getPaperdollItem(Inventory.PAPERDOLL_LFINGER));
int avg_enchant = 0, avg_grade = 0, count = 0;
for (ItemInstance item : armor)
{
if (item == null)
{
continue;
}
count++;
avg_enchant += item.getEnchantLevel();
avg_grade += item.getCrystalType().externalOrdinal;
}
if (count > 0)
{
avg_enchant = Math.round(avg_enchant / count);
if (avg_enchant >= 6)
{
temp += 8;
}
else if (avg_enchant >= 3)
{
temp += 3;
}
avg_grade = Math.round(avg_grade / count);
switch (avg_grade)
{
case 5: // S grade
temp += 6;
break;
case 4: // A grade
temp += 5;
break;
case 3: // B grade
temp += 4;
break;
}
}
if (isHero())
{
temp += 25;
}
if (getPvpKills() >= 100)
{
temp += 15;
}
_price = temp;
broadcastUserInfo(false);
broadcastCharInfo();
}[/SRC]
Подскажите пожалуйста куда можно поставить апдейт?