Fixed RequestGMCommand not working on targets.

This commit is contained in:
MobiusDevelopment
2021-10-24 13:18:11 +00:00
parent 8fc5e8f3fc
commit 7c4f31076d
4 changed files with 78 additions and 36 deletions

View File

@@ -17,8 +17,10 @@
package org.l2jmobius.gameserver.network.clientpackets; package org.l2jmobius.gameserver.network.clientpackets;
import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.data.sql.ClanTable;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.clan.Clan;
import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.serverpackets.GMViewCharacterInfo; import org.l2jmobius.gameserver.network.serverpackets.GMViewCharacterInfo;
import org.l2jmobius.gameserver.network.serverpackets.GMViewHennaInfo; import org.l2jmobius.gameserver.network.serverpackets.GMViewHennaInfo;
@@ -38,17 +40,23 @@ public class RequestGMCommand implements IClientIncomingPacket
{ {
_targetName = packet.readS(); _targetName = packet.readS();
_command = packet.readD(); _command = packet.readD();
// _unknown = packet.readD();
return true; return true;
} }
@Override @Override
public void run(GameClient client) public void run(GameClient client)
{ {
final PlayerInstance player = World.getInstance().getPlayer(_targetName); // Prevent non GM or low level GMs from view.
if (!client.getPlayer().isGM() || !client.getPlayer().getAccessLevel().allowAltG())
{
return;
}
// prevent non GM or low level GMs from vieweing player stuff final PlayerInstance player = World.getInstance().getPlayer(_targetName);
if ((player == null) || !player.getAccessLevel().allowAltG()) final Clan clan = ClanTable.getInstance().getClanByName(_targetName);
// Player name was incorrect.
if ((player == null) && ((clan == null) || (_command != 6)))
{ {
return; return;
} }
@@ -57,38 +65,45 @@ public class RequestGMCommand implements IClientIncomingPacket
{ {
case 1: // player status case 1: // player status
{ {
player.sendPacket(new GMViewCharacterInfo(player)); client.sendPacket(new GMViewCharacterInfo(player));
player.sendPacket(new GMViewHennaInfo(player)); client.sendPacket(new GMViewHennaInfo(player));
break; break;
} }
case 2: // player clan case 2: // player clan
{ {
if (player.getClan() != null) if ((player != null) && (player.getClan() != null))
{ {
player.sendPacket(new GMViewPledgeInfo(player.getClan(), player)); client.sendPacket(new GMViewPledgeInfo(player.getClan(), player));
} }
break; break;
} }
case 3: // player skills case 3: // player skills
{ {
player.sendPacket(new GMViewSkillInfo(player)); client.sendPacket(new GMViewSkillInfo(player));
break; break;
} }
case 4: // player quests case 4: // player quests
{ {
player.sendPacket(new GMViewQuestList(player)); client.sendPacket(new GMViewQuestList(player));
break; break;
} }
case 5: // player inventory case 5: // player inventory
{ {
player.sendPacket(new GMViewItemList(player)); client.sendPacket(new GMViewItemList(player));
player.sendPacket(new GMViewHennaInfo(player)); client.sendPacket(new GMViewHennaInfo(player));
break; break;
} }
case 6: // player warehouse case 6: // player warehouse
{ {
// GM warehouse view to be implemented // GM warehouse view to be implemented
player.sendPacket(new GMViewWarehouseWithdrawList(player)); if (player != null)
{
client.sendPacket(new GMViewWarehouseWithdrawList(player));
}
else // clan warehouse
{
client.sendPacket(new GMViewWarehouseWithdrawList(clan));
}
break; break;
} }
} }

View File

@@ -20,6 +20,7 @@ import java.util.Collection;
import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.clan.Clan;
import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.Item;
import org.l2jmobius.gameserver.model.items.Weapon; import org.l2jmobius.gameserver.model.items.Weapon;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
@@ -33,15 +34,20 @@ public class GMViewWarehouseWithdrawList implements IClientOutgoingPacket
{ {
private final Collection<ItemInstance> _items; private final Collection<ItemInstance> _items;
private final String _playerName; private final String _playerName;
private final PlayerInstance _player;
private final int _money; private final int _money;
public GMViewWarehouseWithdrawList(PlayerInstance player) public GMViewWarehouseWithdrawList(PlayerInstance player)
{ {
_player = player; _items = player.getWarehouse().getItems();
_items = _player.getWarehouse().getItems(); _playerName = player.getName();
_playerName = _player.getName(); _money = player.getAdena();
_money = _player.getAdena(); }
public GMViewWarehouseWithdrawList(Clan clan)
{
_playerName = clan.getLeaderName();
_items = clan.getWarehouse().getItems();
_money = clan.getWarehouse().getAdena();
} }
@Override @Override

View File

@@ -17,8 +17,10 @@
package org.l2jmobius.gameserver.network.clientpackets; package org.l2jmobius.gameserver.network.clientpackets;
import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.data.sql.ClanTable;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.clan.Clan;
import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.serverpackets.GMViewCharacterInfo; import org.l2jmobius.gameserver.network.serverpackets.GMViewCharacterInfo;
import org.l2jmobius.gameserver.network.serverpackets.GMViewHennaInfo; import org.l2jmobius.gameserver.network.serverpackets.GMViewHennaInfo;
@@ -38,17 +40,23 @@ public class RequestGMCommand implements IClientIncomingPacket
{ {
_targetName = packet.readS(); _targetName = packet.readS();
_command = packet.readD(); _command = packet.readD();
// _unknown = packet.readD();
return true; return true;
} }
@Override @Override
public void run(GameClient client) public void run(GameClient client)
{ {
final PlayerInstance player = World.getInstance().getPlayer(_targetName); // Prevent non GM or low level GMs from view.
if (!client.getPlayer().isGM() || !client.getPlayer().getAccessLevel().allowAltG())
{
return;
}
// prevent non GM or low level GMs from vieweing player stuff final PlayerInstance player = World.getInstance().getPlayer(_targetName);
if ((player == null) || !player.getAccessLevel().allowAltG()) final Clan clan = ClanTable.getInstance().getClanByName(_targetName);
// Player name was incorrect.
if ((player == null) && ((clan == null) || (_command != 6)))
{ {
return; return;
} }
@@ -57,38 +65,45 @@ public class RequestGMCommand implements IClientIncomingPacket
{ {
case 1: // player status case 1: // player status
{ {
player.sendPacket(new GMViewCharacterInfo(player)); client.sendPacket(new GMViewCharacterInfo(player));
player.sendPacket(new GMViewHennaInfo(player)); client.sendPacket(new GMViewHennaInfo(player));
break; break;
} }
case 2: // player clan case 2: // player clan
{ {
if (player.getClan() != null) if ((player != null) && (player.getClan() != null))
{ {
player.sendPacket(new GMViewPledgeInfo(player.getClan(), player)); client.sendPacket(new GMViewPledgeInfo(player.getClan(), player));
} }
break; break;
} }
case 3: // player skills case 3: // player skills
{ {
player.sendPacket(new GMViewSkillInfo(player)); client.sendPacket(new GMViewSkillInfo(player));
break; break;
} }
case 4: // player quests case 4: // player quests
{ {
player.sendPacket(new GMViewQuestList(player)); client.sendPacket(new GMViewQuestList(player));
break; break;
} }
case 5: // player inventory case 5: // player inventory
{ {
player.sendPacket(new GMViewItemList(player)); client.sendPacket(new GMViewItemList(player));
player.sendPacket(new GMViewHennaInfo(player)); client.sendPacket(new GMViewHennaInfo(player));
break; break;
} }
case 6: // player warehouse case 6: // player warehouse
{ {
// GM warehouse view to be implemented // GM warehouse view to be implemented
player.sendPacket(new GMViewWarehouseWithdrawList(player)); if (player != null)
{
client.sendPacket(new GMViewWarehouseWithdrawList(player));
}
else // clan warehouse
{
client.sendPacket(new GMViewWarehouseWithdrawList(clan));
}
break; break;
} }
} }

View File

@@ -20,6 +20,7 @@ import java.util.Collection;
import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.clan.Clan;
import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.Item;
import org.l2jmobius.gameserver.model.items.Weapon; import org.l2jmobius.gameserver.model.items.Weapon;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
@@ -33,15 +34,20 @@ public class GMViewWarehouseWithdrawList implements IClientOutgoingPacket
{ {
private final Collection<ItemInstance> _items; private final Collection<ItemInstance> _items;
private final String _playerName; private final String _playerName;
private final PlayerInstance _player;
private final int _money; private final int _money;
public GMViewWarehouseWithdrawList(PlayerInstance player) public GMViewWarehouseWithdrawList(PlayerInstance player)
{ {
_player = player; _items = player.getWarehouse().getItems();
_items = _player.getWarehouse().getItems(); _playerName = player.getName();
_playerName = _player.getName(); _money = player.getAdena();
_money = _player.getAdena(); }
public GMViewWarehouseWithdrawList(Clan clan)
{
_playerName = clan.getLeaderName();
_items = clan.getWarehouse().getItems();
_money = clan.getWarehouse().getAdena();
} }
@Override @Override