Source Modifications
Source Mods & Code Snippets located here.
146 files
-
Cart Config [Client 2015-08-26 or newer]
By Cydh
INFORMATION: The main target for usage only for server that use kRO client Client 2015-08-26 or newer or some functions (especially the cart selection) will be fail
This mod in few words,
You can set Genetic's cart sprite for level 1 Merchant, change its max weight and max item numbers
rAthena Requirement: Git Hash: 2e15fae7 (2018-05-05)
You can config cart related values for
Weight limit Max item numbers Level requirement Job requirement But, because the client is not customizable (I meant I can't edit the client), there are things that cannot be changed related with client/PACKETVER.
So, because I modified the MC_CHANGECART to MC_CARTDECORATE (sending ZC_SELECTCART)
PACKETVER MAX_CARTS ZC_SELECTCART Weight Limit Max Items Level Req Job Req 20150826 + 12 YES YES YES YES YES 20120201 + 9 not supported YES YES useless useless Older 5 not supported YES YES useless useless
Don't forget to add MC_CARTDECORATE as quest skill to preferred player.
Forgot to took SS, so just watch the Video
Ok, that's all. Any bug & suggestion please tell me. If you find a way or know how to make patch (hex the client) to add more carts, please tell the community
580 downloads
Updated
-
Snatch Modification
By Vykimo
SRC Modification of skill "RG_INTIMIDATE, Snatch".
Teleport the player near a mob with the same id or near a monster with the same race present on the current map (if none, on random location).
That's only a patch to apply on your rathena folder.
Don't forget to thumbs up me if you like my content~
102 downloads
Updated
-
@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
273 downloads
Updated
-
bonus bXDefReturn
By Easycore
bonus bXDefReturn
Add resistances against return damages.
::Structure::
bonus bPhysicalDefReturn,n; +n% damage reduction against physical reflect attack
bonus bMagicalDefReturn,n; +n% damage reduction against magical reflect attack
::Video::
206 downloads
Updated
-
Glicko-2 rating system - Now on rAthena
By Secrets
This source edit provides two script commands for you to get and sets rating of a player, and adjust them relative to another player after two of them battled.
This implementation uses Glicko-2 rating system, an improvement of Elo system.
If you still have no idea what you could do with this, this source mod is not for you.
You can also get the code on GitHub.
Licenses:
The rAthena implementation of Glicko2 itself fell under the GNU GPLv3 license that rAthena uses.
Glicko2 library by Taylor Petrick:
tldr of the license here.
267 downloads
Updated
-
Usefull Status Icons (EC, Bragi, Pneuma, Sunset, Idun,...)
By Vykimo
Easy for the player and good looking.
The pack contain source modification + icons made by me (with the color palette which reminds the skill).
6 usefull main icons availables :
Emergency Call Cooldown Pneuma Bragi Don't forget me Assassin of the Sunset Apple of the idun DEMO Video for Emergency Call :
53 purchases 258 downloads
Updated
-
@at with afk hat very easy Modify
By systemD2540
Inside file have Notice_Board .spr .act and image item for some one No have in data kRO Offcial
*** Only use for autotrade you can modify New @afk Just need some more from the old version.
473 downloads
Submitted
-
Instakill Mapflag
By Ninja
Tested and working with: 3e625dfdf9868690e36677701cbebe1b379a7485
This source edit is intended for my experiments. Feel free to have fun with it but I wouldn't be held accountable for damages that it may create for your server.
No support will be given other than the specified rAthena version above.
Purpose
Create a mapflag for instakill. As it would suggest, all damages done within the map will be amplified to max damage, thus instakilling the target.
It works both for the following use cases:
1. Player attacking a Monster
2. Player attacking another Player
3. Monster attacking a Player
4. Monster attacking another monster
Where "Monster" can be a normal mob or a Homunculus
Usage
In-game
@mapflag instakill [0|1] Script as mapflag
prontera<tab>mapflag<tab>instakill Script as used in setmapflag
setmapflag .EventMap$, mf_instakill; Example
Tag, You're Dead Script
Source In Action
Source file
1. I will retain all the rights in all the scripts that I create
2. Client cannot redistribute nor resell the scripts that I provide
3. No refunds
4. Maintenance of scripts does not include modification of the original intended behavior. If the script has been broken due to prior modification of the original behavior then it would mean a new service request
5. Modification of the original intended behavior would mean a new service request and would go through the process mentioned above
2. This can be redistributed anywhere in any form.
3. This shall not be in any way be branded for sale anywhere in any form.
4. Maintenance will not be provided. Feel free to use the support section.
5. See #3.
6. Ninja has the right to post all my free services to the release section and make it available for everybody to use
7. Maintenance of scripts will be provide free of charge
8. I will not keep any sensitive information from your server nor any credentials that you lend me
9. I will backup all my server files before I use this.
10. Ninja will not be liable in any way at any time.
11. The moment I use anything from here, I accept all the terms of services stated above.
Where the script author is Ninja (https://rathena.org/board/profile/7005-ninja/).
86 downloads
Updated
-
Telma-for-rAthena++.patch
By xSoul
Telma-for-rAthena++.patch
Checking the source files of rAthena I found the Telma Source ... but not compatible for the new versions of rAthena.
So what I did was take the Source that updated Anubis-K, that was not compatible with the new versions of rAthena and I made it compatible.
Important: You must create a character in your sql table "Char" called Battleground and this same must have the id 165100.
In src/map/battleground.hpp
//Brian Bg Items - updated by [AnubisK] #define BG_CHARID 165100 // char named "Battleground" // you can change the character id. #define BG_TRADE 91 // trade mask of BG consumables // You can edit the mask When you want to use a normal item it is recommended that you do not have a battleground item of the same type in inventory.
Example:
If you want to use a "Blue Potion" with the skill "Potion Pitcher" and you have a "Battleground's Blue Potion" you will first take the BG Pocion and not the normal one.
This is solved by leaving the Battleground item in the Storage.
Note: I'm not the author, the only thing I did was to make it compatible with the new versions of rAthena so that this good file is not forgotten.
The credits of for the original idea must go to (as fas as I know) Brian one of the devs http://rathena.org/board/user/237-brian/.
221 downloads
Updated
-
@lockid - Account Protection for Gepard
By Break
Bind your account to the hardware and login the game only from it. Compatible only with Gepard Shield
10 purchases 24 downloads
Submitted
-
Hotkey Scripts
By joecalis
New Script Commands
gethotkeys({<char_id>}); updatehotkey(<type>,<id>,<lv>,<pos>{,<flag>,<char_id>}); clearhotkeys({<char_id>}); These are just simple commands, that gets, sets, and clears your hotkeys(skill bar).
Usage Sample: hotkey_sample.txt
303 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
3747 downloads
Updated
-
Protection System ( @security ) #Free
By Haikenz
This system is already activated in the source of the brAthena.
It was created by Orce, and with my friend's help, we converted to rA, and it's working perfectly with the last revision
Language: PT-BR, EN-US
Ps. Sorry my english
1098 downloads
Updated
-
Hop Jump
By Vykimo
Hop Jump [ GLO_SAUT ]
Can be used with the skill id 5000 or the atcommand @hop <skill level>
2 purchases 8 downloads
Submitted
-
Guild Activity Logging
By Ninja
About This File
Tested and working with: c212b2ed053d60855ce584a0368d98cff94c5059
This source edit is intended for my experiments. Feel free to have fun with it but I wouldn't be held accountable for damages that it may create for your server.
No support will be given other than the specified rAthena version above.
Purpose
To improve the Guild Activity Logging of rAthena.
It works for the following Guild Logging activities:
1. Guild Creation
2. Guild Breakage
3. Guild Member Addition
4. Guild Member Removal/Leave
5. Guild Alliance Formation
6. Guild Alliance Breakage
7. Guild Antagonist Formation
8. Guild Antagonist Breakage
9. Guild Castle Occupancy
10. Guild Castle Abandonment
Usage
1. Tracking guild activities of a character
SELECT origin, target, `activity`, COUNT(`activity`) as "Times Done" FROM interlog WHERE origin = "this" or target = "this" GROUP BY `activity` 2. Tracking a guild's WoE Castle occupancy rate SELECT castle_id, COUNT(`activity`) as "Times Done" FROM interlog WHERE `origin` = "ThisGuild" and `activity` like "%Occupied%" GROUP BY castle_id
111 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; }
298 downloads
Updated
-
Item "allowed" restriction
By Anubis-K
With this mapflag you say where a certain item is allowed
Example:
seting:
prontera mapflag customevent 1
and
500,1
item id 500 just can be used in prontera.
More info here.
http://rathena.org/board/topic/97437-item-event-mapflag/
Compatible with: 20ff69e
137 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
412 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
1165 downloads
Updated
-
cell_pvp
By Anubis-K
Hi,
With this you can set a cell as a pvp zone, therefore a zone in a map that is pvp and the rest it is not.
I'm not the outor. I just think that this is cool So I made compatible with the last version of the emulator.
More informatino here: http://rathena.org/board/topic/97799-cell-nopvp-cell-pvp/
and here: http://hercules.ws/board/topic/4589-pk-area/?p=29693
You need the folowing "npcs":
- script CELLPVP -1,{OnInit: setcell "morocc",143,113,157,103,cell_pvp,1; end; }- script deathmatch_core -1,{ callfunc("pvp_scstart"); end;}function script pvp_scstart { sc_start SC_INC_AGI,120000,5; sc_start SC_BLESSING,120000,5; sc_start SC_MAGNIFICAT,120000,3;}
521 downloads
Submitted
-
(HANSIP) Skill Spam Protection
By Kichi
Info & History
Info:
HANSIP Protection is a src modification to make sure NDG,speed hack, WPE Users still follow the rules.
History:
This is a simple code, which we have made since long to minimize the NDG User.
The first way to solve NDG, we add a cooldown for skills that dosn't has a fixed cooldown (Sonic Blow, Cross Impact, etc).
But the player doesn't allowed to do double cast.
Finaly we made this code that minimize the NDG users, but still keep the original feature that is double cast for some skills (Sonic Blow, Cross Impact, etc).
Implementation & Feature
Implementation:
Download the file Apply manual "rA - Hansip Protection.diff" to your src. Paste "battle_conf.txt" to conf/import/ Don't forget to recompile your server. All done
Features:
The user still able to use double SB / CI / etc. You may switch on and off. Very simple Skill Packet Spam detector
.
Note:
2013 client already detect modified file (after act delay).
so i've tested this using WPE.
i got the number from comparing with and without *cheat.
Supported Skills:Bash Sonic Blow Arrow Vulcan Double Strave Bowling Bash Ninja Kouenka Ninja Hyousensou Jupitel Thunder Cross Impact Dragon Breath Fire & Water
Change Log:
1.1
-Add archer double strave skill
1.2
-Add support for some skills
1.3
-Change name from NDG to Hansip
-Add skill packet spam detector & punishment
-Support PRE-RE
1742 downloads
Updated
-
[Atcommand] displaydrop
Introduction
On a server where I play someone suggested to add the command "displaydrop" to enable people to see something rare or valuable was dropped by a monster because autoloot is only available until a certain level.
I had some free time on my hands so I decided to implement something like that.
Features
You can limit the command like autoloot (e.g. @displaydrop 10 will only show items with a chance equal to or below 10%) Two different ways of server side configuration are available:Show real drop (<Monster> dropped <Item> (<Amount>.) Show only an unspecific message that a monster dropped something (<Monster> dropped something with a chance equal to or below <Chance>%.)
Bugs, feedback, etc.
If you have found a bug or want to give feedback about my modification you can either send me a private message or post in the related thread.
221 downloads
Submitted
-
Fixed Cast and Delay Adjustment Mapflag
By Akinari
This mapflag modification allows you to set a mapflag to reduce fixed cast time and delay by a percentage placed after the mapflag. I made this for a server I ran for awhile and used it specifically to reduce cast time and delay on standard (Non PvP or GvG) maps. It gives the game a quicker pace, without forcing you to modify a set config that changes the whole server. It's great for events, PvP, PvM... just about anything you can think of since you can modify this to your heart's content between maps.
Example:prontera mapflag pvmcast 50 // Any player who goes to map 'prontera' has a 50% reduction in fixed cast time and delay
This modification is dynamic, so you should be able to go between any map and have the correct reduction applied when necessary. Please test before releasing in a production server as I have ported it with a few different features in the latest GIT compared to what I use to have it set as.
Also note the modification only adjusts fixed cast delay, it does not change variable cast time. This means it will only work in RENEWAL as well. Also, feel free to modify and re-release if you add some extra functionality to it.
179 downloads
Submitted
-
Script command: Dynprompt
By Talis
Works like prompt(), but lets you specify return values by adding a pipe symbol.
Examples:
dynprompt("Menu Entry");
Return Value: 1
@menu: 1
@menustr$: Menu Entry
@menunum: 1
dynprompt("^EE0000Menu Entry^000000|Test");
Return Value: 1
@menu: 1
@menustr$: Test
@menunum: 1
dynprompt("Shazam|5 Shazam");
Return Value: 5
@menu: 1
@menustr$: 5 Shazam
@menunum: 5
Script example:
// Dynprompt usage - Advanced example// Probably the best way to use thisfunction script dynprompt_sample3 { // The real power of dynprompt is that you can specify the return value for each menu element. // The return value is a atoi of the string following the pipe | - the full string can be accessed through @menustr$ // The atoi val can also be accessed through @menunum // If you want to use both number & string, the number has to come first else atoi won't work // Use the pipe character | to denote the return value - best to work with numbers, but strings work as well set .@menu$[0], "^009900Hello!^000000|1Hello"; set .@menu$[1], "^0000EEInfo~^000000|2Info"; set .@menu$[2], "^222222Test.^000000|3Test"; // This time we'll just add a element based on a condition if(.@somecondition) set .@menu$[3], "^EE0000- Admin -^000000|4Admin"; set .@menu$[4], "^990099G'bye^000000|5Bye"; // Lets implode & switch/case switch(dynprompt(implode(.@menu$, ":"))) { case 1: mes "Oh, Hello to you too!"; break; case 2: mes "You want info? How about the time?"; mes gettimestr("%Y-%m/%d %H:%M:%S",21); mes "Also, you selected option #" + @menu; // @menu still works break; case 3: mes "Debug info:"; mes "@menu is " + @menu; mes "@menustr$ is " + @menustr$; mes "@menunum is " + @menunum; break; case 4: mes "Wow, a admin!"; break; case 5: mes "Bye bye~"; break; case 255: // Cancel button mes "Hey, don't ignore me!!"; break; } close;}
I havn't tested it yet in production, but so far I havn't been able to encounter any issues with it.
Also, I do all my eAthena devving on a windows box so I can't guarantee that it'll work with linux.
Performance of dynprompt is going to be naturally worse than prompt, select or menu, but it might perform equally well in a dynamic setting if you take into consideration the array looping usually required - but I have not yet done any benchmarking or anything, so don't take my word for it. ( and to be honest, being able to create super clean code using switch / case is worth a tiny performance hit for me )
I hope it will make your scripting less painful - it sure has for me!
35 downloads
Submitted
-
Script Command: getrandmob()
By Akinari
Another quick package up of a small command I've had lying around for a long time. Grabs a random monster from one of the branch databases. Useful for hunter quests, disguise events, and anything else you can think of. Uses database stored in memory, so it's faster and more efficient than running SQL queries and doesn't require you to use SQL dbs for items and mobs.
/*==========================================
* Fetches a random mob_id
* getrandmob(num,type);
*
* type: Where to fetch from:
* 0: dead branch list
* 1: poring list
* 2: bloody branch list
* num: Mob level to check against (0 = all)
*------------------------------------------*/
To add, simply place the files into the src/custom folder. If you already use those files, add the new code into your existing populated files and do a clean make.
173 downloads
Updated
-
Recently Browsing 0 members
- No registered users viewing this page.