Jump to content

Recommended Posts

  • 2 months later...
  • 1 year later...
Posted (edited)

AMAZING man. Can you make it to be hero till character relog ? or only for 24 hours ? ( it will be nice if its posible to set time. )

And can you shere the code for Hero item. Once i played one server that you can get 1 hero coint that's make you hero for 24 hours . :)

Edited by MrJack_DeV
Posted

AMAZING man. Can you make it to be hero till character relog ? or only for 24 hours ? ( it will be nice if its posible to set time. )

And can you shere the code for Hero item. Once i played one server that you can get 1 hero coint that's make you hero for 24 hours . :)

about hero item,

 

 

// Hero Custom Item , Created By Stefoulis15
// Added From Stefoulis15 Into The Core.
// Visit www.MaxCheaters.com For Support 
// Source File Name:   HeroCustomItem.java
// Modded by programmos, sword dev
 
package com.l2jfrozen.gameserver.handler.itemhandlers;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.logging.Level;
import java.util.logging.Logger;
 
import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.handler.IItemHandler;
import com.l2jfrozen.gameserver.model.actor.instance.L2ItemInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2PlayableInstance;
import com.l2jfrozen.gameserver.network.serverpackets.SocialAction;
import com.l2jfrozen.util.CloseUtil;
import com.l2jfrozen.util.database.L2DatabaseFactory;
 
public class HeroCustomItem implements IItemHandler
{
 
public HeroCustomItem()
{
//null
}
 
protected static final Logger _log = Logger.getLogger(HeroCustomItem.class.getName());
 
String INSERT_DATA = "REPLACE INTO characters_custom_data (obj_Id, char_name, hero, noble, donator, hero_end_date) VALUES (?,?,?,?,?,?)";
 
@Override
public void useItem(L2PlayableInstance playable, L2ItemInstance item)
{
if(Config.HERO_CUSTOM_ITEMS)
{
if(!(playable instanceof L2PcInstance))
return;
 
L2PcInstance activeChar = (L2PcInstance) playable;
 
if(activeChar.isInOlympiadMode())
{
activeChar.sendMessage("This Item Cannot Be Used On Olympiad Games.");
}
 
if(activeChar.isHero())
{
activeChar.sendMessage("You Are Already A Hero!.");
}
else
{
activeChar.broadcastPacket(new SocialAction(activeChar.getObjectId(), 16));
activeChar.setHero(true);
updateDatabase(activeChar, Config.HERO_CUSTOM_DAY * 24L * 60L * 60L * 1000L);
activeChar.sendMessage("You Are Now a Hero,You Are Granted With Hero Status , Skills ,Aura.");
activeChar.broadcastUserInfo();
playable.destroyItem("Consume", item.getObjectId(), 1, null, false);
activeChar.getInventory().addItem("Wings", 6842, 1, activeChar, null);
}
activeChar = null;
}
}
 
@Override
public int[] getItemIds()
{
return ITEM_IDS;
}
 
private void updateDatabase(L2PcInstance player, long heroTime)
{
Connection con = null;
try
{
if(player == null)
return;
 
con = L2DatabaseFactory.getInstance().getConnection(false);
PreparedStatement stmt = con.prepareStatement(INSERT_DATA);
 
stmt.setInt(1, player.getObjectId());
stmt.setString(2, player.getName());
stmt.setInt(3, 1);
stmt.setInt(4, player.isNoble() ? 1 : 0);
stmt.setInt(5, player.isDonator() ? 1 : 0);
stmt.setLong(6, heroTime == 0 ? 0 : System.currentTimeMillis() + heroTime);
stmt.execute();
stmt.close();
stmt = null;
}
catch(Exception e)
{
if(Config.ENABLE_ALL_EXCEPTIONS)
e.printStackTrace();
 
_log.log(Level.SEVERE, "Error: could not update database: ", e);
}
finally
{
CloseUtil.close(con);
 
con = null;
}
}
 
private static final int ITEM_IDS[] =
{
Config.HERO_CUSTOM_ITEM_ID
};
 
}
Posted (edited)

 

about hero item,

// Hero Custom Item , Created By Stefoulis15
// Added From Stefoulis15 Into The Core.
// Visit www.MaxCheaters.com For Support 
// Source File Name:   HeroCustomItem.java
// Modded by programmos, sword dev
 
package com.l2jfrozen.gameserver.handler.itemhandlers;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.logging.Level;
import java.util.logging.Logger;
 
import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.handler.IItemHandler;
import com.l2jfrozen.gameserver.model.actor.instance.L2ItemInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2PlayableInstance;
import com.l2jfrozen.gameserver.network.serverpackets.SocialAction;
import com.l2jfrozen.util.CloseUtil;
import com.l2jfrozen.util.database.L2DatabaseFactory;
 
public class HeroCustomItem implements IItemHandler
{
 
public HeroCustomItem()
{
//null
}
 
protected static final Logger _log = Logger.getLogger(HeroCustomItem.class.getName());
 
String INSERT_DATA = "REPLACE INTO characters_custom_data (obj_Id, char_name, hero, noble, donator, hero_end_date) VALUES (?,?,?,?,?,?)";
 
@Override
public void useItem(L2PlayableInstance playable, L2ItemInstance item)
{
if(Config.HERO_CUSTOM_ITEMS)
{
if(!(playable instanceof L2PcInstance))
return;
 
L2PcInstance activeChar = (L2PcInstance) playable;
 
if(activeChar.isInOlympiadMode())
{
activeChar.sendMessage("This Item Cannot Be Used On Olympiad Games.");
}
 
if(activeChar.isHero())
{
activeChar.sendMessage("You Are Already A Hero!.");
}
else
{
activeChar.broadcastPacket(new SocialAction(activeChar.getObjectId(), 16));
activeChar.setHero(true);
updateDatabase(activeChar, Config.HERO_CUSTOM_DAY * 24L * 60L * 60L * 1000L);
activeChar.sendMessage("You Are Now a Hero,You Are Granted With Hero Status , Skills ,Aura.");
activeChar.broadcastUserInfo();
playable.destroyItem("Consume", item.getObjectId(), 1, null, false);
activeChar.getInventory().addItem("Wings", 6842, 1, activeChar, null);
}
activeChar = null;
}
}
 
@Override
public int[] getItemIds()
{
return ITEM_IDS;
}
 
private void updateDatabase(L2PcInstance player, long heroTime)
{
Connection con = null;
try
{
if(player == null)
return;
 
con = L2DatabaseFactory.getInstance().getConnection(false);
PreparedStatement stmt = con.prepareStatement(INSERT_DATA);
 
stmt.setInt(1, player.getObjectId());
stmt.setString(2, player.getName());
stmt.setInt(3, 1);
stmt.setInt(4, player.isNoble() ? 1 : 0);
stmt.setInt(5, player.isDonator() ? 1 : 0);
stmt.setLong(6, heroTime == 0 ? 0 : System.currentTimeMillis() + heroTime);
stmt.execute();
stmt.close();
stmt = null;
}
catch(Exception e)
{
if(Config.ENABLE_ALL_EXCEPTIONS)
e.printStackTrace();
 
_log.log(Level.SEVERE, "Error: could not update database: ", e);
}
finally
{
CloseUtil.close(con);
 
con = null;
}
}
 
private static final int ITEM_IDS[] =
{
Config.HERO_CUSTOM_ITEM_ID
};
 
}

hmm i have add this code in 1 npc in my server (l2j freya) give the hero correct, config working but when restart hero disapear :(

 

The code: http://pastebin.com/brUdp6sx

 

photo from navicat : http://postimg.org/image/vvpgxwqq1/

Edited by nikosdevil20

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Posts

    • I open the l2j server and see 1. XOR->NewCrypt.encXORPass(raw, offset, size, Rnd.nextInt()); ---> xor everything is clear 2. _staticCrypt.crypt(raw, offset, size); -----> private void encryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex) { int xl = bytesTo32bits(src, srcIndex); int xr = bytesTo32bits(src, srcIndex + 4); xl ^= P[0]; for (int i = 1; i < ROUNDS; i += 2) { xr ^= func(xl) ^ P[i]; xl ^= func(xr) ^ P[i + 1]; } xr ^= P[ROUNDS + 1]; bits32ToBytes(xr, dst, dstIndex); bits32ToBytes(xl, dst, dstIndex + 4); }   I scroll down the code and see this code   ----->>> /**      * Decrypt the given input starting at the given offset and place the result in the provided buffer starting at the given offset. The input will be an exact multiple of our blocksize.      * @param src      * @param srcIndex      * @param dst      * @param dstIndex      */     private void decryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex)     {         int xl = bytesTo32bits(src, srcIndex);         int xr = bytesTo32bits(src, srcIndex + 4);         xl ^= P[ROUNDS + 1];         for (int i = ROUNDS; i > 0; i -= 2)         {             xr ^= func(xl) ^ P[i];             xl ^= func(xr) ^ P[i - 1];         }         xr ^= P[0];         bits32ToBytes(xr, dst, dstIndex);         bits32ToBytes(xl, dst, dstIndex + 4);     }   ===================================================   I'm transferring this code to C# private void decryptBlock(byte[] src, uint srcIndex, byte[] dst, uint dstIndex)    {        uint xl = BytesTo32bits(src, srcIndex);        uint xr = BytesTo32bits(src, srcIndex + 4);        xl ^= P[ROUNDS + 1];        for (int i = ROUNDS; i > 0; i -= 2)        {            xr ^= F(xl) ^ P[i];            xl ^= F(xr) ^ P[i - 1];        }        xr ^= P[0];        Bits32ToBytes(xr, dst, dstIndex);        Bits32ToBytes(xl, dst, dstIndex + 4);    }   And in c# I first do decryptBlock and then XOR and everything works, I get the package and the first 2 bytes have already been removed as far as I remember   This only works for the login server for the game server, I think it’s not much different  
    • Ask him what you know, and what I know hahaha.
    • https://prnt.sc/2G_hOHfUIGLM   not sure what you mean Teddy boi  
    • Hello first of all thank you for your prompt response and the time you are taking to read this and answer, I am aware that not everyone takes the time and for that I thank you. On the other hand the specific problem is when decrypting this package and being able to parse it,  In some places it says that it is only encrypted with xor, in others that only a static blowfish is used and in others that both are used in the order of xor and then blowfish, this is the problem in spite of being able to see the encryption mechanisms of the servers, I can not put together the function that reverses this encryption to obtain the keys sent by the init packet.   Thanks for your time, hopefully the rest can contribute something because it is a super useful module to extend any functionality to the client and I will publish it in an opensource way when it is finished.
  • Topics

×
×
  • Create New...