Jump to content

Source Modifications

Source Mods & Code Snippets located here.

135 files

  1. Free

    (QOL) Taekwon Mission printing % every monster killed for the mission

    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

  2. Free

    Prevent hitting mobs near NPC or Warper

    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

  3. Free

    @ignorebattle

    When Someone use this command, all player in that map will not be attacked by mobs

    112 downloads

    Submitted

  4. Free

    @dropall Modification & @dropalltab

    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

  5. Free

    Guild Activity Logging

    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

  6. Free

    Snatch Modification

    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

  7. Free

    Instakill Mapflag

    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

  8. Free

    Inject - Allows running dynamic scripts in running time

    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

  9. Free

    Command MesClose

    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

  10. Free

    [Script Command] npcisnear

    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

  11. Free

    [Mapflag/QOL] NoDeath_Count

    A mapflag that doesn't increment death count when a player dies. Usefull to preserve super novice bonus.

    75 downloads

    Submitted

  12. Free

    MF_NORECALL (Custom Mapflag)

    MF_NORECALL a custom mapflag that restrict players being recalled via @recall / @recallall command when in special maps.

    In response to:

    56 downloads

    Updated

  13. Free

    Script command: Dynprompt

    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

  14. Free

    [Script Command] getdconst & setdconst

    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


×
×
  • Create New...