Jump to content
  • 0

[help] pvp lord engine


NumL0ck

Question

i prefet to be pvp lord in 16:17 but nothing i wait 10 minutes BUT NOTHING... :((

this is code...

package com.l2jfrozen.gameserver.model.entity;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Calendar;

import com.l2jfrozen.util.database.L2DatabaseFactory;
import com.l2jfrozen.gameserver.model.entity.Announcements;
import com.l2jfrozen.gameserver.thread.ThreadPoolManager;
import com.l2jfrozen.gameserver.model.L2World;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;

/**
+ *
+ * @author  Fanky
+ */
public class PvpLordTask
{
public static void getInstance()
{
	ThreadPoolManager.getInstance().scheduleGeneral(new Runnable()
	{
		public void run()
		{
			String currentPvpLord = null,
			newPvpLord = null;
			int topTodayPvps = 0;
			Connection con = null;
			try
			{
				con = L2DatabaseFactory.getInstance().getConnection();
				PreparedStatement stm = con.prepareStatement("SELECT char_name FROM characters WHERE pvplord=? AND accesslevel=?");
				stm.setInt(1, 1);
				stm.setInt(2, 1);
				ResultSet rSet = stm.executeQuery();

				if (rSet.next())
				{
					currentPvpLord = rSet.getString("char_name");
				}

				rSet.close();
				stm.close();

				if (currentPvpLord != null)
				{
					boolean cont = false;
					L2PcInstance cPvpLord = L2World.getInstance().getPlayer(currentPvpLord);
					if (cPvpLord == null || cPvpLord.isOnline() == 0)
					{
						cont = true;
					}
					else
					{
						cPvpLord.setPvpLord(false);
						cPvpLord.broadcastUserInfo();
					}

					if (cont)
					{
						stm = con.prepareStatement("UPDATE characters SET pvplord=? WHERE char_name=?");
						stm.setInt(1, 0);
						stm.setString(2, currentPvpLord);

						stm.execute();
						stm.close();
					}
				}

				stm = con.prepareStatement("SELECT todaypvps,char_name FROM characters WHERE accesslevel=? ORDER BY todaypvps DESC LIMIT 1");
				stm.setInt(1, 0);
				rSet = stm.executeQuery();

				if (rSet.next())
				{
					newPvpLord = rSet.getString("char_name");
					topTodayPvps = rSet.getInt("todaypvps");
				}

				rSet.close();
				stm.close();

				boolean cont = false;
				L2PcInstance nPvpLord = L2World.getInstance().getPlayer(newPvpLord);
				if (nPvpLord == null || nPvpLord.isOnline() == 0)
				{
					cont = true;
				}
				else
				{
					nPvpLord.setPvpLord(true);
					nPvpLord.broadcastUserInfo();
				}

				if (cont)
				{
					stm = con.prepareStatement("UPDATE characters SET pvplord=? WHERE char_name=?");
					stm.setInt(1, 1);
					stm.setString(2, newPvpLord);

					stm.execute();
					stm.close();
				}

				stm = con.prepareStatement("UPDATE characters SET todaypvps=?,todaypks=?,todaydeaths=?");
				stm.setInt(1, 0);

				stm.execute();
				stm.close();

				Announcements.getInstance().announceToAll("New PvP Lord: "+newPvpLord);
				Announcements.getInstance().announceToAll(newPvpLord+", Today PvPs: "+topTodayPvps);
			}
			catch (Exception e)
			{ }
			finally
			{
				try
				{
					con.close();
				}
				catch (Exception e)
				{ }
			}
		}
	}
	, getValidationTime());
}

private static long getValidationTime()
{
	Calendar cld = Calendar.getInstance();
	cld.set(Calendar.HOUR_OF_DAY, 16);
	cld.set(Calendar.MINUTE, 17);

	long time = cld.getTimeInMillis();
	if (System.currentTimeMillis()-time <= 0)
	{
		return time;
	}

	return 0;
}
}

Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0

dont do 12321321 things in same time, dont create 2 topics about same thing.

Try thing by your own, try to find in which moment code is not working:

System.out.println("write something in console"); helps a lot.

Link to comment
Share on other sites

  • 0

whatever u want to check, u can use it like this: System.out.println("time:"+getValidationTime());

System.out.println("lord online:"+nPvpLord.isOnline());

check what u need to check, read errors and think.

Link to comment
Share on other sites

  • 0

but if i now what i check, i'm to newbie, please vampir help me, last time...

i am not giving ready codes for free, try to learn something but changing variables and checking reactions.

Link to comment
Share on other sites

  • 0

all working, but i don't understand why in my set time don't set pvp lord and clean todaypvps, todaypks, todaydeaths

as i say i wait 10 minutes, but nothing, i change time, but nothing, no errors, so vampir please help to me, because in this situation i'm 0, if i have money i pay to you, i swear, if you help to me i share this to all, PLEASE!!!

Link to comment
Share on other sites

  • 0

its not about the money, i just want u to try solve it by yourself. Check by yourself which part is working, and which part isnt :)

Link to comment
Share on other sites

  • 0

vampir, i'm to newbie, after 1 week i use eclipse, but with your help i understand this more and more, so please help to me.

in gameserver.java i maked

		PvpLordTask.getInstance();
	_log.info("!!!PvpLordTask: loaded!!!");

this is working, then loading gameserver i see it

Link to comment
Share on other sites

  • 0

hmm

this is not going to work because of return time;

it need to be changed to return time - System.currentTimeMillis();

last time i am creating code for u and not with u.

Link to comment
Share on other sites

  • 0

now i use this code, and made after olympiad end is new pvp lord, but then made new pvp lord i need todaypvps,todaypks,todaydeaths clear, then is new pvp lord in navicat set todaypvps,todaypks,todaydeaths 0 but in game i have command getstats, then i wrote it, it show to me real todaypvps,todaypks,todaydeaths and after server restart in navicat back real points, how make that after new pvp lord

todaypvps,todaypks,todaydeaths set to 0 and then made new pvp lord, old pvp lord in navicat set pvplord 0

package com.l2jfrozen.gameserver.model.entity;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Calendar;
import java.sql.SQLException;

import com.l2jfrozen.util.database.L2DatabaseFactory;
import com.l2jfrozen.gameserver.model.entity.Announcements;
import com.l2jfrozen.gameserver.thread.ThreadPoolManager;
import com.l2jfrozen.gameserver.model.L2World;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;

public class PvpLordTask
{

public static void newPvpLord(){

	int masterId = 0;
	int topTodayPvps = 0;
	Connection con = null;
	PreparedStatement state = null;
	ResultSet rset = null;

	try{
		con = L2DatabaseFactory.getInstance().getConnection();
		state = con.prepareStatement("SELECT obj_Id,todaypvps FROM characters ORDER BY todaypvps DESC LIMIT 1;");
		rset = state.executeQuery();
		if(rset.next())
		masterId = rset.getInt(1);

		if(masterId == 0)
			return;
		topTodayPvps = rset.getInt("todaypvps");

		state.close();
		rset.close();

		for(L2PcInstance p : L2World.getInstance().getAllPlayers()){
			if(p.getObjectId() == masterId)
			{
				p.sendMessage("You are the PvP Lord!");
				p.setPvpLord(true);
				p.broadcastUserInfo();

		state = con.prepareStatement("UPDATE characters SET pvplord=1 WHERE obj_Id=?");
		state.setInt(1, masterId);
		state.execute();
		state.close();

		state = con.prepareStatement("UPDATE characters SET todaypvps=0,todaypks=0,todaydeaths=0 WHERE obj_Id!=?");
		state.setInt(1, masterId);
		state.execute();
		state.close();	

			}
			Announcements.getInstance().announceToAll("PvP Lord is : "+p.getName());
			Announcements.getInstance().announceToAll("Today PvPs: "+topTodayPvps);
		}
		}
				catch(Exception e){
						e.printStackTrace();
					}
					finally{
						try
						{
							con.close();
						}
						catch (SQLException e)
						{
							e.printStackTrace();
						}
			}
			}
			}

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.


×
×
  • Create New...