קוד:
else if (splitted[0].equals("!playernpc")) {
int scriptId = Integer.parseInt(splitted[2]);
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
int npcId;
if (splitted.length != 3) {
mc.dropMessage("Pleaase use the correct syntax. !playernpc <char name> <script name>");
} else if (scriptId < 9901000 || scriptId > 9901319) {
mc.dropMessage("Please enter a script name between 9901000 and 9901319");
} else if (victim == null) {
mc.dropMessage("The character is not in this channel");
} else {
try {
Connection con = DatabaseConnection.getConnection();
PreparedStatement ps = con.prepareStatement("SELECT * FROM playernpcs WHERE ScriptId = ?");
ps.setInt(1, scriptId);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
mc.dropMessage("The script id is already in use !");
rs.close();
} else {
rs.close();
ps = con.prepareStatement("INSERT INTO playernpcs (name, hair, face, skin, x, cy, map, ScriptId, Foothold, rx0, rx1, gender, dir) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
ps.setString(1, victim.getName());
ps.setInt(2, victim.getHair());
ps.setInt(3, victim.getFace());
ps.setInt(4, victim.getSkinColor().getId());
ps.setInt(5, player.getPosition().x);
ps.setInt(6, player.getPosition().y);
ps.setInt(7, player.getMapId());
ps.setInt(8, scriptId);
ps.setInt(9, player.getMap().getFootholds().findBelow(player.getPosition()).getId());
ps.setInt(10, player.getPosition().x + 50); // I should really remove rx1 rx0. Useless piece of douche
ps.setInt(11, player.getPosition().x - 50);
ps.setInt(12, victim.getGender());
ps.setInt(13, player.isFacingLeft() ? 0 : 1);
ps.executeUpdate();
rs = ps.getGeneratedKeys();
rs.next();
npcId = rs.getInt(1);
ps.close();
ps = con.prepareStatement("INSERT INTO playernpcs_equip (NpcId, equipid, equippos) VALUES (?, ?, ?)");
ps.setInt(1, npcId);
for (IItem equip : victim.getInventory(MapleInventoryType.EQUIPPED)) {
ps.setInt(2, equip.getItemId());
ps.setInt(3, equip.getPosition());
ps.executeUpdate();
}
ps.close();
rs.close();
ps = con.prepareStatement("SELECT * FROM playernpcs WHERE ScriptId = ?");
ps.setInt(1, scriptId);
rs = ps.executeQuery();
rs.next();
PlayerNPCs pn = new PlayerNPCs(rs);
for (ChannelServer channel : ChannelServer.getAllInstances()) {
MapleMap map = channel.getMapFactory().getMap(player.getMapId());
map.broadcastMessage(MaplePacketCreator.SpawnPlayerNPC(pn));
map.broadcastMessage(MaplePacketCreator.getPlayerNPC(pn));
map.addMapObject(pn);
}
}
ps.close();
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}