[help] hitman event

Find the proper support area, Saga-Version.
Forum rules
READ NOW: L2j Forums Rules of Conduct
Post Reply
TouchAnddie
Posts: 13
Joined: Wed Feb 08, 2012 5:53 pm

[help] hitman event

Post by TouchAnddie »

If you want to receive support we need this info to help you properly.
» Find Revision
L2J Revision Number: 4495M
L2JDP Revision Number: 7777M

i have an hitman event but i cannot change else if(client.getAdena < bounty) i tried to put getItemByItemId(9143) instead of getAdena but i get error...

here is the code:

Code: Select all

/* * 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.entity; import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.logging.Logger; import javolution.util.FastMap;import com.l2jserver.Config;import com.l2jserver.L2DatabaseFactory;import com.l2jserver.gameserver.ThreadPoolManager;import com.l2jserver.gameserver.datatables.CharNameTable;import com.l2jserver.gameserver.model.L2World;import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; /** * @author Setekh */public class Hitman{    private static Hitman _instance;    private FastMap <Integer, PlayerToAssasinate> _targets;    private Logger _log = Logger.getLogger(Hitman.class.getName());        // Data Strings    private static String   SQL_SELECT  = "select targetId,clientId,target_name,bounty,pending_delete from hitman_list";    private static String   SQL_DELETE  = "delete from hitman_list where targetId=?";    private static String   SQL_SAVEING = "replace into `hitman_list` VALUES (?, ?, ?, ?, ?)";    private static String[] SQL_OFFLINE = { "select * from characters where char_name=?", "select * from characters where charId=?" };     // Clean every 15 mins ^^    private int MIN_MAX_CLEAN_RATE = 15 * 60000;        // Fancy lookin    public static boolean start()    {        if(Config.ALLOW_HITMAN_GDE)            getInstance();                return _instance != null;    }        public static Hitman getInstance()    {        if(_instance == null)            _instance = new Hitman();                return _instance;    }        public Hitman()    {        _targets = load();        ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new AISystem(), MIN_MAX_CLEAN_RATE, MIN_MAX_CLEAN_RATE);    }        private FastMap<Integer, PlayerToAssasinate> load()    {        FastMap<Integer, PlayerToAssasinate> map = new FastMap<Integer, PlayerToAssasinate>();                try        {            Connection con = L2DatabaseFactory.getInstance().getConnection();            PreparedStatement st = con.prepareStatement(SQL_SELECT);            ResultSet rs = st.executeQuery();                        while(rs.next())            {                int targetId = rs.getInt("targetId");                int clientId = rs.getInt("clientId");                String target_name = rs.getString("target_name");                int bounty = rs.getInt("bounty");                boolean pending = rs.getInt("pending_delete") == 1;                 if(pending)                    removeTarget(targetId, false);                else                    map.put(targetId, new PlayerToAssasinate(targetId, clientId, bounty, target_name));            }            _log.info("Hitman: Loaded "+map.size()+" Assassination Target(s)");            rs.close();            st.close();            con.close();        }        catch(Exception e)        {            _log.warning("Hitman: "+e.getCause());            return new FastMap<Integer, PlayerToAssasinate>();        }                return map;    }        public void onDeath(L2PcInstance assassin, L2PcInstance target)    {        if(_targets.containsKey(target.getObjectId()))        {            PlayerToAssasinate pta = _targets.get(target.getObjectId());            String name= getOfflineData(null, pta.getClientId())[1];            L2PcInstance client = L2World.getInstance().getPlayer(name);                        target.sendMessage("You have been assassinated. Your bounty is 0.");                        if(client != null)            {                client.sendMessage("Your assassination request to kill "+target.getName()+" has been fulfilled.");                client.setHitmanTarget(0);            }                        assassin.sendMessage("You assassinated "+target.getName()+", his bounty will be converted in Golden Apiga!");            //assassin.addAdena("Hitman", pta.getBounty(), target, true);            assassin.addItem("Hitman", 9143, pta.getBounty(), target, true);            removeTarget(pta.getObjectId(), true);        }    }        /**     * @param string     * @param i     * @param bounty     * @param hitman     * @param b     */     public void onEnterWorld(L2PcInstance activeChar)    {        if(_targets.containsKey(activeChar.getObjectId()))        {            PlayerToAssasinate pta = _targets.get(activeChar.getObjectId());            activeChar.sendMessage("There is a hit on you. Worth " + pta.getBounty() + " Golden Apiga(s).");        }                if(activeChar.getHitmanTarget() > 0)        {            if(!_targets.containsKey(activeChar.getHitmanTarget()))            {                activeChar.sendMessage("Your target has been eliminated. Have a nice day.");                activeChar.setHitmanTarget(0);            }            else                activeChar.sendMessage("Your target is still at large.");        }    }        public void save()    {        try        {            for(PlayerToAssasinate pta : _targets.values())            {                Connection con = L2DatabaseFactory.getInstance().getConnection();                PreparedStatement st = con.prepareStatement(SQL_SAVEING);                st.setInt(1, pta.getObjectId());                st.setInt(2, pta.getClientId());                st.setString(3, pta.getName());                st.setInt(4, pta.getBounty());                st.setInt(5, pta.isPendingDelete() ? 1 : 0);                st.executeQuery();                st.close();                con.close();            }        }        catch(Exception e)        {            _log.warning("Hitman: "+e);        }        System.out.println("Hitman: List Saved.");    }        public void putHitOn(L2PcInstance client, String playerName, int bounty)    {        L2PcInstance player = L2World.getInstance().getPlayer(playerName);                if(client.getHitmanTarget() > 0)        {            client.sendMessage("You are already a client here, you can place a request only for a single player.");            return;        }                else if(bounty <= 30 )        {            client.sendMessage("For a contract you must give more then 30 Golden Apiga's.");            return;        }                else if(client.getAdena() < bounty)        {            client.sendMessage("Not enough Golden Apiga.");            return;        }                else if(player == null && CharNameTable.getInstance().doesCharNameExist(playerName))        {            Integer targetId = Integer.parseInt(getOfflineData(playerName, 0)[0]);             if(_targets.containsKey(targetId))            {                client.sendMessage("There is already a hit on that player.");                return;            }            _targets.put(targetId, new PlayerToAssasinate(targetId, client.getObjectId(), bounty, playerName));            client.setHitmanTarget(targetId);        }        else if(player != null && CharNameTable.getInstance().doesCharNameExist(playerName))        {            if(_targets.containsKey(player.getObjectId()))            {                client.sendMessage("There is already a hit on that player.");                return;            }            player.sendMessage("There is a hit on you. Worth " + bounty + " Golden Apiga(s).");            _targets.put(player.getObjectId(), new PlayerToAssasinate(player, client.getObjectId(), bounty));            client.setHitmanTarget(player.getObjectId());        }        else            client.sendMessage("Player name invalid. The user you added dose not exist.");    }        public class AISystem implements Runnable    {        @Override        public void run()        {            if(Config.DEBUG)                _log.info("Cleaning sequance initiated.");                        for(PlayerToAssasinate target : _targets.values())            {                if(target.isPendingDelete())                    removeTarget(target.getObjectId(), true);            }            save();        }    }        public void removeTarget(int obId, boolean live)    {        try        {            Connection con = L2DatabaseFactory.getInstance().getConnection();            PreparedStatement st = con.prepareStatement(SQL_DELETE);            st.setInt(1, obId);            st.execute();            st.close();            con.close();             if(live)                _targets.remove(obId);        }        catch(Exception e)        {            _log.warning("Hitman: "+e);        }    }        public void cancelAssasination(String name, L2PcInstance client)    {        L2PcInstance target = L2World.getInstance().getPlayer(name);                if(client.getHitmanTarget() <= 0)        {            client.sendMessage("You don't own a hit.");            return;        }        else if(target == null && CharNameTable.getInstance().doesCharNameExist(name))        {            PlayerToAssasinate pta = _targets.get(client.getHitmanTarget());                        if(!_targets.containsKey(pta.getObjectId()))                client.sendMessage("There is no hit on that player.");            else if(pta.getClientId() == client.getObjectId())            {                removeTarget(pta.getObjectId(), true);                client.sendMessage("The hit has been canceld.");                client.setHitmanTarget(0);            }            else                client.sendMessage("You are not the actual owner of that target!.");        }        else if(target != null  && CharNameTable.getInstance().doesCharNameExist(name))        {            PlayerToAssasinate pta = _targets.get(target.getObjectId());             if(!_targets.containsKey(pta.getObjectId()))                client.sendMessage("There is no hit on that player.");            else if(pta.getClientId() == client.getObjectId())            {                removeTarget(pta.getObjectId(), true);                client.sendMessage("The hit has been canceld.");                target.sendMessage("The hit on you has been canceld.");                client.setHitmanTarget(0);            }            else                client.sendMessage("You are not the actual owner of that target!.");        }        else            client.sendMessage("Player name invalid. The user u added dose not exist.");    }        /**     * Its useing a array in case in a future update more values will be added     * @param name     */    public String[] getOfflineData(String name, int objId)    {        String[] set = new String[2];        try        {            Connection con = L2DatabaseFactory.getInstance().getConnection();            PreparedStatement st = con.prepareStatement(objId > 0 ? SQL_OFFLINE[1] : SQL_OFFLINE[0]);             if(objId > 0)                st.setInt(1, objId);            else                st.setString(1, name);                        ResultSet rs = st.executeQuery();             while(rs.next())            {                set[0] = String.valueOf(rs.getInt("charId"));                set[1] = rs.getString("char_name");            }             rs.close();            st.close();            con.close();        }        catch(Exception e){            _log.warning("Hitman: "+e);        }                return set;    }     public boolean exists(int objId)    {        return _targets.containsKey(objId);    }        public PlayerToAssasinate getTarget(int objId)    {        return _targets.get(objId);    }        /**     * @return the _targets     */    public FastMap<Integer, PlayerToAssasinate> getTargets()    {        return _targets;    }     /**     * @param targets the _targets to set     */    public void set_targets(FastMap<Integer, PlayerToAssasinate> targets)    {        _targets = targets;    }}
Last edited by TouchAnddie on Wed Feb 08, 2012 7:50 pm, edited 2 times in total.
User avatar
Zoey76
L2j Inner Circle
L2j Inner Circle
Posts: 7005
Joined: Tue Aug 11, 2009 3:36 am

Re: [help] hitman event

Post by Zoey76 »

Try:

Code: Select all

else if(client.getInventory().getInventoryItemCount(9143, -1) < bounty)
Anyway this code is wrong in many ways, it could have been done (because I did something similar like 2 years ago) completely datapack sided, without adding anything to core. :)
Powered by Eclipse 4.30 🌌 | Eclipse Temurin 21 ☕ | MariaDB 11.3.2 🗃️ | L2J Server 2.6.3.0 - High Five 🚀

🔗 Join our Discord! 🎮💬
TouchAnddie
Posts: 13
Joined: Wed Feb 08, 2012 5:53 pm

Re: [help] hitman event

Post by TouchAnddie »

it works, thanks.

did you shared it ?

edit: aa i forgot that:

Code: Select all

client.reduceAdena("Hitman", bounty, client, true);
how can i change it ? :-?
User avatar
Zoey76
L2j Inner Circle
L2j Inner Circle
Posts: 7005
Joined: Tue Aug 11, 2009 3:36 am

Re: [help] hitman event

Post by Zoey76 »

Code: Select all

client.destroyItemByItemId("Hitman", 9143, bounty, client, true);
Powered by Eclipse 4.30 🌌 | Eclipse Temurin 21 ☕ | MariaDB 11.3.2 🗃️ | L2J Server 2.6.3.0 - High Five 🚀

🔗 Join our Discord! 🎮💬
TouchAnddie
Posts: 13
Joined: Wed Feb 08, 2012 5:53 pm

Re: [help] hitman event

Post by TouchAnddie »

oops first time i used client.getInventory().destroyItemByItemId :lol: and i had some error, but now it work. thank you


edit: why the script doesn't clear the db ? it is set to 15 mins ( then it should clear the db )
User avatar
spremusik
Posts: 110
Joined: Fri Oct 21, 2011 8:34 pm

Re: [help] hitman event

Post by spremusik »

i got a hitman on the internet too.
it was a very old script, i think.
i managed to adapt and fix almost everything.
only problem is with this:

Code: Select all

Index: E:/L2j Development/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/zone/type/L2TownZone.java===================================================================--- E:/L2j Development/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/zone/type/L2TownZone.java   (.../E:/L2j Development/workspace/L2_GameServer/java)   (revision 3695)+++ E:/L2j Development/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/zone/type/L2TownZone.java   (.../http://l2jserver.com/svn/trunk/L2_GameServer/java) (working copy)@@ -97,6 +97,7 @@                return;                        //((L2PcInstance)character).sendMessage("You entered "+_townName);+           ((L2PcInstance)character).setLastTownName(_townName);        }                if (_isPeaceZone && Config.ZONE_TOWN != 2) 
i checked the com/l2jserver/gameserver/model/zone/type/L2TownZone.java
but it seems like it was changed alot.
someone can help me please? where i must aply this line to get the town location?
User avatar
lucan
Posts: 590
Joined: Wed Mar 16, 2011 10:39 pm
Location: Brazil

Re: [help] hitman event

Post by lucan »

Can share the full code?
Tks!
User avatar
spremusik
Posts: 110
Joined: Fri Oct 21, 2011 8:34 pm

Re: [help] hitman event

Post by spremusik »

lucan wrote:Can share the full code?
Tks!
i used this, was already shared.
http://www.4shared.com/file/CVrnVIjL/Hitman_GDE.html
you will have to aply everything manualy and fix the imports.

i cant give you a patch because i added everything to my modified srv.
i dont know anymore exactly what i changed to make a patch. sry
User avatar
lucan
Posts: 590
Joined: Wed Mar 16, 2011 10:39 pm
Location: Brazil

Re: [help] hitman event

Post by lucan »

OK! Thanks! :)
User avatar
lucan
Posts: 590
Joined: Wed Mar 16, 2011 10:39 pm
Location: Brazil

Re: [help] hitman event

Post by lucan »

spremusik wrote:i got a hitman on the internet too.
it was a very old script, i think.
i managed to adapt and fix almost everything.
only problem is with this:

Code: Select all

Index: E:/L2j Development/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/zone/type/L2TownZone.java===================================================================--- E:/L2j Development/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/zone/type/L2TownZone.java   (.../E:/L2j Development/workspace/L2_GameServer/java)   (revision 3695)+++ E:/L2j Development/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/zone/type/L2TownZone.java   (.../http://l2jserver.com/svn/trunk/L2_GameServer/java) (working copy)@@ -97,6 +97,7 @@                return;                        //((L2PcInstance)character).sendMessage("You entered "+_townName);+           ((L2PcInstance)character).setLastTownName(_townName);        }                if (_isPeaceZone && Config.ZONE_TOWN != 2) 
i checked the com/l2jserver/gameserver/model/zone/type/L2TownZone.java
but it seems like it was changed alot.
someone can help me please? where i must aply this line to get the town location?
Very nice event! Works perfect but have this same problem.
User avatar
spremusik
Posts: 110
Joined: Fri Oct 21, 2011 8:34 pm

Re: [help] hitman event

Post by spremusik »

if you dont aply that code, the las town location will be allways null
you can delete that line in html since you still have last known zone.
this is what i did :|
User avatar
lucan
Posts: 590
Joined: Wed Mar 16, 2011 10:39 pm
Location: Brazil

Re: [help] hitman event

Post by lucan »

Yes I ignored this option :D
it probably does not exist anymore in the new chronics l2jserver or is otherwise treated...
Tks!
Post Reply