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.
And you join to maxcheaters to write about scam? to see it who? the other scammers? this is the community from lineage. Thiefs! sad for your money. but don't trust people.
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.