FlyFF - Awakebot (Customizable, Support your own server)
Discussion on FlyFF - Awakebot (Customizable, Support your own server) within the Flyff Hacks, Bots, Cheats, Exploits & Macros forum part of the Flyff category.
Changed the standard output encoding to utf8 to support other languages other than english
Removed the process handle requirement causing it not to work on flyff's with anti-cheats
Fixed the known STA +5 issue reading as STA +S by using the workaround by @ (ty cockie )
"Bypassed" gameguard and it now works for EFlyff
Updated to tesseract version 4.1.1 in order to support whitelisting characters
Added whitelisted characters back again due to it being previously removed because tesseract 4.0.0 did not support it
Fixed recognizing an muliline awake
Fixed crash when pressing END when the awake routine was not running and/or in the process attach window
Added support for a range of pixel colors. You can now write the follwing for a blue value between 253 and 255
<Setting name="AwakeTextPixelColorRgb">0, 0, 253-255</Setting>
Added ability to choose a way to compare the awakes for each awake. You can choose by "Exact" which is default and "Contains" which checks if a specific value is contained within the awake.
Should not be used unless REALLY NEEDED. Because there might be inconsistencies due to the whitelisting characters feature. It does not whitelist the whole awake text if you only put a part of it in the config.
Added support for multiple different pixel colors, it can now read awakes of multiple colors
[20:29:23] Bot has started
[20:29:23] System.EntryPointNotFoundException: Не удается найти точку входа "NtUserSetCursorPos" в DLL "win32u.dll".
в FlyFF_AwakeBot.Win32.NtUserSetCursorPos(Int32 X, Int32 Y)
в FlyFF_AwakeBot.Utils.MouseSimulator.SetCursorPosit ion(Point p)
в FlyFF_AwakeBot.AwakeningRoutine.AwakeningLoopThrea d(List`1 preferredAwakeItemList)
I can't get it to work on the extasia server. I tried to modify the config by modifying the .xml, add the French tesseract, modify the color of the awakening which is blue, the bot cannot detect the awakening, I tried a vulgar int minimum 1 but nop
I can't get it to work on the extasia server. I tried to modify the config by modifying the .xml, add the French tesseract, modify the color of the awakening which is blue, the bot cannot detect the awakening, I tried a vulgar int minimum 1 but nop
TL;DR Font too small on the server.
The bot is based on tesseract to turn an image of the awake into text.
By default, tesseract is not trained to be used with such barebone fonts that flyff use.
By the term "barebone font" I mean the literal SINGLE pixels making up the text. The text is 1 PIXEL of width.
*sigh* I just downloaded the client for the server and the text is EVEN SMALLER that the normal flyff text size. Meaning that the text is EVEN MORE bareboned than the default one. This time it seems to TOO bareboned for tesseract to handle.
The only two solutions I can think of at the top of my head would be to either
1; Reverse the client and modify the text size in-game.
2; (MODIFY THE BOT) Increase the image of the awake text using the method nearest neighbor to maintain the text sharpness. When large enough either blur the image or increase size even more with the bicubic method because it makes the connection between pixels more significant and gives tesseract an easier job reading the image.
But you know, fo' that shi'. Managing time is not easy.
I Don't manage to make it works on Moon Flyff.
I have download the french pack and put it at the same place than the English one. (Should I replace the English file by french one?)
I have copied and modified the config to create one for Moon. Should I write ingame name of awake in french or in English? (They are in french in my game so I've done it in french in the config)
The bot works properly but when the amount is reach on the awake it doesn't stop. I've tried to put a large specter of colour for the awake name. (Something like 190-210 for blue ect) In fact I put the line for the colour Under the ones for awake name but I'm not sure if it's the correct position in the config file.
Last thing is that the text in game is composed of 2 colours. The letters are blue with black around. So which colour should I set in the config? (I have set blue)
Thank you for your help
(If someone have a config for Moon Flyff can I get it)?
I Don't manage to make it works on Moon Flyff.
I have download the french pack and put it at the same place than the English one. (Should I replace the English file by french one?)
I have copied and modified the config to create one for Moon. Should I write ingame name of awake in french or in English? (They are in french in my game so I've done it in french in the config)
The bot works properly but when the amount is reach on the awake it doesn't stop. I've tried to put a large specter of colour for the awake name. (Something like 190-210 for blue ect) In fact I put the line for the colour Under the ones for awake name but I'm not sure if it's the correct position in the config file.
Last thing is that the text in game is composed of 2 colours. The letters are blue with black around. So which colour should I set in the config? (I have set blue)
Thank you for your help
(If someone have a config for Moon Flyff can I get it)?
The awake text is made with three different ranges of pixels. See the config for comments above the pixel color ranges.
Attached you can find a working config for Moon Flyff. It does not have all the awakes, as I could not bother to find them all myself. You have to add the rest of the awakes yourself.
A fair warning, the french tessdata seems to be worse than the english one for the flyff font.
Meaning that you can expect issues with the bot reading incorrect awakes sometimes with the special french letters.
You will have to look in the log to figure out how to solve them.
I have already solved one of the awake issues for you. The awake "Dégâts des coups critiques" was being read incorrectly sometimes. It was being read as "Dégéts des coups critiques", notice the 'â' was replaced with an 'é'.
The solution for that has already been written into the config, and it was to add both of the awakes and when you are looking for that awake, you need to use a different "Awake Group" value for each of them in the bot.
Refer to the image below as an example. It will basically stop if it found either the 'é' or 'â' version because their are different awake groups.
You can download the french tessdata I used here:
Do not replace the english one, you can leave both of them there. Just add it in the same folder as the english one.
As last words, I have not tried it througly, so expect issues. They're up to you to fix.
Code:
<Settings>
<!--
Awake Type Explanation:
name -> The name to display inside of the bot when choosing the awake (Example: ADOCH)
gametext -> Case-sensitive awake line text inside of the game (Example: Additional Damage of Critical Hits)
comparisonmethod -> An additional attribute to modify which method an awake is compared with. Options are Exact and Contains. Exact is default.
Example <Type name="INT" gametext="INT" comparisonmethod="Contains"></Type>
"Contains" compares by checking if the read awake contains gametext
"Exact" does an exact case insensitive comparison (this is the default and preferred)
-->
<AwakeTypes>
<Type name="Dégâts des coups critiques" gametext="Dégâts des coups critiques"></Type>
<Type name="Dégéts des coups critiques" gametext="Dégéts des coups critiques"></Type>
<Type name="Vitesse d'incantation" gametext="Vitesse d'incantation"></Type>
<Type name="Critique" gametext="Critique"></Type>
<Type name="INT" gametext="INT"></Type>
<Type name="STA" gametext="STA"></Type>
<Type name="STR" gametext="STR"></Type>
<Type name="DEX" gametext="DEX"></Type>
<Type name="FOR" gametext="FOR"></Type>
<Type name="END" gametext="END"></Type>
<Type name="PM max." gametext="PM max."></Type>
</AwakeTypes>
<!--
The color of a pixel in the in-game awake line text.
Format: RGB (R, G, B)
Adding multiple awake colors example:
<Setting name="AwakeTextPixelColorRgb">0, 255, 0</Setting>
<Setting name="AwakeTextPixelColorRgb1">0, 0, 255</Setting>
<Setting name="AwakeTextPixelColorRgb2">245, 0, 0</Setting>
<Setting name="AwakeTextPixelColorRgb3">0, 0, 185</Setting>
The above example of multiple awake colors will find awakes with all of those pixel colors
You can add as many as you want.
It requires the format as above: AwakeTextPixelColorRgb, AwakeTextPixelColorRgb1, AwakeTextPixelColorRgb2... and so on.
Adding a range of pixel colors:
<Setting name="AwakeTextPixelColorRgb">0, 245-255, 0</Setting>
The above example will stop when the pixel color is between 0, 245, 0 and 0, 255, 0
It will stop at 0, 251, 0 as an example.
-->
<!-- Pixel color range for the main blue text -->
<Setting name="AwakeTextPixelColorRgb">127-136, 172-181, 246-255</Setting>
<!-- Pixel color range for the minor disruptions (e.g. on letter 'i' and 'N') on the edges of letters -->
<Setting name="AwakeTextPixelColorRgb1">105-112, 142-150, 200-207</Setting>
<!-- Pixel color range for the major disruptions (e.g. right top edge of letter 'V') on the edges of letters -->
<Setting name="AwakeTextPixelColorRgb2">76-81, 102-108, 139-144</Setting>
<!--
The amount of time in milliseconds it takes before an awake scroll is done
showing that "Watering Effect" on the item before awakening it
-->
<Setting name="ScrollDelayMs">200</Setting>
<!--
The value for Language is the name of the .traineddata file.
Example eng.traineddata, then the value is eng
por.traineddata, then the value is por
-->
<Setting name="Language">fra</Setting>
<!--
Words that are ignored when the OCR engine reads the awake
NOTE: Do not add a space after comma, the space counts as part of the word
Format: Word1,Word2,Word3
-->
<Setting name="OcrIgnoreWords">Blessing Options</Setting>
</Settings>
Hi i also played on MoonFlyff and have many errors, for example :
Can someone help ? this is my discord : Yuwen#9230
Or if someone as MoonFlyff script who work
[01:15:44] Raw awake In-game text: "Vitesse de dépi
"
[01:15:44] FlyFF_AwakeBot.AwakeningParseException: The awaketext: "Vitesse de dépi" is not a valid awake
à FlyFF_AwakeBot.AwakeningParser.SplitAwakeLines()
à FlyFF_AwakeBot.AwakeningParser.GetCompletedAwakes( )
à FlyFF_AwakeBot.AwakeningRoutine.AwakeningLoopThrea d(List`1 preferredAwakeItemList)
Quote:
Originally Posted by greyb1t
The awake text is made with three different ranges of pixels. See the config for comments above the pixel color ranges.
Attached you can find a working config for Moon Flyff. It does not have all the awakes, as I could not bother to find them all myself. You have to add the rest of the awakes yourself.
A fair warning, the french tessdata seems to be worse than the english one for the flyff font.
Meaning that you can expect issues with the bot reading incorrect awakes sometimes with the special french letters.
You will have to look in the log to figure out how to solve them.
I have already solved one of the awake issues for you. The awake "Dégâts des coups critiques" was being read incorrectly sometimes. It was being read as "Dégéts des coups critiques", notice the 'â' was replaced with an 'é'.
The solution for that has already been written into the config, and it was to add both of the awakes and when you are looking for that awake, you need to use a different "Awake Group" value for each of them in the bot.
Refer to the image below as an example. It will basically stop if it found either the 'é' or 'â' version because their are different awake groups.
You can download the french tessdata I used here:
Do not replace the english one, you can leave both of them there. Just add it in the same folder as the english one.
As last words, I have not tried it througly, so expect issues. They're up to you to fix.
Code:
<Settings>
<!--
Awake Type Explanation:
name -> The name to display inside of the bot when choosing the awake (Example: ADOCH)
gametext -> Case-sensitive awake line text inside of the game (Example: Additional Damage of Critical Hits)
comparisonmethod -> An additional attribute to modify which method an awake is compared with. Options are Exact and Contains. Exact is default.
Example <Type name="INT" gametext="INT" comparisonmethod="Contains"></Type>
"Contains" compares by checking if the read awake contains gametext
"Exact" does an exact case insensitive comparison (this is the default and preferred)
-->
<AwakeTypes>
<Type name="Dégâts des coups critiques" gametext="Dégâts des coups critiques"></Type>
<Type name="Dégéts des coups critiques" gametext="Dégéts des coups critiques"></Type>
<Type name="Vitesse d'incantation" gametext="Vitesse d'incantation"></Type>
<Type name="Critique" gametext="Critique"></Type>
<Type name="INT" gametext="INT"></Type>
<Type name="STA" gametext="STA"></Type>
<Type name="STR" gametext="STR"></Type>
<Type name="DEX" gametext="DEX"></Type>
<Type name="FOR" gametext="FOR"></Type>
<Type name="END" gametext="END"></Type>
<Type name="PM max." gametext="PM max."></Type>
</AwakeTypes>
<!--
The color of a pixel in the in-game awake line text.
Format: RGB (R, G, B)
Adding multiple awake colors example:
<Setting name="AwakeTextPixelColorRgb">0, 255, 0</Setting>
<Setting name="AwakeTextPixelColorRgb1">0, 0, 255</Setting>
<Setting name="AwakeTextPixelColorRgb2">245, 0, 0</Setting>
<Setting name="AwakeTextPixelColorRgb3">0, 0, 185</Setting>
The above example of multiple awake colors will find awakes with all of those pixel colors
You can add as many as you want.
It requires the format as above: AwakeTextPixelColorRgb, AwakeTextPixelColorRgb1, AwakeTextPixelColorRgb2... and so on.
Adding a range of pixel colors:
<Setting name="AwakeTextPixelColorRgb">0, 245-255, 0</Setting>
The above example will stop when the pixel color is between 0, 245, 0 and 0, 255, 0
It will stop at 0, 251, 0 as an example.
-->
<!-- Pixel color range for the main blue text -->
<Setting name="AwakeTextPixelColorRgb">127-136, 172-181, 246-255</Setting>
<!-- Pixel color range for the minor disruptions (e.g. on letter 'i' and 'N') on the edges of letters -->
<Setting name="AwakeTextPixelColorRgb1">105-112, 142-150, 200-207</Setting>
<!-- Pixel color range for the major disruptions (e.g. right top edge of letter 'V') on the edges of letters -->
<Setting name="AwakeTextPixelColorRgb2">76-81, 102-108, 139-144</Setting>
<!--
The amount of time in milliseconds it takes before an awake scroll is done
showing that "Watering Effect" on the item before awakening it
-->
<Setting name="ScrollDelayMs">200</Setting>
<!--
The value for Language is the name of the .traineddata file.
Example eng.traineddata, then the value is eng
por.traineddata, then the value is por
-->
<Setting name="Language">fra</Setting>
<!--
Words that are ignored when the OCR engine reads the awake
NOTE: Do not add a space after comma, the space counts as part of the word
Format: Word1,Word2,Word3
-->
<Setting name="OcrIgnoreWords">Blessing Options</Setting>
</Settings>
I GOT THIS 1 ERROR MSG THAT MAKE BOT STOP (ALMOST PERFECT) WHEN I GOT A AWAKE OF STR+1250 THE BOT READS IT AS " STRH250 " AND I GOT ERROR MSG OF NOT VALID AWAKES. HOW CAN I CORRECT THIS ?? THANK YOU FOR YOUR BOT IT MAKES MY LIFE MORE EASIER ! MORE POWER SIR GREYB1T!