
l2jkain
Members-
Posts
207 -
Credits
0 -
Joined
-
Last visited
-
Feedback
0%
Content Type
Articles
Profiles
Forums
Store
Everything posted by l2jkain
-
Help Html teleport aCis
l2jkain replied to l2jkain's question in Request Server Development Help [L2J]
I want to define for all Gatekeeper I wrote this more I came across it msg = "811; Town of Oren" in all htmls has this string msg = "" I want to add the has inside this string but I do not know where it is if (getTemplate().isType("Gatekeeper")) player.sendPacket(new ConfirmDlg(SystemMessageId.WILL_BE_MOVED).addString(getTemplate().getName()).addZoneName(player.getPosition()).addTime(15000).addRequesterId(player.getObjectId())); Hello I'm trying to set a team to close https://ibb.co/mh8mRgx -
Hello, which class meets this attribute? msg="811;Rune Township" which is inside the telemetry htmls msg="" <a action="bypass -h npc_%objectId%_goto 1047" msg="811;Rune Township">Rune Township - 57000 Adena</a><br1>
-
Boa noite. Bom meu problema é o seguinte, meu personagem vip tem mais taxas de itens, adena e Exp drop, porém quando os vip players estão caindo em uma festa o outro membro que não é vip ganha a mesma quantidade que o vip player como um show ? Eu uso esse método para definir um player vip isVip () I use this VIP manager
-
Guide Creating (Or Importing) Weapons Using Unreal
l2jkain replied to GLO's topic in Client Development Discussion
Nice share -
Guide Adapting Skills And Effects To Interlude
l2jkain replied to GLO's topic in Client Development Discussion
Nice share -
Hello anyone could help me with this method for aCis? + /** + * Method called to spawn a team flag + * @param teamId as Integer + * @return L2Spawn + */ + private L2Spawn spawnFlag(int teamId) + { + return NpcUtils.spawnSingle(teamId == 1 ? BLUE_NPC_ID : RED_NPC_ID, getConfigs().FLAGS.get(teamId), eventInstance); + } + Cod method jServe /** * Method spawnSingle. * @param npcId int * @param x int * @param y int * @param z int * @return NpcInstance */ public static NpcInstance spawnSingle(int npcId, int x, int y, int z) { return spawnSingle(npcId, new Location(x, y, z, -1), ReflectionManager.DEFAULT, 0); }
-
Help Timed Items aCis
l2jkain replied to l2jkain's question in Request Server Development Help [L2J]
the count is in hours? -
Hello, I'm trying to put some time in some items, however the items added in the config are not saving in my database, would anyone help me solve this? code complete : https://pastebin.com/raw/y3B7Cvfk Class responsible for saving and removing from database package net.sf.l2j.gameserver.data.sql; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; import net.sf.l2j.Config; import net.sf.l2j.L2DatabaseFactory; import net.sf.l2j.gameserver.model.World; import net.sf.l2j.gameserver.model.WorldObject; import net.sf.l2j.gameserver.model.actor.instance.Player; import net.sf.l2j.gameserver.model.item.instance.ItemInstance; import net.sf.l2j.gameserver.network.SystemMessageId; import net.sf.l2j.gameserver.network.serverpackets.ItemList; import net.sf.l2j.gameserver.network.serverpackets.SystemMessage; import net.sf.l2j.gameserver.taskmanager.ItemsTaskManager; public class TimedItemTable public final Map<Integer, Info> _timedItems = new ConcurrentHashMap<>(); { private static Logger _log = Logger.getLogger(TimedItemTable.class.getName()); public class Info { int _charId; int _itemId; long _activationTime; } public static final TimedItemTable getInstance() { return SingletonHolder._instance; } private static class SingletonHolder { protected static final TimedItemTable _instance = new TimedItemTable(); } public TimedItemTable() { restore(); _startControlTask.schedule(60000); } public boolean getActiveTimed(Player player, boolean trade) { for (Info i : _timedItems.values()) { if ((i != null) && (i._charId == player.getObjectId())) { ItemInstance item = player.getInventory().getItemByObjectId(i._itemId); if (item != null) { if (System.currentTimeMillis() < i._activationTime) return true; } } } return false; } public synchronized void destroy(ItemInstance item) { Info inf = _timedItems.get(item.getObjectId()); if (inf != null) { _timedItems.remove(inf._itemId); try (Connection con = L2DatabaseFactory.getInstance().getConnection()) { PreparedStatement statement = con.prepareStatement("DELETE FROM character_timed_items WHERE charId = ? AND itemId = ?"); statement.setInt(1, inf._charId); statement.setInt(2, inf._itemId); statement.execute(); statement.close(); } catch (Exception e) { e.printStackTrace(); } } } public synchronized void setTimed(ItemInstance item) { Info inf = _timedItems.get(item.getObjectId()); if (inf != null) inf._charId = item.getOwnerId(); else { inf = new Info(); inf._activationTime = (System.currentTimeMillis() / 1000) + (Config.TIMED_ITEM_TIME * 60); inf._charId = item.getOwnerId(); inf._itemId = item.getObjectId(); _timedItems.put(inf._itemId, inf); } saveToDb(inf); } public boolean isActive(ItemInstance item) { for (Info i : _timedItems.values()) { if (i._itemId == item.getObjectId()) return true; } return false; } private void restore() { try (Connection con = L2DatabaseFactory.getInstance().getConnection()) { PreparedStatement statement = con.prepareStatement("SELECT charId, itemId, time FROM character_timed_items"); ResultSet rs = statement.executeQuery(); while (rs.next()) { Info inf = new Info(); inf._activationTime = rs.getLong("time"); inf._charId = rs.getInt("charId"); inf._itemId = rs.getInt("itemId"); _timedItems.put(inf._itemId, inf); } rs.close(); statement.close(); _log.info("loaded " + _timedItems.size() + " Timed Items "); } catch (Exception e) { e.printStackTrace(); } } @SuppressWarnings("resource") private static void saveToDb(Info temp) { try (Connection con = L2DatabaseFactory.getInstance().getConnection()) { PreparedStatement statement = con.prepareStatement("UPDATE character_timed_items set charId = ? where itemId = ?"); statement.setInt(1, temp._charId); statement.setInt(2, temp._itemId); if (statement.executeUpdate() == 0) { statement = con.prepareStatement("INSERT INTO character_timed_items (charId, itemId, time) VALUES (?, ?, ?)"); statement.setInt(1, temp._charId); statement.setInt(2, temp._itemId); statement.setLong(3, temp._activationTime); statement.execute(); statement.close(); } } catch (Exception e) { e.printStackTrace(); } } @SuppressWarnings("resource") public void delete(Info temp) { _timedItems.remove(temp._itemId); try (Connection con = L2DatabaseFactory.getInstance().getConnection()) { PreparedStatement statement = con.prepareStatement("DELETE FROM character_timed_items WHERE charId =? AND itemId =?"); statement.setInt(1, temp._charId); statement.setInt(2, temp._itemId); statement.execute(); } catch (Exception e) { e.printStackTrace(); } Player player = World.getInstance().getPlayer(temp._charId); if (player != null) { ItemInstance item = player.getInventory().getItemByObjectId(temp._itemId); if (item.isEquipped()) player.getInventory().unEquipItemInSlot(item.getLocationSlot()); player.getInventory().destroyItem("timeLost", item, player, player); player.sendPacket(new ItemList(player, false)); player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED).addItemName(item.getItemId())); } else { try (Connection con = L2DatabaseFactory.getInstance().getConnection();) { if (temp._charId != 0) { try (PreparedStatement statement = con.prepareStatement("DELETE FROM items WHERE owner_id = ? AND object_id = ?");) { statement.setInt(1, temp._charId); statement.setInt(2, temp._itemId); statement.execute(); statement.close(); } } else { for (WorldObject o : World.getInstance().getObjects()) { if (o.getObjectId() == temp._itemId) { World.getInstance().removeObject(o); break; } } } } catch (Exception e) { e.printStackTrace(); } } } private final ItemsTaskManager _startControlTask = new ItemsTaskManager() { @Override protected void onElapsed() { for (Info temp : _timedItems.values()) { if (temp._activationTime < (System.currentTimeMillis() / 1000)) delete(temp); } schedule(60000); } }; }
-
nice share
-
Help Olympics Update aCis
l2jkain replied to l2jkain's question in Request Server Development Help [L2J]
I want it to update x minutes and not every 24 hours -
How do I get the rank of the Olympics to update in real time?
-
Hello, I would like to deploy a custom Scroll to highlight any "Grid" Use Hasha's enchant system by xml https://pastebin.com/raw/eZmEK1X1
-
only shows this does not show error in console
-
hello whenever I'm going to compile my project be with this error.
-
24
-
save as in vector?
-
Hi, does anyone help me with this? I'm trying to set a color on the times of my tvt! so it was done to define team colors public static void prepareNameAndTitle() { for (Player player : _teams[0].getParticipatedPlayers().values()) { if (player != null) { player.getAppearance().setTitleColor(Config.TVT_EVENT_TEAM_TEAM_BLUE_COLOR); player.getAppearance().setNameColor(Config.TVT_EVENT_TEAM_TEAM_BLUE_COLOR); } } for (Player player : _teams[1].getParticipatedPlayers().values()) { if (player != null) { player.getAppearance().setTitleColor(Config.TVT_EVENT_TEAM_TEAM_RED_COLOR); player.getAppearance().setNameColor(Config.TVT_EVENT_TEAM_TEAM_RED_COLOR); } } } when the event is over I was forced to use it to exit the colors of TVT for (TvTEventTeam team : _teams) { for (Player player : team.getParticipatedPlayers().values()) { // Check for nullpointer if (player != null) { player.clearEventScore(); player.getAppearance().setTitleColor(0xFFFF77); player.getAppearance().setNameColor(0xFFFFFF); // Teleport back. new TvTEventTeleporter(player, (player.getTeam() == 1 ? Config.TVT_EVENT_PARTICIPATION_NPC_LOCATION : Config.TVT_EVENT_PARTICIPATION_NPC_LOCATION), false); } } } I do not restore the original colors because I am setting the white color as soon as I exit the tvt how can I define each team and a color in charinfo and userinfo
-
Help Update Kill in Title aCis
l2jkain replied to l2jkain's question in Request Server Development Help [L2J]
sorted out -
Help Update Kill in Title aCis
l2jkain replied to l2jkain's question in Request Server Development Help [L2J]
even adding here does not work / Count the private kill killer.increaseEventScore(); killer.sendPacket(new PlaySound(0, "ItemSound.quest_itemget")); +killer.broadcastUserInfo(); -
Help Update Kill in Title aCis
l2jkain replied to l2jkain's question in Request Server Development Help [L2J]
-
Hello, I would like a help with a bug in my tvt event. The title of the participants does not update the kills in the titles. Code Add : UserInfo.java writeS((_activeChar.getPolyType() != PolyType.DEFAULT) ? "Morphed" : _activeChar.getTitle()); for writeS((_activeChar.getPolyType() != PolyType.DEFAULT) ? "Morphed" : _activeChar.isInEvent() ? "Kills: " + _activeChar.getEventScore() : _activeChar.getTitle()); CharInfo.java if (gmSeeInvis) writeS("Invisible"); else writeS(_activeChar.getTitle()); for if (gmSeeInvis) writeS("Invisible"); else writeS(_activeChar.isInEvent() ? "Kills: " + _activeChar.getEventScore() : _activeChar.getTitle()); Did I do something wrong?
-
Hi all, I have a html file that I have set in npc without a directory of this error, can anyone help me? Why does not a direct HTML work in here? No Directory. package net.sf.l2j.gameserver.model.actor.instance; import java.util.StringTokenizer; import net.sf.l2j.gameserver.data.xml.AugmentationData; import net.sf.l2j.gameserver.model.L2Augmentation; import net.sf.l2j.gameserver.model.actor.template.NpcTemplate; import net.sf.l2j.gameserver.model.item.instance.ItemInstance; import net.sf.l2j.gameserver.model.item.type.WeaponType; import net.sf.l2j.gameserver.network.SystemMessageId; import net.sf.l2j.gameserver.network.serverpackets.ActionFailed; import net.sf.l2j.gameserver.network.serverpackets.ExShowScreenMessage; import net.sf.l2j.gameserver.network.serverpackets.ExShowScreenMessage.SMPOS; import net.sf.l2j.gameserver.network.serverpackets.ExVariationCancelResult; import net.sf.l2j.gameserver.network.serverpackets.ExVariationResult; import net.sf.l2j.gameserver.network.serverpackets.InventoryUpdate; import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage; import net.sf.l2j.gameserver.network.serverpackets.SkillList; import net.sf.l2j.gameserver.network.serverpackets.StatusUpdate; import net.sf.l2j.gameserver.network.serverpackets.SystemMessage; /** * @author AbsolutePower * */ public class FastAug extends Folk { public FastAug(int objectId, NpcTemplate template) { super(objectId, template); } @Override public void onBypassFeedback(Player player, String command) { if (player == null) return; final StringTokenizer st = new StringTokenizer(command, " "); final String currentcommand = st.nextToken(); final String letsSliptIt = currentcommand; final String[] nowTheId = letsSliptIt.split("-"); final String OurSplititCommand = nowTheId[0]; final String FinallyWeHaveObjectId = nowTheId[1]; if(OurSplititCommand.startsWith("showremlist")) showListWindowForRemove(player); else if(OurSplititCommand.startsWith("showauglist")) showListWindow(player); else if(OurSplititCommand.startsWith("tryremove")) { final ItemInstance item = player.getInventory().getItemByObjectId(Integer.parseInt(FinallyWeHaveObjectId)); if (item == null) return; if (item.isEquipped()) { player.disarmWeapons(); player.broadcastUserInfo(); } item.removeAugmentation(); player.sendPacket(new ExVariationCancelResult(1)); InventoryUpdate iu = new InventoryUpdate(); iu.addModifiedItem(item); player.sendPacket(iu); player.sendPacket(new SkillList()); player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.AUGMENTATION_HAS_BEEN_SUCCESSFULLY_REMOVED_FROM_YOUR_S1).addItemName(item)); showListWindowForRemove(player); player.sendPacket(ActionFailed.STATIC_PACKET); } else if(OurSplititCommand.startsWith("tryaug")) { if (player.getInventory().getInventoryItemCount(57, 0) < 200000) { player.sendMessage("You do not have enough adena!"); player.sendPacket(ActionFailed.STATIC_PACKET); return; } final ItemInstance item = player.getInventory().getItemByObjectId(Integer.parseInt(FinallyWeHaveObjectId)); if (item == null) return; if (item.isEquipped()) { player.disarmWeapons(); player.broadcastUserInfo(); } final L2Augmentation aug = AugmentationData.getInstance().generateRandomAugmentation(2, 2); item.setAugmentation(aug); final int stat12 = 0x0000FFFF & aug.getAugmentationId(); final int stat34 = aug.getAugmentationId() >> 16; player.sendPacket(new ExVariationResult(stat12, stat34, 1)); InventoryUpdate iu = new InventoryUpdate(); iu.addModifiedItem(item); player.sendPacket(iu); StatusUpdate su = new StatusUpdate(player); su.addAttribute(StatusUpdate.CUR_LOAD, player.getCurrentLoad()); player.sendPacket(su); showListWindow(player); player.getInventory().reduceAdena("FastAugh", 200000, player, null); player.sendPacket(SystemMessageId.THE_ITEM_WAS_SUCCESSFULLY_AUGMENTED); if (item.getAugmentation().getSkill()!=null) { player.sendPacket(new ExShowScreenMessage("You have " + item.getAugmentation().getSkill().getName(), 5000, SMPOS.TOP_CENTER, true)); player.sendPacket(new SkillList()); } player.sendPacket(ActionFailed.STATIC_PACKET); } super.onBypassFeedback(player, command); } public void showListWindow(Player player) { NpcHtmlMessage nhm = new NpcHtmlMessage(5); StringBuilder tb = new StringBuilder(""); String Rem = "RemoveAug"; tb.append("<html><head><title>By AbsolutePower</title></head><body>"); tb.append("<center>"); tb.append("<table width=\"250\" cellpadding=\"5\" bgcolor=\"000000\">"); tb.append("<tr>"); tb.append("<td width=\"45\" valign=\"top\" align=\"center\"><img src=\"L2ui_ch3.menubutton4\" width=\"38\" height=\"38\"></td>"); tb.append("<td valign=\"top\"><font color=\"FF6600\">AugmentHelper</font>"); tb.append("<br1><font color=\"00FF00ju\">" + player.getName() + "</font>, use this menu for fast augment :)<br1></td>"); tb.append("</tr>"); tb.append("</table>"); tb.append("</center>"); tb.append("<center>"); tb.append("<br>"); for (ItemInstance item : player.getInventory().getItems()) { if (!item.isAugmented() && item.getItemType() instanceof WeaponType && item.isEquipable() && !item.isQuestItem()) { tb.append("<button value=\""+item.getItemName()+"\" action=\"bypass -h npc_" + getObjectId() + "_tryaug-"+item.getObjectId()+"\" width=204 height=20 back=\"sek.cbui75\" fore=\"sek.cbui75\"><br>"); tb.append("<table border=0 width=\"100%\">"); tb.append("<tr><td><img src=\""+ item.getItem().getIcon()+"\"width=\"32\"height=\"32\"></td>" +"<td>"+"<button value=\""+item.getItemName()+"\" action=\"bypass -h npc_"+getObjectId()+"_tryaug-"+item.getObjectId()+"\"width=204 height=21 back=\"sek.cbui75\" fore=\"sek.cbui75\"><br>"+"</td>"+"<td>+"+item.getEnchantLevel()+"</td></tr></table>"); } } tb.append("<br>"); tb.append("<button value=\""+Rem+"\" action=\"bypass -h npc_" + getObjectId() + "_showremlist-1"+"\" width=204 height=20 back=\"sek.cbui75\" fore=\"sek.cbui75\"><br>"); tb.append("</center>"); tb.append("</body></html>"); nhm.setHtml(tb.toString()); player.sendPacket(nhm); } public void showListWindowForRemove(Player player) { NpcHtmlMessage nhm = new NpcHtmlMessage(5); StringBuilder tb = new StringBuilder(""); String Rem = "GobackToAugList"; tb.append("<html><head><title>By AbsolutePower</title></head><body>"); tb.append("<center>"); tb.append("<table width=\"250\" cellpadding=\"5\" bgcolor=\"000000\">"); tb.append("<tr>"); tb.append("<td width=\"45\" valign=\"top\" align=\"center\"><img src=\"L2ui_ch3.menubutton4\" width=\"38\" height=\"38\"></td>"); tb.append("<td valign=\"top\"><font color=\"FF6600\">AugmentHelper</font>"); tb.append("<br1><font color=\"00FF00ju\">" + player.getName() + "</font>, use this menu for fast augment :)<br1></td>"); tb.append("</tr>"); tb.append("</table>"); tb.append("</center>"); tb.append("<center>"); tb.append("<br>"); for (ItemInstance item : player.getInventory().getItems()) { if (item.isAugmented() && item.getItemType() instanceof WeaponType && item.isEquipable() && !item.isQuestItem()) { tb.append("<button value=\""+item.getItemName()+"\" action=\"bypass -h npc_" + getObjectId() + "_tryremove-"+item.getObjectId()+"\" width=204 height=20 back=\"sek.cbui75\" fore=\"sek.cbui75\"><br>"); tb.append("<table border=0 width=\"100%\">"); tb.append("<tr><td><img src=\""+ item.getItem().getIcon() +"\"width=\"32\"height=\"32\"></td>" +"<td>"+"<button value=\""+ item.getItemName() +"\" action=\"bypass -h npc_" +getObjectId()+ "_tryaug-"+item.getObjectId()+"\"width=204 height=21 back=\"sek.cbui75\" fore=\"sek.cbui75\"><br>"+"</td>"+"<td>+"+item.getEnchantLevel()+"</td></tr></table>"); } } tb.append("<br>"); tb.append("<button value=\""+Rem+"\" action=\"bypass -h npc_" + getObjectId() + "_showauglist-1"+"\" width=204 height=20 back=\"sek.cbui75\" fore=\"sek.cbui75\"><br>"); tb.append("</center>"); tb.append("</body></html>"); nhm.setHtml(tb.toString()); player.sendPacket(nhm); } }
-
Hello, I would like to know how I always do when a player opens a multisel from a merchant does not close the HTM. I did it but it did not work. ### Eclipse Workspace Patch 1.0 #P aCis_gameserver Index: java/net/sf/l2j/gameserver/network/clientpackets/MultiSellChoose.java =================================================================== --- java/net/sf/l2j/gameserver/network/clientpackets/MultiSellChoose.java (revision 7) +++ java/net/sf/l2j/gameserver/network/clientpackets/MultiSellChoose.java (working copy) @@ -70,7 +70,7 @@ return; } - if (folk != null && !folk.canInteract(player)) + if (!player.isGM() && !player.isMultisell() && folk != null && !folk.canInteract(player)) { player.setMultiSell(null); return; Index: java/net/sf/l2j/gameserver/model/actor/instance/Player.java =================================================================== --- java/net/sf/l2j/gameserver/model/actor/instance/Player.java (revision 7) +++ java/net/sf/l2j/gameserver/model/actor/instance/Player.java (working copy) @@ -621,6 +621,8 @@ private int _KillerTarget = 0; + private boolean _isMultisell = false; + /** * Constructor of Player (use Creature constructor). * <ul> @@ -3584,6 +3586,16 @@ _currentMultiSell = list; } + public void setMultisell(boolean b) + { + _isMultisell = b; + } + + public boolean isMultisell() + { + return _isMultisell; + } + @Override public void setTarget(WorldObject newTarget) { Index: java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java =================================================================== --- java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java (revision 7) +++ java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java (working copy) @@ -112,6 +112,8 @@ { if (!player.validateBypass(_command)) return; + + player.setMultisell(false); int endOfId = _command.indexOf('_', 5); String id;
-
Hi, I was wondering if this would be correct because that makes my code not work CharNameTable.getInstance().doesCharNameExist(playerName) for PlayerInfoTable.getInstance().getPlayerObjectId(playerName) > 0
-
Help Drop Item Enchanted aCis
l2jkain replied to l2jkain's question in Request Server Development Help [L2J]
thanks for the help I give up trying to do can close the topic