- Хроники
- Fafurion
- Исходники
- Присутствуют
- Сборка
- l2jMobius МК 3
Посмотрите видео ниже, чтобы узнать, как установить наш сайт в виде веб-приложения на главном экране.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
вроде как байпасс getDimensonalItem у GameAssistant (32478)
пакет отправляет нули, поищите название клиенского пакета по форуму - я уже отвечал ранее на этот вопрос.добавил в диалог строку, теперь при попытке забрать предметы, пишет в чат you will be kicked for illegal action GM informed. Предметы не отдает (
а тему не помните название случайно ?пакет отправляет нули, поищите название клиенского пакета по форуму - я уже отвечал ранее на этот вопрос.
а тему не помните название случайно ?
package ai.others.GameAssistant;
import java.util.HashMap;
import org.l2jmobius.gameserver.data.xml.MultisellData;
import org.l2jmobius.gameserver.handler.IItemHandler;
import org.l2jmobius.gameserver.handler.ItemHandler;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.itemcontainer.PlayerFreight;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ExGetPremiumItemList;
import org.l2jmobius.gameserver.network.serverpackets.PackageToList;
import org.l2jmobius.gameserver.network.serverpackets.WareHouseWithdrawalList;
import ai.AbstractNpcAI;
public class GameAssistant extends AbstractNpcAI
{
// NPC
private static final int MERCHANT = 32478; // Game Assistant
// Multisells
private static final int HEIR_SHARDS = 324780016;
// Items
private static final int MINION_COUPON = 13273; // Minion Coupon (5-hour)
private static final int MINION_COUPON_EV = 13383; // Minion Coupon (5-hour) (Event)
private static final int SUP_MINION_COUPON = 14065; // Superior Minion Coupon - 5-hour
private static final int SUP_MINION_COUPON_EV = 14074; // Superior Minion Coupon (Event) - 5-hour
private static final int ENH_MINION_COUPON = 20914; // Enhanced Rose Spirit Coupon (5-hour)
private static final int ENH_MINION_COUPON_EV = 22240; // Enhanced Rose Spirit Coupon (5-hour) - Event
// Others
private static final String COMMAND_BYPASS = "Quest GameAssistant ";
private static final HashMap<String, Integer> MINION_EXCHANGE = new HashMap<>();
static
{
// Normal
MINION_EXCHANGE.put("whiteWeasel", 13017); // White Weasel Minion Necklace
MINION_EXCHANGE.put("fairyPrincess", 13018); // Fairy Princess Minion Necklace
MINION_EXCHANGE.put("wildBeast", 13019); // Wild Beast Fighter Minion Necklace
MINION_EXCHANGE.put("foxShaman", 13020); // Fox Shaman Minion Necklace
// Superior
MINION_EXCHANGE.put("toyKnight", 14061); // Toy Knight Summon Whistle
MINION_EXCHANGE.put("spiritShaman", 14062); // Spirit Shaman Summon Whistle
MINION_EXCHANGE.put("turtleAscetic", 14064); // Turtle Ascetic Summon Necklace
// Enhanced
MINION_EXCHANGE.put("desheloph", 20915); // Enhanced Rose Necklace: Desheloph
MINION_EXCHANGE.put("hyum", 20916); // Enhanced Rose Necklace: Hyum
MINION_EXCHANGE.put("lekang", 20917); // Enhanced Rose Necklace: Lekang
MINION_EXCHANGE.put("lilias", 20918); // Enhanced Rose Necklace: Lilias
MINION_EXCHANGE.put("lapham", 20919); // Enhanced Rose Necklace: Lapham
MINION_EXCHANGE.put("mafum", 20920); // Enhanced Rose Necklace: Mafum
}
private GameAssistant()
{
addStartNpc(MERCHANT);
addFirstTalkId(MERCHANT);
addTalkId(MERCHANT);
}
@Override
public String onAdvEvent(String event, Npc npc, Player player)
{
String htmltext = null;
switch (event)
{
case "32478.html":
case "32478-01.html":
case "32478-02.html":
case "32478-03.html":
case "32478-04.html":
case "32478-05.html":
case "32478-06.html":
case "32478-07.html":
case "32478-08.html":
case "32478-09.html":
case "32478-10.html":
case "32478-11.html":
case "32478-12.html":
case "32478-13.html":
case "32478-14.html":
case "32478-15.html":
case "32478-16.html":
case "32478-17.html":
case "32478-18.html":
case "32478-19.html":
case "32478-20.html":
case "32478-21.html":
{
htmltext = event;
break;
}
case "Chat_Event":
{
htmltext = "32478-button1.html";
break;
}
case "Chat_HeirShards":
{
MultisellData.getInstance().separateAndSend(HEIR_SHARDS, player, null, false);
break;
}
case "Chat_ClaimItemsShop":
case "getDimensonalItem":
{
if (player.getPremiumItemList().isEmpty())
{
player.sendPacket(SystemMessageId.THERE_ARE_NO_MORE_DIMENSIONAL_ITEMS_TO_BE_FOUND);
}
else
{
player.sendPacket(new ExGetPremiumItemList(player));
}
break;
}
case "whiteWeasel":
case "fairyPrincess":
case "wildBeast":
case "foxShaman":
{
htmltext = giveMinion(player, event, MINION_COUPON, MINION_COUPON_EV);
break;
}
case "toyKnight":
case "spiritShaman":
case "turtleAscetic":
{
htmltext = giveMinion(player, event, SUP_MINION_COUPON, SUP_MINION_COUPON_EV);
break;
}
case "desheloph":
case "hyum":
case "lekang":
case "lilias":
case "lapham":
case "mafum":
{
htmltext = giveMinion(player, event, ENH_MINION_COUPON, ENH_MINION_COUPON_EV);
break;
}
case "Chat_ItemsTransfer":
case "package_deposit":
{
if (player.getAccountChars().size() < 1)
{
player.sendPacket(SystemMessageId.THAT_CHARACTER_DOES_NOT_EXIST);
}
else
{
player.sendPacket(new PackageToList(player.getAccountChars()));
}
break;
}
case "Chat_ClaimItemsTransfer":
case "package_withdraw":
{
final PlayerFreight freight = player.getFreight();
if ((freight != null) && (freight.getSize() > 0))
{
player.setActiveWarehouse(freight);
for (Item i : player.getActiveWarehouse().getItems())
{
if (i.isTimeLimitedItem() && (i.getRemainingTime() <= 0))
{
player.getActiveWarehouse().destroyItem("ItemInstance", i, player, null);
}
}
player.sendPacket(new WareHouseWithdrawalList(1, player, WareHouseWithdrawalList.FREIGHT));
player.sendPacket(new WareHouseWithdrawalList(2, player, WareHouseWithdrawalList.FREIGHT));
}
else
{
player.sendPacket(SystemMessageId.YOU_HAVE_NOT_DEPOSITED_ANY_ITEMS_IN_YOUR_WAREHOUSE);
}
break;
}
case "items_conversion":
{
// TODO: Add to html.
// player.setTarget(player);
// player.sendPacket(new ExShowUpgradeSystemNormal(1, 1));
break;
}
}
return htmltext;
}
private String giveMinion(Player player, String event, int couponId, int eventCouponId)
{
String htmltext = null;
if (!hasAtLeastOneQuestItem(player, couponId, eventCouponId))
{
htmltext = "32478-07.html";
}
else if (hasAtLeastOneQuestItem(player, couponId, eventCouponId))
{
takeItems(player, (hasQuestItems(player, eventCouponId) ? eventCouponId : couponId), 1);
final int minionId = MINION_EXCHANGE.get(event);
giveItems(player, minionId, 1);
final Item summonItem = player.getInventory().getItemByItemId(minionId);
final IItemHandler handler = ItemHandler.getInstance().getHandler(summonItem.getEtcItem());
if ((handler != null) && !player.hasPet())
{
handler.useItem(player, summonItem, true);
}
htmltext = "32478-08.html";
}
return htmltext;
}
@RegisterEvent(EventType.ON_PLAYER_BYPASS)
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
public void onPlayerBypass(OnPlayerBypass event)
{
final Player player = event.getPlayer();
if (event.getCommand().startsWith(COMMAND_BYPASS))
{
notifyEvent(event.getCommand().replace(COMMAND_BYPASS, ""), null, player);
}
}
public static void main(String[] args)
{
new GameAssistant();
}
}
подправил из темы вашей, работает спасибо большое !Только если вы Гуру реверса и сможете в клиенте заменить данные пакета который отправляются на сервер и вписав туда вместо ноля char I'd, ибо вот этот логгер идёт со стороны приёма клиентского пакета, а не где либо ещё. Актуальные пакетные данные у мобиуса оказались протухшими.