Jump to content
  • 0

Question

Posted

hello guys i tried knowing what is causing captcha not working but i have no clue here in config.java

	//Captcha
	public static boolean CAPTCHA_ALLOW;
	public static long CAPTCHA_ANSWER_SECONDS;
	public static long CAPTCHA_JAIL_SECONDS;
	public static long CAPTCHA_TIME_BETWEEN_TESTED_SECONDS;
	public static long CAPTCHA_TIME_BETWEEN_REPORTS_SECONDS;
	public static int CAPTCHA_MIN_LEVEL;
	public static int CAPTCHA_COUNT;
	public static String[] CAPTCHA_PUNISHMENT;
	public static boolean EVENT_RANDOM_TASK;
	public static long EVENT_RANDOM_TIME;
==========================================
//Captcha
		CAPTCHA_ALLOW = otherSettings.getProperty("AllowCaptcha", true);
		CAPTCHA_ANSWER_SECONDS = otherSettings.getProperty("CaptchaAnswerTime", 15L);
		CAPTCHA_JAIL_SECONDS = otherSettings.getProperty("CaptchaJailTime", 1800L);
		CAPTCHA_TIME_BETWEEN_TESTED_SECONDS = otherSettings.getProperty("CaptchaDelayBetweenCaptchas", 1800L);
		CAPTCHA_TIME_BETWEEN_REPORTS_SECONDS = otherSettings.getProperty("CaptchaReportDelay", 7200);
		CAPTCHA_MIN_LEVEL = otherSettings.getProperty("CaptchaMinLevel", 40);
	    CAPTCHA_COUNT = otherSettings.getProperty("CaptchaCount", 2);
	    CAPTCHA_PUNISHMENT = otherSettings.getProperty("CaptchaPunishment", new String[] { "JAIL:90", "JAIL:350", "JAIL:900", "BAN:-100" });
==========================================
captcha.java :
package l2f.gameserver.handler.voicecommands.impl.BotReport;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import l2f.gameserver.Config;
import l2f.commons.util.Rnd;
import l2f.gameserver.data.htm.HtmCache;
import l2f.gameserver.model.Player;
import l2f.gameserver.network.serverpackets.NpcHtmlMessage;
import l2f.gameserver.network.serverpackets.PledgeCrest;
import l2f.gameserver.vote.DDSConverter;
/**
 * Class that handles Generating and Sending Captcha Image to the Player
 */
public class Captcha
{
        private static final char[] CAPTCHA_TEXT_POSSIBILITIES = {'A','B','C','D','E','F','G','H','K','L','M','P','R','S','T','U','W','X','Y','Z'};
        private static final int CAPTCHA_WORD_LENGTH = 5;
        private static final int CAPTCHA_MIN_ID = 1900000000;
        private static final int CAPTCHA_MAX_ID = 2000000000;
        /**
         * Generation new Captcha ID
         * Generation random Captcha Text
         * Generating BufferedImage
         * Sending BufferedImage as PledgeCrest to the Target
         * Sending HTML Window with Captcha to the player
         * @param target that will receive image and html Window
         * @return Captcha Text that player will try to write on Text Box
         */
        public static String sendCaptcha(Player target)
        {
                int captchaId = generateRandomCaptchaId();
                char[] captchaText = generateCaptchaText();
                BufferedImage image = generateCaptcha(captchaText);
                PledgeCrest packet = new PledgeCrest(captchaId, DDSConverter.convertToDDS(image).array());
                target.sendPacket(packet);
                sendCaptchaWindow(target, captchaId);
                return String.valueOf(captchaText);
        }
        /**
         * Getting data/html-en/captcha.htm HTML
         * Replacing %captchaId% and %time%
         * Sending it as HTML window
         * @param target Player that will receive html
         * @param captchaId ID of the image to replace
         */
        private static void sendCaptchaWindow(Player target, int captchaId)
        {
                String text = HtmCache.getInstance().getNotNull("captcha.htm", target);
                text = text.replace("%captchaId%", String.valueOf(captchaId));
                text = text.replace("%time%", String.valueOf(Config.CAPTCHA_ANSWER_SECONDS));
                NpcHtmlMessage msg = new NpcHtmlMessage(0);
                msg.setHtml(text);
                target.sendPacket(msg);
        }
        private static char[] generateCaptchaText()
        {
                char[] text = new char[5];
                for (int i = 0; i < CAPTCHA_WORD_LENGTH; i++)
                        text[i] = CAPTCHA_TEXT_POSSIBILITIES[Rnd.get(CAPTCHA_TEXT_POSSIBILITIES.length)];
                return text;
        }
        private static int generateRandomCaptchaId()
        {
                return Rnd.get(CAPTCHA_MIN_ID, CAPTCHA_MAX_ID);
        }
        private static BufferedImage generateCaptcha(char[] text)
        {
                Color textColor = new Color(38, 213, 30);
                Color circleColor = new Color(73, 100, 151);
                Font textFont = new Font("comic sans ms", Font.BOLD, 24);
                int charsToPrint = 5;
                int width = 256;
                int height = 64;
                int circlesToDraw = 8;
                float horizMargin = 20.0f;
                double rotationRange = 0.7; // this is radians
                BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
                Graphics2D g = (Graphics2D) bufferedImage.getGraphics();
                //Draw an oval
                g.setColor(new Color(30,31,31));
                g.fillRect(0, 0, width, height);
                g.setColor(circleColor);
                for ( int i = 0; i < circlesToDraw; i++ ) {
                        int circleRadius = (int) (Math.random() * height / 2.0);
                        int circleX = (int) (Math.random() * width - circleRadius);
                        int circleY = (int) (Math.random() * height - circleRadius);
                        g.drawOval(circleX, circleY, circleRadius * 2, circleRadius * 2);
                }
                g.setColor(textColor);
                g.setFont(textFont);
                FontMetrics fontMetrics = g.getFontMetrics();
                int maxAdvance = fontMetrics.getMaxAdvance();
                int fontHeight = fontMetrics.getHeight();
                float spaceForLetters = -horizMargin * 2.0F + width;
                float spacePerChar = spaceForLetters / (charsToPrint - 1.0f);
                for ( int i = 0; i < charsToPrint; i++ )
                {
                        char characterToShow = text[i];
                        // this is a separate canvas used for the character so that
                        // we can rotate it independently
                        int charWidth = fontMetrics.charWidth(characterToShow);
                        int charDim = Math.max(maxAdvance, fontHeight);
                        int halfCharDim = charDim / 2;
                        BufferedImage charImage = new BufferedImage(charDim, charDim, BufferedImage.TYPE_INT_ARGB);
                        Graphics2D charGraphics = charImage.createGraphics();
                        charGraphics.translate(halfCharDim, halfCharDim);
                        double angle = (Math.random() - 0.5) * rotationRange;
                        charGraphics.transform(AffineTransform.getRotateInstance(angle));
                        charGraphics.translate(-halfCharDim,-halfCharDim);
                        charGraphics.setColor(textColor);
                        charGraphics.setFont(textFont);
                        int charX = (int) (0.5 * charDim - 0.5 * charWidth);
                        charGraphics.drawString(String.valueOf(characterToShow), charX, (charDim - fontMetrics.getAscent()) / 2 + fontMetrics.getAscent());
                        float x = horizMargin + spacePerChar * i - charDim / 2.0f;
                        int y = (height - charDim) / 2;
                        g.drawImage(charImage, (int) x, y, charDim, charDim, null, null);
                        charGraphics.dispose();
                }
                g.dispose();
                return bufferedImage;
        }
}

im enable it via the other.ini too but it just won't work inside the game no page will appear nothing even i tried with l2mythras - l2 ava - l2age all of the sources have the same problem captcha won't work at all enabling it from config.java - captcha.java - other.ini  even when i check the server id and it just won't show up anyone will know how to make it work or will advice me using another captcha system it will be easy to adabt in this source because it aint easy in this kind pack of files to adabt thank's to all 

0 answers to this question

Recommended Posts

There have been no answers to this question yet

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

    • IMPORTANT INFO: In a few days, I will switch to completely new code, written from scratch with a new download system, patch building and management system. The Updater will become true 2026 code with "foolproof systems". I'm going to create a Discord server for customers to request new ideas and features. FIRST CUSTOMERS ARE ALREADY USING THE NEW UPDATER ON LIVE SERVERS! Watch this topic for upcoming info because the new updater is around the corner! Yes, you can still use self-update on the previous updater! No, the new updater won't be compatible with the old patch system! A new build is required, but players who already have game files won't have to download the entire patch again! New templates and updates to existing templates are coming soon! Sneak peek:  
    • i used guytis IL project and source. i found in his project there are 3 Client version source... 1,CliExt_H5   --->this one cant be compiled in VS2005,i did know why..is it for H5 client? 2,CliExtNew  --->this one is IL version ,but when i compiled it and use it.player cant login game,MD5Checksum wrong.i check the source code,but not found any hints. 3,L2Server    --->this one for HB client?im not sure...   so my question is what are the differences between these three versions of cliext.dll?how can i fix the issue of the MD5Checksum not matching problem?   01/29/2026 21:04:11.366, [CCliExt::HandleCheckSum] Invalid Checksum[1130415144] vs [-721420287] packet[dd] len[29] sum[2698] key[30] HWID[] Account[]! 01/29/2026 21:04:11.366, SocketLimiter::UserSocketBadunknownprotocol 11111111111 01/29/2026 21:04:11.366, [usersocket]unknown protocol from ip[113.137.149.115]!      
    • ## [1.4.1] - 2026-01-29   ### ✨ New Features - **Short Description**: Server owners can add a short tagline (up to 240 characters) on the server info page, under the "Online" status. It appears in the server list (By Votes) for VIP, Gold VIP, and Pinned servers so players see a brief summary at a glance.   ### 🔄 Improvements - **Server Info Page**: Description field is limited to 3000 characters with a character counter; the textarea is vertically resizable. A second **Save Changes** button was added at the bottom (after the description) for easier saving. - **Server Name**: In My Servers → Edit, the server name is read-only and can no longer be changed (avoids accidental changes and naming conflicts). - **Server Rows (By Votes)**: Short descriptions wrap correctly and no longer affect row height; long text is clipped to two lines so the list stays tidy and consistent.   ---
    • @Celestine  sorry for mu question , and post it's to old but i want to ask  ?   do you have uncrypted interface x dat of this interface? i want to add custom autofarm button but when i open it with xdat say file seems  to be  encrypted. thanks!
  • 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..