i was trying to add a feature to count mobs to my captcha system from like two months but i did not succed
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
*/publicclassCaptcha{privatestatic 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'};privatestatic final int CAPTCHA_WORD_LENGTH =5;privatestatic final int CAPTCHA_MIN_ID =1;privatestatic final int CAPTCHA_MAX_ID =1;/**
* 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
*/publicstaticString sendCaptcha(Player target){int captchaId = generateRandomCaptchaId();char[] captchaText = generateCaptchaText();BufferedImage image = generateCaptcha(captchaText);PledgeCrest packet =newPledgeCrest(captchaId,DDSConverter.convertToDDS(image).array());
target.sendPacket(packet);
sendCaptchaWindow(target, captchaId);returnString.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
*/privatestaticvoid 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 =newNpcHtmlMessage(0);
msg.setHtml(text);
target.sendPacket(msg);}privatestaticchar[] generateCaptchaText(){char[] text =newchar[5];for(int i =0; i < CAPTCHA_WORD_LENGTH; i++)
text[i]= CAPTCHA_TEXT_POSSIBILITIES[Rnd.get(CAPTCHA_TEXT_POSSIBILITIES.length)];return text;}privatestaticint generateRandomCaptchaId(){returnRnd.get(CAPTCHA_MIN_ID, CAPTCHA_MAX_ID);}privatestaticBufferedImage generateCaptcha(char[] text){Color textColor =newColor(38,213,30);Color circleColor =newColor(73,100,151);Font textFont =newFont("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 radiansBufferedImage bufferedImage =newBufferedImage(width, height,BufferedImage.TYPE_INT_RGB);Graphics2D g =(Graphics2D) bufferedImage.getGraphics();//Draw an oval
g.setColor(newColor(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 independentlyint charWidth = fontMetrics.charWidth(characterToShow);int charDim =Math.max(maxAdvance, fontHeight);int halfCharDim = charDim /2;BufferedImage charImage =newBufferedImage(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;}}
my goal is to add those lines in the code
public void onDeath(Creature actor, Creature killer)
{
if(Config.ENABLE_CAPTCHA && actor.isMonster() && killer != null && killer != actor && killer.isPlayer())
{
Player player = killer.getPlayer();
String customHtm = HtmCache.getInstance().getNotNull("mods/Captcha/ShowCaptchaWindow.htm", player);
// +1 to mobcounter
addKilledMob(player);
boolean doCaptcha = CaptchaImage.getKilledMobs(player.getObjectId()) >= Rnd.get(Config.CAPTCHA_MIN_MONSTERS, Config.CAPTCHA_MAX_MONSTERS) && getCaptchaRequests(player) <= 0; // random monster number.
all i manage to do i just adding the lines in the config.java
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.
@BruT
At what age did you stop going to school?
How can you be so idiotic?
In many countries around the world, calling someone a 'monkey' is a crime.
There’s nothing more satisfying than seeing Mobius' desperation to defend himself by using insults and revealing who he really is. 🤣😂🤣😂🤣😂🤣😂🤣
@Moebius
Bem, bem...
O grande paladino, o poderoso deus-rei todo-poderoso de L2J, decidiu aparecer para soltar suas verdadeiras palavras de insultos e racismo contra os outros.
Acredito que, de fato, os administradores não tolerarão isso.@Maxtor
Cada palavra que você diz mostra exatamente o quanto você é um imbecil, um golpista que engana as pessoas e vende códigos fraudulentos para indivíduos inocentes.
Sabe o que ainda é melhor? Aqui neste fórum, você não tem poder sobre as opiniões dos outros.
Que outras palavras você tem para insultar as pessoas?
Estou aqui para ver você chorar e chamar por sua mamãe.
Você é um verdadeiro covarde que engana pessoas inocentes sem conhecimento. É mais fácil para você enganá-las dessa forma, não é?
Talvez isso não seja novidade para todos, pois muitos podem ver que você faz isso o tempo todo com as pessoas do seu grupo do Discord.
Acredito que você atrapalhou meu conselho de começar um programa de comédia na TV porque, a cada dia que passa, você é mais como um palhaço. Um palhaço golpista, é claro.
Você está caindo em um abismo sem fim, e eu estou adorando.
Fraudadores e golpistas que enganam pessoas inocentes ganham prejuízo.
@BruTAgora, quanto a você...
Sinceramente, não sei quem é Gabriel. Ele deve ser outro idiota como você e Mobius, enganando alguém.
Vocês são todos tão tolos a ponto de acreditar que tudo o que está acontecendo é por causa de apenas uma ou duas pessoas?
Claro que não. Muitas pessoas já foram vítimas dos golpes do grande mestre da fraude de código malicioso. E alguns tentaram falar e revelar gradualmente quem é o verdadeiro fraudador.
@Móbius
Agora, quanto a essa informação...
Tenho quase certeza de que esse cara que você diz ser eu devo ser outro idiota como você, tentando manipular algo.
Seu nível de estupidez não tem limites!😂🤣😂🤣😂🤣
Question
HorrorSlyer
hello guys
i was trying to add a feature to count mobs to my captcha system from like two months but i did not succed
my goal is to add those lines in the code
public void onDeath(Creature actor, Creature killer)
{
if(Config.ENABLE_CAPTCHA && actor.isMonster() && killer != null && killer != actor && killer.isPlayer())
{
Player player = killer.getPlayer();
String customHtm = HtmCache.getInstance().getNotNull("mods/Captcha/ShowCaptchaWindow.htm", player);
// +1 to mobcounter
addKilledMob(player);
boolean doCaptcha = CaptchaImage.getKilledMobs(player.getObjectId()) >= Rnd.get(Config.CAPTCHA_MIN_MONSTERS, Config.CAPTCHA_MAX_MONSTERS) && getCaptchaRequests(player) <= 0; // random monster number.
all i manage to do i just adding the lines in the config.java
0 answers to this question
Recommended Posts
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.