Reborn12 Posted October 29, 2015 Posted October 29, 2015 (edited) hello i need some help..aCis project i have a problem with my pvpupdates needs 30sec to add +1 pvp than i have killed one flag char... Take a look pvp/pk 37/20>>>>>Player Is Dead>>>>After 30 seconds 38/20 Here:https://www.youtube.com/watch?v=0TFgfIEmiHM thanks in advice.. Edited October 29, 2015 by Reborn12
0 Solomun Posted October 29, 2015 Posted October 29, 2015 Check the method in L2PcInstance that increases the pvp score... I think it is like increasepvpscore or something like that
0 Reborn12 Posted October 29, 2015 Author Posted October 29, 2015 (edited) Check the method in L2PcInstance that increases the pvp score... I think it is like increasepvpscore or something like that onKillUpdatePvpKarma actually. /** * This method is used to update PvP counter, or PK counter / add Karma if necessary.<br> * It also updates clan kills/deaths counters on siege. * @param target The L2Playable victim. */ public void onKillUpdatePvPKarma(L2Playable target) { if (target == null) return; final L2PcInstance targetPlayer = target.getActingPlayer(); if (targetPlayer == null || targetPlayer == this) return; setpvpkills // Check if it's pvp (cases : regular, wars, victim is PKer) if (checkIfPvP(target) || (targetPlayer.getClan() != null && getClan() != null && getClan().isAtWarWith(targetPlayer.getClanId()) && targetPlayer.getClan().isAtWarWith(getClanId()) && targetPlayer.getPledgeType() != L2Clan.SUBUNIT_ACADEMY && getPledgeType() != L2Clan.SUBUNIT_ACADEMY) || (targetPlayer.getKarma() > 0 && Config.KARMA_AWARD_PK_KILL)) { if (target instanceof L2PcInstance) { // Add PvP point to attacker. setPvpKills(getPvpKills() + 1); // Show HP PvP if (Config.SHOW_HP_PVP) targetPlayer.sendPacket(new ExShowScreenMessage( getName() + " - HP: " + getCurrentShowHpPvp() + "/" + getMaxHp() , 4000, 0x02, true)); if (isPvpFarmZone()) // Send UserInfo packet to attacker with its Karma and PK Counter sendPacket(new UserInfo(this)); } } Edited October 29, 2015 by Reborn12
0 SweeTs Posted October 29, 2015 Posted October 29, 2015 (edited) lmao... Those are first lines.. Below you can find part about pvp, search for it. Edited October 29, 2015 by SweeTs
0 Reborn12 Posted October 29, 2015 Author Posted October 29, 2015 (edited) lmao... Those are first lines.. Below you can find part about pvp, search for it. updatepvpstatus public void updatePvPStatus(L2Character target) { final L2PcInstance player = target.getActingPlayer(); if (player == null) return; if (isInDuel() && player.getDuelId() == getDuelId()) return; if ((!isInsideZone(ZoneId.PVP) || !target.isInsideZone(ZoneId.PVP)) && player.getKarma() == 0) { PvpFlagTaskManager.getInstance().add(this, checkIfPvP(player) ? Config.PVP_PVP_TIME : Config.PVP_NORMAL_TIME); if (getPvpFlag() == 0) updatePvPFlag(1); } } no idea more...i have added and one statisti wall from caparso:somethink wrong with updates with this?? /* * 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 2, 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, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * * http://www.gnu.org/copyleft/gpl.html */ package net.sf.l2j.gameserver.model.actor.instance; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.StringTokenizer; import java.util.logging.Level; import net.sf.l2j.L2DatabaseFactory; import net.sf.l2j.gameserver.ThreadPoolManager; import net.sf.l2j.gameserver.cache.HtmCache; import net.sf.l2j.gameserver.model.actor.template.NpcTemplate; import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage; public class L2StatusInstance extends L2NpcInstance { private class PlayerInfo { public PlayerInfo(int pos,String n, int pvps, int pks ,int ontime, Boolean iso) { position = pos; Nick = n; pvpCount = pvps; pkCount = pks; onlineTime = ontime; isOnline = iso; } public int position; public String Nick; public int pvpCount; public int pkCount; public int onlineTime; public Boolean isOnline; } //delay interval (in minutes): private final int delayForCheck = 5; //number of players to be listed private int pvpListCount = 10; private int pkListCount = 10; private int onlineListCount = 10; private PlayerInfo [] topPvPList = new PlayerInfo [pvpListCount]; private PlayerInfo [] topPkList = new PlayerInfo [pkListCount]; private PlayerInfo [] topOnlineList = new PlayerInfo [onlineListCount]; @SuppressWarnings("synthetic-access") public L2StatusInstance(int objectId, NpcTemplate template) { super(objectId, template); ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RefreshAllLists(), 10000, delayForCheck * 60000); } private class RefreshAllLists implements Runnable { @Override @SuppressWarnings("synthetic-access") public void run() { ReloadData(); } } private void ReloadData() { try (Connection con = L2DatabaseFactory.getInstance().getConnection()) { PreparedStatement statement = con.prepareStatement("SELECT char_name, pvpkills, online FROM characters ORDER BY pvpkills DESC, char_name ASC LIMIT 10"); ResultSet result = statement.executeQuery(); //refreshing top pvp list int i = 0; //index of array while (result.next()) { topPvPList[i] = new PlayerInfo(i+1,result.getString("char_name"),result.getInt("pvpkills"),0,0,result.getBoolean("online")); i++; } //refreshing top pk list statement = con.prepareStatement("SELECT char_name, pkkills, online FROM characters ORDER BY pkkills DESC, char_name ASC LIMIT 10"); result = statement.executeQuery(); i = 0; //index of array while (result.next()) { topPkList[i] = new PlayerInfo(i+1,result.getString("char_name"),0,result.getInt("pkkills"),0,result.getBoolean("online")); i++; } //refreshing top online list statement = con.prepareStatement("SELECT char_name, onlinetime, online FROM characters ORDER BY onlinetime DESC, char_name ASC LIMIT 10"); result = statement.executeQuery(); i = 0; //index of array while (result.next()) { topOnlineList[i] = new PlayerInfo(i+1,result.getString("char_name"),0,0,result.getInt("onlinetime"),result.getBoolean("online")); i++; } result.close(); statement.close(); } catch (SQLException e) { _log.log(Level.WARNING, "ranking (status): could not load statistics informations" + e.getMessage(), e); } } @Override public void onSpawn() { ReloadData(); } @Override public void showChatWindow(L2PcInstance player) { GeneratePvPList(player); } @Override public void onBypassFeedback(L2PcInstance player, String command) { StringTokenizer st = new StringTokenizer(command, " "); String currentCommand = st.nextToken(); if (currentCommand.startsWith("pvplist")) { GeneratePvPList(player); } else if (currentCommand.startsWith("pklist")) { GeneratePKList(player); } else if (currentCommand.startsWith("onlinelist")) { GenerateOnlineList(player); } super.onBypassFeedback(player, command); } private void GeneratePvPList(L2PcInstance p) { StringBuilder _PVPranking = new StringBuilder(); for (PlayerInfo player : topPvPList) { if (player == null) break; _PVPranking.append("<table width=\"290\"><tr>"); _PVPranking.append("<td FIXWIDTH=\"2\" align=\"center\"></td>"); _PVPranking.append("<td FIXWIDTH=\"17\" align=\"center\">"+player.position+"</td>"); _PVPranking.append("<td FIXWIDTH=\"158\" align=\"center\">"+player.Nick+"</td>"); _PVPranking.append("<td FIXWIDTH=\"90\" align=\"center\">"+player.pvpCount+"</td>"); _PVPranking.append("<td FIXWIDTH=\"50\" align=\"center\">"+((player.isOnline) ? "<font color=\"00FF00\">ON</font>" : "<font color=\"CC0000\">OFF</font>")+"</td>"); _PVPranking.append("<td FIXWIDTH=\"2\" align=\"center\"></td>"); _PVPranking.append("</tr></table>"); _PVPranking.append("<img src=\"L2UI.Squaregray\" width=\"300\" height=\"1\">"); } NpcHtmlMessage html = new NpcHtmlMessage(1); html.setFile(getHtmlPath(getNpcId(), 0)); html.replace("%objectId%", getObjectId()); html.replace("%pvplist%", _PVPranking.toString()); p.sendPacket(html); } private void GeneratePKList(L2PcInstance p) { StringBuilder _PVPranking = new StringBuilder(); for (PlayerInfo player : topPkList) { if (player == null) break; _PVPranking.append("<table width=\"290\"><tr>"); _PVPranking.append("<td FIXWIDTH=\"2\" align=\"center\"></td>"); _PVPranking.append("<td FIXWIDTH=\"17\" align=\"center\">"+player.position+"</td>"); _PVPranking.append("<td FIXWIDTH=\"158\" align=\"center\">"+player.Nick+"</td>"); _PVPranking.append("<td FIXWIDTH=\"90\" align=\"center\">"+player.pkCount+"</td>"); _PVPranking.append("<td FIXWIDTH=\"50\" align=\"center\">"+((player.isOnline) ? "<font color=\"00FF00\">ON</font>" : "<font color=\"CC0000\">OFF</font>")+"</td>"); _PVPranking.append("<td FIXWIDTH=\"2\" align=\"center\"></td>"); _PVPranking.append("</tr></table>"); _PVPranking.append("<img src=\"L2UI.Squaregray\" width=\"300\" height=\"1\">"); } NpcHtmlMessage html = new NpcHtmlMessage(1); html.setFile(getHtmlPath(getNpcId(), 2)); html.replace("%objectId%", getObjectId()); html.replace("%pklist%", _PVPranking.toString()); p.sendPacket(html); } private void GenerateOnlineList(L2PcInstance p) { StringBuilder _PVPranking = new StringBuilder(); for (PlayerInfo player : topOnlineList) { if (player == null) break; _PVPranking.append("<table width=\"290\"><tr>"); _PVPranking.append("<td FIXWIDTH=\"2\" align=\"center\"></td>"); _PVPranking.append("<td FIXWIDTH=\"17\" align=\"center\">"+player.position+"</td>"); _PVPranking.append("<td FIXWIDTH=\"158\" align=\"center\">"+player.Nick+"</td>"); _PVPranking.append("<td FIXWIDTH=\"90\" align=\"center\">"+ConverTime(player.onlineTime)+"</td>"); _PVPranking.append("<td FIXWIDTH=\"50\" align=\"center\">"+((player.isOnline) ? "<font color=\"00FF00\">ON</font>" : "<font color=\"CC0000\">OFF</font>")+"</td>"); _PVPranking.append("<td FIXWIDTH=\"2\" align=\"center\"></td>"); _PVPranking.append("</tr></table>"); _PVPranking.append("<img src=\"L2UI.Squaregray\" width=\"300\" height=\"1\">"); } NpcHtmlMessage html = new NpcHtmlMessage(1); html.setFile(getHtmlPath(getNpcId(), 3)); html.replace("%objectId%", getObjectId()); html.replace("%onlinelist%", _PVPranking.toString()); p.sendPacket(html); } private static String ConverTime(long seconds) { long remainder = seconds; int days = (int) remainder / (24*3600); remainder = remainder -(days * 3600 * 24); int hours = (int) (remainder / 3600); remainder = remainder -(hours * 3600); int minutes = (int) (remainder / 60); remainder = remainder -(hours * 60); seconds = remainder; String timeInText = ""; if (days > 0) timeInText = days+"<font color=\"LEVEL\">D</font> "; if (hours > 0) timeInText = timeInText+ hours+"<font color=\"LEVEL\">H</font> "; if (minutes >0) timeInText = timeInText+ minutes+"<font color=\"LEVEL\">M</font>"; if (timeInText=="") { if(seconds>0) { timeInText = seconds+"<font color=\"LEVEL\">S</font>"; } else { timeInText = "N/A"; } } return timeInText; } @Override public String getHtmlPath(int npcId, int val) { String filename; if (val == 0) filename = "data/html/Status/" + npcId + ".htm"; else filename = "data/html/Status/" + npcId + "-" + val + ".htm"; if (HtmCache.getInstance().isLoadable(filename)) return filename; return "data/html/Status/" + npcId + ".htm"; } } Edited October 29, 2015 by Reborn12
0 Reborn12 Posted October 29, 2015 Author Posted October 29, 2015 (edited) http://www.maxcheaters.com/topic/196065-show-hp-left-on-pvp-death/ This Code was The problem on this LINE: // Add PvP point to attacker. setPvpKills(getPvpKills() + 1); + +// Show HP PvP +if (Config.SHOW_HP_PVP) + targetPlayer.sendPacket(new ExShowScreenMessage( getName() + " - HP: " + getCurrentShowHpPvp() + "/" + getMaxHp() , 4000, 0x02, true)); +if (isPvpFarmZone()) // Send UserInfo packet to attacker with its Karma and PK Counter Lock It Solved.... Edited October 29, 2015 by Reborn12
Question
Reborn12
hello i need some help..aCis project i have a problem with my pvpupdates needs 30sec to add +1 pvp than i have killed one flag char...
Take a look pvp/pk 37/20>>>>>Player Is Dead>>>>After 30 seconds 38/20
Here:https://www.youtube.com/watch?v=0TFgfIEmiHM
thanks in advice..
Edited by Reborn127 answers to this question
Recommended Posts