Jump to content

Gracia CT 2 jail system


Recommended Posts

i was looking at this forums and found a lot of tricks/bugs to how to get out from jail

so i searched a little on the net and found this ! i hope it will be useful :

L2Extend.ini

[JailSystem]
ModEnabled=1
BlockChat=1
BlockParty=1
BlockItems=1
BlockAttack=1
BlockGeneralActions=1

 

CJailSystem.h

class CJailSystem
{
public:

	CJailSystem() { }
	~CJailSystem() { }
	static void Initialize();
	static bool IncommingPackets(CSocket *pSocket, CSPacket *pPacket, INT16 nPacketLen, BYTE nPacketID);
	static bool BlockPacket(CSocket *pSocket, BYTE *packet);
	static bool Say2(CSocket *pSocket, CSPacket *pPacket, int nPacketID, int Length);
	static bool RequestSendFriendMsg(CSocket *pSocket, CSPacket *pPacket, int nPacketID, int Length);
	static bool RequestJoinParty(CSocket *pSocket, CSPacket *pPacket, int nPacketID, int Length);

private:

	bool bModEnabled;
	bool bBlockChat;
	bool bBlockParty;
	bool bBlockItems;
	bool bBlockAttack;
	bool bBlockGeneralActions;
};

CJailSystem *pJS = NULL;

void CJailSystem::Initialize()
{
// Initializing the Object
pJS = new CJailSystem();

// Parsing the Config File
pJS->bModEnabled = CIniFile::GetIntValue("ModEnabled","JailSystem","L2Extend.ini") == 1 ? true : false;
pJS->bBlockChat = CIniFile::GetIntValue("BlockChat","JailSystem","L2Extend.ini") == 1 ? true : false;
pJS->bBlockParty = CIniFile::GetIntValue("BlockParty","JailSystem","L2Extend.ini") == 1 ? true : false;
pJS->bBlockItems = CIniFile::GetIntValue("BlockItems","JailSystem","L2Extend.ini") == 1 ? true : false;
pJS->bBlockAttack = CIniFile::GetIntValue("BlockAttack","JailSystem","L2Extend.ini") == 1 ? true : false;
pJS->bBlockGeneralActions = CIniFile::GetIntValue("BlockGeneralActions","JailSystem","L2Extend.ini") == 1 ? true : false;

}

INT32 nJailSystemIncommingPackets = 0;
bool CJailSystem::IncommingPackets(CSocket *pSocket, CSPacket *pPacket, INT16 nPacketLen, BYTE nPacketID)
{
L2SERVER_SHARED_GUARD(nJailSystemIncommingPackets);
TLS_TRACE_BEGIN;

bool bResult = true;

if ( pJS->bModEnabled && pSocket->user->IsValidUser() )
{
	if ( !pSocket->user->SD->nBuilderLevel ) {

		// Is in jail
		if ( pSocket->user->IsInJail() ) {
			switch ( nPacketID )
			{
				case 0x21: //RequestBypassToServer
				case 0x2e: //RequestMagicSkillList
				case 0x33: //RequestShortCutReg
				case 0x34: //RequestShortCutUse
				case 0x35: //RequestShortCutDel
				case 0x3f: //RequestSkillList
				case 0x63: //RequestQuestList
				case 0x64: //RequestDestroyQuest
				case 0xcd: //RequestShowMiniMap
				case 0x5b: //SendBypassBuildCmd
				case 0x5e: //RequestFriendInvite
				case 0x5f: //RequestFriendAddReply
				case 0x61: //RequestFriendDel
				case 0x6d: //RequestRestartPoint
				case 0x6e: //RequestGMCommand
				case 0x81: //RequestGMList
				case 0x82: //RequestJoinAlly
				case 0x83: //RequestAnswerJoinAlly
				case 0x84: //RequestWithdrawAlly
				case 0x85: //RequestOustAlly
				case 0x86: //RequestDismissAlly
				case 0x87: //RequestSetAllyCrest
				case 0x88: //RequestAllyCrest
				case 0x89: //RequestChangePetName
				case 0xa0: //RequestBlock
				case 0xac: //RequestRecipeBookOpen
				case 0xad: //RequestRecipeBookDestroy
					if (pJS->bBlockGeneralActions) bResult = BlockPacket(pSocket, pPacket->GetBytes(0x00));
					break;

				case 0x1e: //RequestSellItem
				case 0x0f: //ItemList
				case 0x11: //RequestUnEquipItem
				case 0x12: //RequestDropItem 0x17 RequestDropItemFromPet (?)
				case 0x13: //GetItem (not used any more?)
				case 0x14: //UseItem
				case 0x15: //TradeRequest
				case 0x72: //RequestCrystallizeItem
				case 0x73: //RequestPrivateStoreManageSell
				case 0x74: //SetPrivateStoreListSell
				case 0x1f: //RequestBuyItem
				case 0x44: //AnswerTradeRequest
				case 0x58: //RequestEnchantItem
				case 0x59: //RequestDestroyItem
				case 0x8a: //RequestPetUseItem
				case 0x8b: //RequestGiveItemToPet
				case 0x76: //RequestPrivateStoreQuitSell
				case 0x91: //SetPrivateStoreListBuy
				case 0x92: //RequestPrivateStoreBuyManageCancel
				case 0x93: //RequestPrivateStoreBuyQuit
					if (pJS->bBlockItems) bResult = BlockPacket(pSocket, pPacket->GetBytes(0x00));
					break;

				case 0x0A: //Attack
				case 0x2F: //RequestMagicSkillUse
					if (pJS->bBlockAttack) bResult = BlockPacket(pSocket, pPacket->GetBytes(0x00));
					break;

				case 0x29: //RequestJoinParty
				case 0x2A: //RequestAnswerJoinParty
				case 0x2B: //RequestWithDrawalParty
					if (pJS->bBlockParty) bResult = BlockPacket(pSocket, pPacket->GetBytes(0x00));
					break;

				case 0xCC: //RequestSendFriendMsg
					if (pJS->bBlockChat) bResult = RequestSendFriendMsg(pSocket, pPacket, nPacketID, nPacketLen);
					break;
				case 0x38: //Say2
					if (pJS->bBlockChat) bResult = Say2(pSocket, pPacket, nPacketID, nPacketLen);
					break;

				default:
					bResult = true;
					break;
			}
		}
		// Try to interact with someone in jail
		else {
			switch ( nPacketID )
			{
				case 0xCC: //RequestSendFriendMsg
					if (pJS->bBlockChat) bResult = RequestSendFriendMsg(pSocket, pPacket, nPacketID, nPacketLen);
					break;
				case 0x38: //Say2
					if (pJS->bBlockChat) bResult = Say2(pSocket, pPacket, nPacketID, nPacketLen);
					break;
				case 0x29: //RequestJoinParty
					if (pJS->bBlockParty) bResult = RequestJoinParty(pSocket, pPacket, nPacketID, nPacketLen);
					break;

				default:
					bResult = true;
					break;
			}
		}
	}
}

if (!bResult) {
	//CLog::AddAnsi(1,"[%s] Blocked Pckt[0x%02X] from [%ls]",__FUNCTION__,nPacketID,pSocket->user->SD->wszName);
}

TLS_TRACE_END;
return bResult;
}

INT32 nBlockPacket = 0;
bool CJailSystem::BlockPacket(CSocket *pSocket, BYTE *packet)
{
L2SERVER_SHARED_GUARD(nBlockPacket);
TLS_TRACE_BEGIN;

if(pSocket->user->IsValidUser()) {
	pSocket->Send("c", 0x25); // 0x1F - ActionFailed
	goto ACTION_FAILED;
}

TLS_TRACE_END;
return true;

ACTION_FAILED:
TLS_TRACE_END;
return false;

}

INT32 nSay2 = 0;
bool CJailSystem::Say2(CSocket *pSocket, CSPacket *pPacket, int nPacketID, int Length)
{
L2SERVER_SHARED_GUARD(nSay2);
TLS_TRACE_BEGIN;

INT32 nPos = 0;
wstring sText		= pPacket->GetWString(nPos) ; nPos += ((sText.size()*2)+2);
INT32 nType			= pPacket->GetDWord(nPos) ; nPos += 4;
wstring sTarget     = pPacket->GetWString(nPos) ; nPos += ((sTarget.size()*2)+2);

if(pSocket->user->IsValidUser()) {
	if (pSocket->user->IsInJail() && nType>1) {
		pSocket->SendSystemMessage(1357); // You have been blocked from chatting with that contact.
		goto ACTION_FAILED;
	}
	else if (nType == 2) {
		CObjectEx *pTargetEx = CPlayerTracker::GetUserByName(sTarget);
		if ( pTargetEx && pTargetEx->pCreature->IsValidUser() ) {
			if ( pTargetEx->pCreature->IsInJail() && pTargetEx->pCreature->SD->nBuilderLevel==0 ) {
				pSocket->SendSystemMessage(1355); // That contact is currently blocked from chatting
				goto ACTION_FAILED;
			}
		}
	}
}

TLS_TRACE_END;
return true;

ACTION_FAILED:
TLS_TRACE_END;
return false;
}

INT32 nRequestSendFriendMsg = 0;
bool CJailSystem::RequestSendFriendMsg(CSocket *pSocket, CSPacket *pPacket, int nPacketID, int Length)
{
L2SERVER_SHARED_GUARD(nRequestSendFriendMsg);
TLS_TRACE_BEGIN;

INT32 nPos = 0;
wstring sText		= pPacket->GetWString(nPos) ; nPos += ((sText.size()*2)+2);
wstring sTarget     = pPacket->GetWString(nPos) ; nPos += ((sTarget.size()*2)+2);

if(pSocket->user->IsValidUser()) {
	CObjectEx *pTargetEx = CPlayerTracker::GetUserByName(sTarget);
	if ( pTargetEx && pTargetEx->pCreature->IsValidUser() ) {
		if ( pSocket->user->IsInJail() ) {
			pSocket->SendSystemMessage(1357); // You have been blocked from chatting with that contact.
			goto ACTION_FAILED;
		}
		else if ( pTargetEx->pCreature->IsInJail() && pTargetEx->pCreature->SD->nBuilderLevel==0 ) {
			pSocket->SendSystemMessage(1355); // That contact is currently blocked from chatting
			goto ACTION_FAILED;
		}
	}
}

TLS_TRACE_END;
return true;

ACTION_FAILED:
TLS_TRACE_END;
return false;
}


INT32 nRequestJoinParty = 0;
bool CJailSystem::RequestJoinParty(CSocket *pSocket, CSPacket *pPacket, int nPacketID, int Length)
{
L2SERVER_SHARED_GUARD(nRequestJoinParty);
TLS_TRACE_BEGIN;

INT32 nPos = 0;
wstring sTarget         = pPacket->GetWString(nPos); nPos += ((sTarget.size()*2)+2);
INT32 nItemDistribution = pPacket->GetDWord(nPos);   nPos += 4;

if(pSocket->user->IsValidUser()) {
	CObjectEx *pTargetEx = CPlayerTracker::GetUserByName(sTarget);
	if ( pTargetEx && pTargetEx->pCreature->IsValidUser() ) {
		if ( pSocket->user->IsInJail() ) goto ACTION_FAILED;
		else if ( pTargetEx->pCreature->IsInJail() && pTargetEx->pCreature->SD->nBuilderLevel==0 ) goto ACTION_FAILED;
	}
}

TLS_TRACE_END;
return true;

ACTION_FAILED:
TLS_TRACE_END;
return false;
}

 

this will block almost everything a player can do

credits go to fidow for making it and me for share it here

Link to comment
Share on other sites

hmmmm this might work.... but is a funny way to get out from jail.....TESTED...in over 10 servers....low-mid-high-rate srvs......is a sort of bug that it cannot be resolved......if u want to know how to escape from jail send me a msg.....love this bug:X:X:X:X:X:X

Link to comment
Share on other sites

  • 3 weeks later...
  • 5 weeks later...
  • 3 weeks later...
  • Vision changed the title to Gracia CT 2 jail system

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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.

 Share



  • Posts

    • Some recent service updates:   174 - Instagram Views [Works on Normal/IGTV/Reels] [100M] [Instant - 10M/D] - $0.0012 2146 - TikTok Views [5M] [Instant - 1M/D] - $0.0014 1646 - TikTok Views [100M] [1H - 1M/D] - Price Decreased to $0.003 1647 - TikTok Views [10M] [Instant - 1M/D] - Price Decreased to $0.004 1658 - TikTok Views [100M] [Instant - 10M/D] - Price Decreased to $0.005 2148 - TikTok Likes [50K] [Instant - 3K/D] - $0.12
    • no. Im stupid. fixed.     public void setPolymorphInfo(CharSelectSlot polymorphInfo)     {         _polymorphInfo = polymorphInfo;                  for (WorldObject object : getKnownType(Player.class))         {             if (object instanceof Player)             {                 sendInfo(object.getActingPlayer());             }         }     } its not Object its WorldObject. There are more to fix. I will update the patch when im done for anyone interesting https://pastebin.com/MdMQdEwe    
    • You have more characters in the database with different pvp pk point?
    • Hello MxC! I am trying to adapt a event that every day will spawn a npc with the outfit of the top player. I managed to add the patch that i found but on aCis 401 that im using a lot of things are changes. I dont have any error but the npc doesn't appear as it has. here is the patch for what i did. https://pastebin.com/nnpTSaJ9  I think the problem is on this lines +    public void setPolymorphInfo(CharSelectInfoPackage polymorphInfo) +    { +        _polymorphInfo = polymorphInfo; +         +        for (L2Object object : getKnownList().getKnownObjects()) +        { +            if (object instanceof L2PcInstance) +            { +                sendInfo(object.getActingPlayer()); +            } +        } +    } this is from an older acis pack.   I did it like this:     public void setPolymorphInfo(CharSelectSlot polymorphInfo)     {         _polymorphInfo = polymorphInfo;                  for (Object object : getKnownTypeInRadius(Player.class, 2000))         {             if (object instanceof Player)             {                 sendInfo(((Player) object).getActingPlayer());             }         }     } if anyone can help i will apreciate it
    • Went ahead and made some small emitters  they look clunky but on UnrealED, but they're way better ingame. Just add the files to your System, after that you can use L2Tool to edit NPCLogoTex.u and change these textures: then, to use them, you just need to open npcgrp.dat and change the npc's class i.e.: 30359    LineageNPC.a_patriarch_MDarkElf    LineageNPCs.a_patriarch_MDarkElf_m00 to 30359    NPCLogo.NPCLogoA    LineageNPCs.a_patriarch_MDarkElf_m00   I added 10 effects, so you can use them from the letter A to the letter J   download compiled .u download .u source scripts (in case you wanna try to recompile them)  
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock