Jump to content
  • 0

Updatepvp 30Sec Later..


Question

Posted (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 by Reborn12

7 answers to this question

Recommended Posts

  • 0
Posted

Check the method in L2PcInstance that increases the pvp score... I think it is like increasepvpscore or something like that

  • 0
Posted (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 by Reborn12
  • 0
Posted (edited)

lmao...

 

Those are first lines.. Below you can find part about pvp, search for it.

Edited by SweeTs
  • 0
Posted (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 by Reborn12
  • 0
Posted (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 by Reborn12
Guest
This topic is now closed to further replies.


×
×
  • Create New...