mwBot
Get test api key
Payment
English zone
sección española
MW Bot Usage Calculator
To download the program, please complete the authorization, after which you will see the download links here.

 
Main Menu

Recent posts

#21
Новини / referral rewards program will ...
Last post by Admin - 19 April 2025, 23:18
Dear users,
We would like to inform you that starting May 1, 2025, the referral rewards program will be discontinued.
This decision was made for several reasons, including recurring misunderstandings regarding the terms of the referral program. Unfortunately, there have been frequent situations where users did not familiarize themselves with the rules, made payments, and then submitted claims that contradict the established conditions.
Until the end of April, the referral program will continue to operate under the current terms, so you still have the opportunity to take advantage of it.
We understand that this news may not be the most welcome, but we believe it will allow us to focus on improving our service and building clearer, more transparent relationships with every user.
Thank you for your understanding and trust!
#22
English zone / answer to the question about s...
Last post by Nikolaj - 26 February 2025, 14:17
Introduction

Hello, my friend!
This article will not be structured, but I recommend reading it completely. You can find a lot of interesting things for yourself and find an answer to the main question.
I will try to answer the question about standard basic scripts.
Many times I heard the question of why we do not give users a set of standard scripts that they can launch and use immediately after they downloaded the bot.
I copy a fragment of a personal chat with one of my friends, I answered him this question.
------
there are ready -made scripts, there are a lot of them
Universal scripts to sell collections, break through holes, make stones, sharpen equipment.
There are farming scripts, they are easy to adapt to your needs.
mining materials for level 80 equipment

Here is an example of a script for the mining materials in the caves in front of the thunder boss.

This is a workpiece for the interaction of several bots, I did not add, because it was not necessary
server_bot_disconnect
Is this a leader's account, Yes, or the driven? No
/var=lider=yes
whether to track the public drop time
var=enable_drop_control=yes
Data exchange channel name
var=server_name=demonsingrshellcatzlaasbahsbahsbasqsasasadzxqta
File with character configuration
var=charconf=zlata
Mount name for running
var=mount=Nightmare Beast
The name of the battle Mount
var=battlemount=Sea Spirit Guardian
Also, the workpiece to add the switch between the locks of the farm, such as hit by the boss or in the caves, but I did not add, it ran in caves
.var=where=1
Scatter when searching for the final points of the route. I have 7 coordinates
var=range=7
how many seconds the bot expects after switching to a new map
var=sl=2
list of barriers that the bot will bypass
var=obst=activity envoys|Tree
We load our config
This is a standard, no need to change
execute=["server_bot_disconnect", "loadoptions=%charconf%","enable_obstacles","obstacles=%obst%","keypress=3|esc","keypress=v=enemies","sleep=0.5","if=[\"%enable_drop_control%\",\"yes\",\"==\",[\"enable_drop_control\"],[]]","keypress=3|esc","sleep=1","enable_pet","sleep=0.3"]

Triggers
These triggers are specifically for my priest. They are individual for each class.
The value of pet HP, so that priest heal his with skill.
action_critical_pet_hp=65000
The values of the critical Zlata's HP so that it goes into absolute protection and is healing with a powerful skill
action_critical_hp=30000
The trigger that I commented. For the healing of team members on a quick phrase, if necessary, the dot is removed first and the your character will heal your friends.
.add_action_speak=healthanother={"text":["^team.*?;heal$"], "execute":["disable_attack","disable_nav_attack","sleep=0.4","keypress='","sleep=0.4","keypress=y","sleep=1","keypress=y","enable_attack","enable_nav_attack"], "noclear": 1}
This is the same trigger but cleaning the debufs of the team members. Also commented
/add_action_speak=deldebuffteam={"text":["^team.*?;debuff$"], "execute":["disable_attack","disable_nav_attack","sleep=0.4","keypress='","sleep=0.5","keypress=lctrl+,","sleep=0.4","enable_attack","enable_nav_attack"], "onecopy": 1, "timeout": 6, "noclear": 1}
healing of pets skills, there is described in quotation marks logic, skills keys, quick phrases
add_action_speak=critPetHP={"text":["^event_critical_pet_hp"], "execute":["disable_attack","disable_nav_attack","sleep=0.4","keypress=lshift+2","sleep=0.4","keypress=y","enable_attack","enable_nav_attack"], "noclear": 1}
Zlata's critical level hp
add_action_speak=critHP={"text":["^event_critical_hp"], "execute":["sleep=1.1","keypress=i","sleep=1","keypress=y","sleep=1","keypress=y"], "noclear": 1, "timeout": 60}
Cleaning Zlata's Debuffs
add_action_speak=DelDebuff={"text":["^Debuff|^Buff \\d+ Debuff"], "execute":["sleep=1","keypress=lshift+,"], "timeout": 6, "noclear": 1}
Buff for Zlata every 2 minutes
setIntervalFunction=Pbuff=121=["sleep=1.1","keypress=u"]
Using a whip every 10 seconds
setIntervalFunction=Pbuffskill=10=["keypress=h"]
Ignor a team member so that the bot does not pay attention to him if it collides
ignore_mob=hunter;HellCat
Then there is the logic of the script, it can be run on the map anywhere with a violet city, anywhere in the demon valley, anywhere in the caves in front of the boss. Generally fuck where. The character will find the road
after nothing needs to be changed. I described from above and you understand that the hunter has their triggers. Someone has little weight and you need to throw something for example. This is all individual.
If you want a standard clicker, then the Chinese master of buttons to help you.

farming script for level 45 equipment

Connect the config
var=charconf=cherries.conf
speed fusion
var=mount=Bluish White Horse
number key on which the heartstone is assigned to be the character to return to the village to kill himself of guard
var=stone=8
how often to check experience in seconds, I have 10 minutes once every 10 minutes
var=checktime=600
below what amount of experience to go to the village and attack the guard
var=xp=50000
how many times to kill about the guard
var=count=20
Coordinate where the guard is
var=killpoint=320|158
The scatter of the final point
var=range=4
where to mining equipment. 1 - ice field. 2 - Ice Cave
var=where=2
pause after switching to another map.
var=sl=2
The list of barriers that the character will bypass if it collides, separate the vertical feature
var=obst=ice pine|militia captain Nusan
List for ignore players if the character encounters them
ignore_mob=sorcerer;Cherries|elf;Kiri|sorcerer;Coconut
Next is the logic of the script that, without unnecessary need, is not necessary to change,

Monkey script

server_bot_disconnect
Is this a leader's account, Yes, or the driven? No
var=lider=no
Tracking public drop. yes no
var=enable_drop_control=yes
Data exchange channel name
var=server_name=monkey12ebh2beh12beh1beh21bhe1 productin
File with character configuration
var=charconf=zlata
Mount name for running
var=mount=Nightmare Beast
The name of the battle Mount
var=battlemount=Sea Spirit Guardian
where to get stones. 1 on a tree. 2 on the boss map
var=where=1
The scatter of the final point on the route
var=range=3
waiting time in seconds after switching to a new map
var=sl=2
list of barriers
var=obst=activity envoys
Next is the logic of the script
And on the tree block, triggers are connected to the healing of team members, pet
Bot, not a wizard

And people need to download the bot, and it has guessed what keys are tuned there, at what level of HP to drink bottles and so on.
And imagine what will happen if 20 people take my script and will, everyone in their team, walk on the same coordinates as train 1 after another and steal monsters at each other.
Lich also did it by the way
Our user uploaded into file exchanger a cool script with a bunch of settings and many users downloaded and without changing the coordinates of the route went to get gems.
the eternal problem to create a character config


some kind of old config for my Zlata, but the meaning is clear
I turn on the Bot Reconect if the game crashes
enable_restart
Commands so that the bot automatically switches in the game window
open_game_window
below 45000 will be treated
min_hp=45000
below 40000 will drink manna
min_mp=40000
I indicate that the HP to check as often as possible. 0 are seconds. but it will not be able to physically press the key 100 times per second
regen_timeout=0
I indicate that the character will stop if he sees the enemy. one to constantly be in motion
attack_type=0
The speed of pressing skills in seconds, fractions
speed_attack=0.08
List of attack keys. Separate the vertical feature. No need to write at the end
keys_attack=j|n|m
The list of names of pets, causes from left to right. You write strong and further whatever you like
pet_name=Shorthair Cat|Cattle|Frog|Wild Hound
If the red bottles remain less than indicated, then the bot will close the game. I have a priest, therefore -1, the game will not be closed
min_banks_hp=-1
Less than the number of blue bottles to close the game
min_banks_mp=1
Min pet HP to treat
pet_min_hp=80000
Min pet MP to treat
pet_min_mp=60000
CD red bottles. The priest has a skill, so 0 seconds
reload_bank_hp=0
cd for blue bottles in seconds
reload_bank_mp=11
cd for pet red bottles in seconds
pet_reload_bank_hp=22
cd for pet blue bottles in seconds
pet_reload_bank_mp=11
The level of satiety. below which the ball will eat
pet_min_food=45
The key for heal. A bottle or skill. I am a priest, I am healing with a shift so that it was not a focus on a pet or another member of the team.
key_regen_hp=lshift+y
Blue bottle key for character
key_regen_mp=3
Red bottle key for pet
key_pet_regen_hp=4
Blue bottle key for pet
key_pet_regen_mp=5
The key for rice ball
key_pet_regen_food=9
How often to check the health of a pet in seconds
pet_regen_timeout=2
Repair key where the box or pliers
key_repair=0
Repair method. 1 Immediately at the getting of the text about the breakdown. 0 after the end of the battle. If the character is weak, equipment may break with parameter 0
hotrepair=1
Turn on the function of checking hp
enable_regen
Turn on the function of searching for enemies, radar. I additionally indicate 0.1 sec
enable_nav_attack=0.1
turn on the attack function, pressing skills
enable_attack
we turn on the repair and indicate that the repair will be using a box
enable_repair=1
Turn on the pet
enable_pet
Checking pet hp and mp
enable_pet_regen
Checking the pet's satiety
enable_pet_food
trigger so that the game is restarted if the Internet is trouble and error
add_action_speak=conError={"text": ["^Connection error; exiting game$"], "execute": ["gameexit"], "noclear":1}
///The end of the config

I will say something else

Basically come and begin to ask, but how to do it so that the bot gets stones
I wrote a list with commands, there are descriptions and examples of use. There are a bunch of examples of scripts, if there is interest and it is clear that a person is not just begging but tries to do something, then users help, and we are, of course.
And if you do not want to bother, You want to get a turnkey script, then you need to pay extra so that the personal script is made. I do not write for money, there really is no time for it.
Basic scripts such as a decrease in experience, disassembling unnecessary gems, put items on a warehouse, market search, get the necessary colors in the equipment, sell collections. sharpening equipment with the whole set or One by one.
I don't remember all the functions, there are more than 200
And so there is a lot of things in the file exchanger.

What I get for $ 7.5 a month

$ 7.5 includes a engine for launching scripts, an exchanger with a bunch of  examples, ready -made solutions,
documentation, instructions how to configure, list of commands with a description and examples of use,
Chat for searching for friends, searching for solutions, recommendations, tips.


Which is not included in the amount of $ 7.5

This amount is not included
Write for me a script so that my hunter mining gems, runs away if the boss comes, wrote to the chat so that the players come to kill the boss, if the character has a full bag, to go to the city, sold gems, reborn the pet, played roulette, if something important, To play a loud sound and returned back to mining gems.
#23
English zone / I downloaded the bot, what sho...
Last post by Nikolaj - 20 February 2025, 14:35
Introduction

Hello, my friend!
If you read this, then you are interested in our bot, well, or you are just tired of performing routine tasks in the game.
You downloaded the bot, read User manual
With the launch of simple scripts, there will be no problems, for example, selling ore, market search. They just need to download them in a file exchanger, by  pressing F6, move to the Scripts folder and run.
Farming scripts are a little more difficult.
Farming scripts are divided in most cases into 2 parts:
1. Character configuration file
2. Farming script, which spells out the logic of the character's behavior, where he should go and how to act in various situations
You create a character config, fill out the parameters you need, the list of available commands is below. The name of the character configuration can be any.
After you create a character configuration file, it must be connected to the farming script.
This is done using the command
loadoptions=name of your file
loadoptions=myconfig
If you use someone else's script, see the comments inside the file, most often you will find a variable from above, in which you should write the name of your configuration
for example:
var=configfile=myhunter
You delete the word "Myhunter" and write your name
List of available commands for a character config

It is not necessary to use everything that is written below, you yourself decide what you need to perform your tasks

-----
repair_max_retries
indicate the number of attempts to repair equipment
repair_max_retries=5
the bot will try to carry out repairs 5 times, if it fails 5 times, the game and the bot will be closed


-----
count_attack=int count
the number of repetitions of the attack when performing an attack. default 2 times


-----
drop_end_offset=int time seconds
specify how many seconds before the script should be stopped, clarifies the operation of the enable_drop_control function.
Example:
drop_end_offset=600
enable_drop_control
the script will exit 10 minutes before the end of farming time

-----
enable_drop_control
allows you to end the script when your farming time is up.. ends the script and closes the game.
You can add it to the script or character config, depending on where you need it


-----
enable_drop_control=1
shuts down the computer. when farming time is over


-----
enable_drop_control=2|scriptname
after the farming time is over, launches the specified script


-----
enable_drop_control=3|blockname
The bot will proceed to execute the specified block when the character has 0 minutes left
example:
enable_drop_control=3|return_to_the_city


-----
disable_drop_control
disable farming time tracking. the bot will not track how much time is left


-----
enable_time_start=2024-08-06 03:00:00
continue script execution after the specified date
You can also use a ready-made function in the bot, just press the F7 key


-----
disable_time_start
disable launch tracking by date


-----
pet_regen_timeout=float seconds, default 30 seconds
time to check the pet's mana and health indicators
pet_regen_timeout=300
the bot will check your pet's health every 5 minutes


-----
pet_reload_bank_hp=int timeout
Cooldown for pet's health potion.
pet_reload_bank_hp=10


-----
pet_reload_bank_mp=int timeout
Cooldown for pet's mana potion.
pet_reload_bank_mp=10


-----
ignore_speaking=regexp
Ignore in-game text.
ignore_speaking=^global|^nearby
This way the bot will not process information received from two channels


-----
goposition_max_time=float seconds
Set maximum movement time in goposition function in a straight line without checking coordinates.
goposition_max_time=10


-----
hotrepair=1 or 0
Set when to repair, before battle or after battle. The script does not guarantee this sequence but will try to execute them. 1 - as soon as it receives a phrase indicating repair is needed; 0 - after battle. Default is 0.
hotrepair=1


-----
enable_time_exit=datetime
Exit bot and game at specified time:
enable_time_exit=2024-04-26 15:00:00


-----
disable_time_exit
Turn off time_exit.

-----
prof_skill_timeout=float seconds
Time to go to killed mob for butchering.
prof_skill_timeout=3


-----
enable_prof_skill=keyname
Enable butchering corpses.
enable_prof_skill=c

-----
disable_prof_skill
Disable butchering corpses.


-----
no_regen_data=int number
If unable to get hp/mp values number times in a row, consider the game frozen and terminate the process with the game.
no_regen_data=8


-----
keyboard_delay=int ms1|int ms2
ms1 - delay in milliseconds before pressing the key. ms2 - delay in milliseconds before releasing the key.
If it seems to you that the bot is not working correctly, perhaps not processing some phrase, try using this parameter, perhaps by slowing down the keystrokes, you can solve your problem.
keyboard_delay=10|30

-----
goposition_speed=float number
Presumed character movement speed per 1 second while bot is active.
goposition_speed=8
If you are having trouble finding the endpoint, you can calibrate this using this option

-----
pet_name=name1|name2|name3
Which pets to summon in priority order.
pet_name=Shorthair Cat|Cattle|Frog|Wild Hound

-----
disable_key_esc
Disable periodic pressing of escape key, which is used to monitor game freeze.
This should be disabled when the bot is working with the menu, so that errors do not occur and the menu does not close.


-----
enable_key_esc
Enable periodic pressing of escape key. Enabled by default.


-----
enable_melee
Indicate that the character is melee. When using skills, it will also hold down the left Alt key.
check the topic for melee settings on the website
https://mwbot.kutsenko.cc/index.php?topic=58.0


-----
disable_melee
Turn off melee mode.


-----
key_repair=keyname
Specify key for repair.. repair box or pliers
key_repair=0


-----
enable_clearbag
Enable bag clearance. When the bot receives a phrase about overload, it will attempt to discard items specified in clearbag.txt file. Items should be specified one per line.


-----
disable_clearbag
Turn off bag clearance function.



-----
enable_xp_control=int xp|int seconds
Enable experience control. xp - amount of experience. seconds - how often to check stats.
enable_xp_control=100000|600
The bot will check the character's experience every 10 minutes and if there are less than 100000 left until the next level, the bot will close the game. This is necessary, for example, if your character is level 69 and you do not want to go to level 70.
This function can be used with the parameter
enable_xp_control=int xp|int seconds=block name
enable_xp_control=10000|600=xpminus
When a critical amount of experience is gained, the bot will not close the game, but will move to the specified block for execution.
This is useful, for example, if you want your character to automatically go and kill himself against a guard so as not to gain the next level.
You can find an example script in the bot's file exchange:
script name: desert non stop english; Size: 3 KB; User: Nikolaj; Upload date: 22-09-2024 14:03:55
This script works in the desert, obtaining equipment. if there is less experience left until the next level than specified in the script settings, the character will return to the village and will be killed by the guard the specified number of times, after which the character will continue to kill monsters in the desert.


-----
disable_xp_control
Turn off experience control.


-----
obstacles_key_timeout=float seconds
Key press time when avoiding obstacles.
obstacles_key_timeout=0.1
the bot will press a key to avoid the obstacle until it gets around it

-----
ignore_mob=regexp
Specify list of mobs not to attack.
ignore_mob=lich


-----
clear_ignore_mob
Clear list of mobs to ignore.


-----
regen_timeout=float seconds
How often to check hp/mp stats.
regen_timeout=2


-----
reload_bank_hp=int seconds
Cooldown time for hp potions.
reload_bank_hp=1


-----
reload_bank_mp=int seconds
Cooldown time for MP banks.
reload_bank_mp=6


-----
min_banks_hp=int number
Minimum number of HP bottles. When the limit is reached, the bot will close.
To disable, specify the value: -1
min_banks_hp=1


-----
min_banks_mp=int number
Minimum number of MP bottles. When the limit is reached, the bot will close.
To disable, specify the value: -1
min_banks_mp=1


-----
ignore_personal_banks=1 or 0
1 - ignore tracking personal bottles
0 - do not ignore
Bottles obtained from the gang's warehouse, during a game event, and so on.


-----
key_regen_hp=keyname
Key to regenerate char HP.
key_regen_hp=1


-----
key_regen_mp=keyname
Key to regenerate char MP.
key_regen_mp=2


-----
key_pet_regen_hp=keyname
Key to regenerate HP of the pet.
key_pet_regen_hp=3


-----
key_pet_regen_mp=keyname
Key to regenerate MP of the pet.
key_pet_regen_mp=4


-----
key_pet_regen_food=keyname
Key to regenerate pet's hunger.
key_pet_regen_food=5


-----
enable_repair=int number
Enable equipment repair.
-1 - ignore repair notifications
0 - close the bot upon notification
1 - repair using boxes
2 - repair using pliers
enable_repair=2
The bot will repair equipment using pliers


-----
disable_repair
Disable equipment repair.


-----
enable_pet
Enable pet usage.


-----
disable_pet
Disable pet usage.


-----
min_hp=int number
Minimum HP level to start regeneration.
min_hp=10000


-----
min_mp=int number
Minimum MP level to start regeneration.
min_mp=10000


-----
pet_min_hp=int number
Minimum pet's HP level to start regeneration.
pet_min_hp=10000


-----
pet_min_mp=int number
Minimum pet's MP level to start regeneration.
pet_min_mp=10000


-----
pet_min_food=int number
Minimum pet's hunger level.
pet_min_food=40


-----
direction_update_time=float seconds
Time interval to change movement direction in random_going mode.
direction_update_time=7


-----
x=int number1-int number2
Set boundary for movement along the x coordinate in random movement mode.
x=1-200


-----
y=int number1-int number2
Set boundary for movement along the y coordinate in random movement mode.
y=1-200


-----
enable_restart
Attempt to restart the game when it is closed.


-----
disable_restart
Turn off the game restart function.


-----
keys_attack=key1|key2|key3...
Keys for attack.
keys_attack=j|h|/|.|n


-----
speed_attack=float seconds
Pause between attack key presses.
speed_attack=0.06


-----
attack_type=1 or 0
1 - attack while moving
0 - character will stop to attack
attack_type=0
do not use value 1 if your character is weak, otherwise you will gather a crowd of monsters and they will kill your character.


-----
enable_attack
Enable character skill usage feature


-----
disable_attack
Disable combat actions.


-----
nav_keys=k|o|;|l
Keys to search for targets.
nav_keys=lshift+5|lshift+6|k|;
You can specify key combinations to search for a target, for example, set the focus on the one who is attacking you. you can experiment


-----
enable_pet_regen
Enable control over pet's HP/MP.


-----
disable_pet_regen
Disable control over pet's HP/MP.


-----
enable_pet_food
Enable control over pet's hunger.


-----
disable_pet_food
Disable control over pet's hunger.


-----
enable_regen
Enable control over character's HP/MP.


-----
disable_regen
Disable control over character's HP/MP.


-----
enable_nav_attack=float timeout
Enable target searching.
If timeout is specified, it will wait for the specified time after pressing a key to receive text.
Default is 0.05 seconds.
enable_nav_attack=0.1


-----
disable_nav_attack
Disable target searching.
note

I do not write about how to create or edit a file, you must read it yourself in an article with a list of hot keys. I don't want to duplicate information.
also if you want to use automatic navigation, you should read this article
If you are looking for a large button that will do everything instead of you, then it is not here.
If you do not want to try to study the bot minimum, you need to find a person who will make scripts and configuration files for you for money.
We do not create for free full -fledged scripts at the desires and tasks of users.
We can help solve the problem or explain how some function works.
There are many useful topics on the site, after reading which you will find solutions.
If you read to this place, then you come to us and most likely you really need a bot.
We are not trying to sell the bot for everyone.
We have a friendly community, of which you can become. It all depends on you.
#24
English zone / On the use of several skills i...
Last post by Nikolaj - 03 February 2025, 14:04
Chat fragment
user [13:43:35]
can you help me with a code? ?
Nikolaj [13:43:42]
what
Nikolaj [13:44:05]
write more specifically and see what I can do
user [13:44:26]
add_action_speak=critHP={"text":["^event_critical_hp"], "execute":["disable_attack","disable_nav_attack","sleep=0.9","keypress=,","sleep=0.4","keypress=/","enable_attack","enable_nav_attack"], "onecopy": 1, "noclear": 1}
user [13:45:26]
so this is the code for the farming of my srcerer, , in it, the first skil on comma is undieing rezolv, and on slash the toddem, but it's using the toddem very late, fine with the undieing rezolv though
user [13:45:33]
sorcerer*
Nikolaj [13:46:43]
Have you tried to play with the delays between the pressing  keys?
Nikolaj [13:47:01]
In general, the trigger is correct
Nikolaj [13:47:12]
You can delete onecopy 1
Nikolaj [13:47:24]
because 1 is used by default
user [13:48:36]
yeah I did tryed playing with the delay, but what happens is it uses the undieing rezolv, then rather then using the todam it uses any other atack and then it uses the todem very late, because of that it dies when a lots of monsters atack him lol
user [13:49:35]
all though I have put disable_atack
Nikolaj [13:49:45]
And try to use the parameter
user [13:50:16]
like how?
Nikolaj [13:50:17]
"main_stream": 1
user [13:50:51]
if you wont mind can you modify that code for me?
Nikolaj [13:50:55]
add_action_speak=critHP={"text":["^event_critical_hp"], "execute":["disable_attack","disable_nav_attack","sleep=0.9","keypress=,","sleep=0.4","keypress=/","enable_attack","enable_nav_attack"], "noclear": 1,"main_stream": 1}
Nikolaj [13:51:46]
but I think that the Timout is 0.4 very small
Nikolaj [13:52:03]
Game restrictions will not allow you to use 2 skills so quickly
user [13:52:26]
hmm, how much do you think I should keap it?
Nikolaj [13:52:43]
About 1 second I think
Nikolaj [13:53:03]
I don't know what restrictions between using skills in the game
Nikolaj [13:53:28]
You click and hold the skill of healing, it seems to me that it works approximately 1 time per second
user [13:53:41]
hmm
user [13:54:04]
whel gonna try, let's see if it fixes the ishu
Nikolaj [13:54:30]
That is, you must find a correct period of time for 2 skills to work
#25
Новини / Обновление от 2025.01.21
Last post by Admin - 21 January 2025, 05:39
1. Новая функция: speak_stop
остановить проговаривание
это заставит остановиться nvda если она в этот момент что то проговаривала.

2. фикс работы функции возрождения персонажа
#26
Новини / Обновление от 2025.01.19
Last post by Admin - 19 January 2025, 11:17
1. новая функция: includefile
Вставка строк с другого файла в текущую позицию+
пример:
файл main:
open_game_window
get_def=test1
get_def=test2
wait
includefile=file1
файл file1:
def=test1
sleep=1
speak=current file; file1
enddef=test1
includefile=file2
файл file2:
def=test2
sleep=1
speak=current file; file2
enddef=test2
Проще скажу, поддерживаются рекурсивные вложения

2. фикс продажи фрагментов, если у вас более 2000 фрагментов, то они будут проданы частями по 2000 штук

3. Новая переменная: LASTSPEAK
последний полученный текст от игры:
copytext=%LASTSPEAK%

4. Оптимизирован метод фиксации обработки смерти персонажа

5. В окружение var_eval, eval добавлена среда библиотеки re, работа с регулярными выражениями
пример:
var=text=my 5 points
var_eval=result=match.group(1) if (match := re.search(r'my (\d+) points', var_text)) else 0
//result = 5
#27
Новини / Обновление от 2025-01-14
Last post by Admin - 17 January 2025, 05:36
1. фикс поиска по рынку.

2. фикс при запуске скриптов по горячим клавишам.

2025.01.14
1. реализована функциональность функциональных блоков по типу вызова функций
идея (Dippydippy)
Пример:
def=my name
more code...
enddef=my name
этот блок кода может находиться хоть в конце скрипта
что бы вызвать его на исполнение:
get_def=my name

2. вернуть результат вычисления, функция eval python
var_eval=variablename=eval string
результат eval string помещается в переменную variablename
Например:
var_eval=result=2+2
speak=%result%
//result = 4
или вида:
var=name=100
var_eval=result='yes' if %name%>=100 else 'no'
speak=%result%
//result = yes

3. Реализована видимость переменных со скрипта в пространстве eval.
var=name=test
var_result='yes' if var_name == 'test' else 'no'
или с математическими действиями, данные с переменных надо обрабатывать дополнительно что бы точно определять тип переменной
var=num=2
var_eval=result=int(var_num)+2

4. реализован список функций плеера
player_play=name={params}
проиграть файл
запустить плеер с именем "name" и параметрами {params}
пример:
player_play=test={"file": "sounds/click.wav", "volume":50, "balance":0, "loops":0}
параметры:
file - путь к  файлу
volume - громкость от 0 до 100
balance - от -100 левый канал до 100 правый канал
loops - количество повторений трека -1 постоянный повтор, 0 по умолчанию, 1 раз повторяет, всё что больше количество повторений после основного проигрывания

player_stop=name
остановить проигрывание плеера "name"

player_pause=name
установить паузу в плеере "name"

player_unpause=name
снять с паузы плеер "name"

player_volume=name=volume
установить громкость для плеера "name" от 0 до 100

player_balance=name=balance
выставить баланс для плеера "name" от -100 левый канал до 100 правый канал.

player_all_stop
остановить проигрывание всех плееров

5. после запуска скрипта фокус сбрасывается на список сообщений чата

6. Плеер теперь может подгружать звуки по http | https протоколу с интернета.

7. реализована возможность реплейсов в виде функций
пример:
speak=result: %function.eval(2+2)%
//result: 4
пример:
speak=distance: %function.abs(-10-10)%
//result 20

8. реализован функционал ввода данных в поле ввода текста и помещения их в переменную
Пример:
entry=variablename
//variablename - имя вашей переменной
speak=%variablename%

9. Переработана строка для поиска по рынку.
Раньше необходимо было прописывать товары через разделитель вертикальной черты: |
сейчас используется строка регулярного выражения что будет более гибче

10. добавлена функция: eval
пример:
eval=выражение в виде строки

11. расширен функционал обработки данных в функции eval
появилась возможность помещать данные обработки в переменные например:
var=text=Hello, world!
eval=function_var('result', var_text.replace('Hello', 'Hi')) if var_text.startswith('Hello') else function_var('result', 'my string')
speak=%result%
//result = Hi, world!

12. разрешена возможность парсинга тегов как команды например
var=text=speak=Hello, world!
%text%
обработчик распарсит переменную %text% и обработает строку как speak=Hello, world!

13. переработан механизм waitspeak, минимизировано время ожидания текста, скорее всего пропадут ошибки когда меню быстрее открывалось чем бот успевал перехватить поступивший текст.
#28
Новини / Обновление от 2025.01.04
Last post by Admin - 04 January 2025, 18:21
1. новая настройка для config.ini
server_connect_timeout=5
таймаут подключения к серверу.
Если у вас плохое соединение с сервером, увеличьте показания таймаута подключения.
По умолчанию таймаут равен 5 секундам. Максимальный показатель 30 секунд.

2. фикс работы горячих клавишь для start_bot развернуть окно бота.

3. в speak.log время теперь указывается полностью вида: 13:30:00 2025-01-04

4. фикс вызова start_game=email account
переписан под новые реалии игры
#29
Новини / Обновление от 2024.12.31
Last post by Admin - 31 December 2024, 23:36
1. новая функция: goposition_stop
copyright Dippydippy
остановить движение к указаной точке

2. Развернуть окно с ботом: lalt+b
смена клавишь в файле config.ini
параметр: start_bot=сочитание клавишь

3. режим nvda pasive установлен как режим по умолчанию.

#30
English zone / Bot change history
Last post by Nikolaj - 30 December 2024, 13:02
For lazy people, for those who do not know how to use a translator, for those who do not have a bot, but want to follow the development of the bot, I created this topic. I'll try to update the topic.
I remind you that after each update, you can find a list of all changes in the root of the bot folder, in a file called new.txt.
There the list of changes is written in Russian.

2025.11.30
1. Implemented a system for tracking new location data.
• An event is now generated for triggers: event_location:map id;map name
• map id - location ID
• map name - map name
• The following variables are also available:
• %location_id% - location ID
• %location_name% - location name
2. Incoming private messages will now be saved to a log at the path: temp/private-message.log.
• This is a safeguard in case you accidentally close the bot before reading the messages.
 3. Implemented functionality for getting the nearest object by type, for example: find_nearest_mob={"search_type": "npc user no_mob", "true": ["speak=%nearest_mob_name%"]}
• In the search_type attribute, you can specify the following:
• npc - search for NPCs
• user - search for players
• no_mob - exclude mobs from the search. Mobs are searched by default.
4. Implemented support for wall obstacles for Premium Services.
• To use this, add a line like the following in the required obstacle file: premium_get_wall=mapname
• mapname can be found in the menu: server/premium service/wall map
• For example: premium_get_wall=Skull Cave or premium_get_wall=skeleton basin
• I emphasize that Premium must be enabled for this functionality to work.
5. Optimized the in-game sound recording module. Previously, sound was recorded to RAM and then written to disk at the end.
6. • Now, data is immediately written to disk, which fixes the issue that occurred with low RAM and very long recordings.
Extended the functionality of the nearest mob search function for Premium Services: find_nearest_mob={"x1":min x, "x2":max x,"y1":min y,"y2":max y,"true": ["cmd true"], "false": ["cmd false"]}
• The parameters x1 - x2, y1 - y2 can be used to limit the search area for mobs.
• true - actions to perform if the nearest mob is found.
• false - actions to perform if no mob is found.
7. Fixes for the gopath module operation and route-finding.
8. • Attempted to protect the variable against a new line character pointer in the go_to_block function to prevent script execution issues.
9. • Refactored lock mechanisms from threading.Lock() to threading.RLock(), and moved trigger processing to separate tasks.
10. Fixed the sending of event_mob_update and event_mob_add events.
11. •Previously, if the connection was lost, SSL could throw an error, causing the bot to close.
12. • Corrected the issue with pet summoning. If the pet died, and the HP check confirmed its death, the pet summoning function was called. However, that function had its own check for the pet's existence based on its satiety. After the pet's death, it didn't disappear instantly, and its satiety was still displayed, causing the summon to stop with the status "pet is already summoned." This created a loop: pet HP check -> pet summon -> pet already exists...
• 13. Fixed an issue with pet summoning where the bot kept trying to find a pet to summon if the list of available pets was empty. Now, it postpones the next check for 120 seconds.
• 14. Minor bug fixes in the NVDA speech output. And other fixes...
 
 
2025.11.10
Reminder:
1. To use Premium Services, proxy use in the game is no longer necessary.
• The setting in config.ini: enable_gameproxy=1 is no longer relevant.
2. For Premium features to work correctly, the following conditions must be met:
• Premium functionality must be enabled.
• The game must be launched using the bot's methods (either via hotkeys or script execution).
• If you launch the game separately, not through the bot, the features will not work.
• Also, to run multiple copies of the game, Premium functionality must be enabled, and you must have sufficient RAM.
• By default, the game is configured to use 1 gigabyte of RAM.
• 1. Fixed the script start timer functionality.
• Previously, the script would start immediately if the time was set to less than the current time, making it impossible to set a timer for the next day.
• Reported by Lilou. Thanks to her.
• 2. Fixed the delay on keyboard driver 0.
• The delay setting for keyboard 0 now works correctly.
• 3. Attempted to fix the functionality of the enable_prof_skill=keyname function.
• It should now correctly gather ingredients.
• 4. Fixed issues with the equipment sharpening and stone creation functions where an error was thrown after script execution finished.
• 5. Attempted to fix the graphical interface when editing a script.
• 6. Fixed a translator error where numbers were incorrectly substituted into the template, causing the bot to throw a key name error.
• Noted by user: Count. thanks to him.
 
 
2025.11.07
This was the longest update. A lot of functions, logic, and architecture were reworked. New interesting solutions and new functions were added.
Interesting features from Premium Services (Currently Free):
• Mob search, searching for mobs or players by name, opening multiple copies of the game (provided you have enough RAM)...
• 1. Fixed the functionality of the enable_search_object function.
• It now works as intended:
• Presses the key, waits for the time specified in search_object_timeout, and presses it again—specifically, the number of times specified in the parameter.
• enable_search_object=regexp=count
• Default number of presses: 4
• Default timeout: 0.09
• 2. Reworked the logic of the keyboard_delay function:
• keyboard_delay=rate_limit|pressed_time
• rate_limit - timeout in milliseconds before pressing the next key (i.e., key presses no more frequently than the specified rate_limit).
• pressed_time - the time a key is held down.
• So, the value keyboard_delay=20|30 means:
• Hold the pressed key for 30 milliseconds.
• Key press speed no more frequent than once every 20 milliseconds.
3. The function for periodically pressing the Escape key is disabled by default.
• It often causes the game to close. When the game couldn't handle the number of key presses, it sometimes assumed Escape was pressed and held, thus closing the game.
• If you need it, you can enable it with standard functions or write a trigger to close windows (like wedding invitations, apprenticeship requests, etc.).
4. To improve bot responsiveness, timeouts are now implemented in loops. The setting for the main loop is available via config.ini:
• while_timeout=0.03
• Default is 30 milliseconds. You may need to increase this value for virtual machines or weaker configurations.
5. To reset keyboard settings, use the function:
• keyboard_set_default
• or reset_defaults (this is the old function, see help documentation).
6. New setting:
• get_position_timeout=float time
• Time to wait for the position.
• Default is 1 second: get_position_timeout=1
7. New variable to check if Premium functionality is enabled:
• is_premium= 1 or 0
• Example: if=["%is_premium%", "1", "==", ["speak=Premium services are enabled"], ["speak=Premium services are disabled"]]
8. New setting: premium_get_position=1 or 0
• For Premium functionality, it is now possible to get character coordinates without pressing the 'e' key.
• This is convenient when moving around the same map, as it automatically gets the data without announcing your position.
• This feature is not suitable for transitioning from map to map (using a trigger to direct the character to the transition); in such moments, you must switch back to the classic coordinate retrieval method.
• premium_get_position=1 to enable.
• premium_get_position=0 to disable.
9. New setting for config.ini:
• keyhook_timeout=float time
• Default is 10 seconds.
• The period for updating the keyboard hook so that keys work correctly in the game window, including in setonkey functions.
• If set to a small value, there is a chance the game may occasionally miss some key presses. If it is too large, the bot won't see your key presses in the game window.
10. Now, if you move to a new map while the goposition function is running, the bot will attempt to track this and stop the goposition function, marking it as "new map, path finished."
• This should simplify working with map transitions.
11. Optimized the skill-based healing method.
Attempted to prioritize healing over attacking.
12. The character no longer stops when transitioning to the desired block.
• Previously, movement keys (a, s, d, w) were released when moving to another block.
• Now, if you write a script like: block=go keydown=s go_to_block=next block
• The character will not stop but will continue running.
• To stop running, use: keyup=s or the function: stop_go
• If the movement was started by the goposition function, the character will stop.
13. New parameter for scripts: premium_get_hp
• An attempt to get HP | MP data faster.
• Set to 1 to enable, 0 to disable.
• Default is disabled: premium_get_hp=0
14. Set the time for 1 step. Default is 0.2 seconds:
• goposition_one_step=0.2
• This is required for precise step movement to exact coordinates.
15. Number of workers for trigger processing.
• If you have many triggers firing, for example, with the attribute onecopy: 0, you might need a greater number of working workers.
• If you notice that not all triggers are firing, try increasing this number. The default is 50 available workers.
• Parameter for config.ini: executor_max_worker=50
16. Added functionality for hot text inserts into the bot's chat field.
• Type text into the chat field and press Ctrl+Alt+Enter to save the text.
• Press Alt+Shift+Enter to bring up the list of saved phrases.
• Press Enter on the selected phrase to insert the text into the chat editor.
• To delete a phrase, press Delete while on the desired phrase.
• To move a phrase up or down, use the combination Ctrl+Up, Ctrl+Down.
17. Implemented test functionality for recording sound from your audio card, specifically from the stereo mixer.
• Usage: start_audio_recording speak=hello, user. sleep=2 more text speak=ended script. sleep=1 stop_audio_recording
• Files are saved to the path: game recording
• File name structure: start record date - end date record.wav
18. Sending Voice Messages
• In the message input field, press Ctrl + R to start recording.
• Press Ctrl + R again to finish recording — the message will be sent automatically.
• In the message list, voice messages are displayed as: Voice message (duration)
• To listen to a message, press Enter on the selected voice message.
• To stop playback, press Esc.
• Private voice messages are also available. In the private message list (F3), while in the input field, press Ctrl + R to start recording and Ctrl + R again to stop and send the voice message to the selected user.
• To listen to a private voice message, select it and press Enter; to stop playback, press Esc.
• You can also send a voice message directly from the online user list (Alt + Enter). After selecting a user, press Ctrl + R to start recording and Ctrl + R (or Esc) again to stop and send it.
• To cancel sending, press the Escape key during recording. The recording will be canceled without sending.
19. New function: keyboard_clear
• Release all pressed keys. The bot will attempt to release all keys it was holding down.
20. When an item is found using the searchitems function, an event is generated:
• event_searchitems:string
• string - the string that matched your template for searching items on the market.
 
2025.08.31

1. Fixed sticky keys in the game window: now, when the focus is, for example, on the desktop, the game no longer accepts key presses.
2. Restored multi-launch for the game.
3. Implemented a sound tracking system.
A parameter is used to specify a list of sound IDs to be tracked. When these sounds are played, you can receive them through the event system.
Example:
Specify the necessary sounds to track. Sounds can be specified either with a comma-separated list or as a range using a minus sign.
listening_sounds=1001,1002,1003,12000-13000
add_action_speak=sounds={"text": ["event_sound:(\d+);(\d+);(\d+);(\d+);(\d+)"], "execute": ["speak=sound id: %%1, sound position: %%4;%%5, player position: %%2;%%3"]}
wait
You will receive an event of the format:
event_sound:sound id;player x;player y;sound x;sound y
sound id - The ID of the detected sound.
player x, player y - The approximate coordinates of the player at the moment the sound was played. If the coordinates could not be determined, they will be zeros.
sound x, sound y - The coordinates of the sound. If the sound was general or its coordinates could not be determined, they will be zeros.
Please note: sound detection only works for the international version of the game.
4. Implemented multi-launch for the Chinese version of the game.
5. Implemented the ability to use Gameproxy in the Chinese version of the game.
To do this, simply enable the use of Gameproxy in the config.ini file:
enable_gameproxy=1
and restart the bot.
As a reminder, for the international version of the game, you need to specify the proxy data in the game settings.
See the information from the previous update.
6. Player coordinates are now tracked.
Events are also generated when their position changes:
event_mob_update:name;id;x;y
Example:
add_action_speak=search={"text": ["event_mob_update:Zlata.*;(\d+);(\d+);(\d+)"], "execute": ["speak=%%2; %%3"]}
wait
7. The command attribute has been removed for triggers.
Only execute remains, as it is a newer and more flexible method. Maintaining two attributes with duplicate functions is not rational.
add_action_speak=name={"text": ["regexp"], "execute": ["cmd1", "cmd2"]}
8. Implemented a system for muting unnecessary game sounds.
Add the parameter to the config.ini file:
mute_sound=1001,1002,1003-5000
Specifying sounds with both commas and a range (from and to) is supported.
9. Implemented a system for updating config.ini settings.
Now, after making changes, you don't need to restart the bot; the settings will be automatically picked up from the file.

2025.08.24
1. A proxy server has been added to the bot for the following features:
Tracking a chest from a distance of about 55 cells, tracking and searching for mobs from a distance of 60 cells in one direction, that is, the character sees all mobs in a 120 by 120 cell field...
to enable gameproxy add the following command to the config.ini file:
enable_gameproxy=1
then in the main game menu enter the connection details for the proxy:
ip: 127.0.0.1
port: 1088
When using the proxy, the following events and functions are available:
available events:
event_chest:x;y
sends an event when a chest appears
event_mob_remove:id
removal of a mob, or its death
event_mob_update:name;id;x;y
updating a mob's coordinates
event_mob_add:name;id;x;y
a mob appearing in the zone of visibility
functions for working through gameproxy
function to find the nearest mob
get_nearest_mob
the function generates the following events:
event_nearest_mob:name;id;x;y
shows the nearest mob
event_nearest_mob_empty
mobs not found
available variables:
nearest_mob_x
nearest_mob_y
nearest_mob_id
nearest_mob_name
searching for a mob by name
find_mob=regexp={"true": [""], "false": [""]}
generates the following events:
event_find_mob_empty
event_find_mob:name;id;x;y
upon finding, generates the following variables
find_mob_x
find_mob_y
find_mob_id
find_mob_name
if nothing is found, the variables are cleared
2. An anti-sticking system has been implemented for the character on the map.
if the character is at the same coordinates for 10 attempts, the bot considers the character stuck and kills the game process.
For the first 3 seconds from the goposition function call, the bot does not count coordinate repeats.
3. The mechanism for parsing tags as a result of trigger activation has been reworked
now the variables %%1, %%2... are visible only within the trigger results.
Before, you could do this:
add_action_speak=test={"text": [";(\d+);"], "execute": ["go_to_block=test"]}
wait
//press e
block=test
speak=result: %%1
4. The mechanism for opening help with ctrl+h has been reworked
it should now correctly open the forum with help.
5. Sounds have been added to the exchanger at the request for file deletion and uploading to the server events.
sounds/file_deleted.wav
sounds/file_uploaded.wav
6. New setting: goposition_sticky
specify the number of repeated coordinates. if the character checks the specified number of times and gets the same coordinates, the character will be considered stuck and the game process will be terminated.
to disable this system, set the value to 0. the default is 10 times

2025.07.27
Minor and other corrections are generally not accounted for in these points.
1. Fixed the goposition function.
2. Changed the behavior of the searchitems function.
With standard behavior, after finding an item, the bot would pause, requiring the pause to be lifted to continue the search. Now, this can be changed using the parameter:
searchitems_pause_on_result=1 or 0
• 1 - Standard behavior: pause after finding an item.
• 0 - After finding an item, proceed to the next script instruction.

3. Configuring caching levels for the goposition function.
Settings should be entered in config.ini.
Parameter:
gopath_cache=0 or 1 or 2
• 0 - Cache off. Maximum CPU load.
• 1 - Route caching enabled. Good if the character walks the same routes repeatedly. Light RAM load, reduces CPU load during repeated path calculations. However, there is still a significant CPU load when building the grid matrix.
• 2 - Route and matrix caching. Maximum optimization for CPU load and maximum RAM load.

2025.07.13
1. Optimized sellcollection function: Improved the performance of the collection selling function.
2. Optimized data validation for temporary file cleanup: Enhanced the efficiency of data checks performed during temporary file cleanup.
3. Experimental multi-instance game launch added: You can now run multiple copies of the game simultaneously without needing a virtual machine. A big thank you to Nikolaj for this!
• To launch the game in multi-instance mode, hold Alt and select "start game" from the menu.
• Please note: Using scenarios in multiple game copies is not supported. This feature is primarily designed for convenience when entering a cave or arena solo.
• Each new game instance will have a unique title to help you distinguish between open windows.
4. Optimized goposition module:
• Added caching methods for matrix creation and route plotting.
• Cache files are stored in the temp/cache folder.
• Matrix cache format: locname_make time_version
• Route cache format: locname_make time_version_diagonal mode_start1_start2_end1_end2
5. Enhanced logging: Added informative messages to the general log (mw.log) regarding drop_end_offset and enable_drop_control end time.
6. Implemented an individual encrypted obstacle map system: This new system provides personalized and encrypted obstacle maps.
7. Implemented automatic resume for unfinished scenarios: The bot will now automatically launch an unfinished scenario upon startup.
• A scenario is considered "finished" if it was completed, closed using Ctrl+F2, or exited using the exit or botexit functions. All other closures are considered unfinished.
• To enable this feature, add the following parameter to your bot's configuration file (config.ini):
resume_scenario_on_startup=1
• Then, restart the bot.
8. Improved goposition error handling: The goposition function now throws errors if invalid range values are provided.
• Valid x range: 1-600
• Valid y range: 1-600
• Valid details range: 0-50
9. Default matrix size set to 600x600: The matrix is now drawn by default at 600x600. This change will not significantly impact performance due to caching; the matrix will be drawn once and then accessed quickly from the cache.

2025.06.29
1. New function: var_delete=variablename
Deletes a variable.
Example:
var=text=Hello, World!
speak=%text%
sleep=1
var_exists=text={"false": ["var=text=Empty text in variable"]}
speak=%text%
2. Fix: goposition
3. Fix: Global hook interception.
4. Fix: Freezing text search in keypress=keyname=regexp
At times when the game froze, or there was simply no text from the game.
5. The xp_control function check has been moved higher and should trigger more accurately.
6. Optimized pet summoning when the enable_pet function is declared.
7. New function: goposition_turn_details
Coordinate detailing on intermediate turns. This is so the character doesn't approach the exact coordinates on a turn, but with a specified deviation.
Default: goposition_turn_details=0
8. Optimized global hook catching.

2025.06.19
1. New function: menusearch
Allows searching for items in menus and lists.
Example:
menusearch=regexp={"keys": "keyname", "true": ["speak=ok"], "false": ["speak=no"]}
keys: key for iteration, default key: s
false: list of commands executed if item is not found
true: list of commands executed if item is found.
One of the attributes must be present: true or false.
2. Fix for global hook interception.
3. Fix for some issues with incorrect process execution in triggers and with timewait, wait functions.
4. goposition algorithm optimized.
It has become more aggressive towards turns.
The algorithm's aggressiveness can be set using the function:
goposition_turn_penalty=100
Default is 100.
5. When attempting to load a config using the function loadoptions=filename, if the file does not exist, an error will be thrown and the script will terminate.
6. If the specified point for movement in goposition is inside a wall, or it's impossible to reach, an error will be thrown.
To intercept the error, you can use the event:
event_goposition_error
add_action_speak=error={"text": ["event_goposition_error"], "execute": ["go_to_block=next path"]}
If the event is not monitored, an error will be thrown and the script will terminate.
7. In the enable_one_target attack method, if the target has 1000000 hp, it is considered either a chest or an NPC and will not be attacked.

2025.06.08
1. Fix for waitspeak function.
Should now correctly process:
keypress=enter
waitspeak=regexp
2. Fix for goposition function when the one_target attack flag and attack_type=0 setting are active.
3. Optimization performed for obtaining version updates.
4. Fix for speech interception.

2025.06.07
1. New setting: keypress_text_timeout
Time to wait for text after pressing a key in the function:
keypress=keyname=regexp
Default value is 1 second.
Example:
keypress_text_timeout=1
2. Fix for pet summoning when the character is dead.
3. When the bot's HP reaches 0, a death flag is set.
Previously, the flag was only set when phrases about character death were received.
4. Implemented aiChat.exe utility.
Called by pressing F8 in the bot window. The aiChat.exe utility must be in the same folder as the bot.
The following settings are available in the config.ini file:
aichat_temperature=float 0.0 - 2.0
Creativity of responses. 0.0 for the most deterministic response.
2.0 for the most creative response, accuracy of responses may decrease.
Default is 1.0.
aichat_timeout=int time
Time to wait for a chat response.
Default is 60 seconds.
aichat_frequency_penalty=float 0.0 - 2.0
A parameter that reduces the likelihood of repeating the same words or phrases in the response.
Default is 1.0.
aichat_drop_provider=regexp
Regular expression to hide providers from the list of available models.
aichat_drop_model=regexp
Regular expression to hide models from the list of available models.

2025.06.05
1. Optimization of server connection settings.
2. Fix for minor bug when outputting speech via NVDA.
3. Fix for minor bug in route calculation in goposition.

2025.06.04
1. Optimization of control for the keypress=keyname=text function and data tracking in the trigger.
As soon as the text is similar to the trigger pattern, the execution of the keypress=keyname=text command will be stopped and the trigger block will be executed.
2. Fix for the problem where we terminated script execution but received a script execution error instead.
3. New variables:
%LASTBLOCK%
Name of the last executed block. Default block name: default
Redirects to the first line of the script.
%CURRENTBLOCK%
Name of the current block.
4. New setting for scripts:
ignore_mortal_timeout=10
Timeout during which the character death phrase will be ignored.
Needed to limit repeated launches of the mortal function.
Mainly designed for use when death tracking is done via a trigger for the event: event_mortal.

2025.06.03
1. Fix for event_mortal event:
add_action_speak=death={"text": ["event_mortal"], "execute": ["go_to_block=mortal"]}
wait
block=mortal
speak=successfull, death
sleep=2
go_to_block=mortal
2. Decreased game process control timeout from 0.5 to 0.1.
3. Fix for data in the adaptation file for the Chinese server.
4. Optimization of some functions when the game process disappears.

2025.06.01
1. Corrected the operation of the functions:
playfile_stop, player_all_stop, player_stop
Thanks to user: Dippydippy
2. New function: playfile_wait=filename
This function pauses script execution until the file filename finishes playing.
Usage example:
playfile=clear_logs.wav
playfile_wait=clear_logs.wav
speak=ended
Note: Not fully implemented according to the initial suggestion from user Dippydippy.
3. Internal work.

2025.05.25
1. Fix for critical error when using the reset_defaults function. Thanks to user Nikolaj.

2025.05.22
1. Default character movement speed set to 9 for the goposition function:
goposition_speed=9
2. Corrected line break handling in the script editor when pressing Shift+Enter.
3. Added the ability to replace text spoken by NVDA.
Parameters for config.ini:
speak_replace=1
• enable text replacement. The replacement file must be created in the bot's root directory: speakreplace.txt Line format: key=value original text=new text You can also specify a path to another replacement file using the parameter: speak_replace_path=filepath Where filepath is the path to the file relative to the bot's current directory. Example: speak_replace_path=myreplace.txt
4. Internal optimization of some procedures performed.
5. Now correctly handles the situation where the script is launched by pressing Enter when the game is closed, and after loading, the character is dead.
Previously, in such cases, only the mortal script would trigger, and the bot would stop working. Now everything works correctly – the bot continues execution.
6. When setting the volume in the volume=0 function, the sound is now completely turned off.
7. Added new function: reset_defaults — resets all settings to default values.
Example:
attack_type=1
keys_attack=j|i|h
enable_one_target
reset_defaults
As a result, the bot will return all parameters to their defaults:
attack_type=0
keys_attack=j
disable_one_target
8. Added new function: shutdown — shuts down the computer.
Usage example:
shutdown
This command can be used, for example, in conjunction with a delayed timer.

2025.05.10
1. Fix for last_login function.
2. Fix for line breaks in the chat message field when pressing Shift+Enter.
3. New variable %GAMELANG%
Indicates the selected game adaptation language.
Example:
if=["%GAMELANG%", "english", "!=", ["speak=The script is written only for the English version of the game.", "sleep=2", "break"]]
4. Updated script launch timer.
Thanks to user: Lilou
Previously, only 1 timer could be set, now multiple timers are available for setting.
To remove a timer from the list, select the timer and press the Delete key to remove it from the list.
5. Updated latest version loader update.exe.

2025.05.04
1. Interface control key changes:
F1 now opens the server menu.
On the script tab, the control keys have been updated:
F2 – rename script
F3 – create new script
F4 – edit selected script
2. Fixed window focus issue related to the bot window.
3. Fixed chest opening in the Chinese version.
4. Renamed the start_game parameter in config.ini to launch_game to avoid conflicts with function names in scripts.
5. Added a new parameter to config.ini:
stop_sounds=1 – disables all bot sounds.
6. Added a new parameter to config.ini:
notify_sound_timeout=300 – notification repeat interval in seconds.
7. Added a new parameter for scripts:
open_chest_timeout=10 – timeout for approaching a chest. Default is 10 seconds.

2025.05.01
1. Removed auto-transition to the script list after script execution completion.

2025.04.30
1. added variable %CURRENTDATEFULL%
displays date in format:
HH:II:SS YYY-MM-DD

2. another fix for enable_drop_control=3|blockname operation

2025.04.29
1. fix for enable_drop_control=3|blockname function operation

2025.04.28
1. fixes for the attack key assignment bug.

2. optimized the method for checking new notifications.
notifications are available in the server menu via the f1 key.

2025.04.27
1. fix for opening chests on the map.

2. now if the enable_one_target function is enabled and combat is ongoing, the bot can still continue choosing movement in the goposition function, of course if attack_type=1 is enabled

3. data about opening a chest is now recorded in the openbox.log file.

2025.04.26
1. new function: shopscript
allows the use of personal scripts, or encrypted ones.
scripts are stored on the server, access can only be obtained by their hash value.
However, if personal access is set, only the user for whom it was created will be able to run it.
example:
shopscript=string hash

2. reworked the exchange interface.
Added functionality to add a description to the uploaded file.
if the file has already been uploaded, or you want to change the file description, focus on the file and press the f3 key to set a new description.
With the delete key you can delete the uploaded file.

3. implemented server menu functionality via the f1 key.
while on the message input tab, press the f1 key.
now you may also sometimes receive notifications about certain operations.
Upon receiving a notification, you will receive an audio signal; to view your notifications, if any, go to the f1 menu and you will see the notify +1 item
go in to view them.
additional information items may also be available via the tab key opposite the menu item.

4. fixes for the double repair bug with boxes in combat have been made.

5. improved method for handling character death event.

6. increased the waiting time for character hp; mp data from 1 to 2 seconds. sometimes the game didn't provide data within 1 second.

7. reworked the chat message list.
while on a message, press ctrl+c to copy the message text.
Press alt+enter to open message information.

8. many other minor fixes that I have already forgotten and didn't write down.

2025.04.07
1. For those whose new market search is not working, the ability to use the old market search function has been implemented, its name is
old_searchitems=search string

2. the functionality of the menu system in the bot interface has been laid out.
while on the message input field, press the f1 key.

3. other fixes

2025.03.30
1. fix for box repair

2. fix for getting time for the enable_drop_control function and the operation of the drop_end_offset option
if there are errors, they will be recorded in the error.log file

3. the badequipment.log log displays the full date including year, month, and day

4. added log output to a separate file for items that are dropped from the bag via the clearbag function

5. upon death, automatic disconnection from the server_bot_disconnect notifications server occurs

2025.03.23-1
1. restoration of access to the bot.

2025.03.23
1. new parameter: pet_food_timeout
pet fullness check timeout
Default 300 seconds
pet_food_timeout=300

2. new variable: COUNTMORTAL
shows how many times the character has died per session
can be implemented as
if=["%COUNTMORTAL%","5",">=", ["break"]]

3. bug fixes, minor and not so minor.

2025.03.20
1. Implemented functionality for clearing the logs folder via hotkeys
Suggestion by MoonPrincess
Hotkeys: ctrl+shift+delete
sound suggested by Dippydippy
sound file: clear_logs.wav

2. Implemented functionality for moving focus between interface elements
Suggestion by Squish
Hotkeys:
lalt+a - script list
lalt+s - message input field
lalt+d - chat history
Combinations can be changed via the config.ini file
script list
key_focus_scripts=lalt+a
message input field
key_focus_message=lalt+s
chat history
key_focus_history=lalt+d

3. it is now possible to download a file from the exchange directly to the scripts folder, just hold down shift+enter
enter - downloads to the files folder.
shift+enter - downloads to the scripts folder.

4. Added sound upon file download completion
sound file: download_finish.wav

5. now you don't need to write the open_game_window command at the beginning of scripts
the bot does this automatically.

6. new combat method, attacking one target until the target is destroyed.
enable_one_target
disable_one_target
the target is attacked until its health level becomes 0

7. fix for the repair function

8. new setting for config.ini
muted_speak=regexp
if regexp matches, this text will not be voiced by nvda.
example:
muted_speak=^(broadcast ;|system)

9. the muted_speak setting is also available in scripts
to clear the string clear_muted_speak

10. new market search method
Thanks to user: Jlex
Search speed increased

11. New function: pastetext
copy text from the clipboard to a variable
example
pastetext=text
text from the clipboard will be placed in the variable text
pastetext=my_text
speak=%my_text%

12/. different text translation methods.
The setting in config.ini is used
translate_method=string
available translators:
googlefree, nvdaes, aifree, gemini

2025.02.23
1. New variables
%LASTPOSITIONX%
last obtained x coordinate
%LASTPOSITIONY%
last obtained y coordinate
%LASTLOCNAME%
last obtained location name
Data is obtained during the goposition function operation

2. Removed limit for pressing skill keys in setInterval
Now keys will be pressed regardless of what keys they are and how much time has passed since skills were used

2025.02.22-1
1. Fix pet_regen

2025.02.22
1. fix for pet summoning

2025.02.21
1. Added the ability to specify a period for pressing the escape key
Example:
enable_key_esc=float seconds
If not specified, the default period of 5 seconds is used.

2. New function: volume
windows volume control.
Example:
volume=100
maximum volume
volume=0
minimum volume

3. Fix for processing adaptation files

4. fix for badequipment function operation

5. Upon triggering the revival function, pets, target search, and auto-attack are disabled.

2025.02.16
1. now if a string contains only digits and characters like: .*[]{}()':;><. digits
then such a string will not be translated, but will be immediately sent for speech output.

2. fix for working with fragments and selling collections.

3. fix for expanding the bot window.

4. Other minor fixes that I forgot to write down


2025.02.06-1
1. Fix from 2025.02.06

2025.02.06
1. New parameter: keyboard_write_speed
Character input speed in fields
keyboard_write_speed=0.1
A character will be entered every 0.1 seconds.
Default is 0
2. Fix for key sticking when launching the game via hotkeys.
3. Minor fixes to core functions.

2025.01.29
1. Optimization of some functions.

2025.01.25
1. Fix for the main_stream attribute in the triggers module.
2. Fix for the mapper functionality.
3. Fix for minor issues in calculations.

2025.01.24
1. Correction of minor code errors from previous updates.

2025.01.22
1. Optimization of the respawn function.

2025.01.21
1. New function: speak_stop
Stops speech output.
This will stop NVDA if it is currently speaking.
2. Fix for the character respawn function.

2025.01.19
1. New function: includefile
Inserts lines from another file at the current position.
Example:
File main:
open_game_window 
get_def=test1 
get_def=test2 
wait 
includefile=file1 
File file1:
def=test1 
sleep=1 
speak=current file; file1 
enddef=test1 
includefile=file2 
File file2:
def=test2 
sleep=1 
speak=current file; file2 
enddef=test2 
Simply put, recursive nesting is supported.
2. Fix for fragment selling. If you have more than 2000 fragments, they will be sold in batches of 2000.
3. New variable: LASTSPEAK
The last received text from the game:
copytext=%LASTSPEAK%
4. Optimized the method for handling character death processing.
5. The environment of var_eval and eval has been extended with the re library, enabling work with regular expressions.
Example:
var=text=my 5 points 
var_eval=result=match.group(1) if (match := re.search(r'my (\d+) points', var_text)) else 0 
// result = 5 

2025.01.14-1
1. Fix for market search.
2. Fix for launching scripts via hotkeys.

2025.01.14
1. Implemented functional blocks similar to function calls.
Idea by (Dippydippy).
Example:
def=my name 
more code... 
enddef=my name 
This block of code can be placed anywhere in the script.
To call it:
get_def=my name
2. Return calculation results using Python eval.
var_eval=variablename=eval string 
The result of eval string is stored in variablename.
Example:
var_eval=result=2+2 
speak=%result% 
// result = 4 
Or:
var=name=100 
var_eval=result='yes' if %name%>=100 else 'no' 
speak=%result% 
// result = yes 
3. Implemented variable visibility in the eval execution space.
var=name=test 
var_result='yes' if var_name == 'test' else 'no' 
Or with math operations:
var=num=2 
var_eval=result=int(var_num)+2 
4. Implemented player function list:
player_play=name={params} 
Plays a file.
Launches a player with the name "name" and parameters {params}.
Example:
player_play=test={"file": "sounds/click.wav", "volume":50, "balance":0, "loops":0} 
Parameters:
• file – path to the file
• volume – volume from 0 to 100
• balance – from -100 (left channel) to 100 (right channel)
• loops – number of repetitions (-1 for infinite loop, 0 default, 1 for one repeat, etc.)
player_stop=name 
Stops playback of player "name".
player_pause=name 
Pauses player "name".
player_unpause=name 
Unpauses player "name".
player_volume=name=volume 
Sets the volume for player "name" (0-100).
player_balance=name=balance 
Sets the balance for player "name" (-100 to 100).
player_all_stop 
Stops all players.
5. After launching the script, the focus resets to the chat message list.
6. The player can now load sounds via http | https from the internet.
7. Implemented function-based replacements.
Example:
speak=result: %function.eval(2+2)% 
// result: 4 
Example:
speak=distance: %function.abs(-10-10)% 
// result: 20 
8. Implemented data input into text fields and storing them in a variable.
Example:
entry=variablename 
speak=%variablename% 
9. Refactored market search.
Previously, items had to be separated by |.
Now, regular expressions are used for more flexibility.
10. Added eval function.
eval=expression as a string 
11. Extended data processing in eval.
Now it is possible to store processing results in variables.
Example:
var=text=Hello, world! 
eval=function_var('result', var_text.replace('Hello', 'Hi')) if var_text.startswith('Hello') else function_var('result', 'my string') 
speak=%result% 
// result = Hi, world! 
12. Allowed parsing tags as commands.
var=text=speak=Hello, world! 
%text% 
The processor will parse %text% and execute it as speak=Hello, world!.
13. Refactored waitspeak mechanism.
Minimized text wait time, likely fixing issues where the menu opened faster than the bot could intercept the text.

2025.01.04
1. New setting for config.ini:
server_connect_timeout=5 
Server connection timeout.
If you have a poor connection, increase the timeout.
Default: 5 seconds. Maximum: 30 seconds.
2. Fixed hotkey behavior for start_bot (expand bot window).
3. speak.log now displays full time format:
13:30:00 2025-01-04 
4. Fix for start_game=email account, updated for new game mechanics.

2024.12.31
1. new feature: goposition_stop
copyright Dippydippy
stop movement to a specified point
2. Quickly switch focus to the bot window: lalt+b
change the key in the config.ini file
parameter: start_bot=key combination
3. nvda passive mode is set as the default mode.

2024.12.29-1
1. Fixed update retrieval and unpacking.
2. Fixed sending empty messages.

2024.12.29
1. Rewritten functions for searching and identifying the necessary window for both the bot and the game.
2. Now, the correct line is displayed in the script error log.
3. Edited keys for stopping the script. You can now use both the left and right Ctrl keys. For pausing, you can also use both the left and right Alt keys.
4. Renamed keys: numpad+, numpad-
New names: numpadplus, numpadminus

2024.12.28
1. Redesigned the sleep function mechanism.
2. Developed a custom Windows global key interceptor. Now it bypasses restrictions on keypress tracking in the game.
3. If the text field contains text and you select a user using Alt+Enter, pressing Enter on the selected nickname will send the message to the chosen user.
4. New trigger system attribute: main_stream.
Ensures that instructions from "execute" are executed in the bot's main thread instead of a parallel thread.
Example:
add_action_speak=test={"text": ["debug"], "execute": ["sleep=1.1", "lshift+."], "main_stream": 1}
Default: main_stream = 0.
5. Expanded functionality of the setonkey function.
New attribute: pass = 1 | 0.
Allows passing triggered keys to the game or blocking their transmission. Default: pass = 1.
Example:
setonkey=test={"keys": "j", "execute": ["playfile=start.wav"], "pass": 0}
Pressing key j will play a sound, but no attack will occur. If "pass": 1 is set, the keypress will also be transmitted to the game.
6. Extended setonkey function.
You can now specify alternative keys for triggering. Previously, only one combination could be specified; now, multiple are supported.
Example:
setonkey=test={"keys": "f3", "execute": ["playfile=click.wav"]}
Triggers only when f3 is pressed.
setonkey=test={"keys": ["f3", "lctrl+f4"], "execute": ["playfile=click.wav"]}
In this example, it triggers on f3 or lctrl+f4.
7. New default variable: %LASTSERVERBOTTIME%.
Indicates how many seconds ago a message was received from the control server ("server_bot_connect").
Default value: -1.
8. Fixed time display in the private message list when pressing f3.
9. Fixed an error when appending a character to the end of a variable
var_append=text=
10. New default variable: %SCRIPTNAME%.
The name of the current script.
11. New function: wlog.
Writes the processed string to mw.log.
Example:
wlog=Current script: %SCRIPTNAME%

2024.12.05
1. Added variable with the current date: %CURRENTDATE% in the format yyyy-mm-dd.
2. Fixed keyboard operation with keyboard_type=1.

2024.12.04
1. Fixed filedelete function.
2. New function: goposition_diagonal_mode enables or disables diagonal movement mode.
Example:
goposition_diagonal_mode=1  // enable
goposition_diagonal_mode=0  // disable
By default, this function is always disabled.
3. Simultaneous key presses now available through the keydown function.
Example:
keydown=s+d
sleep=4
keyup=s+d
4. Now, when the script execution is complete, all sound playback also stops.
5. Fixed functions: var_minus, var_plus, var_div, var_mult.
6. Fixed temporary files cleanup.
7. New default variables: CURRENTMICROTIME, CURRENTTIME.
Retrieve current time in milliseconds and seconds in Unix format.
Example:
open_game_window
var=start=%CURRENTTIME%
sleep=2
var=end=%CURRENTTIME%
var_minus=end=%start%
speak=time: %end%
sleep=2
8. New parameter: goposition_stop_get_coords.
In goposition mode, stop movement while checking coordinates?
Example:
goposition_stop_get_coords=1  // stop 
goposition_stop_get_coords=0  // don't stop 
Default value: 0.
9. Fixed bot interface.

2024.11.26
1. Implemented functionality for playing sounds from the network.
Example:
playfile=https://mwbot.kutsenko.cc/1.mp3
2. New function: playfile_stop stops playback.
Example:
playfile_stop
3. Display of private messages:
• In the "Write a message" or "Message list" tabs, press f3 to access the private message list.
• The private messages list will be displayed.
• Pressing tab moves to the input field. Write a message there and press enter to send it to the selected user.
• To clear the private messages list, while in the "All messages" list or input field, press shift+f3.
4. The text translation system now works when sending private messages.

2024.11.24
1. New function: var_replace replaces text in a variable.
Example:
var=text=hello 
var_replace=text=["llo", "y"] 
speak=%text% 
Result => hey 
Another example:
var=text=ring (left) 
var_replace=text=[["(",")"], ["\\(","\\)"]] 
speak=%text% 
Result => ring \(left\) 
Or:
var=text=hello 
var_replace=text=[["l","o"], ["","y"]] 
speak=%text% 
Result => hey 
2. Updated tools for updates.
3. New function: nvda_mode switches NVDA modes from scripts.
Example:
nvda_mode=0  // Normal mode
nvda_mode=1  // Passive mode
nvda_mode=2  // Silent mode

2024.11.23
1. Fixed filedelete function.
2. Critical changes!
• The file storage system for language adaptation has been redesigned. Translation files for the game and bot interface are now stored in the lang/ folder.
Example:
english.bot.txt  // Bot interface translation
english.game.txt  // Game interface adaptation
• The scripts folder is now named scripts, reflecting its current use.
The directory for location walls is now at scripts/wall.
3. New event: event_attack.
• Allows tracking the start and end of battles.
event_attack:0  // Battle ended
event_attack:1  // Battle started
event_attack:2  // Target exists
4. NVDA mode selection via alt+n keys:
• Normal mode (default).
• Passive mode (NVDA tries not to interrupt speech).
• Silent mode (NVDA goes completely silent in the game).

2024.11.10
1. Fixed fileexists function.
2. Fixed the ability to open the English or Spanish help versions using the ctrl+h keys.

2024.11.09
1. Fixed fileexists function.
2. Conducted optimization of script execution and code refactoring. Script execution speed has been improved.
3. New parameter: repair_max_retries.
Sets the number of repair attempts:
repair_max_retries=5 
The bot will attempt repair 5 times. If unsuccessful, both the game and the bot will close.
4. Critical change!
• Script pause and resumption after pause now use the f2 key!
Default timeout for re-pressing f2 is 0.3 seconds.
To change this, set the following in your script:
pause_timeout = float(seconds) 
Or specify the parameter in the bot's configuration file: config.ini.
pause_timeout=float seconds 
5. Added navigation through blocks in the script editor:
alt+b: move to the next line starting with block= 
alt+shift+b: move to the previous line starting with block= 
When a line is found, its content is announced, e.g., block=city.
6. New function: var_random.
Generates random values.
Example:
var_random=variable=1,300 
Generates a random value between 1 and 300 and stores it in %variable%.
Another example:
var_random=variable=["b1", "b2", "b3", "b4", "b5"] 
go_to_block=%variable% 
Selects a random value from the provided list.
7. New trigger system attribute: ignorepause.
Allows the trigger to continue working even during a pause.
Example:
add_action_speak=lack_of={"text": ["^lack of vitality"], "execute": ["gameexit"], "ignorepause":1, "noclear":1} 
8. Fixed fileexists function.
9. Other minor edits.

2024.10.20
1. New function: filedelete.
Deletes a file:
filedelete=filename 
2. New function: filerename.
Renames a file.
Example:
filerename=old_name=new_name 
3. New function: fileexists.
Checks for file existence.
Example:
fileexists=filename={"true": ["speak=file exists"], "false": ["speak=no find file"]} 
Another example:
fileexists=filename1={"false": ["fileopen=filename1=w=100"]} 
4. New function: var_exists.
Checks whether a variable exists.
Example:
var_exists=varname={"true": ["speak=yes, variable exists"], "false": ["speak=no, empty variable"]} 
Another example:
var_exists=varname={"false": ["var=varname=1"]} 
5. Updated "playfile" player functionality.
MP3 sounds can now also be played.

2024.10.13
1. Fixed data recording for the email address that was last authorized.
2. Fixed access to editor fields for entering messages and chat message lists.
3. Fixed enable_xp_control function.
4. Fixed global keypress tracking with the onkey function.
5. Fixed if function:
• It is now not mandatory to specify the "else" block if no actions are present. Writing has been simplified:
if=["2", "2", "==", ["speak=yes"]] 
6. New function: mapwall_reset.
Clears data about the connected map in mapwall=filename.
7. In the chat input field, press alt+enter to see a list of online users. Select a user and press enter to auto-fill /p nickname in the input field for sending a private message.
8. New function: drop_end_offset.
Specifies how many seconds before the script should stop working.
Example:
drop_end_offset=600  // Stops the script 10 minutes before the farm ends. 
enable_drop_control 
9. New parameter: count_attack.
Number of attack repetitions. Default: 2 times.
10. New system for data exchange between different bots at the script level.
Example:
server_bot_connect=string  // Channel name, use a complex string for security. 
server_bot_disconnect  // Disconnects from the channel. 
server_bot_write=string | json  // Sends a message to the channel. 
If the string is JSON, all connected users execute the function list.
server_bot_write=["speak=hello", "playfile=click.wav"] 
Or specify a recipient:
server_bot_write={"nick": "Eugen", "execute": ["speak=hello", "playfile=click.wav"]} 
Allowed functions:
server_bot_allowed_functions=["speak", "playfile"] 
11. New function: copytext.
Copies text to the clipboard.
Example:
copytext=your text 
copytext=%variablename% 
12. New function: var_append.
Adds text to the end of a variable:
var_append=variablename=text 
13. Fixed: When a script is running and no pause is set, messages cannot be sent to the bot chat.
14. File operations implemented:
fileopen=filename=mode=value 
Modes:
• a: Append [value] to the end of the file.
• w: Overwrite file with [value].
• r: Read file contents into a variable.

2024.09.22
1. New function: clear_var_action.
Clears trigger tag data: %%1, %%2, and so on.
Thanks to users: Jgonzalezh, Cassius.
2. Extended functionality of the enable_xp_control function:
enable_xp_control=int xp|time period=block name 
• int xp - experience limit.
• time period - how often to check experience level.
• block name - block to execute when the experience is gained.
3. Now, when calling the disable_pet function with the recall parameter:
disable_pet=recall 
• If the enable_pet function was previously called, the pet will be recalled.
• If simply calling disable_pet, pet management will be disabled, but the pet itself will not be recalled.
4. To have the bot launch the game with a specific email, use the command:
start_game=your@mail.com 
5. New function: last_login=your@mail.com.
Sets the last login email.
• To apply these changes, restart the game.
6. Added a dialog for selecting game adaptation files.
• Press alt+l to choose the game language in the bot.
• If lang=... is missing in config.ini during the first launch, this dialog will also appear.
7. Before using the bot, you must read the manual and agree to the terms. A button is provided to access the manual.
8. New functions: setonkey, delonkey.
Example:
setonkey=name={"keys": "lalt+f4", "execute": ["playfile=click.wav", "sleep=1", "speak=game exit", "gameexit"]} 
Pressing the specified keys will execute actions listed in the execute attribute.
delonkey=name  // Removes the keypress controller with the specified name. 

2024.09.15
1. Fixed: When the attack was disabled with disable_attack, target search keys enable_nav_attack did not work.
2. Added the ability to change hotkeys for launching and closing the game.
To change the default keys, add the following lines to your config.ini file:
Launch game or expand game window: 
start_game=lalt+g 
Close game: 
quit_game=lalt+q 
3. Adjusted key release behavior in the random_going mode.
4. Extended functionality of the goposition function:
goposition=int x|int y=details 
• By default: 0 (exact match).
• Example:
goposition=100|100=5 
If the character reaches 102|96, it will be considered the target point.

2024.09.11
1. Fixed mastersynthfrag function.
2. Translated some messages into English.
3. Added additional translatable messages in the language.ini file.
4. New functions:
var_div=variable=value  // Divide variable value by specified value. 
var_mult=variable=value  // Multiply variable value by specified value. 
5. Implemented script start timer via the f7 key.
6. If the game crashes, the bot will not restart automatically on subsequent launches.
7. Enhanced functionality of the badequipment function:
badequipment=regexp 
The bot now logs items being discarded in log/badequipment.txt.

2024.09.04
1. Fixed playfile=filename function.
2. Conducted system optimization.

2024.08.21
1. New parameter:
keypress_limit=int number 
• Default: 5.
• If the same phrase appears number times in the keypress=keyname=regexp function, the bot will detect circular menu scrolling and stop working.
2. Migrated to a new server in Frankfurt am Main.

2024.08.18
1. For the new trigger add_action_speak, the onecopy attribute is now 1 by default.
2. New function:
enable_mount=name  // The character will attempt to use the specified mount. 
disable_mount  // Optional value to dismount. 
If no value is provided, the name from the previous enable_mount step will be used.

2024.08.16
1. Added a switch for starting a block after a specified time:
enable_drop_control=3|blockname 

2024.08.14
1. Extended functionality of the enable_drop_control function.
• Thanks to user: Jgonzalezh.
Example:
enable_drop_control=3|blockname 
When farm time expires, the script moves to the specified block.

2024.08.13
1. Added new function: enable_drop_control.
• Ends the script when your farm time runs out.

enable_drop_control 
• Variants:
enable_drop_control=1  // Shuts down the computer. 
enable_drop_control=2|scriptname  // Runs the specified script. 
2. Fixed key_open_profile parameter in config.ini.

2024.08.08
1. Added release date indication for updates to improve clarity.
2. Fixed clearbag function when timeout data was missing.

99.11
1. Implemented script continuation after the specified date:
enable_time_start=2024-08-06 03:00:00 
• The bot will execute the next script instructions only after the specified time.
• To disable this:
disable_time_start 
2. Added timeout functionality to the clearbag function.

99.10
1. Fixed clear_action_speak.
2. Save translation state in config.ini.

99.9
1. Added alt+r hotkey for program reload.

99.8
1. Added key reassignment for basic functions:
key_open_profile=` 
key_open_chat=backslash 
key_get_hp=r 
key_get_pet_hp=lshift+r 

99.7
• Fixed assignment and launching of hot scripts.

99.6
• Implemented the function for quickly uploading scripts to the exchange using the ctrl+u hotkey.
To use: select the desired script and press ctrl+u.
• Fixed disabling keys f10, f11, f12.

99.5
• Changed the hotkey for launching the game to alt+g.
• Added a hotkey combination for closing the game: alt+q.
Note: The hotkey for closing the game may not work when the game window is active.
• Removed hotkeys: f10, f11, f12.
• Added the ability to assign hotkeys to scripts:
To assign a hotkey to a script, select the script and press alt+shift+ followed by a number from 1 to 9.
To call the script, use the combination alt+ followed by the assigned number.

99.4
• ctrl+h opens the help section in the language set for the bot.
If the language is not set, it opens the help section in English.
• Modified the game launch function.
• Adjusted logging output.
• Game can now be launched using the global hotkey: left alt + left shift + g.
If the game is already running, this combination brings the game window to the foreground.
Note: This hotkey is global and can be used outside the bot window.

99.3
• Added the ability to open the help section using the ctrl+h key.
• New function:
action_speak_change=["trigger name", "attribute name", "value"] 
Example:
add_action_speak=critical={"text": ["^crit"], "is_count": 2, "execute":["keypress=n"], "onecopy":1}
action_speak_change=["critical", "text", "no crit"] 
• It is now possible to launch a script via a chat command:
/map script name
• Other minor edits.

99.2
• New function: switch.
Syntax:
switch=string={"default": ["default actions"], "value 1": ["actions list"], "string 2": ["actions list"]} 
Example:
var=counter=0 
switch=%counter%={"default": ["speak=default case: %counter%"], "1": ["speak=case 1"], "2": ["speak=case 2"]} 
var_plus=counter=1 
sleep=1 
go_to_line=2 

99.1
• Attempted to identify keyboard error.

99.0
• Fixed logging data in logerror when a file is missing in the mapwall=filename construction.
• New function:
var_plus=variable_name=int value  // Adds the value to the variable. 
Example:
var=counter=0 
speak=counter: %counter% 
sleep=1 
var_plus=counter=5 
speak=new counter: %counter% 
• New function:
var_minus=variable_name=int value  // Subtracts the value from the variable. 
• New function: if.
Syntax:
if=["cond1", "cond2", "operator", ["true_action"], ["false_action"]] 
Example:
if=["1", "2", "<", ["speak=1 < 2, ok"], ["no, 1 > 2 :)"]] 
Example with variables:
var=counter=0 
speak=counter: %counter% 
sleep=1 
var_plus=counter=1 
if=["%counter%", "5", ">=", ["break"], ["go_to_line=2"]] 
The script will stop when the variable %counter% reaches 5 or more.
Supported operators:
• >
• <
• <=
• >=
• ==
• !=
For questions, visit the forum at https://mwbot.kutsenko.cc/ or use the /report command.

98.9
• Added functionality to open the bot directory using the ctrl+e hotkey.
Idea by user: Jgonzalezh.

98.8
• Optimized the sellcollection function.
• Preparation for migration to a new address (not a bot function).

98.7
• Added the ability in the target search function to specify key combinations like:
lshift+5|lshift+6 
Example:
nav_keys=lshift+5|lshift+6|k|; 
• Fixed key replacement behavior in the config.ini file.
Example:
kbr_rctrl=space 
This makes the bot press space instead of the right ctrl.

98.6
• Fixed go_to_line function.
Thanks to user: Jgonzalezh.

98.5
• Fixed incorrect behavior of the go_to_line function in some situations.
Thanks to user: Jgonzalezh.

98.4
• Added event generation function:
action_speak_generate=your text 
To capture the event, use the text:
add_action_speak=test={"text": ["^event_generate_action:your text"], "execute":...} 

98.3
• Fixed go_to_block function.

98.2
• Fixed the onecopy attribute in triggers.
• Added new attribute timeout:
timeout: 123  // Sets how often a trigger can activate. 
Example:
add_action_speak=testTimeout={"text":["^(\\d+); (\\d+)$"], "execute":["sleep=1", "speak=hp: %%1; mp: %%2"], "onecopy":1, "timeout": 5} 
When pressing r to check stats, the trigger will only activate once every 5 seconds.
• Added function:
stopwall=regexp 
Instead of adding stop phrases of walls to the stopwallword.txt file, you can now enter phrases using a regular expression directly in your script, the work of data from the stopwallword.txt file is also taken into account.
command added: execute=["cmd1", "cmd2", "cmd3"]
execution of commands in one line, intended to be used to set settings
fixed using the go_to_block function in triggers in the execute attribute.