TA的每日心情 | 擦汗 前天 07:13 |
|---|
签到天数: 414 天 [LV.9]以坛为家II
论坛元老
 
- 积分
- 7236
|
本帖最后由 newgames001 于 2025-9-27 21:07 编辑
注意:这个是最新莫比芙蕾雅JDK25环境下写的其他旧版本自行试验修改。
第一步:CustomTeleport.java
复制到
L2J_Mobius_CT_2.6_HighFive\game\data\scripts\handlers\bypasshandlers
目录下
第二步:L2J_Mobius_CT_2.6_HighFive\game\data\scripts\handlers\MasterHandler.java
打开修改
1-找到
import handlers.bypasshandlers.ClanWarehouse;
在下面添加一行
import handlers.bypasshandlers.CSPlayerPartyTeleport;
2-找到
ClanWarehouse.class,
在下面添加一行
CSPlayerPartyTeleport.class,
---------------------------------------------------------------------------------------完成代码修改
下面是HTM使用例子:
单人:bypass -h csplayer_tele 82698 148638 -3473 57 10000
组队:bypass -h csparty_tele 82687 243157 -3734 57 10000
注意:
单人是 csplayer_tele
组队是 csparty_tele
CustomTeleport.java文件内容
package handlers.bypasshandlers;
import java.util.StringTokenizer;
import org.l2jmobius.gameserver.handler.IBypassHandler;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.item.instance.ItemInstance;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
public class CustomTeleport implements IBypassHandler
{
private static final String[] COMMANDS = {
"csplayer_",
"csparty_"
};
@Override
public boolean onCommand(String command, Player player, Creature bypassOrigin)
{
try
{
// 解析命令参数
StringTokenizer st = new StringTokenizer(command.substring(command.indexOf('_') + 1));
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
int z = Integer.parseInt(st.nextToken());
int itemId = Integer.parseInt(st.nextToken());
int itemCount = Integer.parseInt(st.nextToken());
// 检查玩家是否有足够的物品
ItemInstance item = player.getInventory().getItemByItemId(itemId);
if (item == null || item.getCount() < itemCount)
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_REQUIRED_ITEMS));
return false;
}
// 扣除物品
player.destroyItemByItemId("Teleport", itemId, itemCount, player, true);
Location loc = new Location(x, y, z);
// 根据命令类型执行单人传送或组队传送
if (command.startsWith("csplayer_"))
{
// 单人传送
player.teleToLocation(loc);
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.TELEPORTATION_COMPLETE));
}
else if (command.startsWith("csparty_"))
{
// 组队传送
if (player.isInParty())
{
for (Player member : player.getParty().getMembers())
{
if (member.isOnline() && !member.isDead() && member.getDistance(player) <= 1000)
{
member.teleToLocation(loc);
member.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.TELEPORTATION_COMPLETE));
}
}
}
else
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_ARE_NOT_IN_A_PARTY));
// 退还物品
player.addItem("Refund", itemId, itemCount, player, true);
return false;
}
}
return true;
}
catch (Exception e)
{
player.sendMessage("传送指令格式错误,请检查参数!");
e.printStackTrace();
return false;
}
}
@Override
public String[] getCommandList()
{
return COMMANDS;
}
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|