Source Modifications
Source Mods & Code Snippets located here.
135 files
-
@AutoAttack
By goddameit
Idea : http://rathena.org/b...k-close-enemys/
Preview :
Use this command you can turn on or off auto-attack.
It will auto-search 9x9 and attack the near one
if there is no monster in area, you will auto-walk randomly.
2375 downloads
Updated
-
@AutoBuyAmmo
By goddameit
Preview:
-----------------------------------------------------
After You use @autobuyammo to active this system,
you will auto-buy some ammo when it is going run out.
258 downloads
Updated
-
@autopots
By goddameit
Preview :
http://bit.ly/XzIQJj
When HP/SP lower than you set, it will auto use that item.
Command :
PS :
Test and create on rA 17132
1425 downloads
Updated
-
@command pack
By rootKid
¦¦¦¦¦¦ ¦¦¦¦¦¦ ¦¦¦¦¦¦ ¦¦¦¦¦¦¦¦ ¦¦ ¦¦ ¦¦ ¦¦¦¦¦¦ ¦¦ ¦¦ ¦¦ ¦¦ ¦¦ ¦¦ ¦¦ ¦¦¦ ¦¦ ¦¦ ¦¦¦ ¦¦ ¦¦¦¦¦¦ ¦¦ ¦¦ ¦¦ ¦¦ ¦¦ ¦¦¦¦¦ ¦¦ ¦¦¦ ¦¦¦ ¦¦ ¦¦ ¦¦ ¦¦ ¦¦ ¦¦ ¦¦ ¦¦ ¦¦ ¦¦ ¦¦¦ ¦¦¦ ¦¦¦ ¦¦¦ ¦¦¦¦¦¦ ¦¦¦¦¦¦ ¦¦ ¦¦ ¦¦ ¦¦ ¦¦¦¦¦¦¦ @command pack. (@runlabel, @allchat, @emo, @allemo, @alleffect) //////////////////////////////////////////////////////////////////////////////////////////////// [src/map/atcommand.c] is the only file needed to be editted. Set your account group permissions as desired. You're assumed to know how to implement these. However, if you have further questions, feel free to contact me. //////////////////////////////////////////////////////////////////////////////////////////////// ACMD_DEF(runlabel), //rootKid ACMD_DEF(allchat), //rootKid ACMD_DEF(emo), //rootKid ACMD_DEF(allemo), //rootKid ACMD_DEF(alleffect), //rootKid /*========================================== * @runlabel by [rootKid] * Makes invoker run an 'On' label from within an npc * @runlabel Healer#OnMinute44 *------------------------------------------*/ ACMD_FUNC(runlabel) { char label_output[256],npcname[100],label[100]; nullpo_retr(-1, sd); if (!message || !*message) { sprintf(atcmd_output, "Usage: @runlabel <npc name>, <label>"); clif_displaymessage(fd, atcmd_output); return -1; } if (sscanf(message, "%23[^,], %99[^\n]", npcname, label) < 2) { clif_displaymessage(fd, "Please, enter the correct info (usage: @runlabel <npc name>, <label>)."); return -1; } if (npc_name2id(npcname) != NULL) { sprintf(label_output, "%s::%s", npcname, label); npc_event( sd, label_output, 0 ); clif_displaymessage(fd, "Label was triggered."); return 0; } else { clif_displaymessage(fd, "NPC doesn't exist."); return -1; } } /*========================================== * @allchat by [rootKid] * Makes all players, except the invoker, send out a desired message * eg. @allchat blahblah *------------------------------------------*/ ACMD_FUNC(allchat) { struct map_session_data* iter_sd; struct s_mapiterator* iter; char tempmes[200]; iter = mapit_getallusers(); nullpo_retr(-1, sd); memset(tempmes, '\0', sizeof(tempmes)); memset(atcmd_output, '\0', sizeof(atcmd_output)); if (!message || !*message || sscanf(message, "%199[^\n]", tempmes) < 0) { clif_displaymessage(fd, "Please, enter a message (usage: @me <message>)."); return -1; } for (iter_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); iter_sd = (TBL_PC*)mapit_next(iter)) if (iter_sd != sd){ //Triggers on all players except the one who initiates it. sprintf(atcmd_output, "%s : %s", iter_sd->status.name, tempmes); // *%s %s* clif_disp_overhead(&iter_sd->bl, atcmd_output); } mapit_free(iter); return 0; } /*========================================== * @emo by [rootKid] * Makes invoker send out an emote * @emo 3 *------------------------------------------*/ ACMD_FUNC(emo) { if (!message || !*message) { clif_displaymessage(fd, "Usage: @emo 1-81"); return -1; } clif_emotion(&sd->bl, atoi(message)); return 0; } /*========================================== * @allemo by [rootKid] * Makes all players, except the invoker, send out a desired emote * eg. @allemo 1 *------------------------------------------*/ ACMD_FUNC(allemo) { struct map_session_data* iter_sd; struct s_mapiterator* iter; iter = mapit_getallusers(); if (!message || !*message) { clif_displaymessage(fd, "Usage: @emo 1-81"); return -1; } for (iter_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); iter_sd = (TBL_PC*)mapit_next(iter)) if (iter_sd != sd){ //Triggers on all players except the one who initiates it. clif_emotion(&iter_sd->bl, atoi(message)); } mapit_free(iter); return 0; } /*========================================== * @alleffect by [rootKid] * Makes all players, except the invoker, send out a desired special effect * eg. @alleffect 89 *------------------------------------------*/ ACMD_FUNC(alleffect) { struct map_session_data* iter_sd; struct s_mapiterator* iter; int type = 0, flag = 0; iter = mapit_getallusers(); nullpo_retr(-1, sd); if (!message || !*message || sscanf(message, "%d", &type) < 1) { clif_displaymessage(fd, "Please, enter an effect number (usage: @effect <effect number>)."); return -1; } for (iter_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); iter_sd = (TBL_PC*)mapit_next(iter)) if (iter_sd != sd){ //Triggers on all players except the one who initiates it. clif_specialeffect(&iter_sd->bl, type, (send_target)flag); } mapit_free(iter); return 0; }
281 downloads
Updated
-
@dropall Modification & @dropalltab
By Xantara
Information
The modification on @dropall allows the user to specify what item type should be dropped. It still retains the ability to drop all items at once.
The new atcommand, @dropalltab, allows the user to drop all items in a specific inventory tab. The user may choose to drop all items in all tabs (similar to the default behavior of @dropall).
Tested on rAthena revision 16738.
Syntax
@dropall {item type}
@dropalltab {tab number}
Documentation
Credits
Created by @Xantara
Requested by @Peopleperson49
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
Like my work?
Rate/vote this download
Rep up my support topic post
Do not mirror without my consent.
111 downloads
Updated
-
@go/@warp delay when hit - Updated
By Mabuhay
Here is an updated @go and @warp delay when hit.
664 downloads
Submitted
-
@ignorebattle
By goddameit
When Someone use this command, all player in that map will not be attacked by mobs
112 downloads
Submitted
-
@ignoredrop
By goddameit
Preview
When you active this, you will not see any item on floor.
384 downloads
Updated
-
@market clone update patch
By Mabuhay
This is my updated @market clone as per this topic:
Im currently using a sever file from December 2019. But I dont think it would not work on latest server files.
Enjoy
467 downloads
Submitted
-
@norecall command
By Vykimo
@norecall/@nr : Don't be recalled by Emergency Call skill.
It's only a .diff file to Apply on your rAthena folder.
I made this free release starting of the idea of @YtalloNv here : https://rathena.org/board/topic/117304-i-need-to-add-the-norecall-command-on-my-server/#comment-353203
259 downloads
Updated
-
@novendingboards / @novenders
By Lilith
Request: @nndsl
Post: http://rathena.org/board/topic/80231-notrade/#entry187456
See on YouTube:
@novendingboards
http://www.youtube.com/watch?v=sHIT1pRSQZU&feature=youtu.be
@novenders
http://www.youtube.com/watch?v=1UajUvlzAAc&feature=youtu.be
Enjoy
265 downloads
Updated
-
@petstats command
By sader1992
this command will show you the pet stats
see the screenshot for more info
you can add it inside /rAthena/src/map/atcommand.cpp or if you use old rathena add it at /rAthena/src/map/atcommand.c file
add it like you add any new atcommand
and recompile
419 downloads
Updated
-
@sann (Custom Broadcast Command)
The commands is @sann (contraction of staff announced), but you can use 3 types of sintaxis (because was add in the atcommand_eathena.conf 2 alias).
The sintaxis is:
@sann
@astaff
@staff
What's new in versión 3.1?
And auto detect what group belongs the GM and will add their label; all this using whatever you want in the sintaxis. So, if you'll use @sann, astaff or @staff the result will be the same.
Note: Don't remove the credits, please
156 downloads
Submitted
-
@seeghp
By Cainho
First Version by: Rad
Updated Version by: Cainho
Description: With this command you can view the HP of the players of the clan to which you belong.
Current Version: 1.1
Command: @seeghp
422 downloads
Submitted
-
@storeit - Store all Non-Equipped Items
By Akinari
This is a simple command I've had laying around for a long time, so I figured I'd package it up and send it out. Like the title states, this is like @storeall, except it will ignore equipped items. Meant for the adventurer on the go who needs a quick inventory cleanup when farming. To add it, simple place the files in the src/custom folder If you already use these files, then just copy in the code from these ones into your already populated files. Then do a clean make.
639 downloads
Updated
-
@voteleader for the Battleground
By Chun3
Min votes configured: 3 // Can be changed
Can vote on yourself: Disabled // Can be activated.
165 downloads
Updated
-
@whosell with item link
By Fry
Since the new updates no longer include the command, its a modification of the old code created by zephyrus_cr, with the addition of the specific item link.
337 downloads
Updated
-
Account bound achievement
By Aeclis
This patch has been made for the June 2018 version of rAthena. It doesn't work with the latest version of rAthena. I do not provide support anymore for it.
This patch allows you to create account OR character bound achievement instead of only character bound achievement.
- Rewards are available once per account for account bound achievement
- All characters and newly created characters on the account will get the unlocked titles from account bound achievement
I provide you the patch and a README.txt which explains you how to use it. You also need to add a column in the achievement table. I provide you the SQL commands as well.
BEFORE to apply any patch, make a save of the current state of your server.
If you have issue applying this patch, I will provide support for free for you to have it working and if your emulator is not too old to handle this (have at least the classic achievement working).
Exemple of yml achievement account bound (the one in the screen):
- ID: 200000
Bound: "Account"
Group: "AG_GOAL_LEVEL"
Name: "Acquire the first aura!!!!"
Condition: " BaseLevel >= 99 "
Reward:
ItemID: 12549
Script: " specialeffect2 EF_BLESSING; sc_start SC_BLESSING,30000,10; "
TitleID: 1000
Score: 50
By buying this patch, you agree to these terms:
- You are not allowed to redistribute this script in any way, shape, or form.
- Chargeback scams are not tolerated and will get you punished on rAthena.
- I still retain all rights to this script.
- Terms above may be changed or adjusted without prior notification.
233 downloads
Updated
-
Account Bound Items
By Xantara
Information
This system would allow (non-stackable, non-pet-egg) items to be bounded onto a player's account. This means that the bounded items cannot be traded, dropped, auctioned, nor mailed. But, they can be storaged so that it can be shared among the characters of that account.
Features:
- Item coloration to distinguish bounded items and non-bounded ones (see screenshot)
- Script commands (getitembound, getitembound2, equipisbounded) to create and check for bounded items
- At commands (@itembound, @itembound2) to create bounded items
- New group permission (can_trade_bounded) to allow the group to distribute these bounded items if enabled (mostly just for High GMs / Admins)
- Changes to the SQL files to track bounded items. This would effect cart, inventory, and storage databases.
Tested on rAthena revision 17294 (using v1.5.1).
Script Command Documentations
At Commands Documentations
Known Issues
- When moving a bounded item to storage, item colouration is gone. However, re-opening the storage or re-logging will fix this issue.1
- When moving a bounded item to the cart inventory, item colouration is gone. However, re-logging will fix this issue.1
1 If you are able to find these packets (ie. PACKET_ZC_ADD_ITEM_TO_STORE3 and/or PACKET_ZC_ADD_ITEM_TO_CART3), please let me know!
Credits
Created by @Xantara
Popularized by Zephyrus
Idea by Ragnarok Online
License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
Like my work?
Rate/vote this download
Rep up my support topic post
Do not mirror without my consent.
1082 downloads
Updated
-
Admin's Custom Broadcast
That Mod adds a Custom Admin's Broadcast with a Custom Label:
The format to this command is: @adm <message>
For Example: If you write @adm Hello World, that's my Custom Command for rAthena.
The result is: [Admin] Name: Hello World, that's my Custom Command for rAthena.
If you want modify the broadcast's color you need change the hexadecimal color in that line for the color that you like it, in this case from Admin's Custom Label:
0x99CCFF
If you want modify the Label, you need to change the label intro [ ], in this case is Admin:
"[Admin] %s : %s", sd->status.name, message);
What's the New?
Added GM's Custom Broadcast
Added Super User's Custom Broadcast
Used revision 17132
Bug fixed
280 downloads
Updated
-
Advanced common drop system
By dreamunreal
Ind's Special item drop system can't do it.
so. I base on Ind's work to finish this to solve xazax's probrom.
this patch. base on eAthena r15049 trunk.
that is all,. enjoy it.
520 downloads
Updated
-
ALL monster drop item with Random Option
By nutminemz
ALL equipment drop by monster has chance of getting Random-Option.
Like MU online every item you found have some (random) option .. now in rathena.
/////////////
News update
28/04/2107
due to #2065 one of the requirement was merged in to rathena master so
we no longer need any source modification for those who using latest release.
/////////////////
UPDATE
V.1.0 - 3 random option in each item.
V.1.1 - has chance of getting 0-3 option in stead of fixed 3option.
V.1.2 - drop chance is lower according to option quantity. Now 3option is rare (not yet applied to weapon).
- Fixed error message.
pre-re user still getting error message refer to Invalid monster ID.
but random-drop-system work fine with this error.
get in touch with next update.
/////////
Requirement (for athena before bf2461f 28/04/2107)
Initial release item random option for monster drop #2065 ////////////////
Installation
replace the following files.
db/re(pre-re)/item_randomopt_group.txt
db/re(pre-re)/mob_drop.txt
make sure your /db/re(pre-re)/item_randomopt_db.txt is 201 lines (200 sloc) 16.7 KB.
add following 6 line at the end of /db/const.txt
RDMOPTG_WEP 1
RDMOPTG_EQARM 2
RDMOPTG_EQSH 3
RDMOPTG_EQGAR 4
RDMOPTG_EQFOOT 5
RDMOPTG_EQACC 6
//////////////////
Option Description (DEFAULT)
///////////
Drop rate (DEFAULT)
same rate as you can see in db/re/item_db.txt
customize your droprate by editing db/re(pre-re)/mob_drop.txt
/////////
Feel free to PM me
3248 downloads
Updated
-
Battleground Extended 2020 ! With Bomberman/Poring Ball
By grenat50
Mystic Project is about to open its last opus. For the occasion, Mystic Project has decided to make a gift to the community of rAthena and release one of its contents ! We've chosen the Battleground Extended, a memorable feature created by the eAmod and adapted for the new version of rAthena 2020.
What are Battleground Extended ?
They are an upgrade of the official Battleground made by the eAmod years ago and enhanced overtime.
Battleground guide Name Description Flavius Same as official. The Goal is to destroy each's crystal. Flavius Capture The Flag The objective of the Flavius Battle CTF is to score 3 points before your enemy, by capture their Flag. To capture a Flag you need to take the enemy flag, and bring it to your base flag. If your base flag is captured too, you need to kill the flag carrier and take the flag back to your base. Flavius Death Match Each team has a certain number, Kill all the enemy players to let their Team without points. Protect your army. Flavius Stone Control Take the Stones in the middle of the battlefield and put in on your base, in the Stone Points. Each Stone will give points to your team. First team reach 99 points wins the game. Protect your stones from to be captured by the enemy. Tierra Eye of Storm There are two bases, North and South which teams can capture by holding position on the Base more than the other team. Each base will give you points each 5 seconds of Domination. If your Team control both bases the amount of points increases. To get additional points, in the middle there is a Flag spawn, capture it and put it on any of your team Bases. The first Team reach 99 points wins the match.
Tierra Bossnia Attack the enemy base and destroy each MVP Guardian. To do damage to the guardian your team must capture the Balance Flag in the middle base. Each team have 5 guardian to be protected or killed.
Tierra Domination There are three bases, North, Center and South which teams can capture by holding position on the Base more than the other team. Each base will give you points each 5 seconds of Domination. The first Team reach 99 points wins the match.
Krieger Von Midgard (KVM) Same as official, regular PVP. Double Inferno There are 2 teams in the battlefield, your team and the opposite enemies. Kill the enemy players, collect the skulls and bring them to the Sacrifice Totem to win points. You can collect your own team skulls and bring then to your Sacrifice Totem to avoid other teams to score but it won't count as points. If you get killed all your skulls will be drop to the floor, including your own skull. First Team to get 80 points wins the battle.
Conquest If you are Attacking, destroy the enemy defenses and it's Flag. If you are Defending, protect your castle defenses and the Flag.
Rush Fight to capture the Castle and organize your team to defend it. If you fail on the first capture, kill the defender and take it for your team.
Poring Ball It is a soccer game, a poring (the ball) will be in the middle of the field. The match lasts 5min. The team that has the most goals win the game. Super Bomberman The classic game specially made in Ragnarok Online. The goal is to defeat the enemies by putting bombs that will explode on them. It is a 2vs2 version of the game.
Peco Peco Racer Coming soon... Mario Kart - RO version :
New Battleground Queue System
Battleground Commands
@joinbg will warp you only to the battleground room. (Use interface UI Battleground to join any running BG or create one)
@leavebg will warp you out of the the current battleground you're in.
@listenbg display or not the battleground explanations.
@order is only for the leader, an huge announce will be displayed to the team.
@reportafk is only for the leader, expulsing someone who is AFK.
@bginfo will display all curent running BGs + amount of players + scores for each team and remaining time of the BG
Battleground Skills
@bgskill is used by the leader. I left it there as a memory but you better use the guild interface alt + g -> guild skill tree
The leader can use the following skills:
- Emergency Recall: Warp everyone from the team to the leader.
- Battle Orders: All guild members visible on the guild leader screen will receive +5 STR, DEX, INT. (Now having a status icon on the right)
- Regeneration: All guild members visible on the guild leader screen will increase their HP and SP regen rate. (Now having a status icon on the right)
- Restore: All guild members visible on the guild leader screen will have their HP and SP restored to 90% of the respective maximum.
- Chargeshout Flag: The leader will summon a guild flag.
- Chargeshout Beating: Anyone in the guild can use this skill, it will warp to the guild flag IF you are on the same map as the flag.
- Emergency Move: All guild members visible on the guild leader screen will receive the effect of speed potion, increasing walking speed by 25%.
Kill Count
Each person killed on a battlefield will be counted in your guild information. This is like a rank.
In bg_common.txt, you will find this. If you already use OnPCKillEvent, I recommend you to remove this code and add it to yours.
Red / Blue Teams
Upon your arrival on the battlefield, you are going to see yourself in a clan (alt + g) and a guild (ctrl + g).
Blue Team : http://mysticprojectro.com/wiki/images/d/d1/Clan_emblem01.jpg
Red Team : http://mysticprojectro.com/wiki/images/a/a9/Clan_emblem02.jpg
Each team-mate will have this emblem by their character's name. Enemies will be displaying the opposite emblem.
Some battlefields will change your cloth dye as well for the attributed color but don't worry, you will get yours back as soon as the game is over.
You can communicate with your team through the guild chat.
When you leave the battlefield, the clan will be removed and you will be back in your actual guild.
Battleground Happy Hours
Battleground happy hours happen everyday from 4pm to 8pm during which, rewards obtained are increased by 60%. (Configurable in npc/battleground/bg_common.txt)
Battleground Rewards
Telma/Erundek NPCs from the official battleground are there to exchange Consumables / Stuff.
However, some of you rather customize the rewards. It's up to you to remove Telma/Erundek.
If you want to customize Rewards, here is a frame (located in bg_common.txt) made to buy stuff directly with badges.
Poring Ball
Youtube Video Demonstration : Ragnarok Online - DaRO : BattleGround Extended + - YouTube
The original Poring Ball Map was created by us 14 years ago. (On the left). At the time, we had poor experience in mapping so my apologies if you don't find it attractive. However, you can always purchase the beautiful rework done by Olrox (on the right): https://olroxgraphics.com/index.php?/store/product/107-soccer-stadium/
Depending on which map you will pick, you need to configurate the Poring Ball. I assume you already have Olrox's map so by default, it is this configuration. If you want the free map that is included in this pack, you need to comment /* */ Olrox Poring Ball Map and remove the comment of Grenat Poring Ball Map (See orange sign)
Bomberman
Video Demonstration : Super Bomberman Ragnarok Online YouTube Video
I've read a lot of times people asking about it ! We are releasing the new Bomberman Battleground Version with 3 bomberman maps (two of them are made by us)
In bg_bomberman.txt, you will find this code. Make sure to remove it and add it to your OnPCStatCalcEvent, otherwise just leave it there. Some newer rAthena version doesn't have OnPCStatCalcEvent anymore, you may need to reinstall it.
Installation :
In this package, you will find :
- BattlegroundExtended.diff : You will need to apply this patch. (cmd -> cd rathena -> git apply BattlegroundExtended.diff ) It has been created in 2020 and work with the latest rAthena. (Possibly working on previous version from 2018+).
- NPC folder: I strongly recommend to delete all BG NPCs and only install the ones that are in this folder. It is compatible with the new BG Queue Systeme. Please review Poring Ball.txt to configurate your poring ball as well as bg_common for the happy hour rate.
- DB: I did put items in txt and yml files since I don't know which version you guys are using. DO NOT copy paste in your db folder. Only take what's inside each files.
- Client: Contains items/maps/texture/files/lua (for the new BG queue system)/bomberman music etc... Extract the contents inside your RO client folder.
This patch modifies a lot of files, you may need to install the diff manually depending on your rAthena version. Once installed, please recompile your map_cache with the client data installed in the directory/grf the server reads to compile it.
Configuration :
Your server might be different than ours. This is why, it is important to configurate well the system.
conf/battle/battleground.conf -> Search for battleground eAmod and configure them.
db/battleground.xml -> "Color" represents the clothes palette given upon arrival on the battlefield. The player's Palette will come back to the original one when the BG is over. If you don't want players to have different cloth color, just put 0 or do not put anything at all. In our server, Color : 6 is blue, and 22 is red. Therefore, this is our configuration. I let you configure yours.
Additional New Script Commands :
* getnpcinfo <type>{,<char_id>}
type: NPC_X: X, NPC_Y: Y
* setporingball; (When activated, it would be like an OnClickedCell, almost ;), it calls a script for the poring ball (Or other things if you want to add things there).
* getporingballx() / getporingbally(); (Get coordination of a clicked cell)
* removeporingball; (Remove poring ball mode (Clickable cell calling a script)
* getunitdir <unit_id/account_id>; (Get direction the unit is looking)
* ispcsit <account_id> (Get information if a pc is sit or not)
* unitpush <unit_id/account_id>,<dir>,<cells>; (Push (knockback) a specific target in a specific direction)
* areaeffect( effect id, x, y);
Any Questions ?
You can contact me on Discord: Grenat#5220 for support regarding the installation.
Support post : Release: Battleground Extended 2020 ! With Bomberman/Poring Ball - Source Releases - rAthena
Team Mystic Project.
2383 downloads
Updated
-
Bg consume
By Anubis-K
Recode of Brian's Item consumption mapflag.
It allows to use BG consumables only in Battleground under bg_consume mapflag.
More information here:
http://rathena.org/board/topic/97556-bg-consume-items-tlema-comes-to-rathena/
Compatible with: 20ff69e
392 downloads
Updated
-
BG Eamod
By Anubis-K
Hi,
I'm not the autor, I just made the code compatible with rathena. All the credits go to the guy that developed Eamod, whoever Zephyrus is.
I found this (original file): https://code.google.com/p/eamod-retail/source/browse/trunk/eAmod-A/Diffs/battleground/eAthena.patch
And I was informed that the same file can be dowloaded from: http://eamod.wordpress.com/
The BG NPCs are in: https://code.google.com/p/eamod-retail/source/browse/#svn%2Ftrunk%2FeAmod-A%2FDiffs%2Fbattleground%2Fnpc%2Fbattleground
Compare with rathena NPCs and modify acoording you need.
I Just made it compatible and compilable, please inform any bug you find.
Have fun.
Note: compatible with 20ff69e
1144 downloads
Updated
-
Recently Browsing 0 members
- No registered users viewing this page.