Leaderboard
Popular Content
Showing content with the highest reputation on 07/20/12 in all areas
-
Hi! First of all sorry for being inactive, I've been very busy lately, and still am, however noticed something. There are some statuses such as the newly added SC_INCMHP. Well, honestly, I don't really like that we add new statuses on each bonus, simply we do not need so many statuses, futhermore we want to be more flexible, to give users the possibility to create their own statuses. There is a nice script command called autobonus. It can attach a bonus script to the user as a status, on attack, hit etc. We should create a similar command, which just simply starts a status, something like autobonus does. This way we can simply remove some statuses, and replace them with scriptet ones, which are more customizable. Maybe we can even add support for adding status icons to those statuses. Opinions?2 points
-
I often get messages asking how I setup a Linux VPS & VNC with rATHENA. Whell, This is how I did it on CentOS. You can do this method on any clean Linux VPS host with no cPanel or other programs that require disabling of the GUI environments. This guide is intent to help a individual get started on his/her's VPS, hope this helps. This is done with 100% ssh bash commands. VNC is just there to help you if needed to see something visualy. This process might seem a little intimidating at first, don't let it be. In no time at all you can have your VPS rocking in Linux. No reason nowadays you can't google your questions and, answers. Take your time, double read everything. Let's get started _____________________________________________________________________________ VPS Requirements //You need at least 512mb of ram, however I suggest 1gig if you're doing all of this. //Also running your VNC will seriously drain your resources. My server will cap at 99.7% CPU speed. So beware of the over speed issues. _____________________________________________________________________________ Installing & Configuring VNC //You can start by installing Gnome Environment and VNC. yum -y groupinstall "GNOME Desktop Environment" yum -y install vnc-server //Use Nano to edit /etc/sysconfig/vncservers nano /etc/sysconfig/vncservers //Remove the # in front of these syntax. Change the user name and geometry. //Create a none root Linux account with out Super User commands. Also make a very strong password. useradd matrixfox8 passwd matrixfox8 //After "passwd yourusername" it will prompt you for Unix password. TIP: You can also stop here and go straight to installing the basis of rathena and mysql. Them come back here later. // DO NOT RUN AS ROOT!!! NEVER, NEVER, FOR THE LOVE OF GOD, NEVER RUN AS ROOT!!!!!!!!!!!!! //After starting and killing the processes, it will create a xstartup file for that account. vncserver :2 //In the middle of this you will be prompt to setup a VNC password. vncserver -kill :2 //Edit your xstartup with Nano nano ~/.vnc/xstartup //Remove the # in front of unset, exec. Then add and edit these two following lines. TIP: Make sure you press enter at the very end of nano, leaving a blank syntax line.. //Start VNC n' get ready to log in. vncserver :2 //Now open your VNC client and log in as your ip, remember the :2 for the port number at the end of the IP. //VNC Super User Commands /sbin/service vncserver start /sbin/service vncserver stop /sbin/chkconfig vncserver on _____________________________________________________________________________ Installing rATHENA on CentOS //Make sure your back in your Super User account, aka Root. yum -y install gcc make mysql mysql-devel mysql-server pcre-devel subversion zlib-devel yum -y install dos2unix gdb nano screen unzip wget zip //If you already made an account for VNC ignore this step! Skip to configuring MySQL. useradd --create-home --shell /bin/bash matrixfox8 passwd matrixfox8 _____________________________________________________________________________ Configuring MySQL TIP: Use a program to generate a random password "like LassPass". Keep it in between 12 characteristics for SQL names & passwords "unless you edit it". //You might need to run a mysqld restart before setting up a secure installation. service mysqld restart //There will be several screens. Setup your root MySQL password and, take your sweet time, double, reading, EVERYTHING! //For the most part just push "y". mysql_secure_installation //Log in as your Root Super User. mysql --user=root -p //Notice your command hand changes to //Rename and create your own databases. Make sure your MySQL code ends with ; CREATE DATABASE rathena_rag; CREATE DATABASE rathena_log; //Now this is where it gets a tad confusing. Just replace your VPS IP and name from mine. Also come up with a different password... //Keep in mind this is the same information you will be placing in "inter_athena.conf" & "subnet_athena.conf". CREATE USER 'matrixfox8'@'192.168.1.100' IDENTIFIED BY 'secretpassword'; GRANT SELECT,INSERT,UPDATE,DELETE ON `rathena_rag`.* TO 'matrixfox8'@'192.168.1.100'; GRANT SELECT,INSERT ON `rathena_log`.* TO 'matrixfox8'@'192.168.1.100'; _____________________________________________________________________________ Installing rATHENA //Minimize your MySQL root SSH. Then log in as your lower account SSH to install rATHENA. svn checkout https://rathena.svn.sourceforge.net/svnroot/rathena/trunk/ ~/trunk //If you wish to delete a older svn in SSH. Type this command with the correct directory name. rm -rf "dir name" //Navigate to your SQL files and get ready for extracting. cd trunk/sql-files/ //You will be prompt for your MySQL password each time. mysql --user=root -p rathena_rag < main.sql mysql --user=root -p rathena_rag < item_db.sql mysql --user=root -p rathena_rag < item_db2.sql mysql --user=root -p rathena_rag < mob_db.sql mysql --user=root -p rathena_rag < mob_db2.sql mysql -u root -p rathena_log < logs.sql //Now it's time to compile into SQL. cd ~ cd trunk ./configure make sql //Log in as your MySQL root user for the following commands. //Editing s1/p1 in MySQL. This is where you edit the info for "char_athena.conf" & "map_athena.conf". USE rathena_rag; SELECT * FROM `login` where account_id='1'; UPDATE `login` SET userid='desiredusername', user_pass='desiredpassword' WHERE account_id='1'; //Adding a new account in MySQL USE rathena_rag; INSERT INTO login (account_id, userid, user_pass, sex, email, group_id) VALUES (2000000, 'myname', 'mypass', 'F', 'me@localhost', 99); _____________________________________________________________________________ Editing rATHENA Files //Log back in as your User account, exit out of root. //There are many ways of doing this processes, different strokes for different folks. We're just using nano to keep things simple for this guide. nano trunk/conf/char_athena.conf nano trunk/conf/map_athena.conf nano trunk/conf/inter_athena.conf nano trunk/conf/subnet_athena.conf How to start your server in SSH. cd ~ cd trunk ./athena-start start ./athena-start stop Now everything should be configured and working, Congratulations! One more thing! There is a lot to know about security. You might want to learn more to make your sever at least 60% safe. Hyperlink P.S. Please keep in mind, make your own thread for support, or drop me a PM on the rA board. If I get enough +1's I'll make a video.1 point
-
skill.c add a new function. void DOTASWAPfu (struct block_list *src, struct block_list *bl) { int x=0, y=0; x=src->x; y=src->y; unit_movepos(src, bl->x, bl->y, 1, 1); clif_slide(src,bl->x,bl->y); unit_movepos(bl, x, y, 1, 1); clif_slide(bl,x,y); clif_specialeffect(bl,34,AREA); clif_specialeffect(src,34,AREA); return; } add int skill_castend_nodamage_id (struct block_list *src, struct bl... { ... case MER_BLESSING: if (dstsd != NULL && tsc->data[sC_CHANGEUNDEAD]) { skill_attack(BF_MISC,src,src,bl,skillid,skilllv,tick,flag); break; } case DOTASWAP: //add DOTASWAPfu(src,bl); //add clif_skill_nodamage(src,bl,skillid,skilllv,0); //add break; //add case PR_SLOWPOISON: case PR_IMPOSITIO: case PR_LEXAETERNA: case PR_SUFFRAGIUM: ... skill.h add enum e_skill { DOTASWAP = 996, //add NV_BASIC = 1, Client http://goo.gl/BJ0uB db\skill_db,txt 996,9,6,1,0,0x1,0,1,0,yes,0,0,0,magic,0, DOTASWAP,DOTASWAP db\skill_require_db.txt 996,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //DOTASWAP data\lua files\skillinfoz\skillid.lua DOTASWAP = 996, data\lua files\skillinfoz\skillinfolist.lua [sKID.DOTASWAP] = { "DOTASWAP"; SkillName = "DOTASWAP", },1 point
-
Send an e-mail to hotmail Send an e-mail to gmail with a attachment e-mail system logs file (time,operator,receiver,subject,body) Download Source Code : email.patch E-Mail System.txt Download VBScript (Must put into your server program folder) : sendemail.zip Set : Open sendemail.vbs (with txt), write your mail account into Const fromEmail and password into Const password. If your e-mail server is gmail (Google), you will not not need to do anything after that. if not, you have to search that server stmp and port. Script Sample : email "receiver","subject","body","attachment"; input .@a$; input .@s$; input .@b$; mes "To:"+.@a$; mes "Subject:"+.@s$; mes "Body:"+.@b$; select("OK"); //set .@att$,"D:/eAthena/UpgradeLog.XML"; //attachment email .@a$,.@s$,.@b$,.@att$; close; PS : Testing \ Works in Windows7 OS. Warning : If this lead to SPAM, CRASH or ANYTHING BAD, I will not help you and be responsible for it. So checking all before using it.1 point
-
File Name: @Warp / @Go Damage Delay File Submitter: Ind File Submitted: 16 Apr 2012 File Category: Source Modifications Made this modification based on a user request http://rathena.org/board/topic/61753-warp-delay/ This modification allows you to setup a delay in milliseconds between last received / issued player damage and a use of @warp/@go. By default it ships with a 5 second (5000 milliseconds) delay, and it won't work on GMs Customizing: - Changing @go delay You'll find this in atcommand.c if( !pc_get_group_level(sd) && DIFF_TICK(gettick(),sd->canlog_tick) < 5000 ) { clif_displaymessage(fd,"@go cannot be issued since you were into battle recently"); return -1; } Change the 5000ms (5s) to your desired value. - Changing @warp delay You'll find this in atcommand.c if( !pc_get_group_level(sd) && DIFF_TICK(gettick(),sd->canlog_tick) < 5000 ) { clif_displaymessage(fd,"@warp cannot be issued since you were into battle recently"); return -1; } Change the 5000ms (5s) to your desired value. - Make it not count if player was damaged by monster You'll find this in pc.c sd->canlog_tick = gettick(); if( src->type == BL_PC ) ((TBL_PC*)src)->canlog_tick = gettick(); Change to if( src->type == BL_PC ) { ((TBL_PC*)src)->canlog_tick = gettick(); sd->canlog_tick = gettick(); } so that the delay will only count when damaged vs a player / when a player damages each other. Click here to download this file1 point
-
Toasty's WoE Controller So...once upon a time when I did have a server to run and one of the few questions that would always come up was..."What time was WoE and what region was it?" (WoE on this server was broken up into regions). Usually I didn't know the answer and so I had to go through the awful task of trying to find it in the forums and eventually I just directed everyone to it. And then there's the issue with people not understanding timezones or knowing how to substract. Soo...one day i got off my lazy ass and wrote this little thingymabob that would tell people exactly how long left it is till WoE, where it was and other random tiddy-bits of info. Worked pretty well. Anyways...just recently I was pretty bored and decided to clean it up abit and thought...well...since it's already keeping time..why not just let it do all the agit_controller stuff too. So I added that and presto!....this came out." Features: WoE 2.0 ready Novice WoE ready Real-time updated time display of how much longer till WoE starts/ends WoE configurable on a Castle level basis Useful castle owner listing feature Even more useful region map warper feature Some random skip/start/end WoE functions for GMs Auto-Restart WoE after server crash Now with a mildly easy to use online generator script. Though tested on trunk, will very much likely work on stable (provided you tick the correct box while generating the script) Description: Basically what you get is a little banner NPC with a chatroom on it who's title updates with the amount of time left till WoE starts or ends. (Little idea stolen from one of annie's scripts =P...some mvp arena i think) Clicking on the NPC (the npc not the chatroom) opens up a menu with a couple useful options which are self-explanatory. Note: Castle Owner listing is only for castles of the current/upcoming WoE session. Too much spam to print all Scripts: ver 1.22 - 26-05-2011 (r14829 trunk) (Mirror) (Mirror) ver 1.21 - 21-12-2010 (r14413 trunk) ver 1.20 - 18-10-2010 (r14413 trunk) ver 1.11 - 25-01-2009 (r13435 trunk) ver 1.10 - 03-01-2009 (r13405 trunk) ver 1.02 - 09-10-2008 (r13271 trunk) ver 1.01 - 21-09-2008 (r13091 trunk) ver 1.00 - 10-09-2008 (r13091 trunk) Backup ver1.22 Installation: Generate the script by inputting the times you require and any options you may want in the generator form Install the script as you would for any NPC. Depending if you want to use this to replace agit_controller.txt or not you can replace the contains of ./npc/guild/agit_controller.txt with this script. IF you use this script to manage your WoE timings (which you prob would..). Remove any existing WoE timing management scripts. By default... ./npc/guild/agit_controller.txt -if you didn't replace it with this script ./npc/guild2/agit_start_se.txt -for woe2 controller If you want to use any of the Novice castles make sure you enable them in ./npc/scripts_athena.conf npc: npc/events/nguild/nguild_dunsw.txt npc: npc/events/nguild/nguild_treas.txt npc: npc/events/nguild/nguild_guardians.txt npc: npc/events/nguild/nguild_warper.txt npc: npc/events/nguild/nguild_ev_agit.txt npc: npc/events/nguild/nguild_flags.txt npc: npc/events/nguild/nguild_managers.txt npc: npc/events/nguild/nguild_kafras.txt Restart/Startup server...enjoy =D Limitations: Since WoE can be run in pretty much any format, it's kinda impossible for this script to accommodate for all types of WoE. Anyways...here are the limitations of this script. WoE sessions have to start and end on the same day (usually the case but good to state) Only one WoE session is available at a time. In order to start another one, you must end the current one. The generator will complain if you try to overlap sessions. Standard array/variable limits. 128 for number of WoE sessions and separate regions. 31 different castles per region(Not that anyone is gonna use all that...unless they're planning like an all world WoE extravaganza). Time is actually updated using an infinite loop. Depending on the refresh rate setting timing can be off sync with the time WoE actually starts/end (default 500ms/half a second. This isn't a problem if you are using the built in controller) Due to the way in which the original WoE scripts were coded and how I implemented the castle based controller (calls OnAgitEnd/2 events) castles MAY remain open if they do not have an owner. Notes: Yup...idea for timer based waitingroom was stolen from annie's Mvp Ladder script This script is semi-protected against @reloadscript/@loadnpc commands. Though not recommended that you load the script using this manner, if you must after loading the scripts, to restart the script click each NPC (one NPC only needs to start to initialise the floating main script that controls the WoE timing, but each banner NPC needs to be clicked to start the waitingroom) When doing the timings, it is VERY IMPORTANT that you have the times in order from sunday to saturday and starting time. If you don't do this it'll skip over them till the next week. WoE happens in the order that the timings are specified. Sometimes it may be desirable to have them out of order so it can do one region this week and another one a different week...But this is only a side-effect to the timing design and weird things might happen..so do it at your own risk. (This is no longer a problem in ver 1.10 provided you didn't mess with the config after generating the script) You can change the rate at which the banner is updated by modifying the ".banner_refresh_rate" value in the CONFIG section. The banner will update every '.banner_refresh_rate' seconds. This script is rather dynamic and so adding additional castles just involves modifying and adding arrays. Adding castles to existing regions should be self-explanatory. But setting up a new region...maybe not.. Steps to setup a new region are as follows: Make up a prefix for the region you are adding (in this example I am using "test" Put all the maps for the castles in an array named ".castles_***" (eg. .castles_test$) Put all the put all the woe ending function addresses into an array named "woe_kill_***" (eg. .woe_kill_test$) Go to the constants section in the script (search for CONSTANTS START) Add the castles and portals in the corresponding sections Add the prefix to the end of the array .regions$, the name of the region in .region_names$ and the map that contains all the castle entrances in the array .region_maps$ Tah da!! you have now added a new region. Feel free to test the hell out of this and report bugs/suggestions/criticism. This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License1 point
-
2/3 chance plant the Critical stickybomb http://i.imgur.com/2oqnr.jpg Download Source Code STICKYBOMB.rar Download .GRF STICKYBOMB.grf db\\mob_db2.txt 2127,SOCCER_BALL,stickbomb,stickbomb,1,2000,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,0,3,86,0x0040,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 db\\mob_avail.txt 2127,1792 data\\lua files\\skillinfoz\\skillid.lua STICKYBOMB = 999, STICKYBOMBBOMB = 998, data\\lua files\\skillinfoz\\skillinfolist.lua [sKID.STICKYBOMB] = { "STICKYBOMB"; SkillName = "STICKYBOMB", MaxLv = 10, SpAmount = { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 }, }, [sKID.STICKYBOMBBOMB] = { "STICKYBOMBBOMB"; SkillName = "STICKYBOMBBOMB", }, battle.c http://pastebin.com/....php?i=5VizNY5g Find this function. int battle_calc_damage(struct block_l... go to the end. status_damage(src, s_bl, damage, 0, clif_damage(s_bl, s_bl, gettick(), 500, 500, damage, -1, 0, 0), 0); return ATK_NONE; } } } return damage; } add damage=stickybombdamage(src, bl, damage); top the return damage; and add new function int stickybombdamage(struct block_list *src, struct block_list *bl, int damage) { int _far=0, i=0; if(src->sbp==bl->sbp) return 0; for(i=0;i<=MAX_STICKYBOMB;i++) if(src->stickbomb[i]!=-1) break; if(i==MAX_STICKYBOMB) damage = damage*3; else { _far = distance_xy(src->x,src->y,bl->x,bl->y)+1; _far = _far >= 10 ? 10 : _far ; damage = damage/_far; } return damage; } map.c http://pastebin.com/....php?i=aKRM2P9V pc_makesavestatus(sd); pc_clean_skilltree(sd); chrif_save(sd,1); unit_free_pc(sd); killstickybmob(sd,0); //Add return 0; map.h http://pastebin.com/....php?i=UuyR67YF struct block_list { struct block_list *next,*prev; int id, sbp; //Add short m,x,y; enum bl_type type; int stickbomb[MAX_STICKYBOMB]; //Add }; mmo.h #define MAX_STICKYBOMB 8 //Add pc.c http://pastebin.com/....php?i=H2zxukgJ Add this function. void killstickybmob(struct map_session_data* sd, int t) { struct block_list *mb = NULL; int i=0; if(sd==NULL) return; for(;i <= MAX_STICKYBOMB ;i++) { mb=map_id2bl(sd->bl.stickbomb[i]); if(mb!=NULL) if(!t) status_kill(mb); else unit_skilluse_id(mb, mb->id, 173, 1); else continue; } return; } pc.h Add this define. void killstickybmob(struct map_session_data* sd, int t); skill.c http://pastebin.com/....php?i=4dGTqDri Add this function. void _STICKYBOMB(struct block_list *src, struct block_list *bl, int skillid, int skilllv) { int _x=0, _y=0, i=0, id=0; struct block_list *mb = NULL; switch(unit_getdir(bl)) { case 0: _x = 0; _y = 1; break; case 1: _x = -1; _y = 1; break; case 2: _x = -1; _y = 0; break; case 3: _x = -1; _y = -1; break; case 4: _x = 0; _y = -1; break; case 5: _x = 1; _y = -1; break; case 6: _x = 1; _y = 0; break; case 7: _x = 1; _y = 1; break; } _x = _x*(skilllv-1); _y = _y*(skilllv-1); clif_skill_nodamage(src,bl,skillid,skilllv,0); id=mob_once_spawn(BL_CAST(BL_PC, src),src->m,src->x+_x,src->y+_y,"StickBomb",2127,1,""); src->sbp++; if(src->sbp==MAX_STICKYBOMB) src->sbp=0; mb=map_id2bl(src->stickbomb[src->sbp]); if(mb!=NULL) unit_skilluse_id(mb, mb->id, 173, 1); src->stickbomb[src->sbp]=id; mb=map_id2bl(src->stickbomb[src->sbp]); mb->sbp=src->id; if(rand()%3) { for(i=0;i<MAX_STICKYBOMB;i++) mb->stickbomb[i]=-1; clif_specialeffect(mb, 47,AREA); }else for(i=0;i<MAX_STICKYBOMB;i++) mb->stickbomb[i]=0; return; } Go to this function int skill_castend_nodamage_id find this case SM_ENDURE: and add below case STICKYBOMB: _STICKYBOMB(src, bl, skillid, skilllv); break; case STICKYBOMBBOMB: clif_skill_nodamage(src,bl,skillid,skilllv,0); killstickybmob(map_id2sd(src->id),1); break; skill.h enum e_skill { STICKYBOMB = 999, //Add STICKYBOMBBOMB = 998, //Add NV_BASIC = 1, db\\skill_cast_db.txt 999,0,0,1000:1500:2000:2500:3000:3500:4000:4500:5000:5500,0,0,0 //Add db\\skill_require_db.txt 999,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //STICKYBOMB //Add 998,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //STICKYBOMBBOMB //Add1 point
-
You don't want to wait because of @reloadscript only for reloading OnInit ?, you used @loadnpc and OnInit doesn't get triggered ?, You don't want to respawn your mvps with @reloadscript because you're player will kill them again ? and you players don't like delay cause of @reloadscript ? With this command it's possible to trigger OnInit for you without all of these problems. Just patch your source with my diff file. If you insert a script with @loadnpc just load the OnInit label with @oninit Syntax: @oninit <npcname> oninit.diff1 point
-
Some of you might remember the Monopoly map I showed years ago on eAthena, some might not. In the end, I do not have the time or will to finish this script and I figured I'd toss it to the rAthena community to see if someone's willing to pick it up and release it for everyone. The script is far from done but it has a solid base from my point of view. You can play with multiple players, throw dice, your pawn moves, you can buy property and build houses and hotels on it, etcetera. It works pretty neatly already but it's far from done really. There are probably some notes in there as well and in some cases there might be code that's just partially done but it loads and works mostly. I have also included the map and the textures for it so you can test it right away and see how it works. I'm not really expecting anything but it would be great if someone would pick up the project and finish it. I put quite some hours of work into this but sadly I'm too busy with other things to still work on this. Enjoy and thank you! Here's a screenshot: monopoly.rar monopoly_new3.txt1 point
-
sounds great...Its just a test if it will work..so here the complete one...^^, if( type ) { +sd->regen.rate.hp += 2; // boost 3 times clif_status_load(&sd->bl,SI_SIT,1); } else { +sd->regen.rate.hp = 1; // return to normal clif_status_load(&sd->bl,SI_SIT,0); }1 point
-
More photo : http://goo.gl/2uPbh Introduction : maker,shop type,allow use Cash\Zeny\Item... and let you see what you look like when you wear it. PS : Only 1 (first) item what you choose will be done by functions. Download : Headdress Making and Trying.txt1 point
-
My idea would be something like customstatus "statusname","itemscript", duration, icon; example: customstatus "OP buff", "bonus bMaxHPrate,20; bonus bMaxSPrate,15; bonus bAspdRate,2;", 180000, SI_BERSERK; This would display a status named OP buff, with the icon of berserk, that last 180 sec and gives 20% max hp 15% max sp and 2% aspd bonus.1 point
-
1 point
-
1 point
-
status.c if (regen->ssregen) { if (regen->ssregen->hp) regen->flag|=RGN_SHP; if (regen->ssregen->sp) regen->flag|=RGN_SSP; regen->ssregen->rate.hp = regen->ssregen->rate.sp = 1; } I believe ssregen sitting status regen. Increase the value.1 point
-
1 point
-
1. @skill.c if( type ) { +sd->regen.rate.hp += 2; // boost 3 times clif_status_load(&sd->bl,SI_SIT,1); } else { clif_status_load(&sd->bl,SI_SIT,0); } try it if it works.. ;D1 point
-
I've been in the RO server community for nearly 8 years now... and yes, within the past few years there have been hundreds of thousands of Ragnarok servers made. However, one fact remains true. The ones that have stayed online for nearly 4~6 years now, are the ones ran by people who A) Know wtf they're doing, and B ) Actually help contribute back to the development of the emulation software. People do have the right to run their own servers, hell a few years ago people would use eAthena to create testing grounds for testing RWC builds before the tournament came. These servers tend to die out really fast, it shouldn't make anyone nervous. Most servers are created with the following ideas in mind: Make Money Want to be in control. Want to make something "unique" and "different" to beat everyone else. The servers made with those goals in mind never survive. So, in short. Stop worrying about all the other servers out there and worry about your own. This is a free, open source software that anyone is allowed to use. It's what you do with it and how you contribute back to it that shows how much you care.1 point
-
1 point
-
We all appreciate all these years of the eAthena...but for me can rest in peace.... Now rAthena is a great community....i could care less what happens in eAthena, that paradox eat it......In the does not care, and for me is gone eAthena forever.... Doesn't look at the past1 point
-
1 point
-
Another update today. Also the OP now has an update queue so you can see what's being worked on and what's going in the next update. r161401 point
-
Magnifying [60%]............ Magnifying Complete......... hello everyone! i am Mia Potter from Saskatchewan, Canada but i'm actually here in the Philippines right now. i like cupcake and cookies arr.. i just want to know how to help/sustain/maintain a ragnarok server :3. thank you for checking my thread! <3 Welcome to rAthena Mia1 point
-
1 point
-
Hi guys I've made simple Video guide on how to create a Patch using NeonCube Patcher. Hope this Video helps you1 point