I decided to release the Event Server as a separate program for all private servers to use.
This version of the event server will work for most (or every?) Action 9 private server files.
So, to the point:
What is it?
it's a program that emulates a client and throws events
What can it do?
Most of the things that a GM can do and more. it's must faster and more reliable than a regular human GM. You no longer have to take the risk of a GM going corrupt and doing things that will lead to your server's downfall.
How to set it up:
1. Execute the SQL scripts in your database (I left the "USE [GM Tool]" phrase, but you can change it to your own database, or for example CHARACTER. up to you.
2. Update the settings.ini file with your database credentials
3. Create an account for the [GM] char to be on
4. Create the GM character
5. Put that user_id, password and character name in the settings.ini file
a) this point refers to those values in the settings.ini file:
Account=gmaccount
Password=gmaccountpassword
Character=[GM]EventHoster
Event Server will not work if your GM char name is not found on the account.
This is crucial and I thought its easy but I really had a surprising number of questions regarding this.
6. Update your IP address and ports for the game (loginserver, dekaronserver ports and IP!)
NotificationCenterPort is not used in this version.
Rest is self explanatory.
What events are included?
Ruby Eye - spawns mobs in Space of Pilgrimage
Golden Invasion - spawns mobs in Aquarai Ruins
How can I schedule an event?
Schedule is kept in EventSchedule table. You only need to insert your desired time and event symbol.
For built-in events the symbols are:
RUBY_EYE
GOLDEN_INVASION
How can I create my own events?
This is a new feature I have been working on for the past few days.
You can create your own events and schedule them.
To create an event you need to create a text file with .event extension.
Basically this is a simple scripting language I created. It consists of a couple commands, which correspond to the actions executed by the Event Server.
List of currently supported actions:
MOVEMAP wMapIndex wCoordX wCoordY//used for teleporting the GM char from one map to another
SLEEP dwDuration//used to wait between executing commands. Takes time as a parameter in miliseconds
NOTICE text//sends a GM notification in game.
CALLMONSTER wMonsterIndex wCoordX wCoordY//spawns a monster, takes 2 additional params: x and y coordinates
RESETMONSTER wMonsterIndex//resets monsters
FIELDRETURN wMapIndex//returns everyone in a map
FIELDHEAL wMapIndex//heals everyone in a map
CREATEBRICK dwBrickIndex//spawns a brick
DESTROYBRICK dwBrickIndex//despawns a brick
CALLMONSTERS wCount wMonsterIndex wCoordX wCoordY//spawn a set of monsters, takes 3 additional params: count, x and y coordinates
RESETCOOLTIME_MAP wMapIndex//resets skill cooltime on a specified map
ANNOUNCEMENT szText//Much like Notice, it sends a dedicated GM-like announcement. This was requested by people who run Event Server on Evolution server files.
For everyone else - Notice will work exactly the same way as Announcement.
The Event Server has a script validator built in so it should be fairly fool-proof. or if you made a mistake, it should let you know what it is.
How can I schedule a custom event?
execute this script and rename the script.event to whatever you named your custom script. Remember to keep the .event extension as thats what the Event Server looks for when setting symbols for the scheduler.
Code:
Insert into EventSchedule (EventType, StartTime) values ('script.event','10:00')
Code:
movemap 46 0 0 notice Aquarai invasion will begin in 10 minutes! sleep 300000 notice Aquarai invasion will begin in 5 minutes! sleep 300000 notice Strong monster have spawned all around Aquarai Ruins!\\Defeat them! callmonster 10008 352 467 callmonster 10008 258 453 callmonster 10008 179 371 callmonster 10009 455 199 callmonster 10009 368 197 callmonster 10009 330 345 callmonster 10009 326 281 callmonster 10010 293 57 callmonster 10010 181 74 callmonster 10010 157 273 movemap 150 0 0
Please post your:
- Ideas
- Requests
- Problems
- Feedback
----changelog----
2025-05-06:
- Added support for SQLEXPRESS
- Fixed script validator where SLEEP would only accept values up to 65535
- Added CREATEBRICK and DESTROYBRICK commands
- Added EvoEnabled flag for enabling the program to run on Evolution files. Set it to False to use it on normal servers. The difference is mainly in notifications: Evo uses quest-like notifications and if you set the flag to false it'll just use GM notification.
- Minor bugfixes
2025-05-06.1:
- Fixed casting for SLEEP (unsigned short -> unsigned int)
2025-05-06.2:
- Fixed connection request packet opcode mismatch for Evo false flag
2025-05-06.3:
- Fixed character checkout packet opcode mismatch for Evo false flag
2025-05-08.1:
- Added config value for SessionServerID (add it to your settings.ini)
- Added config value for DekaronServerVersion (add it to your settings.ini)
2025-06-08:
- Fixed scheduler timer (was showing wrong time in timezones other than european)
- Added CALLMONSTERS command
- Added RESETCOOLTIME_MAP command
2025-06-19.1:
- Config strings max length changed 20 -> 256 bytes
- Added ANNOUNCEMENT command
- Fixed minor bugs
2025-06-23.1:
- Improved logging (will print out error code if version validation doesnt match)






awesome! that was quick. ty mate! also I am not sure what I am doing wrong however never had luck making it work. 
