Source Modifications
Source Mods & Code Snippets located here.
135 files
-
(QOL) Taekwon Mission printing % every monster killed for the mission
By Kreustoo
A small QOL some players asked me to add.
It justs print each time a monster is killed for the taekwon mission the % completed
120 downloads
Updated
-
Prevent hitting mobs near NPC or Warper
By pajodex
Hi,
It's been a while since I posted anything.. As of now, I want to release this simple src mod that prevents players from hitting MVPs near an NPC/Warper. Purpose of this is to discourage players from going near warpers while hunting MVPs.
I'm not sure how helpful this be but I just want to do something small for a while .
I will be lurking around the request section to see some good ideas and might be releasing them here after!
Cheers!
117 downloads
Updated
-
@ignorebattle
By goddameit
When Someone use this command, all player in that map will not be attacked by mobs
112 downloads
Submitted
-
@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
-
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
108 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~
96 downloads
Updated
-
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/).
83 downloads
Updated
-
Inject - Allows running dynamic scripts in running time
By Zell
This script commands allow you to "Inject" scripts inside other scripts.
But Zell, why I want this?
Well, you can use a script code from a SQL table! Imagine that now you can change scripts code blocks without reloading scripts direct from your database or you can even do like me where I'm building scripts from a API!
Sample Script:
prontera,150,150,5 Script Inject Test 91,{ .@test = rand(1, 100); mes "Let's test Inject"; mes "I will declare variable .@test as " + .@test + "."; mes "My npc id is " + getnpcid(0), " "; mes "[Inject Code Start]", " "; // This script text coud be loaded from a SQL table! Inject( "mes \"Running NPC is \" + getnpcid(0); " + "mes \"Value of .@test is \" + .@test; " + "next; " + ".@test = rand(200, 500); " + "mes \"Now value of .@test will be \" + .@test;" + "close2; " ); mes "[Inject Code End]", " "; mes "Inject was ok and .@test is now " + .@test; close; }
83 downloads
Updated
-
Command MesClose
By LyDe
Command used in the scripts of NPCs whose ultimate goal is to unite the two commands,Mes and Close, an example down:
prontera,150,150,5<TAB>script<TAB>Testing Command<TAB>748,{ mes "[Testing Command]"; mesclose "Testing command MesClose"; }
This command will open a window of speech and the Close button appears immediately.
77 downloads
Submitted
-
[Script Command] npcisnear
By Zell
This commands verify if any NPC is near the distance of a player. Can be useful for some script restrictions.
Script Sample:
prontera,150,150,5 Script Curious Boy 90,{ .@n$ = "[Curious Boy]"; .@distance = 5; mes .@n$; if(isnpcsnear(getcharid(0), .@distance)) mes "Sorry, I will only talk with you when no NPC is near you!"; else mes "Hi!"; close; }
76 downloads
Submitted
-
[Mapflag/QOL] NoDeath_Count
By Kreustoo
A mapflag that doesn't increment death count when a player dies. Usefull to preserve super novice bonus.
75 downloads
Submitted
-
MF_NORECALL (Custom Mapflag)
By Gidz Cross
MF_NORECALL a custom mapflag that restrict players being recalled via @recall / @recallall command when in special maps.
In response to:
56 downloads
Updated
-
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!
34 downloads
Submitted
-
[Script Command] getdconst & setdconst
By Zell
First of all, yes, I know that this break the "const" concept, but I really miss "static values" in script engine.
Yes, I know that we can use $vars but it's a lot pretty using const logic.
If you don't know what is a "const", open your db/const.txt file
In the end of file, you can add something like this:
X_VALUE%TAB%1005
And now, you can call X_VALUE in any script and the script will know that X_VALUE is not a player script, it's a """"global"""" variable, so you can call it with or without a player attached.
And now we came to my commands.
getdsconst allow you to get a constant dynamically like getd.
For sample:
.@var = getdconst( "X" + "_" + "VALUE" );
This would return 1005.
And now with setdconst we can change those as well.
setdconst( "X_VALUE", 2020 );
Remember, when you restar t your server, this constant will be 1005 again!
Here another sample script:
prontera,150,150,5 Script CommandsTest 90,{ .@const$[0] = "SWORDCLAN"; .@const$[1] = "ARCWANDCLAN"; .@const$[2] = "GOLDENMACECLAN"; for( ; .@i < getarraysize( .@const$ ); .@i++ ) mes "Contant Value of [" + .@const$[.@i] + "] is " + getdconst( .@const$[.@i] ); next; mes "I will now, change all const values to +1"; for( .@i = 0; .@i < getarraysize( .@const$ ); .@i++ ) setdconst( .@const$[.@i], getdconst( .@const$[.@i] ) + 1 ); close; }
34 downloads
Submitted
-
Recently Browsing 0 members
- No registered users viewing this page.