Jump to content
  • 0

[HELP]DeathCountManager Simple Bug.


Question

Posted

Freya HighFive 5 BETA

 

hello, could you help me with this code?

 

I talk to the npc -> click on "Visualizar" shows the list of characters correctly.

but when I close the window and open it again and talk to the npc -> click on "Visualizar" again doubles the list of characters and every time I do that increases the list of the same characters every 10 results

 

you can help me fix it? or better?

 

problem at L2TopDeathManagerInstance.java

 

FullPatch

 

### Eclipse Workspace Patch 1.0
#P L2J_LastShadowServer
Index: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java    (revision 5722)
+++ java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java    (working copy)
@@ -320,9 +325,9 @@
    private static final String DELETE_ITEM_REUSE_SAVE = "DELETE FROM character_item_reuse_save WHERE charId=?";
    
    // Character Character SQL String Definitions:
-   private static final String INSERT_CHARACTER = "INSERT INTO characters (account_name,charId,char_name,level,maxHp,curHp,maxCp,curCp,maxMp,curMp,face,hairStyle,hairColor,sex,exp,sp,karma,fame,pvpkills,pkkills,clanid,race,classid,deletetime,cancraft,title,title_color,accesslevel,online,isin7sdungeon,clan_privs,wantspeace,base_class,newbie,nobless,power_grade,createDate) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
-   private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,face=?,hairStyle=?,hairColor=?,sex=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,fame=?,pvpkills=?,pkkills=?,clanid=?,race=?,classid=?,deletetime=?,title=?,title_color=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,punish_level=?,punish_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=?,bookmarkslot=?,vitality_points=?,language=? WHERE charId=?";
-   private static final String RESTORE_CHARACTER = "SELECT account_name, charId, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, face, hairStyle, hairColor, sex, heading, x, y, z, exp, expBeforeDeath, sp, karma, fame, pvpkills, pkkills, clanid, race, classid, deletetime, cancraft, title, title_color, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon, punish_level, punish_timer, newbie, nobless, power_grade, subpledge, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level,bookmarkslot,vitality_points,createDate,language FROM characters WHERE charId=?";
+   private static final String INSERT_CHARACTER = "INSERT INTO characters (account_name,charId,char_name,level,maxHp,curHp,maxCp,curCp,maxMp,curMp,face,hairStyle,hairColor,sex,exp,sp,karma,fame,pvpkills,pkkills,clanid,race,classid,deletetime,cancraft,title,title_color,accesslevel,online,isin7sdungeon,clan_privs,wantspeace,base_class,newbie,nobless,power_grade,createDate,deaths) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
+   private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,face=?,hairStyle=?,hairColor=?,sex=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,fame=?,pvpkills=?,pkkills=?,clanid=?,race=?,classid=?,deletetime=?,title=?,title_color=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,punish_level=?,punish_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=?,bookmarkslot=?,vitality_points=?,language=?,deaths=? WHERE charId=?";
+   private static final String RESTORE_CHARACTER = "SELECT account_name, charId, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, face, hairStyle, hairColor, sex, heading, x, y, z, exp, expBeforeDeath, sp, karma, fame, pvpkills, pkkills, clanid, race, classid, deletetime, cancraft, title, title_color, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon, punish_level, punish_timer, newbie, nobless, power_grade, subpledge, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level,bookmarkslot,vitality_points,createDate,language,deaths FROM characters WHERE charId=?";
    
    // Character Teleport Bookmark:
    private static final String INSERT_TP_BOOKMARK = "INSERT INTO character_tpbookmark (charId,Id,x,y,z,icon,tag,name) values (?,?,?,?,?,?,?,?)";
@@ -541,6 +546,14 @@
    private int _duelId = 0;
    private SystemMessageId _noDuelReason = SystemMessageId.THERE_IS_NO_OPPONENT_TO_RECEIVE_YOUR_CHALLENGE_FOR_A_DUEL;
    
+   /** Numero de pjs muertos en pvp suma una muerte */
+   private int _deaths;
+   
    /** Boat and AirShip */
    private L2Vehicle _vehicle = null;
    private Point3D _inVehiclePosition;
@@ -2751,6 +2767,23 @@
    }
    
    /**
+    * @return Las muertes que L2PcInstance recoje.
+    */
+   public int getDeaths()
+   {
+       return _deaths;
+   }
+   
+   /**
+    * Setea las deaths en L2PcInstance durante el pvp flag.
+    * @param deaths
+    */
+   public void setDeaths(int deaths)
+   {
+       _deaths = deaths;
+   }
+   
+   /**
     * @return the Fame of this L2PcInstance
     */
    public int getFame()
@@ -6188,6 +6236,7 @@
        ))
        {
            increasePvpKills(target);
+           increaseDeaths(target);
        }
        else
        // Target player doesn't have pvp flag set
@@ -6197,6 +6246,7 @@
            {
                // 'Both way war' -> 'PvP Kill'
                increasePvpKills(target);
+               increaseDeaths(target);
                return;
            }
@@ -6235,6 +6289,23 @@
    }
    
    /**
+    * Incrementa las muertes y envia informacion al personaje
+    * @param target
+    */
+   public void increaseDeaths(L2Character target)
+   {
+       if (!(target instanceof L2PcInstance) && AntiFeedManager.getInstance().check(this, target))
+       {
+           // incrementa Deaths cuando el pj es matado en PvPMode
+           setDeaths(getDeaths() + 1);
+           
+           // Send a Server->Client UserInfo packet to attacker with its Karma and PK Counter
+           sendPacket(new UserInfo(this));
+           sendPacket(new ExBrExtraUserInfo(this));
+       }
+   }
+   
+   /**
     * Increase pk count, karma and send the info to the player
     * @param target
     */
@@ -7679,6 +7750,7 @@
            statement.setInt(35, isNoble() ? 1 : 0);
            statement.setLong(36, 0);
            statement.setDate(37, new Date(getCreateDate().getTimeInMillis()));
+           statement.setInt(38, getDeaths());
            statement.executeUpdate();
        }
        catch (Exception e)
@@ -7873,6 +7945,9 @@
                    // Language
                    player.setLang(rset.getString("language"));
                    
+                   // Setea deaths No necesita restaurar
+                   player.setDeaths(rset.getInt("deaths"));
+                   
                    // Retrieve the name and ID of the other characters assigned to this account.
                    try (PreparedStatement stmt = con.prepareStatement("SELECT charId, char_name FROM characters WHERE account_name=? AND charId<>?"))
                    {
@@ -8316,7 +8391,8 @@
            statement.setInt(50, getBookMarkSlot());
            statement.setInt(51, getVitalityPoints());
            statement.setString(52, getLang());
-           statement.setInt(53, getObjectId());
+           statement.setInt(53, getDeaths());
+           statement.setInt(54, getObjectId());
            
            statement.execute();
            statement.close();
\ No newline at end of file
Index: java/com/l2jserver/gameserver/model/actor/instance/L2TopDeathManagerInstance.java
===================================================================
--- java/com/l2jserver/gameserver/model/actor/instance/L2TopDeathManagerInstance.java   (revision 0)
+++ java/com/l2jserver/gameserver/model/actor/instance/L2TopDeathManagerInstance.java   (working copy)
@@ -0,0 +1,181 @@
+/*
+ * 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.actor.instance;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+
+import javolution.text.TextBuilder;
+
+import com.l2jserver.L2DatabaseFactory;
+import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
+import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
+
+/**
+ * @author DLjac
+ */
+
+public class L2TopDeathManagerInstance extends L2NpcInstance
+{
+   public String filename;
+   
+   public L2TopDeathManagerInstance(int objectId, L2NpcTemplate template)
+   {
+       super(objectId, template);
+   }
+   
+   @Override
+   public void onBypassFeedback(L2PcInstance player, String command)
+   {
+       if ((player == null) || (player.getLastFolkNPC() == null) || (player.getLastFolkNPC().getObjectId() != this.getObjectId()))
+       {
+           return;
+       }
+       
+       if (command.startsWith("TopDeaths"))
+       {
+           TopDeaths(player);
+       }
+   }
+   
+   @Override
+   public void showChatWindow(L2PcInstance player, int val)
+   {
+       filename = (getHtmlPath(getNpcId(), val));
+       NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId());
+       msg.setHtml(TopWindow(player));
+       msg.replace("%objectId%", String.valueOf(this.getObjectId()));
+       player.sendPacket(msg);
+   }
+   
+   private String TopWindow(L2PcInstance player)
+   {
+       TextBuilder tb = new TextBuilder();
+       tb.append("<html><title>Ranking Basado en K/D</title><body>");
+       tb.append("<center>");
+       tb.append("<img src=\"l2ui_ch3.herotower_deco\" width=\"256\" height=\"32\"><tr>");
+       tb.append("<font color=\"999999\">Top 10 Kills/Deaths</font><br><br>");
+       tb.append("Hola! " + player.getName() + "<br>");
+       tb.append("<br>");
+       tb.append("<br>");
+       tb.append("<tr>");
+       tb.append("<td><button value=\"Visualizar\" action=\"bypass -h npc_%objectId%_TopDeaths\" width=\"100\" height=\"21\" back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></tr>");
+       tb.append("</tr>");
+       tb.append("<img src=\"l2ui_ch3.herotower_deco\" width=\"256\" height=\"32\"><br>");
+       tb.append("</center>");
+       tb.append("</body></html>");
+       return tb.toString();
+   }
+   
+   private int pos;
+   private final TextBuilder _deathsList = new TextBuilder();
+   
+   @SuppressWarnings("null")
+   private void TopDeaths(L2PcInstance player)
+   {
+       Connection con = null;
+       
+       try
+       {
+           pos = 1;
+           con = L2DatabaseFactory.getInstance().getConnection();
+           PreparedStatement statement = con.prepareStatement("SELECT char_name,pvpkills,deaths FROM characters WHERE accesslevel=0 ORDER BY deaths  LIMIT 10");
+           
+           ResultSet result = statement.executeQuery();
+           
+           while (result.next())
+           {
+               addChar(pos, result.getString("char_name"), result.getInt("pvpkills"), result.getInt("deaths"));
+               pos++;
+               
+               NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+               TextBuilder sb = new TextBuilder();
+               sb.append("<html><title>Ranking Basado en K/D</title><body>");
+               sb.append("<center>");
+               sb.append("<img src=\"l2ui_ch3.herotower_deco\" width=256 height=32><br>");
+               sb.append("<font color=\"999999\">Top 10 Kills/Deaths</font><br><br>");
+               sb.append("<br>");
+               sb.append("<table border=0 width=250><tr>");
+               sb.append("<td FIXWIDTH=25 height=24 align=\"center\"><font color=\"ff0000\">No.</font></td>");
+               sb.append("<td FIXWIDTH=80 height=24 align=\"center\"><font color=\"ae9977\">Nombre</font></td>");
+               sb.append("<td FIXWIDTH=50 height=24 align=\"center\"><font color=\"ae9977\">Kills</font></td>");
+               sb.append("<td FIXWIDTH=50 height=24 align=\"center\"><font color=\"ae9977\">Deaths</font></td>");
+               sb.append("<td FIXWIDTH=60 height=24 align=\"center\"><font color=\"ea8b11\">K/D Ratio</font></td></tr></table>");
+               sb.append(loadDeathList());
+               sb.append("<img src=\"l2ui_ch3.herotower_deco\" width=256 height=32><br>");
+               sb.append("</center>");
+               sb.append("</body></html>");
+               html.setHtml(sb.toString());
+               player.sendPacket(html);
+           }
+           
+           result.close();
+           statement.close();
+       }
+       catch (Exception e)
+       {
+           e.printStackTrace();
+       }
+       finally
+       {
+           try
+           {
+               con.close();
+           }
+           catch (Exception e)
+           {
+               
+           }
+       }
+   }
+   
+   public String loadDeathList()
+   {
+       return _deathsList.toString();
+   }
+   
+   /**
+    * @param pos
+    * @param name
+    * @param pvp
+    * @param muertes
+    */
+   private void addChar(int pos, String name, int pvp, int muertes)
+   {
+       float ratecalc = (float) pvp / (float) muertes;
+       _deathsList.append("<table border=0 width=250><tr>");
+       _deathsList.append("<td FIXWIDTH=25 align=\"center\">" + pos + ".</td>");
+       _deathsList.append("<td FIXWIDTH=80 align=\"center\">" + name + "</td>");
+       _deathsList.append("<td FIXWIDTH=50 align=\"center\">" + pvp + "</td>");
+       _deathsList.append("<td FIXWIDTH=50 align=\"center\">" + muertes + "</td>");
+       _deathsList.append("<td FIXWIDTH=60 align=\"center\"><font color=FF0000>" + ratecalc + "</font></td></tr></table>");
+       }
+   }
+}
\ No newline at end of file

DataPack ->characters.sql

  `language` varchar(2) DEFAULT NULL,
+  `deaths` decimal(11,0) DEFAULT NULL,
  PRIMARY KEY (`charId`),

 

thank you very much

4 answers to this question

Recommended Posts

  • 0
Posted

_deathsList is maintained, so the content is growing and growing as you only append. Clear _deathsList once used or make _deathsList part of the methods in order the variable life cycle is taken in consideration.

 

Btw, _deathsList shouldn't be public and not be a class variable, as it can be generated by any player from the NPC (so the get... is pointless). Or if you want a public use, you have to maintain it in another way.

 

Finally you should HTMlize your internal text, in order it is saved in the HTMCache rather than being generated every time a player make a request (overused by players). I could say the same about the connection : you could maintain a list of top deaths rather than making a connection (and so make it public).

 

The problem with your current implementation is, if 2 players request the NPC in same time, it will use the same variable lol no matter if you clean it or not, and so you will end in the same situation you actually are.

 

So short : if you want to maintain a public list, you have to recode the whole concept. If you want only the NPC, drop the deathlist stuff and built it internally in addChar. You probably could generate names directly in the while(rs.next()), dropping addChar in the process.

  • 0
Posted

thanks for you comments, read this

 

rework of the code and now there is a different problem, just random 1 result not ORDER BY deaths DESC LIMIT 10

 

here update

/*
* 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.actor.instance;

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

import javolution.text.TextBuilder;

import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;

/**
* @author DLjac
*/

public class L2TopDeathManagerInstance extends L2NpcInstance
{
public String filename;

public L2TopDeathManagerInstance(int objectId, L2NpcTemplate template)
{
	super(objectId, template);
}

@Override
public void onBypassFeedback(L2PcInstance player, String command)
{
	if ((player == null) || (player.getLastFolkNPC() == null) || (player.getLastFolkNPC().getObjectId() != this.getObjectId()))
	{
		return;
	}

	if (command.startsWith("TopDeaths"))
	{
		TopDeaths(player);
	}
}

@Override
public void showChatWindow(L2PcInstance player, int val)
{
	filename = (getHtmlPath(getNpcId(), val));
	NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId());
	msg.setHtml(TopWindow(player));
	msg.replace("%objectId%", String.valueOf(this.getObjectId()));
	player.sendPacket(msg);
}

private String TopWindow(L2PcInstance player)
{
	TextBuilder tb = new TextBuilder();
	tb.append("<html><title>Ranking Basado en K/D</title><body>");
	tb.append("<center>");
	tb.append("<img src=\"l2ui_ch3.herotower_deco\" width=\"256\" height=\"32\"><br>");
	tb.append("<font color=\"999999\">Top 10 Kills/Deaths</font><br><br>");
	tb.append("Hola! " + player.getName() + "<br>");
	tb.append("<br>");
	tb.append("<br>");
	tb.append("<tr>");
	tb.append("<td><button value=\"Visualizar\" action=\"bypass -h npc_%objectId%_TopDeaths\" width=\"100\" height=\"21\" back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");
	tb.append("</tr>");
	tb.append("<img src=\"l2ui_ch3.herotower_deco\" width=\"256\" height=\"32\"><br>");
	tb.append("</center>");
	tb.append("</body></html>");
	return tb.toString();
}

private int pos;

@SuppressWarnings("null")
private void TopDeaths(L2PcInstance player)
{
	Connection con = null;
	PreparedStatement statement = null;
	ResultSet result = null;

	try
	{
		pos = 1;
		con = L2DatabaseFactory.getInstance().getConnection();
		statement = con.prepareStatement("SELECT char_name,pvpkills,deaths FROM characters WHERE accesslevel=0 ORDER BY deaths DESC LIMIT 10");

		result = statement.executeQuery();

		while (result.next())
		{
			String name = result.getString("char_name");
			int pvp = result.getInt("pvpkills");
			int muertes = result.getInt("deaths");
			float ratecalc = (float) pvp / muertes;
			pos++;

			NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
			TextBuilder sb = new TextBuilder();
			sb.append("<html><title>Ranking Basado en K/D</title><body>");
			sb.append("<center>");
			sb.append("<img src=\"l2ui_ch3.herotower_deco\" width=256 height=32><br>");
			sb.append("<font color=\"999999\">Top 10 Kills/Deaths</font><br><br>");
			sb.append("<br>");
			sb.append("<table border=0 width=250><tr>");
			sb.append("<td FIXWIDTH=25 height=24 align=\"center\"><font color=\"ff0000\">No.</font></td>");
			sb.append("<td FIXWIDTH=80 height=24 align=\"center\"><font color=\"ae9977\">Nombre</font></td>");
			sb.append("<td FIXWIDTH=50 height=24 align=\"center\"><font color=\"ae9977\">Kills</font></td>");
			sb.append("<td FIXWIDTH=50 height=24 align=\"center\"><font color=\"ae9977\">Deaths</font></td>");
			sb.append("<td FIXWIDTH=60 height=24 align=\"center\"><font color=\"ea8b11\">K/D Ratio</font></td></tr></table>");
			sb.append("<table border=0 width=250><tr>");
			sb.append("<td FIXWIDTH=25 align=\"center\">" + pos + ".</td>");
			sb.append("<td FIXWIDTH=80 align=\"center\">" + name + "</td>");
			sb.append("<td FIXWIDTH=50 align=\"center\">" + pvp + "</td>");
			sb.append("<td FIXWIDTH=50 align=\"center\">" + muertes + "</td>");
			if (ratecalc > 1)
			{
				sb.append("<td FIXWIDTH=60 align=\"center\"><font color=99FF00>" + ratecalc + "</font></td></tr></table>");
			}
			else
			{
				sb.append("<td FIXWIDTH=60 align=\"center\"><font color=FF0000>" + ratecalc + "</font></td></tr></table>");
			}
			sb.append("<img src=\"l2ui_ch3.herotower_deco\" width=256 height=32><br>");
			sb.append("</center>");
			sb.append("</body></html>");
			html.setHtml(sb.toString());
			player.sendPacket(html);
		}

		result.close();
		statement.close();
	}
	catch (Exception e)
	{
		e.printStackTrace();
	}
	finally
	{
		try
		{
			con.close();
		}
		catch (Exception e)
		{

		}
	}
}
}

  • 0
Posted

At every rs.next() you create a new HTM. In the loop you have to .append( a StringBuilder, created before (let's say in the beginning of the method).

 

Your initial code wasn't totally wrong, but the TextBuilder was misplaced. Instead of being class variable, it must be internal variable, created and deleted in the process of HTM generating. I must add pos isn't a class variable aswell.

 

Btw, you should banned TextBuilder from your generated strings. It's a Javolution class, and Javolution sucks (poor performance compared to JDK 7). Use StringBuilder instead.

 

Finally, if you use JDK 7, all Connection should be made as follow :

 

	try (Connection con = L2DatabaseFactory.getInstance().getConnection())
	{
		int pos = 1;

		PreparedStatement statement = con.prepareStatement("SELECT char_name,pvpkills,deaths FROM characters WHERE accesslevel=0 ORDER BY deaths DESC LIMIT 10");

		ResultSet result = statement.executeQuery();

		(...)
	}
	catch (Exception e)
	{
		e.printStackTrace();
	}

 

That method should be :

 

- load the HTM from the cache in a NpcHtmlMessage (let's say htmToSend).

- initialize a StringBuilder (let's say deathList)

- make the connection and append deathList with content using rs.next().

- use htmToSend.replace("%list%", deathList.toString()));

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • https://web.archive.org/web/20260306183214/https://maxcheaters.com/topic/241828-l2j-l2damage/page/3/ https://l2topzone.com/forum/l2-server-support-problems/9/l2damage-stopped/30514 Also we will try to push longer seasons ever ! (1135-100)/9 = 115 online
    • ONE SIDE – AND EVERYTHING BREAKS ▪ Looks like a simple case: Florida DL, back side, barcode – “clean and minimal”. ▪ In reality, these are exactly the tasks that fail most often. – data provided as plain text – request only for the back side – focus on the barcode (PDF417) ▪ And here’s the key point: ▪ A barcode is not just a “picture on the back”. It’s compressed logic of the entire document. ▪ If it doesn’t match the front, format, and data structure – the system flags it instantly. ▪ Many create a “similar-looking” code. But systems don’t read “similar” – they read by specification. ▪ In cases like this, it’s not about design. It’s about correct data assembly and how it behaves inside the format. ▪ Today only – 15% off for verification cases. ▪ Want it to pass, not just look right? Describe your case – we’ll show where even clean files break. › TG: @mustang_service ( https:// t.me/ mustang_service ) › Channel: Mustang Service ( https:// t.me/ +JPpJCETg-xM1NjNl ) #editing #photoshop #documents #verification #case
    • Your anonymity is a corpse. Blockchain forgets nothing. Your transactions are direct footprints in the hands of anyone who takes an interest. [✘] Still believe in "mixing"? Forget it. Classic Bitcoin mixers are an illusion of security. For Chainalysis and Elliptic algorithms, any attempt to hide tracks in the ledger is transparent. Your "mixing" is an artifact that gets filtered out in seconds. Every transaction leaves a trail that leads to frozen assets or unwanted questions from exchanges.  We don't mix. We break the link. [-] Input: Your "dirty" coins (Dirty BTC/ETH) with all their history and digital markers stay with us. [+] Output: You receive absolutely clean assets (Clean Crypto) from our reserves, which have never intersected with your past. This isn't a game of hide and seek. This is the surgical removal of your financial history from the system.   ------------------------------------------------------------------- Technical indexing: Bitcoin Mixer, Crypto Mixer, Clean BTC, Clean ETH, Anti-Chainalysis, Best Bitcoin Mixer, Anonymous Crypto Exchange, NoLog Mixing Service.
    • Here you are: https://l2crypt.com/l2-tools/l2editor-source/
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..