-
Posts
214 -
Credits
0 -
Joined
-
Last visited
-
Feedback
100%
Content Type
Articles
Profiles
Forums
Store
Everything posted by dymek1984
-
is possible to change adena for other item for bid? example ancient adena if yes how to do that? i look in: AuctionItem.java ItemAuction.java ItemAuctionInstance.java ExItemAuctionInfoPacket.java and other files where i found itemauction but nothing about Adena or ID "57" i have custom currency on my server and adena is worth nothing ;/ so good for me will be change here adena for custom currency.
-
Show Message When Enchanting About Chance
dymek1984 replied to dymek1984's question in Request Server Development Help [L2J]
Thx man for tip but that does not help me, chance cannot be resolved to a variable and ExShowScreenMessage cannot be resolved to a type. and i dont know about java, so i need little help ho to do that. -
Show Message When Enchanting About Chance
dymek1984 posted a question in Request Server Development Help [L2J]
Hi everybody, can someone help me with put this: activeChar.sendPacket(new ExShowScreenMessage("you have" + chance + "for this enchant", 3000)); in Request EnchantItem.java /* * Copyright (C) 2004-2013 L2J Server * * This file is part of L2J Server. * * L2J Server is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * L2J Server is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.l2jserver.gameserver.network.clientpackets; import java.util.logging.Level; import java.util.logging.LogRecord; import java.util.logging.Logger; import com.l2jserver.Config; import com.l2jserver.gameserver.datatables.EnchantItemData; import com.l2jserver.gameserver.datatables.SkillTable; import com.l2jserver.gameserver.model.EnchantItem; import com.l2jserver.gameserver.model.EnchantScroll; import com.l2jserver.gameserver.model.L2World; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.items.L2Armor; import com.l2jserver.gameserver.model.items.L2Item; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; import com.l2jserver.gameserver.model.skills.L2Skill; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.EnchantResult; import com.l2jserver.gameserver.network.serverpackets.InventoryUpdate; import com.l2jserver.gameserver.network.serverpackets.ItemList; import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse; import com.l2jserver.gameserver.network.serverpackets.StatusUpdate; import com.l2jserver.gameserver.network.serverpackets.SystemMessage; import com.l2jserver.gameserver.util.Util; import com.l2jserver.util.Rnd; public final class RequestEnchantItem extends L2GameClientPacket { protected static final Logger _logEnchant = Logger.getLogger("enchant"); private static final String _C__5F_REQUESTENCHANTITEM = "[C] 5F RequestEnchantItem"; private int _objectId = 0; private int _supportId; @Override protected void readImpl() { _objectId = readD(); _supportId = readD(); } @Override protected void runImpl() { L2PcInstance activeChar = getClient().getActiveChar(); if ((activeChar == null) || (_objectId == 0)) { return; } if (!activeChar.isOnline() || getClient().isDetached()) { activeChar.setActiveEnchantItem(null); return; } if (activeChar.isProcessingTransaction() || activeChar.isInStoreMode()) { activeChar.sendPacket(SystemMessageId.CANNOT_ENCHANT_WHILE_STORE); activeChar.setActiveEnchantItem(null); return; } L2ItemInstance item = activeChar.getInventory().getItemByObjectId(_objectId); L2ItemInstance scroll = activeChar.getActiveEnchantItem(); L2ItemInstance support = activeChar.getActiveEnchantSupportItem(); if ((item == null) || (scroll == null)) { activeChar.setActiveEnchantItem(null); return; } // template for scroll EnchantScroll scrollTemplate = EnchantItemData.getInstance().getEnchantScroll(scroll); // scroll not found in list if (scrollTemplate == null) { return; } // template for support item, if exist EnchantItem supportTemplate = null; if (support != null) { if (support.getObjectId() != _supportId) { activeChar.setActiveEnchantItem(null); return; } supportTemplate = EnchantItemData.getInstance().getSupportItem(support); } // first validation check if (!scrollTemplate.isValid(item, supportTemplate)) { activeChar.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION); activeChar.setActiveEnchantItem(null); activeChar.sendPacket(new EnchantResult(2, 0, 0)); return; } // fast auto-enchant cheat check if ((activeChar.getActiveEnchantTimestamp() == 0) || ((System.currentTimeMillis() - activeChar.getActiveEnchantTimestamp()) < 2000)) { Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " use autoenchant program ", Config.DEFAULT_PUNISH); activeChar.setActiveEnchantItem(null); activeChar.sendPacket(new EnchantResult(2, 0, 0)); return; } // attempting to destroy scroll scroll = activeChar.getInventory().destroyItem("Enchant", scroll.getObjectId(), 1, activeChar, item); if (scroll == null) { activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS); Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " tried to enchant with a scroll he doesn't have", Config.DEFAULT_PUNISH); activeChar.setActiveEnchantItem(null); activeChar.sendPacket(new EnchantResult(2, 0, 0)); return; } // attempting to destroy support if exist if (support != null) { support = activeChar.getInventory().destroyItem("Enchant", support.getObjectId(), 1, activeChar, item); if (support == null) { activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS); Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " tried to enchant with a support item he doesn't have", Config.DEFAULT_PUNISH); activeChar.setActiveEnchantItem(null); activeChar.sendPacket(new EnchantResult(2, 0, 0)); return; } } synchronized (item) { double chance = scrollTemplate.getChance(item, supportTemplate); L2Skill enchant4Skill = null; L2Item it = item.getItem(); // last validation check if ((item.getOwnerId() != activeChar.getObjectId()) || (item.isEnchantable() == 0) || (chance < 0)) { activeChar.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION); activeChar.setActiveEnchantItem(null); activeChar.sendPacket(new EnchantResult(2, 0, 0)); return; } if (Rnd.get(100) < chance) { // success item.setEnchantLevel(item.getEnchantLevel() + 1); item.updateDatabase(); activeChar.sendPacket(new EnchantResult(0, 0, 0)); if (Config.LOG_ITEM_ENCHANTS) { LogRecord record = new LogRecord(Level.INFO, "Success"); record.setParameters(new Object[] { activeChar, item, scroll, support, chance }); record.setLoggerName("item"); _logEnchant.log(record); } // announce the success int minEnchantAnnounce = item.isArmor() ? 6 : 7; int maxEnchantAnnounce = item.isArmor() ? 0 : 15; if ((item.getEnchantLevel() == minEnchantAnnounce) || (item.getEnchantLevel() == maxEnchantAnnounce)) { SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_SUCCESSFULY_ENCHANTED_A_S2_S3); sm.addCharName(activeChar); sm.addNumber(item.getEnchantLevel()); sm.addItemName(item); activeChar.broadcastPacket(sm); L2Skill skill = SkillTable.FrequentSkill.FIREWORK.getSkill(); if (skill != null) { activeChar.broadcastPacket(new MagicSkillUse(activeChar, activeChar, skill.getId(), skill.getLevel(), skill.getHitTime(), skill.getReuseDelay())); } } if ((it instanceof L2Armor) && (item.getEnchantLevel() == 4) && activeChar.getInventory().getItemByObjectId(item.getObjectId()).isEquipped()) { enchant4Skill = ((L2Armor) it).getEnchant4Skill(); if (enchant4Skill != null) { // add skills bestowed from +4 armor activeChar.addSkill(enchant4Skill, false); activeChar.sendSkillList(); } } } else { if (scrollTemplate.isSafe()) { // safe enchant - remain old value activeChar.sendPacket(SystemMessageId.SAFE_ENCHANT_FAILED); activeChar.sendPacket(new EnchantResult(5, 0, 0)); if (Config.LOG_ITEM_ENCHANTS) { LogRecord record = new LogRecord(Level.INFO, "Safe Fail"); record.setParameters(new Object[] { activeChar, item, scroll, support, chance }); record.setLoggerName("item"); _logEnchant.log(record); } } else { // unequip item on enchant failure to avoid item skills stack if (item.isEquipped()) { if (item.getEnchantLevel() > 0) { SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.EQUIPMENT_S1_S2_REMOVED); sm.addNumber(item.getEnchantLevel()); sm.addItemName(item); activeChar.sendPacket(sm); } else { SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISARMED); sm.addItemName(item); activeChar.sendPacket(sm); } L2ItemInstance[] unequiped = activeChar.getInventory().unEquipItemInSlotAndRecord(item.getLocationSlot()); InventoryUpdate iu = new InventoryUpdate(); for (L2ItemInstance itm : unequiped) { iu.addModifiedItem(itm); } activeChar.sendPacket(iu); activeChar.broadcastUserInfo(); } if (scrollTemplate.isBlessed()) { // blessed enchant - clear enchant value activeChar.sendPacket(SystemMessageId.BLESSED_ENCHANT_FAILED); item.setEnchantLevel(0); item.updateDatabase(); activeChar.sendPacket(new EnchantResult(3, 0, 0)); if (Config.LOG_ITEM_ENCHANTS) { LogRecord record = new LogRecord(Level.INFO, "Blessed Fail"); record.setParameters(new Object[] { activeChar, item, scroll, support, chance }); record.setLoggerName("item"); _logEnchant.log(record); } } else { // enchant failed, destroy item int crystalId = item.getItem().getCrystalItemId(); int count = item.getCrystalCount() - ((item.getItem().getCrystalCount() + 1) / 2); if (count < 1) { count = 1; } L2ItemInstance destroyItem = activeChar.getInventory().destroyItem("Enchant", item, activeChar, null); if (destroyItem == null) { // unable to destroy item, cheater ? Util.handleIllegalPlayerAction(activeChar, "Unable to delete item on enchant failure from player " + activeChar.getName() + ", possible cheater !", Config.DEFAULT_PUNISH); activeChar.setActiveEnchantItem(null); activeChar.sendPacket(new EnchantResult(2, 0, 0)); if (Config.LOG_ITEM_ENCHANTS) { LogRecord record = new LogRecord(Level.INFO, "Unable to destroy"); record.setParameters(new Object[] { activeChar, item, scroll, support, chance }); record.setLoggerName("item"); _logEnchant.log(record); } return; } L2ItemInstance crystals = null; if (crystalId != 0) { crystals = activeChar.getInventory().addItem("Enchant", crystalId, count, activeChar, destroyItem); SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.EARNED_S2_S1_S); sm.addItemName(crystals); sm.addItemNumber(count); activeChar.sendPacket(sm); } if (!Config.FORCE_INVENTORY_UPDATE) { InventoryUpdate iu = new InventoryUpdate(); if (destroyItem.getCount() == 0) { iu.addRemovedItem(destroyItem); } else { iu.addModifiedItem(destroyItem); } if (crystals != null) { iu.addItem(crystals); } if (scroll.getCount() == 0) { iu.addRemovedItem(scroll); } else { iu.addModifiedItem(scroll); } activeChar.sendPacket(iu); } else { activeChar.sendPacket(new ItemList(activeChar, true)); } L2World world = L2World.getInstance(); world.removeObject(destroyItem); if (crystalId == 0) { activeChar.sendPacket(new EnchantResult(4, 0, 0)); } else { activeChar.sendPacket(new EnchantResult(1, crystalId, count)); } if (Config.LOG_ITEM_ENCHANTS) { LogRecord record = new LogRecord(Level.INFO, "Fail"); record.setParameters(new Object[] { activeChar, item, scroll, support, chance }); record.setLoggerName("item"); _logEnchant.log(record); } } } } StatusUpdate su = new StatusUpdate(activeChar); su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad()); activeChar.sendPacket(su); InventoryUpdate iu = new InventoryUpdate(); if (scroll.getCount() == 0) { iu.addRemovedItem(scroll); } else { iu.addModifiedItem(scroll); } if (item.getCount() == 0) { iu.addRemovedItem(item); } else { iu.addModifiedItem(item); } activeChar.sendPacket(iu); activeChar.broadcastUserInfo(); activeChar.setActiveEnchantItem(null); } } @Override public String getType() { return _C__5F_REQUESTENCHANTITEM; } } i tried i every place that dont give me error but at the end have message after enchanting. i wnat to show message when i put weapon/armor in slot for enchant. thx edit : forgot say this is l2jserver stable rev 6621 and i have Custom Progressive enchant system, if enchant rise chance going down. Sorry for language cheers Dymek -
Hi i looking for L2j Server uncompiled files new revision, cuz svn from l2jserver not working maybe someone have that files and can share here.
-
Hi i looking for Valakas Antharas Lindvior Weapon for H5 I found for freya http://www.maxcheaters.com/topic/162663-antharas-valakas-lindvior-weapons-freya-god/ but can adept for h5 I heard that it is easy but I did not succeed For itemname-e.dat it works but for weapongrp.dat not Maybe some one have that files for H5 or can help me thanks in advance edit: i found all i wanted, but w/o effect just weapon maybe some one can do in post i pasted. Topic can by locked
-
its hard to play here not much adena to buy gear for lvl more than 40
-
[Share][Collection]Some Freya NPC's
dymek1984 replied to `KnipeX's topic in Server Shares & Files [L2J]
reply -
DELETE FROM droplist WHERE itemId='1864'; (replace 1864 with your ID)
-
[Share]Max lvl 100 On Gracia Final(NO VISUAL BUG)
dymek1984 replied to Madboy's topic in Server Shares & Files [L2J]
i know. tried but nothing, for every killed mob showing up shares as at lvl up, but the exp bar is not reset. -
[Share]Max lvl 100 On Gracia Final(NO VISUAL BUG)
dymek1984 replied to Madboy's topic in Server Shares & Files [L2J]
Hello, I have a question, how to do that more than 86 lvl (freya) to reset the exp bar and grew from the beginning but did not increase lvl. and every 100% make for example +10 maxHP (or other statistic) -
Maybe u know how to add fame to all players in team. For killer 20 for team members 10.
-
[Help] Looking for Achievement engine
dymek1984 replied to dymek1984's question in Request Server Development Help [L2J]
ok i edited first code -
[Help] Looking for Achievement engine
dymek1984 replied to dymek1984's question in Request Server Development Help [L2J]
bypass looks good. have changed a little html + private void showMyAchievements(L2PcInstance player) + { + TextBuilder tb = new TextBuilder(); + tb.append("<html><title>Achievements Manager</title><body><br>"); + + tb.append("<center><font color=\"LEVEL\">My achievements</font>:</center><br>"); + + NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId()); + msg.setHtml(tb.toString()); + msg.replace("%objectId%", String.valueOf(this.getObjectId())); + + player.sendPacket(msg); + } Edit: changed html to that and when i press my achievements i see html (ofc just simple message "achievements manager and my achievements, nothing else) maybe is something wrong in here: if (AchievementsManager.getInstance().getAchievementList().isEmpty()) + { + tb.append("There are no Achievements created yet!"); + } + else + { + int i = 0; + + tb.append("<table width=270 border=0 bgcolor=\"33FF33\">"); + tb.append("<tr><td width=270 align=\"left\">Name:</td><td width=60 align=\"right\">Info:</td><td width=200 align=\"center\">Status:</td></tr></table>"); + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1\"><br>"); + + for (Achievement a: AchievementsManager.getInstance().getAchievementList().values()) + { + tb.append(getTableColor(i)); + tb.append("<tr><td width=270 align=\"left\">" + a.getName() + "</td><td width=50 align=\"right\"><a action=\"bypass -h npc_%objectId%_achievementInfo " + + a.getID() + "\">info</a></td><td width=200 align=\"center\">" + getStatusString(a.getID(), player) + "</td></tr></table>"); + i++; + } + + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>"); + tb.append("<center><button value=\"Back\" action=\"bypass -h npc_%objectId%_showMainWindow\" width=160 height=32 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"></center>"); + } ? Edit: it looks like inside html code is broken cuz npc not show me. ;/ -
Weapons Infinty GOD for Freya/h5
dymek1984 replied to Arien88's topic in Client Development Discussion
not working for freya error in l2 file editor when tried add weapongrp -
[Share]New HOPZONE vote reward system
dymek1984 replied to LordOfDarkness's topic in Server Shares & Files [L2J]
-
[Help] Looking for Achievement engine
dymek1984 replied to dymek1984's question in Request Server Development Help [L2J]
i found this: http://pastebin.com/3vLUrLjU L2AchievementManagerInstance Index: java/com/l2jserver/gameserver/model/actor/instance/L2AchievementsManagerInstance.java =================================================================== --- java/com/l2jserver/gameserver/model/actor/instance/L2AchievementsManagerInstance.java (revision 0) +++ java/com/l2jserver/gameserver/model/actor/instance/L2AchievementsManagerInstance.java (revision 0) @@ -0,0 +1,283 @@ +package com.l2jserver.gameserver.model.actor.instance; + +import java.util.StringTokenizer; + +import javolution.text.TextBuilder; + +import com.l2jserver.gameserver.model.L2ItemInstance; +import com.l2jserver.gameserver.model.L2World; +import com.l2jserver.gameserver.model.actor.L2Npc; +import com.l2jserver.gameserver.model.entity.AchievmentsEngine.AchievementsManager; +import com.l2jserver.gameserver.model.entity.AchievmentsEngine.base.Achievement; +import com.l2jserver.gameserver.model.entity.AchievmentsEngine.base.Condition; +import com.l2jserver.gameserver.model.itemcontainer.Inventory; +import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage; +import com.l2jserver.gameserver.templates.chars.L2NpcTemplate; + +/** + * @author Matim + * @version 1.0 + */ +@SuppressWarnings("unused") +public class L2AchievementsManagerInstance extends L2Npc +{ + public L2AchievementsManagerInstance(int objectId, L2NpcTemplate template) + { + super(objectId, template); + } + + @Override + public void onBypassFeedback(L2PcInstance player, String command) + { + if (player == null || player.getLastFolkNPC() == null || player.getLastFolkNPC().getObjectId() != this.getObjectId()) + { + return; + } + if (command.startsWith("showMyAchievements")) + { + player.getAchievemntData(); + showMyAchievements(player); + } + else if (command.startsWith("achievementInfo")) + { + StringTokenizer st = new StringTokenizer(command, " "); + st.nextToken(); + int id = Integer.parseInt(st.nextToken()); + + showAchievementInfo(id, player); + } + else if (command.startsWith("topList")) + { + showTopListWindow(player); + } + else if (command.startsWith("showMainWindow")) + { + showChatWindow(player, 0); + } + else if (command.startsWith("getReward")) + { + StringTokenizer st = new StringTokenizer(command, " "); + st.nextToken(); + int id = Integer.parseInt(st.nextToken()); + AchievementsManager.getInstance().rewardForAchievement(id, player); + player.saveAchievementData(id); + showMyAchievements(player); + } + else if (command.startsWith ("showMyStats")) + { + showMyStatsWindow(player); + } + else if (command.startsWith("showHelpWindow")) + { + showHelpWindow(player); + } + } + + @Override + public void showChatWindow(L2PcInstance player, int val) + { + TextBuilder tb = new TextBuilder(); + tb.append("<html><title>Achievements Manager</title><body><center><br>"); + tb.append("Hello <font color=\"LEVEL\">" + player.getName() + "</font><br>Are you looking for challenge?"); + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1\"><br>"); + tb.append("<button value=\"My Achievements\" action=\"bypass -h npc_%objectId%_showMyAchievements\" width=160 height=32 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\">"); + tb.append("<button value=\"Statistics\" action=\"bypass -h npc_%objectId%_showMyStats\" width=160 height=32 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\">"); + tb.append("<button value=\"Top List\" action=\"bypass -h npc_%objectId%_topList\" width=160 height=32 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\">"); + tb.append("<button value=\"Help\" action=\"bypass -h npc_%objectId%_showHelpWindow\" width=160 height=32 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\">"); + + NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId()); + msg.setHtml(tb.toString()); + msg.replace("%objectId%", String.valueOf(this.getObjectId())); + + player.sendPacket(msg); + } + + private void showMyAchievements(L2PcInstance player) + { + TextBuilder tb = new TextBuilder(); + tb.append("<html><title>Achievements Manager</title><body><br>"); + + tb.append("<center><font color=\"LEVEL\">My achievements</font>:</center><br>"); + + if (AchievementsManager.getInstance().getAchievementList().isEmpty()) + { + tb.append("There are no Achievements created yet!"); + } + else + { + int i = 0; + + tb.append("<table width=270 border=0 bgcolor=\"33FF33\">"); + tb.append("<tr><td width=270 align=\"left\">Name:</td><td width=60 align=\"right\">Info:</td><td width=200 align=\"center\">Status:</td></tr></table>"); + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1\"><br>"); + + for (Achievement a: AchievementsManager.getInstance().getAchievementList().values()) + { + tb.append(getTableColor(i)); + tb.append("<tr><td width=270 align=\"left\">" + a.getName() + "</td><td width=50 align=\"right\"><a action=\"bypass -h npc_%objectId%_achievementInfo " + + a.getID() + "\">info</a></td><td width=200 align=\"center\">" + getStatusString(a.getID(), player) + "</td></tr></table>"); + i++; + } + + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>"); + tb.append("<center><button value=\"Back\" action=\"bypass -h npc_%objectId%_showMainWindow\" width=160 height=32 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"></center>"); + } + + NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId()); + msg.setHtml(tb.toString()); + msg.replace("%objectId%", String.valueOf(this.getObjectId())); + + player.sendPacket(msg); + } + + private void showAchievementInfo(int achievementID, L2PcInstance player) + { + Achievement a = AchievementsManager.getInstance().getAchievementList().get(achievementID); + + TextBuilder tb = new TextBuilder(); + tb.append("<html><title>Achievements Manager</title><body><br>"); + + tb.append("<table width=270 border=0 bgcolor=\"33FF33\">"); + tb.append("<tr><td width=270 align=\"center\">" + a.getName() + "</td></tr></table><br>"); + tb.append("<center>Status: " + getStatusString(achievementID, player)); + + if (a.meetAchievementRequirements(player) && !player.getCompletedAchievements().contains(achievementID)) + { + tb.append("<button value=\"Receive Reward!\" action=\"bypass -h npc_%objectId%_getReward " + + a.getID() + "\" width=160 height=32 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\">"); + } + + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>"); + + tb.append("<table width=270 border=0 bgcolor=\"33FF33\">"); + tb.append("<tr><td width=270 align=\"center\">Description</td></tr></table><br>"); + tb.append(a.getDescription()); + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>"); + + tb.append("<table width=270 border=0 bgcolor=\"33FF33\">"); + tb.append("<tr><td width=270 align=\"left\">Condition:</td><td width=100 align=\"right\">Value:</td><td width=200 align=\"center\">Status:</td></tr></table>"); + tb.append(getConditionsStatus(achievementID, player)); + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>"); + tb.append("<center><button value=\"Back\" action=\"bypass -h npc_%objectId%_showMyAchievements\" width=160 height=32 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"></center>"); + + NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId()); + msg.setHtml(tb.toString()); + msg.replace("%objectId%", String.valueOf(this.getObjectId())); + + player.sendPacket(msg); + } + + private void showMyStatsWindow(L2PcInstance player) + { + TextBuilder tb = new TextBuilder(); + tb.append("<html><title>Achievements Manager</title><body><center><br>"); + tb.append("Check your <font color=\"LEVEL\">Achievements </font>statistics:"); + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1\"><br>"); + + player.getAchievemntData(); + int completedCount = player.getCompletedAchievements().size(); + + tb.append("You have completed: " + completedCount + "/<font color=\"LEVEL\">" + AchievementsManager.getInstance().getAchievementList().size() + "</font>"); + + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>"); + tb.append("<center><button value=\"Back\" action=\"bypass -h npc_%objectId%_showMainWindow\" width=160 height=32 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"></center>"); + + NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId()); + msg.setHtml(tb.toString()); + msg.replace("%objectId%", String.valueOf(this.getObjectId())); + + player.sendPacket(msg); + } + + private void showTopListWindow(L2PcInstance player) + { + TextBuilder tb = new TextBuilder(); + tb.append("<html><title>Achievements Manager</title><body><center><br>"); + tb.append("Check your <font color=\"LEVEL\">Achievements </font>Top List:"); + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1\"><br>"); + + tb.append("Not implemented yet!"); + + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>"); + tb.append("<center><button value=\"Back\" action=\"bypass -h npc_%objectId%_showMainWindow\" width=160 height=32 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"></center>"); + + NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId()); + msg.setHtml(tb.toString()); + msg.replace("%objectId%", String.valueOf(this.getObjectId())); + + player.sendPacket(msg); + } + + private void showHelpWindow(L2PcInstance player) + { + TextBuilder tb = new TextBuilder(); + tb.append("<html><title>Achievements Manager</title><body><center><br>"); + tb.append("Achievements <font color=\"LEVEL\">Help </font>page:"); + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1\"><br>"); + + tb.append("You can check status of your achievements, receive reward if every condition of achievement is meet, if not you can check which condition is still not meet, by using info button"); + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>"); + tb.append("<font color=\"FF0000\">Not Completed</font> - you did not meet the achivement requirements.<br>"); + tb.append("<font color=\"LEVEL\">Get Reward</font> - you may receive reward, click info.<br>"); + tb.append("<font color=\"5EA82E\">Completed</font> - achievement completed, reward received.<br>"); + + tb.append("Achievements Engine by <font color=\"LEVEL\">Matim</font>"); + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>"); + tb.append("<center><button value=\"Back\" action=\"bypass -h npc_%objectId%_showMainWindow\" width=160 height=32 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"></center>"); + + NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId()); + msg.setHtml(tb.toString()); + msg.replace("%objectId%", String.valueOf(this.getObjectId())); + + player.sendPacket(msg); + } + + private String getStatusString(int achievementID, L2PcInstance player) + { + if (player.getCompletedAchievements().contains(achievementID)) + { + return "<font color=\"5EA82E\">Completed</font>"; + } + else + { + if (AchievementsManager.getInstance().getAchievementList().get(achievementID).meetAchievementRequirements(player)) + { + return "<font color=\"LEVEL\">Get Reward</font>"; + } + else + { + return "<font color=\"FF0000\">Not Completed</font>"; + } + } + } + + private String getTableColor(int i) + { + if (i % 2 == 0) + return "<table width=270 border=0 bgcolor=\"444444\">"; + else + return "<table width=270 border=0>"; + } + + private String getConditionsStatus(int achievementID, L2PcInstance player) + { + int i = 0; + String s = "</center>"; + Achievement a = AchievementsManager.getInstance().getAchievementList().get(achievementID); + String completed = "<font color=\"5EA82E\">Completed</font></td></tr></table>"; + String notcompleted = "<font color=\"FF0000\">Not Completed</font></td></tr></table>"; + + for (Condition c: a.getConditions()) + { + s+= getTableColor(i); + s+= "<tr><td width=270 align=\"left\">Level</td><td width=50 align=\"right\">" + c.getValue() + "</td><td width=200 align=\"center\">"; + i++; + + if (c.meetConditionRequirements(player)) + s+= completed; + else + s+= notcompleted; + } + return s; + } +} for L2PcInstance +private List<Integer> _completedAchievements = new FastList<Integer>(); + + public boolean readyAchievementsList() + { + if (_completedAchievements.isEmpty()) + return false; + else + return true; + } + + public void saveAchievemntData() + { + + } + + public void getAchievemntData() + { + Connection con = null; + try + { + PreparedStatement statement; + PreparedStatement insertStatement; + ResultSet rs; + con = L2DatabaseFactory.getInstance().getConnection(); + + statement = con.prepareStatement("SELECT * from achievements WHERE owner_id=" + getObjectId()); + + rs = statement.executeQuery(); + + String values = "owner_id"; + String in = Integer.toString(getObjectId()); + String questionMarks = in; + int ilosc = AchievementsManager.getInstance().getAchievementList().size(); + + if (rs.next()) + { + _completedAchievements.clear(); + for (int i=1; i <=ilosc; i++) + { + int a = rs.getInt("a" + i); + + if (!_completedAchievements.contains(i)) + if (a == 1) + _completedAchievements.add(i); + } + } + else + { + //Player hasnt entry in database, means we have to create it. + + for (int i=1; i <=ilosc; i++) + { + values += ", a" + i; + questionMarks += ", 0"; + } + + String s = "INSERT INTO achievements(" + values + ") VALUES (" + questionMarks + ")"; + insertStatement = con.prepareStatement(s); + + insertStatement.execute(); + insertStatement.close(); + } + } + catch (SQLException e) + { + _log.warning("[ACHIEVEMENTS ENGINE GETDATA]" + e); + } + finally + { + L2DatabaseFactory.close(con); + } + } + + public void saveAchievementData(int achievementID) + { + Connection con = null; + try + { + con = L2DatabaseFactory.getInstance().getConnection(); + Statement statement = con.createStatement(); + statement.executeUpdate("UPDATE achievements SET a" + achievementID + "=1 WHERE owner_id=" + getObjectId()); + statement.close(); + + if (!_completedAchievements.contains(achievementID)) + _completedAchievements.add(achievementID); + } + catch (SQLException e) + { + _log.warning("[ACHIEVEMENTS SAVE GETDATA]" + e); + } + finally + { + L2DatabaseFactory.close(con); + } + } + + public List<Integer> getCompletedAchievements() + { + return _completedAchievements; + } + everything seems fine, but when I talk with the NPC and give "My achievements" nothing happens -
[Help] Looking for Achievement engine
dymek1984 posted a question in Request Server Development Help [L2J]
I am looking for achievement engine for l2j. already found a whole lot of java and. xml. Html miss only, if someone has and can put a link I will be grateful -
[Collection]Freya - interlude npcs
dymek1984 replied to Traixz's topic in Server Development Discussion [L2J]
reply -
How to add: for every kill in event player gets a Fame, about 20 fame per kill?
-
[Share] Custom PvP Reward System
dymek1984 replied to NumL0ck's topic in Server Shares & Files [L2J]
hello, have little problem with this system + event (phoenix event manager) When ppl fighting on events system counting his kills to day kills. how to disable pvp reward system on events? -
[Share] Custom PvP Reward System
dymek1984 replied to NumL0ck's topic in Server Shares & Files [L2J]
if(killer !=null) or if (AntiFeedManager.getInstance().check(killer, victim)) -
[Share] Custom PvP Reward System
dymek1984 replied to NumL0ck's topic in Server Shares & Files [L2J]
if(kills_today <= Config.CUSTOM_PVP_REWARD_PROTECTION){ if (AntiFeedManager.getInstance().check(killer, victim)){ addItemRewardForKiller(killer, victim); } }else{ or maybe am i wrong -
[Help] pvppoints system
dymek1984 replied to dymek1984's question in Request Server Development Help [L2J]
Thanks adenaman immediately guess that this is a forbidden action and changed it. but my code still does not work well -
[Share] Custom PvP Reward System
dymek1984 replied to NumL0ck's topic in Server Shares & Files [L2J]
Hi I did it for Freya l2jserver Index: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java =================================================================== --- java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (revision 5550) +++ java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (working copy) @@ -264,6 +264,7 @@ import com.l2jserver.gameserver.util.Util; import com.l2jserver.util.Point3D; import com.l2jserver.util.Rnd; +import com.l2jserver.gameserver.model.actor.instance.PvpRewardSystem; /** * This class represents all player characters in the world. @@ -5340,7 +5341,11 @@ L2PcInstance pk = killer.getActingPlayer(); TvTEvent.onKill(killer, this); - + if(Config.CUSTOM_PVP_REWARD_ENABLED) + { + PvpRewardSystem.doCustomPvpReward(pk, this); + } + if (atEvent && pk != null) { pk.kills.add(getName()); Index: java/com/l2jserver/gameserver/model/actor/instance/PvpRewardSystem.java =================================================================== --- java/com/l2jserver/gameserver/model/actor/instance/PvpRewardSystem.java (revision 0) +++ java/com/l2jserver/gameserver/model/actor/instance/PvpRewardSystem.java (revision 0) @@ -0,0 +1,180 @@ +/* + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see <http://www.gnu.org/licenses/>. + */ +package com.l2jserver.gameserver.model.actor.instance; + + + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.logging.Logger; + +import com.l2jserver.Config; +import com.l2jserver.gameserver.datatables.ItemTable; +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; +import com.l2jserver.gameserver.templates.item.L2Item; + +import com.l2jserver.L2DatabaseFactory; + + +/** + * @author Matthew Mazan + * + */ +public class PvpRewardSystem { + + private static Logger _log = Logger.getLogger(PvpRewardSystem.class.getName()); + + /** + * Executed when kill player (from victim side) + * @param killer + * @param victim + */ + public static void doCustomPvpReward(L2PcInstance killer, L2PcInstance victim) + { + //int error_code = 0; + int kills = 0; + int kills_today = 0; + long kill_time = 0; + + long sys_time = System.currentTimeMillis(); + long prot_time = (1000 * 60 * Config.CUSTOM_PVP_REWARD_PROTECTION_RESET); + + Connection con = null; + try{ + con = L2DatabaseFactory.getInstance().getConnection(); + PreparedStatement statement = con.prepareStatement("CALL CPRS_add(?,?,?,?)"); //query returns updated killer data + statement.setInt(1, killer.getObjectId()); + statement.setInt(2, victim.getObjectId()); + statement.setLong(3, sys_time); + statement.setLong(4, prot_time); + + ResultSet rset = statement.executeQuery(); + + while(rset.next()){ + //error_code = rset.getInt("error_code"); + kills = rset.getInt("kills"); + kills_today = rset.getInt("kills_today"); + kill_time = rset.getLong("kill_time"); + break; + } + rset.close(); + statement.close(); + }catch(SQLException e){ + e.printStackTrace(); + } + finally{ + L2DatabaseFactory.close(con); + } + + + if(kills_today <= Config.CUSTOM_PVP_REWARD_PROTECTION){ + if(killer !=null){ + addItemRewardForKiller(killer, victim); + } + }else{ + if((Config.CUSTOM_PVP_PK_REWARD)&&(killer.getKarma() == 0)){ + if(Config.CUSTOM_PVP_REWARD_PROTECTION > 0){ + if((Config.CUSTOM_PVP_REWARD_ENABLED)){ + if(Config.CUSTOM_PVP_REWARD_PROTECTION_RESET == 0){ + killer.sendMessage("Reward has been awarded for kill this player!"); + }else{ + killer.sendMessage("Reward has been awarded for kill this player today!"); + killer.sendMessage("Next for "+calculateTimeToString(sys_time, kill_time)); + } + } + } + } + } + + + + if(kills > 1){ + String timeStr1 = "times"; + if(kills_today == 1){ timeStr1 = "time"; } + String msgVictim1 = killer.getName() + " killed you " + kills + " times."; + String msgVictim2 = killer.getName() + " killed you " + kills + " times ( "+ kills_today +" "+timeStr1+" today )."; + String msgKiller1 = "You have killed " + victim.getName() + " " + kills + " times."; + String msgKiller2 = "You have killed " + killer.getName() + " " + kills + " times ( "+ kills_today +" "+timeStr1+" today )."; + + if(Config.CUSTOM_PVP_REWARD_PROTECTION_RESET == 0){ + victim.sendMessage(msgVictim1); + killer.sendMessage(msgKiller1); + }else{ + victim.sendMessage(msgVictim2); + killer.sendMessage(msgKiller2); + } + }else{ + victim.sendMessage("This is the first time you have been killed by " + killer.getName() + "."); + killer.sendMessage("You have killed " + victim.getName() + " for the first time."); + } + + killer = null; + victim = null; + + } + + /** + * Adds the item reward. + * + * @param killer Player who killed. + * @param victim victim Player. + */ + public static void addItemRewardForKiller(L2PcInstance killer, L2PcInstance victim){ + //Anti FARM Reward, level player >= reward_min_lvl + if((Config.CUSTOM_PVP_REWARD_MIN_LVL > victim.getLevel())||(Config.CUSTOM_PVP_REWARD_MIN_LVL > killer.getLevel())) + { + killer.sendMessage("Rewards are awarded on "+ Config.CUSTOM_PVP_REWARD_MIN_LVL + "+ level."); + }else{ + //IP check + if(killer.getClient()!=null) + if(killer.getClient().getConnection().getInetAddress() != victim.getClient().getConnection().getInetAddress()) + { + + if((killer.getKarma() == 0)&&(killer.getPvpFlag() > 0)||((Config.CUSTOM_PVP_PK_REWARD)&&(killer.getKarma() == 0)&&(victim.getKarma() > 0))){ + if(Config.CUSTOM_PVP_REWARD_ENABLED) + { + L2Item reward = ItemTable.getInstance().getTemplate(Config.CUSTOM_PVP_REWARD_ID); + + //killer.getInventory().addItem("Winning PvP", Config.CUSTOM_PVP_REWARD_ID, Config.PVP_REWARD_A-beep-T, killer, null); + killer.addItem("PvP Reward", Config.CUSTOM_PVP_REWARD_ID, Config.PVP_REWARD_A-beep-T, killer, false); + killer.sendMessage("You have earned " + Config.PVP_REWARD_A-beep-T + " x " + reward.getName() + "."); + } + } + }else{ + victim.sendMessage("Farm is punishable with Ban! Don't kill your Box!"); + _log.warning("PVP POINT FARM ATTEMPT: " + victim.getName() + " AND " + killer.getName() +" HAVE SAME IP!"); + } + } + } + + private static String calculateTimeToString(long sys_time, long kill_time){ + long TimeToRewardInMilli = ((kill_time + (1000 * 60 * Config.CUSTOM_PVP_REWARD_PROTECTION_RESET)) - sys_time); + long TimeToRewardHours = TimeToRewardInMilli / (60 * 60 * 1000); + long TimeToRewardMinutes = (TimeToRewardInMilli % (60 * 60 * 1000)) / (60 *1000); + long TimeToRewardSeconds = (TimeToRewardInMilli % (60 * 1000)) / (1000); + + String H = Long.toString(TimeToRewardHours); + String M = Long.toString(TimeToRewardMinutes); + String S = Long.toString(TimeToRewardSeconds); + if(TimeToRewardMinutes <= 9){ M = "0" + M; } + if(TimeToRewardSeconds <= 9){ S = "0" + S; } + + return H+":"+M+":"+S; + } + +} + Index: java/com/l2jserver/Config.java =================================================================== --- java/com/l2jserver/Config.java (revision 5550) +++ java/com/l2jserver/Config.java (working copy) @@ -81,8 +81,10 @@ public static final String GRANDBOSS_CONFIG_FILE = "./config/Grandboss.properties"; public static final String GRACIASEEDS_CONFIG_FILE = "./config/GraciaSeeds.properties"; public static final String CHAT_FILTER_FILE = "./config/chatfilter.txt"; + + //-------------------------------------------------- // L2J Variable Definitions //-------------------------------------------------- @@ -725,7 +727,16 @@ public static int L2JMOD_DUALBOX_CHECK_MAX_PLAYERS_PER_IP; public static int L2JMOD_DUALBOX_CHECK_MAX_OLYMPIAD_PARTICIPANTS_PER_IP; public static TIntIntHashMap L2JMOD_DUALBOX_CHECK_WHITELIST; + public static int CUSTOM_PVP_REWARD_PROTECTION_RESET; + public static int CUSTOM_PVP_REWARD_PROTECTION; + public static boolean CUSTOM_PVP_PK_REWARD; + public static boolean CUSTOM_PVP_REWARD_ENABLED; + public static int CUSTOM_PVP_REWARD_MIN_LVL; + public static int CUSTOM_PVP_REWARD_ID; + public static int PVP_REWARD_A-beep-T; + + //-------------------------------------------------- // NPC Settings //-------------------------------------------------- @@ -2246,7 +2257,14 @@ L2JMOD_ENABLE_WAREHOUSESORTING_CLAN = Boolean.valueOf(L2JModSettings.getProperty("EnableWarehouseSortingClan", "False")); L2JMOD_ENABLE_WAREHOUSESORTING_PRIVATE = Boolean.valueOf(L2JModSettings.getProperty("EnableWarehouseSortingPrivate", "False")); - + CUSTOM_PVP_REWARD_PROTECTION_RESET = Integer.parseInt(L2JModSettings.getProperty("CustomPvpRewardProtectionReset", "0")); + CUSTOM_PVP_REWARD_PROTECTION = Integer.parseInt(L2JModSettings.getProperty("CustomPvpRewardProtection", "2")); + CUSTOM_PVP_PK_REWARD = Boolean.parseBoolean(L2JModSettings.getProperty("CustomPvpPkReward", "true")); + CUSTOM_PVP_REWARD_ENABLED = Boolean.parseBoolean(L2JModSettings.getProperty("CustomPvpRewardEnabled", "true")); + CUSTOM_PVP_REWARD_MIN_LVL = Integer.parseInt(L2JModSettings.getProperty("CustomPvpRewardMinLvl", "1")); + CUSTOM_PVP_REWARD_ID = Integer.parseInt(L2JModSettings.getProperty("CustomPvpRewardItemId", "6392")); + PVP_REWARD_A-beep-T = Integer.parseInt(L2JModSettings.getProperty("CustomPvpRewardA-beep-t", "1")); + if (TVT_EVENT_PARTICIPATION_NPC_ID == 0) { TVT_EVENT_ENABLED = false; had a problem here if(kills_today <= Config.CUSTOM_PVP_REWARD_PROTECTION){ if(victim.checkAntiFarm(killer)){ addItemRewardForKiller(killer, victim); } }else{ if((Config.CUSTOM_PVP_PK_REWARD)&&(killer.getKarma() == 0)){ so i changed for if(kills_today <= Config.CUSTOM_PVP_REWARD_PROTECTION){ if(killer !=null){ addItemRewardForKiller(killer, victim); } }else{ if((Config.CUSTOM_PVP_PK_REWARD)&&(killer.getKarma() == 0)){ in l2pcinstance isnothing about "checkAntiFarm"