Jump to content


Popular Content

Showing content with the highest reputation since 04/22/22 in all areas

  1. 4 points

    Http support in hercules (funding)

    Some update on project. now also implemented extend plugins support for inter server packets. add support for api to login, char, map packets. protection against different attacks on servers. sample http plugin.
  2. 3 points

    Add cooldown dynamically on npcs

    I made this function for a friend and it can be useful in general. basically allows you to add wait time for something in npc, you can put different times in the same npc using the reference names. a utility to put in Global_Functions //== Function F_SetNpcCD ================================ // Add cooldown to access specific functions of a pc but not limited //== // callfunc "F_SetNpcCD","reference_name",time_in_seconds{,cooldown type}; // Examples: // callfunc("F_SetNpcCD","name_example0",45) // Adds 45 second cooldown at player level // callfunc("F_SetNpcCD","name_example1",85,1) // Adds 1 minute 25 second cooldown at player level // callfunc("F_SetNpcCD","name_example2",120,2) // Adds 2-minute cooldown at account level function script F_SetNpcCD { set [email protected]$,(countstr(getarg(0)," ")?replacestr(getarg(0)," ","_"):getarg(0)); set [email protected],getarg(1); set [email protected],getarg(2,0); setd(""+([email protected]==2?"#":"")+""[email protected]$+"_time",gettimetick(2)[email protected]); return; } //== Function F_GetNpcCD ================================ // Check npc access cooldown //== // callfunc "F_GetNpcCD","name_example"{,cooldown type}; // Examples: // callfunc("F_GetNpcCD","name_example0") // returns "NPC Cooldown: 00H:00M:45s (player)" // callfunc("F_GetNpcCD","name_example1",1) // returns "NPC Cooldown: 00H:01M:25s (player)" // callfunc("F_GetNpcCD","name_example2",2) // returns "NPC Cooldown: 00H:02M:00s (account)" function script F_GetNpcCD { set [email protected]$,(countstr(getarg(0)," ")?replacestr(getarg(0)," ","_"):getarg(0)); set [email protected],getarg(1,0); if(gettimetick(2) < getd(""+([email protected]==2?"#":"")+""[email protected]$+"_time")) { set [email protected],getd(""+([email protected]==2?"#":"")+""[email protected]$+"_time")-gettimetick(2); set [email protected],[email protected]/3600; set [email protected],([email protected]%3600)/60; set [email protected],[email protected]%60; dispbottom "NPC Cooldown: "+([email protected]<10?"0"[email protected]:[email protected])+"H:"+([email protected]<10?"0"[email protected]:[email protected])+"M:"+([email protected]<10?"0"[email protected]:[email protected])+"s ("+([email protected]==2?"account":"player")+")"; end; } return; }
  3. 2 points

    How to limit random event

    I made this model as you explained how it works. //Add a call function in item // callfunc "Boxx"; function script Boxx { //Item ID //== setarray [email protected][0],1108,2104,5011,2301,2404; //check if you still have an item with a refine lower than 10 //== for(set [email protected],0; [email protected]<getarraysize([email protected]); set [email protected],[email protected]+1) if((getd("eqi_"[email protected][[email protected]])-1) < 10) setarray [email protected][getarraysize([email protected])],[email protected][[email protected]]; //All refined +10 //== if(!getarraysize([email protected])){ dispbottom "Bye bye."; end; } set [email protected],rand(getarraysize([email protected])); set [email protected],getiteminfo([email protected][[email protected]],ITEMINFO_LOC); switch([email protected]) { case 2: set [email protected],EQI_HAND_R; break; case 16: set [email protected],EQI_ARMOR; break; case 32: set [email protected],EQI_HAND_L; break; case 64: set [email protected],EQI_SHOES; break; case 256: set [email protected],EQI_HEAD_TOP; break; } if(getd("eqi_"[email protected][[email protected]])) { if(!countitem([email protected][[email protected]])){ dispbottom "Item not found "+getitemname([email protected][[email protected]])+"!"; end; } if(getequipid([email protected]) != [email protected][[email protected]]) equip [email protected][[email protected]]; successrefitem [email protected]; setd "eqi_"[email protected][[email protected]],getd("eqi_"[email protected][[email protected]])+1; } else { setd "eqi_"[email protected][[email protected]],1; getitem [email protected][[email protected]],1; } end; }
  4. 1 point
    Hello I dont distribute AndRO source and first of all I don't have any Message on Our Legit Facebook Page. If I receive a message from you let me take a Screen Shots with your contacted message. Also we partner some dev and dont release with our name from other work. SHOW A MESSAGE THAT FROM OUR FACEBOOK PAGE. 2ndly we do recommendation to contact Chris if there is looking on AndRO and if there is want a PandRO we recommend it to Poring Devs. some of this are not connected on Skyzone Hosting we only Help them for there customer's we dont have income to them I'm just adding them to our website. as you see PandRO and AndRO are in my website but AndRO is no Page because im not dont yet to contact the original creator since Mailing is hard to contact them. OUR FACEBOOK PAGE IS HERE: https://www.facebook.com/skyzonehosting DO NOT ACCUSE US NO PROOF THAT WE DISTRIBUTE YOUR OWN WORK. WE ONLY SUGGEST AND HELP TO INTRODUCE TO NEW OWNER FROM OUR COUNTRY. Here some proof that I always do recommend to my customer to get andRO from Chris. My Customers we help them if they dont know what AndRO needs
  5. 1 point

    How to limit random event

    //Add a call function in item // callfunc "Boxx"; function script Boxx { //Item ID //== setarray [email protected][0],1108,2104,5011,2301,2404; setarray [email protected][0], 10, 10, 10, 7, 10; //check if you still have an item with a refine lower than 10 //== for(set [email protected],0; [email protected]<getarraysize([email protected]); set [email protected],[email protected]+1) if((getd("eqi_"[email protected][[email protected]])-1) < [email protected][[email protected]]) setarray [email protected][getarraysize([email protected])],[email protected][[email protected]]; //All max refined //== if(!getarraysize([email protected])){ dispbottom "Bye bye."; end; } set [email protected],rand(getarraysize([email protected])); set [email protected],getiteminfo([email protected][[email protected]],ITEMINFO_LOC); switch([email protected]) { case 2: set [email protected],EQI_HAND_R; break; case 16: set [email protected],EQI_ARMOR; break; case 32: set [email protected],EQI_HAND_L; break; case 64: set [email protected],EQI_SHOES; break; case 256: set [email protected],EQI_HEAD_TOP; break; } if(getd("eqi_"[email protected][[email protected]])) { if(!countitem([email protected][[email protected]])){ dispbottom "Item not found "+getitemname([email protected][[email protected]])+"!"; end; } if(getequipid([email protected]) != [email protected][[email protected]]) equip [email protected][[email protected]]; successrefitem [email protected]; setd "eqi_"[email protected][[email protected]],getd("eqi_"[email protected][[email protected]])+1; } else { setd "eqi_"[email protected][[email protected]],1; getitem [email protected][[email protected]],1; } end; } I haven't tested it, check if it will work as you wanted.
  6. 1 point

    [Showcase] Weapons, Shields and more

    New weapons.
  7. 1 point

    NPC Teleportador

    seria isso? prontera,151,169,5 script Alquimista Teleport 113,{ if(Class == 5 || Class == 18 || Class == 4019) { dispbottom "class: "+Class+""; mes "Você pode ser teleportado."; next; warp "prontera",150,150; end; } mes "Somente Alquimistas podem usar esse npc."; close; }
  8. 1 point
    Updated to 2.3.0, adds 3rd party patch server progress limiting and ability to use videos as background.
  9. 1 point
    try search missing part how import sql scripts in readme on hercules repository or in wiki https://github.com/herculesws/hercules#installation https://github.com/HerculesWS/Hercules/wiki
  10. 1 point
    Pack v2022: Current Version: 27 December 2021 Download Links (~4.5GB): Download from Mirror #1 or Download from Mirror #2 or Download from Mirror #3 Important: Please make someone mirror these files. Or make a donation to me and I will make a mirror by myself. What is that? This is a newbie package that contains 1 click solution for launching Hercules emulator with a single click. This package only for education. Do not use this package anywhere in production. This package good demonstration of how everything should be configured by yourself to make it work. We can find here a good guide on how to configure everything by yourself: http://herc.ws/board/topic/16521-how-to-setup-offline-server-for-personal-development-use/ What inside the package? You have 7 folders: 01_emulator = here emulators (pre-compiled and pre-configured) for RENEWAL or classic PRERE mechanics 02_client_side = here is your client-side what need to copy-paste to your clean kRO client 03_openserver = here is Open Server (MySQL server where stored your game database and which required by the emulator) 04_useful_tools = here are different useful tools that you usually will need when will work with the emulator or databases 05_misc_repos = here are repositories from which it has built the client-side, and exe patched. 06_cmder = this is a tool will be good for you to update the emulator to the latest version (and other files in misc_repos) 07_clean_kRO_client = this is a clean kRO client (2018 somewhere in march updated), need for you to run your own RO copy. How to use all of this? extract files inside 01_emulator, 02_client_side, 03_openserver, 07_clean_kRO_client Now, what emulator version do you need? Latest (current official servers) (renewal mechanic (suras, dorams, etc classes)) or classic PRE-re (champion, high wizard, high priest)? Now if for example, you use PRERE mechanic (where is high wizard class, paladin, lord knights, and no 3rd classes) your steps are next: a.) go to 02_client_side\FOR_PRERE_EMULATOR\ b.) select all files in this folder (FOR_PRERE_EMULATOR) and copy (CTLR+C) c.) now go to 07_clean_kRO_client/clean_kRO_client/ folder and copy files here (overwrite if windows explorer will ask to do that). d.) now you need to run OpenServer (it's a server that stores all your player's data inside the database, required by the emulator) and run it. e.) Click on Red Flag -> Run the server, make sure in your tray you got Green Flag. f.) Now go to 01_emulator\hercules_PRERE\ and run: run-server.bat g.) Now go to your 07_clean_kRO_client/clean_kRO_client/ and run: 2018-04-18bRagexeRE_patched.exe Your emulator, your database, and the client are running. Now you can try to login into the game. About Accounts: How to make a GM account or how to access the database? For that, you need to click on Green Flag -> Advanced -> PHPMYADMIN In the login field of PHPMyAdmin enter: "root", in the password field enter nothing. (no password) Press enter or login, and you will be in the database. Databases well structured, so mostly always you need not edit too much there. How to make a GM account? You opened PHPMYADMIN. Now select your database, and find in this database table called: "login" Open this table, and find your account name, and you will see column "group_id". Edit number in this column (group_id) to 99. 0-99 = your GM level. 99 = super admin with all privilegies, 0 = simple player with no privieleges. Okay, everything working for me, what can I do next? My short answer: http://herc.ws/board/ Read all topics, read different guides, read info about NPCs Read info how to add NPCs, how to enable them, how to disable them Read /doc/ folder files inside your emulator folder Read wiki pages: https://herc.ws/wiki/Main_Page Do experiments and do not afraid to destroy everything or remove them. Just do mistakes and errors, it's how people learning something new, through mistakes. DO not afraid to do a lot of mistakes and ask questions. People will help you if you will try to help yourself first and will make good questions with some research before posting messages. What tools can I use for making everything much easier for me? Tools that you MUST have: - Grf Editor - Server Database Editor - VSCode / Notepad++ / Sublime Text / Atom (any of these editors and select always C syntax highlight for opened files) I want to play with my friends on my server The solution that you will find by the link below is a terrible solution. But usable for a small group of people who for education only want to launch their server ONLINE (for others). This is SUPER bad, and never do that, (it's weird, after the only time you will understand why). But if you still asking here is the link: https://gist.github.com/anacondaq/3eae8e4afb5d3c3880d08b95b2c54b78 =============================================== I want make a donation as a gesture of goodwill: =============================================== Ask administrators here: http://herc.ws/board/ If they accept donations or not, I found no donation link. Optionally you can always support the next guys: 4144 for massive help to the current RO scene at all by his hard work. AnnieRuru for a lot of scripts, helping newbies on the forums http://herc.ws/board/staff/ - all these guys zackdreaver for a lot of efforts on a translation project and to all guys, scripters, mappers, etc players who spend their time, their efforts just for you to make everything free what you see here. Sorry if I didn’t mention someone. I need help with <something> There are a lot of talented developers, software developers, scripters, mappers, spriters, and many other people in this community. Check the link: https://herc.ws/board/forum/49-paid-services/ Also, I accept all questions related to the basic newbie stuff on the topic. Do not hesitate to ask even super stupid questions. But before asking something, try to do a very simple thing: Open google, in the search bar enter: "site:herc.ws" Then write your question or problem Hit enter and check all links that you see, maybe someone already solved your problem earlier. Alternatively: if you will not be annoying, and will be respectful, I can help with some newbie stuff in the discord channel about the package: https://discord.gg/p2kvabm Changelog: - 2021-04-10 - build from scratch new version with everything new (2020 game client, latest translation, fixed bugs, tons of features and improvements) - 20200419 - upgraded emulators, fixed problems with emulators, SQL files, and so on, upgraded full kRO, tools, misc Repos, client-files not touched. Added Discord channel for newbies support. - 20200307 - updated emulator, recompiled, uploaded to google drive. Client or db-server files not changed. - 20200203 - updated emulator, rest files not touched, if you want to upgrade your emulator, just download the 01_emulator.rar folder, and use it instead of your old one. I'm Ukrainian in Ukraine. Russia has begun a war against my country, and doing right now is genocide. Destroying cities, even mine own, killing thousands of people, civil people, burning to the ground cities. If you wish to support me in this challenging time (I will try to re-route part of this money to people I know to help them under these awful conditions). You can donate personally for me for my needs by the link: https://nowpayments.io/donation/anacondaq (crypto). Alternatively, you can send money to help Ukraine citizens to the official fond https://www.comebackalive.in.ua/ or to: https://help.gov.ua/
  11. 1 point

    Special effect on all players at map

    when you want to give all effect when someone getitem from npc just use getunits to get all char ID on map do you want and then give all them specialeffect See on Script_command.txt and search function getunits
  12. 1 point

    The End of A Era - Goodbye 3CeAM

  13. 1 point

    Multi-threaded Hercules

    Long time no see! I've been dabbling with adding multi-thread support to Hercules for quite some time and even started quite a few server projects from scratch, and having failed in most of my attempts - last year I tried again with a new core design and it seems to be working so far. A lot of the systems that the server core is reliant were reworked, I believe some of these changes can even be used upstream but they would need to be revised first. This is mostly a proof of concept. I'm still planning on finishing the map-server but as of now only login and char servers have multi-thread enabled - I didn't test with multiple users yet. There's no linux / FreeBSD support because I want to have everything in working condition before trying to add another I/O paradigm, the architecture is very reliant on the way that this module works so I thought it'd better to implement the whole server before trying to add other paradigms. Lately I haven't got much free time to finish the map-server, but sometime later this year I think I can finish it. The code is at https://github.com/panikon/HerculesMT , I forked from stable v2021.08.04 Server architecture Hercules employs a multi-server approach in order to better load balance player requests, so for each game world there'll be at least three separate program instances running at all times. These instrances are: login-server, char-server and map-server. Each of which can only access a subset of the world's SQL tables and is responsible for a different step of the game experience. Authentication and account database changes are segregated to the login-server, while character selection and character specific information are to the char-server, and the actual gameplay to the map-server. The login-server is the player entry-point and can be responsible for multiple different world instances, so it's possible to use the same account table (login) for multiple worlds (char-server + map-server) and to dynamically change their IP without needing to push a new patch. After authentication the player is queried for which service they'll use and then the server relays the proper address so the client can connect. In the char-server the player usually is queried again for a four digit PIN (PACKETVER >= 20180124), after which they can select which playable character will be used to play. The server then relays the address of the proper map-server to the client. A single world instance can have multiple map-servers where each is responsible for a zone (set of maps), all inter map connectivity is managed by the char-server. When the player requests to change character the char-server IP is then relayed. A single map-server can be responsible for multiple different zones, and each will be a different thread. Relationship of each of the possible server instances Brown - Game world | White - program instances Core design All servers are multi-threaded. Basic server functions are assigned to different threads: Console (../src/common/console.c): This thread is responsible for all console input operations. Timer (../src/common/timer.c): The timer thread manages the `timer_heap` and dequeues timer actions from the `timer_queue`. Each timer can be ran in a different thread depending on the `timer_target`, this is accomplished by either queuing an action in one of the available action queues (`target_id`) or by running the specified function in the main timer loop (`do_timer`). Other threads queue different timer actions (add, delete, set tick) to the `timer_queue`. The timer module is also responsible for tick acquiral via (`timer->gettick` and `timer->gettick_nocache`). Message(../src/common/showmsg.c): The message thread is used to synchronize the output of multiple different threads, each call to `Show*` instead of being directly outputted to `STDOUT` is queued in the `showmsg_queue` and then dequeued by the main thread function `showmsg_worker`. I/O Worker(../src/common/socket.c): All I/O operations are asynchronous and implemented via I/O completion ports and a thread pool. The main workers are defined in `socket_worker` and after a operation is dequeued it's converted into an action (`socket_operation_process`) that is then queued to the proper action worker (each session has a responsible worker, and it's obtained by the I/O worker via `action->queue_get`). These workers don't execute any "business logic" so we can minimize the time that they are blocked by any given operation, and also so we can better isolate different session groups without having to take into account in I/O operations (e.g. in map-server each zone has a different action worker and multiple actions can be queued simultaneously without having to block any of the threads for a longer period of time). Action Worker(../src/common/action.c): Action workers perform all the "business logic" of each of the servers, and each is responsible for a different session group. After every action loop all send actions are queued to the completion port. Login-server: Each char-server connection has a different worker. Player connections are randomly assigned. Char-server: Each map-server connection has a different worker. Player connections are randomly assigned. Map-server: Player connections are assigned depending on the current map according to the different configured zones. The char-server connection is randomly assigned. Thread relationships
  14. 1 point

    Data, cliente, exe...

    Hey, quizás llego tarde... aún así ten lo dejo por aquí. Todos los clientes: http://nemo.herc.ws/clients/ Data Actualizada tanto para Pre como Renewal: https://github.com/llchrisll/ROenglishRE
  15. 1 point

    Savior Damage Font

    Version 1.0


    SaviorDamageFONT modification I've been trying hard to create content that bring a fresh new look to our old and loved Ragnarok Online. After lot's of failures(like my old font upload '^^) I end up with this design, that was actually based on the game Tree of Savior.( btw a very good game ) It comes with some other little things like a better resolution sprite to the critical hit background, as it was kinda glitchy with the new font. I know it is all experimental and yes, I still love the old pixelated font of RO but feel free to use it in your server, i'm getting used to it and it's giving me a feeling of nostalgia(as seeing something new things on old stuffs) ;D Hope to hear some feedback to improve it as much as I can. cYA link: MEGAlink
  16. 1 point


    Version 1.0.0


    New warp code lines and all the information you can find here: The project is still in progress, just sharing what we have at this moment now. Reports about bugs, etc are welcome.
  17. 1 point

    [Utility] Healing Salve

    Hello guys, I'm new to Hercules and just want to make a contribution A basic function inspired by Healing Salve Potion of Dota 2 Config: while(.healcount < 20){ //Set 20 to number of healing instance you want percentheal 5, 5; //Set 5,5 for HP/SP value heal per instance sleep2(500);//Set 500 to preferred time interval for healing(in milliseconds) Script: <" callfunc("HealingSalve"); "> // Input this to your custom item's script Download: healingsalve.txt
  18. 1 point
    Chemical Crush

    Aeven Forest


    Hiya! Hey guys thought i'd put up Aeven Forest, which was the first map I ever completed/created. I hope you guys like it. It comes with Two Files, one with the 'Mana Well', which was an idea a server I used to work for had, and one with the original house that I made it with. I hope you guys like the map! Also if you use my maps, credits would be awesome!
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.