Рейтинг темы:
  • 1 Голос(ов) - 1 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Работа над Goddess of Destruction (part 7)
Кто подскажет что за два неизвестных параметра в пакете ExTryMixCube
Код:
writeC(result);
        [COLOR="Red"]writeD(1);
        writeC(0);[/COLOR]
        writeD(itemId);
        writeQ(itemCount);
Ответ
[SRC="java"]
package l2p.gameserver.network.serverpackets.alchemy;

import java.util.ArrayList;

import l2p.gameserver.model.items.Item;
import l2p.gameserver.network.serverpackets.L2GameServerPacket;
import l2p.gameserver.network.serverpackets.components.Opcode;

public class ExTryMixCube extends L2GameServerPacket
{
public static final ExTryMixCube FAIL = new ExTryMixCube(2);

private final int _result;
private final ArrayList<Item> _items = new ArrayList<>();

public ExTryMixCube(int result)
{
_result = result;
}

public void add(int itemId, long count, int type)
{
_items.add(new Item(itemId, count, 0, 100, type));
}

@Override
protected final void writeImpl()
{
writeEx(Opcode.ExTryMixCube);
writeC(_result);
writeD(_items.size());

for (Item item : _items)
{
writeC(item.getType());
writeD(item.getId());
writeQ(item.getCount());
}
}
}
[/SRC]
Ответ
Gaikotsu Написал:[SRC="java"]
package l2p.gameserver.network.serverpackets.alchemy;

import java.util.ArrayList;

import l2p.gameserver.model.items.Item;
import l2p.gameserver.network.serverpackets.L2GameServerPacket;
import l2p.gameserver.network.serverpackets.components.Opcode;

public class ExTryMixCube extends L2GameServerPacket
{
public static final ExTryMixCube FAIL = new ExTryMixCube(2);

private final int _result;
private final ArrayList<Item> _items = new ArrayList<>();

public ExTryMixCube(int result)
{
_result = result;
}

public void add(int itemId, long count, int type)
{
_items.add(new Item(itemId, count, 0, 100, type));
}

@Override
protected final void writeImpl()
{
writeEx(Opcode.ExTryMixCube);
writeC(_result);
writeD(_items.size());

for (Item item : _items)
{
writeC(item.getType());
writeD(item.getId());
writeQ(item.getCount());
}
}
}
[/SRC]

Код:
new Item(itemId, count, [color=Red]0, 100[/color], type)
а за что эти параметры отвечают и какие значения результата существуют?
Ответ
да просто Item у меня простенький тип для хранения некоторой информации об предмете в разных ситуациях
[SRC="java"]
package l2p.gameserver.model.items;

public class Item
{
private final int _id;
private final int _type;
private final int _chance;
private final int _enchant;
private final long _count;

public Item(int id, long count)
{
this(id, count, 0, 0, 0);
}

public Item(int id, long count, int enchant)
{
this(id, count, enchant, 0, 0);
}

public Item(int id, long count, int enchant, int chance)
{
this(id, count, enchant, chance, 0);
}

public Item(int id, long count, int enchant, int chance, int type)
{
_id = id;
_count = count;
_enchant = enchant;
_chance = chance;
_type = type;
}

public int getId()
{
return _id;
}

public long getCount()
{
return _count;
}

public int getEnchant()
{
return _enchant;
}

public int getChance()
{
return _chance;
}

public int getType()
{
return _type;
}
}
[/SRC]
а _result
0 - обычная награда
1 - удвоенная награда
2 - фейл
Ответ
Gaikotsu Написал:да просто Item у меня простенький тип для хранения некоторой информации об предмете в разных ситуациях
[SRC="java"]
package l2p.gameserver.model.items;

public class Item
{
private final int _id;
private final int _type;
private final int _chance;
private final int _enchant;
private final long _count;

public Item(int id, long count)
{
this(id, count, 0, 0, 0);
}

public Item(int id, long count, int enchant)
{
this(id, count, enchant, 0, 0);
}

public Item(int id, long count, int enchant, int chance)
{
this(id, count, enchant, chance, 0);
}

public Item(int id, long count, int enchant, int chance, int type)
{
_id = id;
_count = count;
_enchant = enchant;
_chance = chance;
_type = type;
}

public int getId()
{
return _id;
}

public long getCount()
{
return _count;
}

public int getEnchant()
{
return _enchant;
}

public int getChance()
{
return _chance;
}

public int getType()
{
return _type;
}
}
[/SRC]
а _result
0 - обычная награда
1 - удвоенная награда
2 - фейл

А какой тип отправлять для Тяжелых Камней ветра, ибо какие не перебирал вылетает просто пустое окно.
Ответ
Amadeo Написал:Hi im trying to know how works the SP progress downbar in %, only gaining 1sp shows 100% and in 0sp 0% i look in UserInfo but nothing i don't see any solution anybody can take a hand with that problem? thanks
[Изображение: image.png]

Anybody knows about this bar works?
Ответ
GenCloud Написал:А какой тип отправлять для Тяжелых Камней ветра, ибо какие не перебирал вылетает просто пустое окно.

Помещаю три итема в список, выводит 0 - просто черное окно.
Ответ
Amadeo Написал:Anybody knows about this bar works?

this bar have no special packet
anything needed is in userinfo packet

fragment:
....
WriteQ(UserInfo->_exp);
WriteF(getExpPercent(UserInfo->_level,UserInfo->_exp)); //exp percent
Ответ
I don't know not works for me

Код:
writeQ(_activeChar.getExp());
writeF(Experience.getExpPercent(_activeChar.getLevel(), _activeChar.getExp()));

these are my lines
Ответ
GenCloud Написал:А какой тип отправлять для Тяжелых Камней ветра, ибо какие не перебирал вылетает просто пустое окно.
проще наверное будет весь пакет показать...
[SRC="java"]
package l2p.gameserver.network.clientpackets.alchemy;

import l2p.commons.util.Rnd;
import l2p.gameserver.data.holder.AlchemyDataHolder;
import l2p.gameserver.enums.Race;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.alchemy.LollyCubeData;
import l2p.gameserver.model.items.ItemInstance;
import l2p.gameserver.model.skills.CommonSkill;
import l2p.gameserver.network.clientpackets.L2GameClientPacket;
import l2p.gameserver.network.serverpackets.MagicSkillUse;
import l2p.gameserver.network.serverpackets.alchemy.ExTryMixCube;
import l2p.gameserver.network.serverpackets.components.SystemMsg;
import l2p.gameserver.utils.ItemUtils;
import l2p.gameserver.utils.Log;

public class RequestAlchemyTryMixCube extends L2GameClientPacket
{
private static final long MAX_COUNT = 1_000_000_000;

private int[] _objectId;
private long[] _count;

@Override
protected void readImpl()
{
int count = readD();

_objectId = new int[count];
_count = new long[count];

for (int i = 0; i < count; i++)
{
_objectId[i] = readD();
_count[i] = Math.min(readQ(), MAX_COUNT);
}
}

@Override
protected void runImpl()
{
final Player player = getClient().getActiveChar();

if (player == null || player.getAppearance().getRace() != Race.ERTHEIA)
return;

if (player.getSkillLevel(CommonSkill.ALCHEMY_CUBE.getId()) < 1)
{
player.sendPacket(SystemMsg.YOU_MUST_LEARN_THE_NECESSARY_SKILLS_FIRST, ExTryMixCube.FAIL);
return;
}

if (player.isDead())
{
player.sendPacket(SystemMsg.YOU_CANNOT_USE_ALCHEMY_WHILE_DEAD, ExTryMixCube.FAIL);
return;
}

if (player.isInCombat())
{
player.sendPacket(SystemMsg.YOU_CANNOT_USE_ALCHEMY_DURING_BATTLE, ExTryMixCube.FAIL);
return;
}

if (player.isActionsDisabled())
{
player.sendPacket(SystemMsg.YOU_CANNOT_USE_ALCHEMY_WHILE_IMMOBILE, ExTryMixCube.FAIL);
return;
}

if (player.isProcessingRequest() || player.getPrivateStoreType() != Player.STORE_PRIVATE_NONE)
{
player.sendPacket(SystemMsg.YOU_CANNOT_USE_ALCHEMY_WHILE_TRADING_OR_USING_A_PRIVATE_STORE_OR_SHOP, ExTryMixCube.FAIL);
return;
}

LollyCubeData cube = AlchemyDataHolder.getInstance().getLollyCube(player.getSkillLevel(CommonSkill.ALCHEMY_CUBE.getId()));

if (cube == null)
{
player.sendPacket(ExTryMixCube.FAIL);
return;
}

long count = 0L;
long price = 0L;
long additionalItemCount = 0L;

for (int i = 0; i < _objectId.length; i++)
{
ItemInstance item = player.getInventory().getItemByObjectId(_objectId[i]);

if (item != null && !item.isEquipped() && item.getCount() >= _count[i])
{
count += _count[i];
price += AlchemyDataHolder.getInstance().getPrice(item.getItemId()) * _count[i];

if (item.getItemId() == cube.getAdditionalItemId())
additionalItemCount = _count[i];
}
}

if (count < 1 || price < 1)
{
player.sendPacket(ExTryMixCube.FAIL);
return;
}

for (int i = 0; i < _objectId.length; i++)
{
ItemInstance item = player.getInventory().getItemByObjectId(_objectId[i]);

if (!player.getInventory().destroyItem(item, _count[i]))
{
player.sendPacket(ExTryMixCube.FAIL);
return;
}

Log.LogItem(player, Log.LollyCubeRemove, item, _count[i]);
}

long rewardCount = cube.getRewardCount(_objectId.length, price);

if (rewardCount < 1)
{
player.sendPacket(ExTryMixCube.FAIL);
return;
}

ExTryMixCube packet = new ExTryMixCube(0);
int rewardRate = 1;
boolean randomSuccess = false;

if (additionalItemCount > 0)
{
if (Rnd.chance(cube.getExtraRewardChance()))
{
ItemUtils.addItem(player, cube.getExtraRewardId(), cube.getExtraRewardCount(), true);
Log.LogItem(player, Log.LollyCubeAdd, cube.getExtraRewardId(), cube.getExtraRewardCount());
packet.add(cube.getExtraRewardId(), cube.getExtraRewardCount(), 2);
randomSuccess = true;
}

if (additionalItemCount > 1 && Rnd.chance(cube.getDoubleRewardChance(additionalItemCount)))
{
rewardRate = 2;
rewardCount *= rewardRate;
randomSuccess = true;
}
}

ItemUtils.addItem(player, cube.getRewardId(), rewardCount, true);
Log.LogItem(player, Log.LollyCubeAdd, cube.getRewardId(), rewardCount);

if (randomSuccess)
player.sendPacket(new MagicSkillUse(player, CommonSkill.ALCHEMY_CUBE_RANDOM_SUCCESS.getSkill()));

packet.add(cube.getRewardId(), rewardCount, rewardRate > 1 ? 1 : 0);
player.sendPacket(packet);
}
}
[/SRC]
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Помогите с Сервером L2Dream версии 439 для Lineage 2 Gracia Part 2 CAHTEX 4 3,848 10-01-2021, 02:40 PM
Последний пост: tenor
  Работа с камерой и Энтер чат FriendlyGhost 0 1,484 04-29-2018, 06:07 AM
Последний пост: FriendlyGhost
  Goddess of Destruction ( новая ветка от NcSoft ) Bacek 180 63,724 08-22-2017, 12:32 PM
Последний пост: BadStealth
  EmuRT Gracia part 2 ? knaif 3 1,877 02-08-2016, 01:19 PM
Последний пост: knaif
  Gracia Part 1 от l2emu исходы TFH 6 2,307 10-05-2015, 07:53 PM
Последний пост: G1ta0
  Ищу исходы L2-Dream gracia part 2 knaif 1 1,668 10-05-2015, 07:51 PM
Последний пост: G1ta0
  Оплачиваемая работа Grek1993 1 1,539 08-01-2015, 11:29 AM
Последний пост: ztaecz
  Работа над Goddess of Destruction (part 6) Ashe 1,274 501,066 07-11-2015, 08:00 PM
Последний пост: n3k0nation
  Работа с мультиселлом Evencelance 11 2,964 09-19-2014, 12:43 PM
Последний пост: Evencelance
  Работа над Goddess of Destruction (part 5) Ozzy 980 359,442 10-09-2013, 09:13 AM
Последний пост: Ashe

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)