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.


  • Posts

    • Bought the interface source for the 557 protocol from him. Everything works as described, no issues so far. Smooth deal, would recommend.
    • Add try version of protocol 563 https://drive.google.com/file/d/1l1QnyFGXxX_c98FNUgXHFmDsIzZCrVc6/view?usp=drive_link
    • WTS Adena Stock 2.6kkk Titan 78 Sub Sagitarius 76 nobless Hirophant 78 Sub Cardinal 78 nobless   discord : nhr0711
    • We are not another "open-close" project. LOE is a long-term Essence server that has been live for over a year — NewAge x2 is our brand-new world, and it will never be wiped. 🗺 STAGED WORLD PROGRESSION Here is what kills most servers: no-lifers hit the cap in three days, everyone else logs in to a finished race. On LOE the world unlocks stage by stage, every ~2 weeks — new locations, new bosses, new gear ceiling. The server grows as one. Start on day one or day ten — you are still in the race. ✨ WHAT MAKES US DIFFERENT Subclass system on Essence — a full dedicated questline, unique for this platform. Your build, your rules. Talent system — three branches: tank, damage, farm. Two players, same class, different characters. Hero skills and deep character customization. Fair progression — power comes from playing, not from a credit card. x2 rates — the classic Essence pace without the grind wall. 📚 WE DOCUMENTED EVERYTHING 25,000+ items, every class with full skill tables, monsters, drop rates, quests, locations. Check the server before you even download it: loe.promo/wiki — no other project gives you this. 📋 SERVER INFO Platform: Lineage 2 Essence · Rates: x2 Open Beta: July 24 — test the stages and the subclass questline before launch Grand Opening: July 31, 20:00 GMT+3 Site & wiki in English — international players welcome 🔒 YOUR NICKNAME IS BEING TAKEN RIGHT NOW Reservation is already open. On the 31st the crowd arrives — the name you have carried through every server for years may simply be gone. Lock it in 30 seconds: Equal start for everyone. See you in Elcardia — July 31, 20:00 GMT+3. Questions? Drop them below — the team reads this thread daily.
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..