Jump to content
Sign in to follow this  
Discord

Codigo Java Simples

Recommended Posts

Bom ao fazer uma analise rapida na em algumas revs notei que na maioria delas existe uma possibilidade de se bugar o target do seu personagem tornando-o imune, pois o mesmo no caso so pode ser targeteado por gms.

 

 

Como funciona este bug.

 

O player que ira se bugar manda o trade em alguem e reloga, e vai fazendo isto ate que seu target bugue.

 

 

A solução do bug.

 

Adcionar um codigo que nao permita que um player relogue ao enviar ou receber solicitação de trade, creio que o mesmo deva valer para solicitaçoes de clan.

 

É ai que entra o desenvolvimento, gostaria que alguem que possua um maior conhecimento em java nos desse pelo menos a luz inicial.

Share this post


Link to post
Share on other sites

Precisando de Dedicado ou VPS?

Conheça a L2JCenter

testei em teon e na do zeus funcionou nas 2, la2base original tb funfa, sendo assim creio que deve funfar na black.

a l2jbrasil vo testar dps.

 

 

==================================================

 

Parece que nao houve nenhum interesse =(

Mas vou tentar da continuidade se alguem quiser colaborar beleza.

 

 

==================================================

 

Alguem sabe qual o packet responsabel por enviar as systmsg?

Pois se o char no momento da solicitação de troca fica ocupado para receber trades, basta pegar o "state/simbol" deste estado e adaptalo aos arquivos requestrestart.java e logout.java

 

 

O codigo a ser inserido seria parecido com isso

 

 

    		if (player.isCastingNow())
   		{
   			player.sendMessage("You may not restart using skill.");
   		    return;
   		}
	}

 

 

 

 

 

 

 

 

EDIT

==================================================================================

 

Cosegui fazer o codigo.

Adcionando este codigo voce nao pode relogar enquanto propoe ou recebe uma proposta de trade.

Testei na la2base e funcionou creio que sirva para as outras.

 

net/sf/l2j/gameserver/clientpackets/Logout.java

	if (!(player.isGM()))
       {
           if(CustomZoneManager.getInstance().checkIfInZone("NoEscape", player)){
               player.sendPacket(SystemMessage.sendString("A superior power doesn't allow you to leave the event"));
               player.sendPacket(new ActionFailed());
               return;                   
           }
+            if (player.isProcessingTransaction())
+            {
+            	player.sendMessage("You may not restart while offer trade.");
+            	return;
+            }

 

net/sf/l2j/gameserver/clientpackets/Requestrestart.java

 

    @Override
protected void runImpl()
   {
       L2PcInstance player = getClient().getActiveChar();
       if (player == null)
       {
           _log.warning("[RequestRestart] activeChar null!?");
           return;
       }
+		if (player.isProcessingTransaction())
+		{
+			player.sendMessage("Cannot restart while offer trading");
+			return;
+		}

 

 

Espero que seja util.

PODEM DAR CLOSED POR FAVOR!!!

Edited by Discord

Share this post


Link to post
Share on other sites

e se o cara usar o ctrl + alt + del nao da na mesma ?

verdade e se o cara forçar o client a fechar pelo gerenciador de tarefas?

Share this post


Link to post
Share on other sites

Quando der CRTL + ALT + DEL. O Gameserver reconhece executa a função "OnForcedDisconnection". Então acho que colocando um código com esse algoritmo irá bloquiar isso.

 

SE O PLAYER X EXECUTOU MÉTODO "ONFORCEDDISCONNECTION" EM TRADE O TARGET DELE SERÁ VAZIO (NULL).

 

Fica a idéia...

Edited by vicfelipe®

Share this post


Link to post
Share on other sites

Pode ser vicfelipe vou tentar, vou tentar fazer tambem uma adção de floodprotector para relogin pois este codigo nao resolveu o problema 100%.

Estou sem net vou ver o que da pra fazer aqui.

Edited by Discord

Share this post


Link to post
Share on other sites

Lendo esse post me deparo com esse bug em meu serve so q no meu nem gm consegue dar target no player so q acredito q seja algun progama pois quando puxei o player e conversei com ele axa q ele desligo e volto a pegar target sem ele precisar relogarse alguem souber me dizer se e o mesmo bug ou e um progama fica aew a duvida

vlw obrigado...

Share this post


Link to post
Share on other sites

acho que ta faltando ae ein . ;;; eu acho . ;;;

 

olha só

 

clientpackets.TradeRequest.java (about line 125)


+        if (partner.getAllowTrade() == false)
+   	{
+        	player.sendMessage("Target is not allowed to receive more than one trade request at the same time.");
+        	return;
+        }
+        partner.setAllowTrade(false);
+        player.setAllowTrade(false);
	player.onTransactionRequest(partner);
	partner.sendPacket(new SendTradeRequest(player.getObjectId()));
	SystemMessage sm = new SystemMessage(SystemMessageId.REQUEST_S1_FOR_TRADE);
	sm.addString(partner.getName());
	player.sendPacket(sm);




-----------------------------------------------------------

clientpackets.AnswerTradeRequest.java (about line 69)


       L2PcInstance partner = player.getActiveRequester();
       if (partner == null || L2World.getInstance().findObject(partner.getObjectId()) == null)
       {
           // Trade partner not found, cancel trade
		player.sendPacket(new SendTradeDone(0));
           SystemMessage msg = new SystemMessage(SystemMessageId.TARGET_IS_NOT_FOUND_IN_THE_GAME);
           player.sendPacket(msg);
		player.setActiveRequester(null);
+			player.setAllowTrade(true);
+			partner.setAllowTrade(true);
		msg = null;
           return;
       }


-		if (_response == 1) player.startTrade(partner);



+		if (_response == 1)
+			{
+			player.startTrade(partner);
+			partner.setAllowTrade(true);
+			player.setAllowTrade(true);
+			}



	else
	{
		SystemMessage msg = new SystemMessage(SystemMessageId.S1_DENIED_TRADE_REQUEST);
		msg.addString(player.getName());
		partner.sendPacket(msg);
+			player.setAllowTrade(true);
		msg = null;
	}




------------------------------------------

L2PcInstance.java (about line 497)

   private int _apprentice = 0;
   private int _sponsor = 0;

+    public boolean _allowTrade = true;

private long _clanJoinExpiryTime;
private long _clanCreateExpiryTime;



L2PcInstance.java (about line 8121)


   public void setClanPrivileges(int n)
   {
       _clanPrivileges = n;
   }

+    public boolean getAllowTrade()
+    {
+    	return _allowTrade;
+    }
+    
+    public void setAllowTrade(boolean a)
+    {
+    	_allowTrade = a;
+    }

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  




     



×
×
  • Create New...